29 #ifndef HookEventProcState_H 30 #define HookEventProcState_H 1 48 #ifndef G4OPENINVENTORXTEXAMINERVIEWER_HH 49 #define G4OPENINVENTORXTEXAMINERVIEWER_HH 54 #include <Inventor/SbLinear.h> 55 #include <Inventor/nodes/SoLineSet.h> 56 #include <Inventor/nodes/SoEventCallback.h> 57 #include <Inventor/Xt/viewers/SoXtExaminerViewer.h> 58 #include <Inventor/events/SoKeyboardEvent.h> 67 friend class G4OpenInventorXtExaminerViewerMessenger;
71 Widget menuBar, fileMenu, openFileDialog, newFileDialog,
72 loadRefCoordsDialog, saveRefCoordsDialog,
73 loadSceneGraphDialog, saveSceneGraphDialog,
74 viewPtSelection, listsDialog, myShellDialog, myViewPtList, myElementList;
77 void (*escapeCallback)(
void *);
85 const char *
name = NULL,
87 SoXtFullViewer::BuildFlag flag = BUILD_ALL,
88 SoXtViewer::Type type = BROWSER);
92 template <
class T>
void parseString(T &t,
const std::string &
s,
bool &
error);
94 Widget addMenu(std::string
name);
95 void addButton(Widget menu, std::string
name, XtCallbackProc);
98 void warningMsgDialog(std::string, String, XtCallbackProc);
106 Widget createScale(Widget,
char *,
int,
float);
107 void addEscapeCallback(
void (*cb)(
void *),
void *);
117 SoXtFullViewer::BuildFlag flag,
118 SoXtViewer::Type type,
122 Widget buildWidget(Widget parent);
124 virtual void createViewerButtons (Widget parent, SbPList * buttonlist);
126 virtual SbBool processSoEvent(
const SoEvent *
const event);
127 void moveCamera(
float dist = 0,
bool lookdown =
false);
132 void updateViewParams(SoKeyboardEvent::Key);
134 virtual void afterRealizeHook();
138 void constructor(
const SbBool build);
146 static void sceneChangeCB(
void *, SoSensor *);
149 void writeViewPtIdx();
150 void cleanUpAfterPrevFile();
152 void popUpFileSelDialog(Widget&, std::string, std::string, XtCallbackProc);
153 static void cancelFileSelDialogCB(Widget, XtPointer, XtPointer);
154 static void openViewPtFileCB(Widget, XtPointer, XtPointer);
155 static void viewPtFileSelectedCB(Widget, XtPointer, XtPointer);
156 static void newViewPtFileCB(Widget, XtPointer, XtPointer);
157 static void createNewVPFileCB(Widget, XtPointer, XtPointer);
158 static void overwriteFileCB(Widget, XtPointer, XtPointer);
159 static void loadRefCoordsDialogCB(Widget, XtPointer, XtPointer);
160 static void loadRefCoordsCB(Widget, XtPointer, XtPointer);
161 static void saveRefCoordsDialogCB(Widget, XtPointer, XtPointer);
162 static void saveRefCoordsCB(Widget, XtPointer, XtPointer);
163 static void saveRefCoordsOverWriteCB(Widget, XtPointer, XtPointer);
164 static void loadSceneGraphDialogCB(Widget, XtPointer, XtPointer);
165 static void loadSceneGraphCB(Widget, XtPointer, XtPointer);
166 static void saveSceneGraphDialogCB(Widget, XtPointer, XtPointer);
167 static void saveSceneGraphCB(Widget, XtPointer, XtPointer);
168 static void saveSceneGraphOverWriteCB(Widget, XtPointer, XtPointer);
169 static void mouseoverCB(
void *aThis, SoEventCallback *eventCB);
170 static void pickingCB(
void *aThis, SoEventCallback *eventCB);
174 void addViewPoints();
175 static void closeListsDialogCB(Widget, XtPointer, XtPointer);
176 static void loadBookmarkCB(Widget, XtPointer, XtPointer);
177 static void renameBookmarkCB(Widget, XtPointer, XtPointer);
178 void renameViewPt(
char *vpName);
179 static void sortBookmarksCB(Widget, XtPointer, XtPointer);
180 void sortViewPts(std::vector<std::string>);
181 static void deleteBookmarkCB(Widget, XtPointer, XtPointer);
182 static void deleteViewPtCB(Widget, XtPointer, XtPointer);
183 void deleteViewPt(
char *vpName = NULL);
186 static void animateRefParticleCB(Widget, XtPointer, XtPointer);
187 static void animateSensorCB(
void *, SoSensor *);
188 static void animateSensorRotationCB(
void *, SoSensor *);
189 void animateRefParticle();
190 void saveCurCamera();
191 void restoreCamera();
202 static void prevViewPtCB(Widget, XtPointer, XtPointer);
203 static void nextViewPtCB(Widget, XtPointer, XtPointer);
204 static void saveViewPtCB(Widget, XtPointer, XtPointer);
205 static void abbrOutputCB(Widget, XtPointer, XtPointer);
206 static void pickRefPathCB(Widget, XtPointer, XtPointer);
207 static void constructListsDialog(Widget, XtPointer, XtPointer);
208 void saveViewPt(
char *
name);
211 static void lookAtSceneElementCB(Widget, XtPointer, XtPointer);
212 static void cancelSceneElementSelectionCB(Widget, XtPointer, XtPointer);
214 void setReferencePath(SoLineSet*, SoCoordinate3*,
bool append =
false);
215 void setReferencePathZPos();
216 void findAndSetRefPath();
217 SoCoordinate3* getCoordsNode(SoFullPath *path);
218 void getSceneElements();
219 float sqrlen(
const SbVec3f&);
220 void distanceToTrajectory(
const SbVec3f&,
float&, SbVec3f&,
int&);
222 void createElementsList(Widget);
223 static void closeMainWindowCB(Widget, XtPointer, XtPointer);
224 void evenOutRefParticlePts();
226 static void gotoRefPathStartCB(Widget, XtPointer, XtPointer);
227 void gotoRefPathStart();
228 static void invertRefPathCB(Widget, XtPointer, XtPointer);
229 void invertRefPath();
329 void setStartingPtForAnimation();
334 static void getViewPtNameCB(Widget, XtPointer, XtPointer);
335 std::string viewPtAutoName();
371 SoNode * getSuperimpositionNode(SoNode *,
const char *
name);
373 void superimpositionEvent(SoAction * action);
374 static void superimpositionCB(
void * closure, SoAction * action);
376 virtual void actualRedraw(
void);
377 void updateSpeedIndicator(
void);
SbRotation camStartOrient
SoText2 * mouseOverTextLogName
SoFont * mouseOverFontSolid
G4OpenInventorXtExaminerViewer * viewer
SoTranslation * mouseOverTransZPos
std::vector< SbVec3f > refParticleTrajectory
SoNodeSensor * sceneChangeSensor
SoText2 * mouseOverTextMaterial
SoText2 * mouseOverTextSolid
SoSwitch * animSpeedOutlineSwitch
bool viewingBeforePickRef
std::string saveScenegraphFileName
std::vector< float > refZPositions
SoTranslation * mouseOverTransMaterial
static G4OpenInventorXtExaminerViewer * viewer
virtual G4bool Notify(G4ApplicationState requiredState)
SoFont * mouseOverFontLogName
SoTranslation * curInfoTrans
float distanceToBeamlineStart
std::vector< viewPtData > viewPtList
HookEventProcState * hookBeamOn
SoCoordinate3 * sgeometry
HookEventProcState(G4OpenInventorXtExaminerViewer *)
SoSearchAction * searcher
SoTimerSensor * animateSensor
bool operator<(elementForSorting const &other) const
viewPtData camB4Animation
SoFont * mouseOverFontZPos
SoFont * mouseOverFontMaterial
SoSwitch * animSpeedSwitch
SoTimerSensor * animateSensorRotation
SoTranslation * stranslation
std::vector< sceneElement > sceneElements
SoText2 * mouseOverTextZPos
static PROLOG_HANDLER error
SoSeparator * newSceneGraph
SoTranslation * mouseOverTransSolid
Widget saveRefCoordsWidget
std::string saveRefCoordsFileName
SoTranslation * mouseOverTransLogName
Widget saveScenegraphWidget