Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/visualization/OpenInventor/src/G4OpenInventorXtExtendedViewer.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /visualization/OpenInventor/src/G4OpenInventorXtExtendedViewer.cc (Version 11.3.0) and /visualization/OpenInventor/src/G4OpenInventorXtExtendedViewer.cc (Version 10.5)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 //                                                 26 //
 27 //                                                 27 //
 28 /*                                                 28 /*
 29  * jck 05 Feb 1997 - Initial Implementation        29  * jck 05 Feb 1997 - Initial Implementation
 30  * jck 21 Apr 1997                                 30  * jck 21 Apr 1997 
 31  *  Mods for SoXtHepViewer                         31  *  Mods for SoXtHepViewer
 32  * gb : on Win32 use an SoXtExaminerViewer.        32  * gb : on Win32 use an SoXtExaminerViewer.
 33  * gb 05 April 2004 : revisit to separate Wind     33  * gb 05 April 2004 : revisit to separate Windows things.
 34  * gb 09 November 2004 : restore the escape bu     34  * gb 09 November 2004 : restore the escape button.
 35  * gb 09 November 2004 : have a menu bar in th     35  * gb 09 November 2004 : have a menu bar in the viewer shell.
 36  * gb 09 November 2004 : have gl2ps file produ     36  * gb 09 November 2004 : have gl2ps file production.
 37  * gb 14 November 2004 : inherit G4OpenInvento     37  * gb 14 November 2004 : inherit G4OpenInventorViewer.
 38  */                                                38  */
 39                                                    39 
                                                   >>  40 #ifdef G4VIS_BUILD_OIX_DRIVER
                                                   >>  41 
 40 // this :                                          42 // this :
 41 #include "G4OpenInventorXtExtendedViewer.hh"       43 #include "G4OpenInventorXtExtendedViewer.hh"
 42                                                    44 
 43 #include <Inventor/nodes/SoSelection.h>            45 #include <Inventor/nodes/SoSelection.h>
 44                                                    46 
 45 #include <Inventor/Xt/SoXt.h>                      47 #include <Inventor/Xt/SoXt.h>
 46                                                    48 
 47 //Replaces inclusion of SoXtExaminerViewer.h       49 //Replaces inclusion of SoXtExaminerViewer.h
 48 #include <Inventor/Xt/viewers/SoXtFlyViewer.h>     50 #include <Inventor/Xt/viewers/SoXtFlyViewer.h>
 49                                                    51 
 50 #include <X11/StringDefs.h>                        52 #include <X11/StringDefs.h>
 51 #include <X11/Shell.h>                             53 #include <X11/Shell.h>
 52                                                    54 
 53 #include <Xm/Xm.h>                                 55 #include <Xm/Xm.h>
 54 #include <Xm/PushB.h>                              56 #include <Xm/PushB.h>
 55 #include <Xm/Form.h>                               57 #include <Xm/Form.h>
 56 #include <Xm/CascadeB.h>                           58 #include <Xm/CascadeB.h>
 57 #include <Xm/RowColumn.h>                          59 #include <Xm/RowColumn.h>
 58 #include <Xm/Text.h>                               60 #include <Xm/Text.h>
 59                                                    61 
 60 #include <cstdio>                                  62 #include <cstdio>
 61                                                    63 
 62 #include "HEPVis/actions/SoGL2PSAction.h"          64 #include "HEPVis/actions/SoGL2PSAction.h"
 63                                                    65 
 64 #include "G4OpenInventor.hh"                       66 #include "G4OpenInventor.hh"
 65 #include "G4OpenInventorSceneHandler.hh"           67 #include "G4OpenInventorSceneHandler.hh"
 66 #include "G4OpenInventorXtExaminerViewer.hh"       68 #include "G4OpenInventorXtExaminerViewer.hh"
 67 #include "G4VInteractorManager.hh"                 69 #include "G4VInteractorManager.hh"
 68 #include "G4VisManager.hh"                         70 #include "G4VisManager.hh"
 69 #include "G4AttCheck.hh"                           71 #include "G4AttCheck.hh"
 70                                                    72 
 71 G4OpenInventorXtExtendedViewer::G4OpenInventor     73 G4OpenInventorXtExtendedViewer::G4OpenInventorXtExtendedViewer(
 72  G4OpenInventorSceneHandler& sceneHandler          74  G4OpenInventorSceneHandler& sceneHandler
 73 ,const G4String& name)                             75 ,const G4String& name)
 74 :G4OpenInventorViewer (sceneHandler, name)         76 :G4OpenInventorViewer (sceneHandler, name)
 75 ,fShell(0)                                         77 ,fShell(0)
 76 ,fViewer(0)                                        78 ,fViewer(0)
 77 ,fHelpForm(0)                                      79 ,fHelpForm(0)
 78 ,fHelpText(0)                                      80 ,fHelpText(0)
 79 {                                                  81 {
 80   if (G4VisManager::GetVerbosity() >= G4VisMan     82   if (G4VisManager::GetVerbosity() >= G4VisManager::confirmations)
 81     G4cout << "Window name: " << fName << G4en     83     G4cout << "Window name: " << fName << G4endl;
 82 }                                                  84 }
 83                                                    85 
 84                                                    86 
 85 void G4OpenInventorXtExtendedViewer::Initialis     87 void G4OpenInventorXtExtendedViewer::Initialise() {
 86                                                    88   
 87   G4String wName = fName;                          89   G4String wName = fName;
 88                                                    90   
 89   Widget parent = (Widget)fInteractorManager->     91   Widget parent = (Widget)fInteractorManager->GetParentInteractor ();
 90   // G4cout << "DEBUG G4OpenInventorXtExtended     92   // G4cout << "DEBUG G4OpenInventorXtExtendedViewer: parent = " << parent << G4endl;
 91   int width = 600;                                 93   int width = 600;
 92   int height = 600;                                94   int height = 600;
 93                                                    95 
 94   if(!parent) {                                    96   if(!parent) {  
 95     // Check if user has specified an X-Window     97     // Check if user has specified an X-Windows-type geometry string...
 96     char s[32];                                    98     char s[32];
 97                                                    99 
 98     G4String sgeometry = fVP.GetXGeometryStrin    100     G4String sgeometry = fVP.GetXGeometryString();
 99     if(sgeometry.empty()) {                       101     if(sgeometry.empty()) {
100       G4cout << "ERROR: Geometry string \""       102       G4cout << "ERROR: Geometry string \""
101              << sgeometry                         103              << sgeometry    
102              << "\" is empty.  Using \"600x600    104              << "\" is empty.  Using \"600x600\"."
103              << G4endl;                           105              << G4endl;
104       width = 600;                                106       width = 600;
105       height = 600;                               107       height = 600;  
106       snprintf(s,32,"%dx%d",width,height);     << 108       sprintf(s,"%dx%d",width,height);
107       sgeometry = s;                              109       sgeometry = s;
108     } else {                                      110     } else {
109       width = fVP.GetWindowSizeHintX();           111       width = fVP.GetWindowSizeHintX();
110       height = fVP.GetWindowSizeHintX();          112       height = fVP.GetWindowSizeHintX();
111     }                                             113     }
112                                                   114 
113     //Create a shell window :                     115     //Create a shell window :
114     G4String shellName = wName;                   116     G4String shellName = wName;
115     shellName += "_shell";                        117     shellName += "_shell"; 
116     Arg args[10];                                 118     Arg args[10];
117     XtSetArg(args[0],XtNgeometry,XtNewString(s    119     XtSetArg(args[0],XtNgeometry,XtNewString(sgeometry.c_str()));
118     XtSetArg(args[1],XtNborderWidth,0);           120     XtSetArg(args[1],XtNborderWidth,0);
119     XtSetArg(args[2],XtNtitle,XtNewString(wNam    121     XtSetArg(args[2],XtNtitle,XtNewString(wName.c_str()));
120     fShell = XtAppCreateShell(shellName.c_str(    122     fShell = XtAppCreateShell(shellName.c_str(),"Inventor",
121                topLevelShellWidgetClass,          123                topLevelShellWidgetClass,
122              SoXt::getDisplay(),                  124              SoXt::getDisplay(),
123              args,3);                             125              args,3);
124                                                   126     
125     // G4cout << "DEBUG CREATING THE VIEWER WI    127     // G4cout << "DEBUG CREATING THE VIEWER WITH CREATED SHELL = " << fShell << G4endl;
126     fViewer = new G4OpenInventorXtExaminerView    128     fViewer = new G4OpenInventorXtExaminerViewer(fShell, wName.c_str(), TRUE);
127     fViewer->addEscapeCallback(EscapeFromKeybo    129     fViewer->addEscapeCallback(EscapeFromKeyboardCbk, (void *)this);
128                                                   130      
129     // FWJ (viewpoints don't work with this!)     131     // FWJ (viewpoints don't work with this!)
130     //    fViewer->setAutoClipping((SbBool)0);    132     //    fViewer->setAutoClipping((SbBool)0);
131                                                   133 
132     //XtSetArg(args[0],XmNtopAttachment   ,XmA    134     //XtSetArg(args[0],XmNtopAttachment   ,XmATTACH_FORM);
133     //XtSetArg(args[1],XmNleftAttachment  ,XmA    135     //XtSetArg(args[1],XmNleftAttachment  ,XmATTACH_FORM);
134     //XtSetArg(args[2],XmNrightAttachment ,XmA    136     //XtSetArg(args[2],XmNrightAttachment ,XmATTACH_FORM);
135     //XtSetArg(args[3],XmNbottomAttachment,XmA    137     //XtSetArg(args[3],XmNbottomAttachment,XmATTACH_FORM);
136     //Widget form = XmCreateForm (fShell,(char    138     //Widget form = XmCreateForm (fShell,(char*)"form",args,4);
137     //XtManageChild (form);                       139     //XtManageChild (form);
138                                                   140 
139     Widget menuBar = fViewer->getMenuBar();       141     Widget menuBar = fViewer->getMenuBar();
140                                                   142     
141     //XtSetArg(args[0],XmNtopAttachment   ,XmA    143     //XtSetArg(args[0],XmNtopAttachment   ,XmATTACH_FORM);
142     //XtSetArg(args[1],XmNleftAttachment  ,XmA    144     //XtSetArg(args[1],XmNleftAttachment  ,XmATTACH_FORM);
143     //XtSetArg(args[2],XmNrightAttachment ,XmA    145     //XtSetArg(args[2],XmNrightAttachment ,XmATTACH_FORM);
144     //Widget menuBar = XmCreateMenuBar (form,(    146     //Widget menuBar = XmCreateMenuBar (form,(char*)"menuBar",args,3);
145     //XtManageChild(menuBar);                     147     //XtManageChild(menuBar);
146                                                   148 
147    {Widget menu = fViewer->getMenu();             149    {Widget menu = fViewer->getMenu();
148    //{Widget menu = AddMenu(menuBar,"File","Fi    150    //{Widget menu = AddMenu(menuBar,"File","File");
149     AddButton(menu,"Write PS (gl2ps)",PostScri    151     AddButton(menu,"Write PS (gl2ps)",PostScriptCbk);
150     AddButton(menu, "Write PDF (gl2ps)", PDFCb    152     AddButton(menu, "Write PDF (gl2ps)", PDFCbk);
151     AddButton(menu,"Write PS (pixmap)",PixmapP    153     AddButton(menu,"Write PS (pixmap)",PixmapPostScriptCbk);
152     AddButton(menu,"Write IV",WriteInventorCbk    154     AddButton(menu,"Write IV",WriteInventorCbk);
153     AddButton(menu,"Escape",EscapeCbk);}          155     AddButton(menu,"Escape",EscapeCbk);}
154                                                   156 
155    {Widget menu = AddMenu(menuBar,"Etc","Etc")    157    {Widget menu = AddMenu(menuBar,"Etc","Etc");
156     AddButton(menu,"Erase detector",EraseDetec    158     AddButton(menu,"Erase detector",EraseDetectorCbk);
157     AddButton(menu,"Erase event",EraseEventCbk    159     AddButton(menu,"Erase event",EraseEventCbk);
158     AddButton(menu,"Set solid",SetSolidCbk);      160     AddButton(menu,"Set solid",SetSolidCbk);
159 /*    AddButton(menu,"Set (G4) wire frame",Set    161 /*    AddButton(menu,"Set (G4) wire frame",SetWireFrameCbk);*/
160     AddButton(menu,"Set (G4) reduced wire fram    162     AddButton(menu,"Set (G4) reduced wire frame",SetReducedWireFrameCbk);
161     AddButton(menu,"Set (G4) full wire frame",    163     AddButton(menu,"Set (G4) full wire frame",SetFullWireFrameCbk);
162     AddButton(menu,"Visible mothers + invisibl    164     AddButton(menu,"Visible mothers + invisible daughters",SetPreviewCbk);
163     AddButton(menu,"Visible mothers + visible     165     AddButton(menu,"Visible mothers + visible daughters",SetPreviewAndFullCbk);
164     AddButton(menu,"Update scene",UpdateSceneC    166     AddButton(menu,"Update scene",UpdateSceneCbk);
165     AddButton(menu,"Scene graph stats",SceneGr    167     AddButton(menu,"Scene graph stats",SceneGraphStatisticsCbk);
166    }                                              168    }
167                                                   169 
168    {Widget menu = AddMenu(menuBar,"Help","Help    170    {Widget menu = AddMenu(menuBar,"Help","Help");
169     AddButton(menu,"Controls",HelpCbk);}          171     AddButton(menu,"Controls",HelpCbk);}
170                                                   172 
171     //fViewer = new SoXtExaminerViewer(form,wN    173     //fViewer = new SoXtExaminerViewer(form,wName.c_str(),TRUE);
172                                                   174     
173     XtSetArg(args[0],XmNtopAttachment   ,XmATT    175     XtSetArg(args[0],XmNtopAttachment   ,XmATTACH_WIDGET);
174     XtSetArg(args[1],XmNtopWidget       ,menuB    176     XtSetArg(args[1],XmNtopWidget       ,menuBar);
175     XtSetArg(args[2],XmNleftAttachment  ,XmATT    177     XtSetArg(args[2],XmNleftAttachment  ,XmATTACH_FORM);
176     XtSetArg(args[3],XmNrightAttachment ,XmATT    178     XtSetArg(args[3],XmNrightAttachment ,XmATTACH_FORM);
177     XtSetArg(args[4],XmNbottomAttachment,XmATT    179     XtSetArg(args[4],XmNbottomAttachment,XmATTACH_FORM);
178     XtSetValues(fViewer->getWidget(),args,5);     180     XtSetValues(fViewer->getWidget(),args,5);
179                                                   181 
180     fHelpForm = XmCreateFormDialog(fShell,(cha    182     fHelpForm = XmCreateFormDialog(fShell,(char*)"help",NULL,0);
181     XtSetArg(args[0],XmNleftAttachment  ,XmATT    183     XtSetArg(args[0],XmNleftAttachment  ,XmATTACH_FORM);
182     XtSetArg(args[1],XmNrightAttachment ,XmATT    184     XtSetArg(args[1],XmNrightAttachment ,XmATTACH_FORM);
183     XtSetArg(args[2],XmNbottomAttachment,XmATT    185     XtSetArg(args[2],XmNbottomAttachment,XmATTACH_FORM);
184     Widget cancel = XmCreatePushButton(fHelpFo    186     Widget cancel = XmCreatePushButton(fHelpForm,(char*)"helpCancel",args,3);
185     XtAddCallback(cancel,XmNactivateCallback,H    187     XtAddCallback(cancel,XmNactivateCallback,HelpCancelCbk,(XtPointer)this);
186     XtManageChild(cancel);                        188     XtManageChild(cancel);
187     XtSetArg(args[0],XmNtopAttachment   ,XmATT    189     XtSetArg(args[0],XmNtopAttachment   ,XmATTACH_FORM);
188     XtSetArg(args[1],XmNleftAttachment  ,XmATT    190     XtSetArg(args[1],XmNleftAttachment  ,XmATTACH_FORM);
189     XtSetArg(args[2],XmNrightAttachment ,XmATT    191     XtSetArg(args[2],XmNrightAttachment ,XmATTACH_FORM);
190     XtSetArg(args[3],XmNbottomAttachment,XmATT    192     XtSetArg(args[3],XmNbottomAttachment,XmATTACH_WIDGET);
191     XtSetArg(args[4],XmNbottomWidget    ,cance    193     XtSetArg(args[4],XmNbottomWidget    ,cancel);
192     fHelpText = XmCreateScrolledText(fHelpForm    194     fHelpText = XmCreateScrolledText(fHelpForm,(char*)"helpText",args,5);
193     XtManageChild(fHelpText);                     195     XtManageChild(fHelpText);
194                                                   196 
195     fInteractorManager->AddShell(fShell);         197     fInteractorManager->AddShell(fShell);
196                                                   198 
197   } else {                                        199   } else {
198     char* str = fInteractorManager->GetCreatio    200     char* str = fInteractorManager->GetCreationString();
199     if(str!=0) wName = str;                       201     if(str!=0) wName = str;
200     // G4cout << "DEBUG CREATING THE VIEWER WI    202     // G4cout << "DEBUG CREATING THE VIEWER WITH parent = " << parent << G4endl;
201     fViewer = new G4OpenInventorXtExaminerView    203     fViewer = new G4OpenInventorXtExaminerViewer(parent, wName.c_str(), TRUE);
202   }                                               204   }
203                                                   205 
204   // Use our own SelectionCB for the Xt viewer    206   // Use our own SelectionCB for the Xt viewer to allow for abbreviated output
205   // when picking a trajectory                    207   // when picking a trajectory
206   fSoSelection->removeSelectionCallback(G4Open    208   fSoSelection->removeSelectionCallback(G4OpenInventorViewer::SelectionCB,
207                                         this);    209                                         this);
208 //  fSoSelection->addSelectionCallback(Selecti    210 //  fSoSelection->addSelectionCallback(SelectionCB, this);
209                                                   211 
210   fViewer->setSize(SbVec2s(width,height));        212   fViewer->setSize(SbVec2s(width,height));
211                                                   213 
212   // Have a GL2PS render action :                 214   // Have a GL2PS render action :
213   const SbViewportRegion& vpRegion = fViewer->    215   const SbViewportRegion& vpRegion = fViewer->getViewportRegion();
214   fGL2PSAction = new SoGL2PSAction(vpRegion);     216   fGL2PSAction = new SoGL2PSAction(vpRegion);
215   fViewer->setGLRenderAction(fGL2PSAction);       217   fViewer->setGLRenderAction(fGL2PSAction);
216                                                   218 
217   // Else :                                       219   // Else :
218   fViewer->setSceneGraph(fSoSelection);           220   fViewer->setSceneGraph(fSoSelection);
219   fViewer->viewAll();                             221   fViewer->viewAll();
220   fViewer->saveHomePosition();                    222   fViewer->saveHomePosition();
221   fViewer->setTitle(fName);                       223   fViewer->setTitle(fName);
222   fViewer->show();                                224   fViewer->show();
223   if(fShell) {                                    225   if(fShell) {
224     SoXt::show(fShell);                           226     SoXt::show(fShell);
225     fInteractorManager->FlushAndWaitExecution     227     fInteractorManager->FlushAndWaitExecution ();
226   }                                               228   }
227   fInteractorManager->SetCreatedInteractor (fV    229   fInteractorManager->SetCreatedInteractor (fViewer -> getWidget());
228   // TJR added:                                   230   // TJR added:
229   fViewer->setTransparencyType(SoGLRenderActio    231   fViewer->setTransparencyType(SoGLRenderAction::SORTED_OBJECT_ADD);
230 }                                                 232 }
231                                                   233 
232 G4OpenInventorXtExtendedViewer::~G4OpenInvento    234 G4OpenInventorXtExtendedViewer::~G4OpenInventorXtExtendedViewer () {
233   if(fShell) fInteractorManager->RemoveShell(f    235   if(fShell) fInteractorManager->RemoveShell(fShell);
234   if(fViewer) {                                   236   if(fViewer) {
235     fViewer->setSceneGraph(0);                    237     fViewer->setSceneGraph(0);
236     //FIXME : SGI : the below "delete" block t    238     //FIXME : SGI : the below "delete" block things.
237     //FIXME : CoinXt : the below "delete" cras    239     //FIXME : CoinXt : the below "delete" crashe in ~SoXtRenderArea.
238     //FIXME : delete fViewer;                     240     //FIXME : delete fViewer;
239   }                                               241   }
240   if(fShell) XtDestroyWidget(fShell);             242   if(fShell) XtDestroyWidget(fShell);
241 }                                                 243 }
242                                                   244 
243 void G4OpenInventorXtExtendedViewer::FinishVie    245 void G4OpenInventorXtExtendedViewer::FinishView () {
244   if(!fViewer) return;                            246   if(!fViewer) return;
245   fViewer->viewAll();                             247   fViewer->viewAll();
246   fViewer->saveHomePosition();                    248   fViewer->saveHomePosition();
247 }                                                 249 }
248                                                   250 
249 void G4OpenInventorXtExtendedViewer::SetView (    251 void G4OpenInventorXtExtendedViewer::SetView () {
250   G4OpenInventorViewer::SetView ();               252   G4OpenInventorViewer::SetView ();
251   if(!fViewer) return;                            253   if(!fViewer) return;
252   // Background.                                  254   // Background.
253   G4Colour b = fVP.GetBackgroundColour ();        255   G4Colour b = fVP.GetBackgroundColour ();
254   fViewer->setBackgroundColor                     256   fViewer->setBackgroundColor
255     (SbColor((float)b.GetRed(),(float)b.GetGre    257     (SbColor((float)b.GetRed(),(float)b.GetGreen(),(float)b.GetBlue()));
256 }                                                 258 }
257                                                   259 
258                                                   260 
259 void G4OpenInventorXtExtendedViewer::ViewerRen    261 void G4OpenInventorXtExtendedViewer::ViewerRender () {
260   if(!fViewer) return;                            262   if(!fViewer) return;
261   fViewer->render();                              263   fViewer->render();
262 }                                                 264 }
263                                                   265 
264 SoCamera* G4OpenInventorXtExtendedViewer::GetC    266 SoCamera* G4OpenInventorXtExtendedViewer::GetCamera () {
265   if(!fViewer) return 0;                          267   if(!fViewer) return 0;
266   return fViewer->getCamera();                    268   return fViewer->getCamera();
267 }                                                 269 }
268                                                   270 
269 Widget G4OpenInventorXtExtendedViewer::AddMenu    271 Widget G4OpenInventorXtExtendedViewer::AddMenu(
270  Widget aMenuBar                                  272  Widget aMenuBar
271 ,const G4String& aName                            273 ,const G4String& aName
272 ,const G4String& aLabel                           274 ,const G4String& aLabel
273 )                                                 275 )
274 {                                                 276 {
275   // Pulldown menu :                              277   // Pulldown menu :
276   Widget menu = XmCreatePulldownMenu(aMenuBar,    278   Widget menu = XmCreatePulldownMenu(aMenuBar,(char*)aName.c_str(),NULL,0);
277   // Cascade button :                             279   // Cascade button :
278   Arg args[2];                                    280   Arg args[2];
279   XmString cps =                                  281   XmString cps = 
280     XmStringLtoRCreate((char*)aLabel.c_str(),(    282     XmStringLtoRCreate((char*)aLabel.c_str(),(char*)XmSTRING_DEFAULT_CHARSET);
281   XtSetArg (args[0],XmNlabelString,cps);          283   XtSetArg (args[0],XmNlabelString,cps);
282   XtSetArg (args[1],XmNsubMenuId,menu);           284   XtSetArg (args[1],XmNsubMenuId,menu);
283   Widget widget = XmCreateCascadeButton(aMenuB    285   Widget widget = XmCreateCascadeButton(aMenuBar,(char*)aName.c_str(),args,2);
284   XmStringFree (cps);                             286   XmStringFree (cps);
285   XtManageChild(widget);                          287   XtManageChild(widget);
286   return menu;                                    288   return menu;
287 }                                                 289 }
288 void G4OpenInventorXtExtendedViewer::AddButton    290 void G4OpenInventorXtExtendedViewer::AddButton (
289  Widget aMenu                                     291  Widget aMenu
290 ,const G4String& aLabel                           292 ,const G4String& aLabel
291 ,XtCallbackProc aCallback                         293 ,XtCallbackProc aCallback
292 )                                                 294 )
293 {                                                 295 {
294   Widget widget = XmCreatePushButton(aMenu,(ch    296   Widget widget = XmCreatePushButton(aMenu,(char*)aLabel.c_str(),NULL,0);
295   XtManageChild(widget);                          297   XtManageChild(widget);
296   XtAddCallback(widget,XmNactivateCallback,aCa    298   XtAddCallback(widget,XmNactivateCallback,aCallback,(XtPointer)this);
297 }                                                 299 }
298                                                   300 
299 void G4OpenInventorXtExtendedViewer::HelpCance    301 void G4OpenInventorXtExtendedViewer::HelpCancelCbk(
300   Widget,XtPointer aData,XtPointer) {             302   Widget,XtPointer aData,XtPointer) {
301   G4OpenInventorXtExtendedViewer* This = (G4Op    303   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
302   XtUnmanageChild(This->fHelpForm);               304   XtUnmanageChild(This->fHelpForm);
303 }                                                 305 }
304                                                   306 
305                                                   307 
306 //////////////////////////////////////////////    308 //////////////////////////////////////////////////////////////////////////////
307 //////////////////////////////////////////////    309 //////////////////////////////////////////////////////////////////////////////
308 //////////////////////////////////////////////    310 //////////////////////////////////////////////////////////////////////////////
309                                                   311 
310 void G4OpenInventorXtExtendedViewer::EscapeCbk    312 void G4OpenInventorXtExtendedViewer::EscapeCbk(
311   Widget,XtPointer aData,XtPointer) {             313   Widget,XtPointer aData,XtPointer) {
312   G4OpenInventorXtExtendedViewer* This = (G4Op    314   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
313   This->Escape();                                 315   This->Escape();
314 }                                                 316 }
315                                                   317 
316 // Allow escape from X event loop via key         318 // Allow escape from X event loop via key
317 void G4OpenInventorXtExtendedViewer::EscapeFro    319 void G4OpenInventorXtExtendedViewer::EscapeFromKeyboardCbk(void* o) {
318   G4OpenInventorXtExtendedViewer* This = (G4Op    320   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)o;
319   This->Escape();                                 321   This->Escape();
320 }                                                 322 }
321                                                   323 
322 void G4OpenInventorXtExtendedViewer::PostScrip    324 void G4OpenInventorXtExtendedViewer::PostScriptCbk(
323   Widget,XtPointer aData,XtPointer) {             325   Widget,XtPointer aData,XtPointer) {
324   G4OpenInventorXtExtendedViewer* This = (G4Op    326   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
325   // FWJ Workaround: avoids empty 2nd page in     327   // FWJ Workaround: avoids empty 2nd page in file
326   SbBool superimpState =                          328   SbBool superimpState =
327      This->fViewer->getSuperimpositionEnabled(    329      This->fViewer->getSuperimpositionEnabled(This->fViewer->superimposition);
328   This->fViewer->setSuperimpositionEnabled(Thi    330   This->fViewer->setSuperimpositionEnabled(This->fViewer->superimposition,
329                                            FAL    331                                            FALSE);
330   This->WritePostScript();                        332   This->WritePostScript();
331   if (superimpState)                              333   if (superimpState)
332      This->fViewer->setSuperimpositionEnabled(    334      This->fViewer->setSuperimpositionEnabled(This->fViewer->superimposition,
333                                                   335                                               TRUE);
334 }                                                 336 }
335 void G4OpenInventorXtExtendedViewer::PDFCbk(      337 void G4OpenInventorXtExtendedViewer::PDFCbk(
336   Widget,XtPointer aData,XtPointer) {             338   Widget,XtPointer aData,XtPointer) {
337   G4OpenInventorXtExtendedViewer* This = (G4Op    339   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
338   // FWJ Workaround: avoids empty 2nd page in     340   // FWJ Workaround: avoids empty 2nd page in file
339   SbBool superimpState =                          341   SbBool superimpState =
340      This->fViewer->getSuperimpositionEnabled(    342      This->fViewer->getSuperimpositionEnabled(This->fViewer->superimposition);
341   This->fViewer->setSuperimpositionEnabled(Thi    343   This->fViewer->setSuperimpositionEnabled(This->fViewer->superimposition,
342                                            FAL    344                                            FALSE);
343   This->WritePDF();                               345   This->WritePDF();
344   if (superimpState)                              346   if (superimpState)
345      This->fViewer->setSuperimpositionEnabled(    347      This->fViewer->setSuperimpositionEnabled(This->fViewer->superimposition,
346                                                   348                                               TRUE);
347 }                                                 349 }
348                                                   350 
349 void G4OpenInventorXtExtendedViewer::PixmapPos    351 void G4OpenInventorXtExtendedViewer::PixmapPostScriptCbk(
350   Widget,XtPointer aData,XtPointer) {             352   Widget,XtPointer aData,XtPointer) {
351   G4OpenInventorXtExtendedViewer* This = (G4Op    353   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
352   This->WritePixmapPostScript();                  354   This->WritePixmapPostScript();
353 }                                                 355 }
354                                                   356 
355 void G4OpenInventorXtExtendedViewer::SceneGrap    357 void G4OpenInventorXtExtendedViewer::SceneGraphStatisticsCbk(
356   Widget,XtPointer aData,XtPointer) {             358   Widget,XtPointer aData,XtPointer) {
357   G4OpenInventorXtExtendedViewer* This = (G4Op    359   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
358   This->SceneGraphStatistics();                   360   This->SceneGraphStatistics();
359 }                                                 361 }
360                                                   362 
361 void G4OpenInventorXtExtendedViewer::WriteInve    363 void G4OpenInventorXtExtendedViewer::WriteInventorCbk(
362   Widget,XtPointer aData,XtPointer) {             364   Widget,XtPointer aData,XtPointer) {
363   G4OpenInventorXtExtendedViewer* This = (G4Op    365   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
364   This->WriteInventor();                          366   This->WriteInventor();
365 }                                                 367 }
366                                                   368 
367 void G4OpenInventorXtExtendedViewer::EraseDete    369 void G4OpenInventorXtExtendedViewer::EraseDetectorCbk(
368   Widget,XtPointer aData,XtPointer) {             370   Widget,XtPointer aData,XtPointer) {
369   G4OpenInventorXtExtendedViewer* This = (G4Op    371   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
370   This->EraseDetector();                          372   This->EraseDetector();
371 }                                                 373 }
372                                                   374 
373 void G4OpenInventorXtExtendedViewer::EraseEven    375 void G4OpenInventorXtExtendedViewer::EraseEventCbk(
374   Widget,XtPointer aData,XtPointer) {             376   Widget,XtPointer aData,XtPointer) {
375   G4OpenInventorXtExtendedViewer* This = (G4Op    377   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
376   This->EraseEvent();                             378   This->EraseEvent();
377 }                                                 379 }
378                                                   380 
379 void G4OpenInventorXtExtendedViewer::SetSolidC    381 void G4OpenInventorXtExtendedViewer::SetSolidCbk(
380   Widget,XtPointer aData,XtPointer) {             382   Widget,XtPointer aData,XtPointer) {
381   G4OpenInventorXtExtendedViewer* This = (G4Op    383   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
382   This->SetSolid();                               384   This->SetSolid();
383 }                                                 385 }
384                                                   386 
385 void G4OpenInventorXtExtendedViewer::SetWireFr    387 void G4OpenInventorXtExtendedViewer::SetWireFrameCbk(
386   Widget,XtPointer aData,XtPointer) {             388   Widget,XtPointer aData,XtPointer) {
387   G4OpenInventorXtExtendedViewer* This = (G4Op    389   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
388   This->SetWireFrame();                           390   This->SetWireFrame();
389 }                                                 391 }
390                                                   392 
391 void G4OpenInventorXtExtendedViewer::SetReduce    393 void G4OpenInventorXtExtendedViewer::SetReducedWireFrameCbk(
392   Widget,XtPointer aData,XtPointer) {             394   Widget,XtPointer aData,XtPointer) {
393   G4OpenInventorXtExtendedViewer* This = (G4Op    395   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
394   This->SetReducedWireFrame(true);                396   This->SetReducedWireFrame(true);
395 }                                                 397 }
396                                                   398 
397 void G4OpenInventorXtExtendedViewer::SetFullWi    399 void G4OpenInventorXtExtendedViewer::SetFullWireFrameCbk(
398   Widget,XtPointer aData,XtPointer) {             400   Widget,XtPointer aData,XtPointer) {
399   G4OpenInventorXtExtendedViewer* This = (G4Op    401   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
400   This->SetReducedWireFrame(false);               402   This->SetReducedWireFrame(false);
401 }                                                 403 }
402                                                   404 
403 void G4OpenInventorXtExtendedViewer::UpdateSce    405 void G4OpenInventorXtExtendedViewer::UpdateSceneCbk(
404   Widget,XtPointer aData,XtPointer) {             406   Widget,XtPointer aData,XtPointer) {
405   G4OpenInventorXtExtendedViewer* This = (G4Op    407   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
406   This->UpdateScene();                            408   This->UpdateScene();
407 }                                                 409 }
408                                                   410 
409 void G4OpenInventorXtExtendedViewer::SetPrevie    411 void G4OpenInventorXtExtendedViewer::SetPreviewCbk(
410   Widget,XtPointer aData,XtPointer) {             412   Widget,XtPointer aData,XtPointer) {
411   G4OpenInventorXtExtendedViewer* This = (G4Op    413   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
412   This->SetPreview();                             414   This->SetPreview();
413 }                                                 415 }
414                                                   416 
415 void G4OpenInventorXtExtendedViewer::SetPrevie    417 void G4OpenInventorXtExtendedViewer::SetPreviewAndFullCbk(
416   Widget,XtPointer aData,XtPointer) {             418   Widget,XtPointer aData,XtPointer) {
417   G4OpenInventorXtExtendedViewer* This = (G4Op    419   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
418   This->SetPreviewAndFull();                      420   This->SetPreviewAndFull();
419 }                                                 421 }
420                                                   422 
421 void G4OpenInventorXtExtendedViewer::HelpCbk(     423 void G4OpenInventorXtExtendedViewer::HelpCbk(
422   Widget,XtPointer aData,XtPointer) {             424   Widget,XtPointer aData,XtPointer) {
423   G4OpenInventorXtExtendedViewer* This = (G4Op    425   G4OpenInventorXtExtendedViewer* This = (G4OpenInventorXtExtendedViewer*)aData;
424   XtManageChild(This->fHelpForm);                 426   XtManageChild(This->fHelpForm);
425   XmTextSetString(This->fHelpText,(char*)This-    427   XmTextSetString(This->fHelpText,(char*)This->Help().c_str());
426 }                                                 428 }
                                                   >> 429 
                                                   >> 430 #endif
427                                                   431