Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 26 // Frederick Jones TRIUMF 07 November 2017 27 // Open Inventor viewer using SoQt. 28 29 #ifndef G4OPENINVENTORQTVIEWER_HH 30 #define G4OPENINVENTORQTVIEWER_HH 31 32 // Inheritance : 33 #include "G4OpenInventorViewer.hh" 34 35 #include <Inventor/nodes/SoEventCallback.h> 36 37 class G4OpenInventorQtExaminerViewer; 38 39 class SoQtViewer; 40 41 #include <qobject.h> 42 43 class QMenuBar; 44 class QFont; 45 class QAction; 46 47 #if 0x060000 <= QT_VERSION 48 class G4OpenInventorQtDestroyCallback; 49 #endif 50 51 class G4OpenInventorQtViewer: public QObject, 52 public G4OpenInventorViewer { 53 54 Q_OBJECT 55 56 private Q_SLOTS : 57 58 // File menu 59 void FileWritePSCB(); 60 void FileWritePDFCB(); 61 void FileWriteIVCB(); 62 void FileEscapeCB(); 63 64 // Etc menu 65 void EtcEraseDetectorCB(); 66 void EtcEraseEventCB(); 67 void EtcSetSolidCB(); 68 void EtcSetReducedWireframeCB(); 69 void EtcSetFullWireframeCB(); 70 void EtcVisibMInvisibDCB(); 71 void EtcVisibMVisibDCB(); 72 void EtcUpdateSceneCB(); 73 void EtcSceneGraphStatsCB(); 74 75 private: 76 77 // File menu 78 QAction* FileWritePS{nullptr}; 79 QAction* FileWritePDF{nullptr}; 80 QAction* FileWriteIV{nullptr}; 81 QAction* FileEscape{nullptr}; 82 83 // Etc menu 84 QAction* EtcEraseDetector{nullptr}; 85 QAction* EtcEraseEvent{nullptr}; 86 QAction* EtcSetSolid{nullptr}; 87 QAction* EtcSetReducedWireframe{nullptr}; 88 QAction* EtcSetFullWireframe{nullptr}; 89 QAction* EtcVisibMInvisibD{nullptr}; 90 QAction* EtcVisibMVisibD{nullptr}; 91 QAction* EtcUpdateScene{nullptr}; 92 QAction* EtcSceneGraphStats{nullptr}; 93 94 public: 95 96 G4OpenInventorQtViewer(G4OpenInventorSceneHandler& scene, 97 const G4String& name = ""); 98 virtual ~G4OpenInventorQtViewer(); 99 void Initialise(); 100 101 public: //G4VViewer 102 103 virtual void FinishView(); 104 virtual void SetView(); 105 106 protected: 107 108 virtual void ViewerRender(); 109 virtual SoCamera* GetCamera(); 110 // FWJ found insufficient to replace group and camera sensors 111 // static void FinishCB(void*, SoQtViewer*); 112 113 protected: 114 115 //SoQtExaminerViewer* fViewer; 116 G4OpenInventorQtExaminerViewer* fViewer; 117 118 #if 0x060000 <= QT_VERSION 119 G4OpenInventorQtDestroyCallback* fDestroyCallback; 120 #endif 121 }; 122 123 //G.Barrand: I don't put the below class within "#if 0x060000 <= QT_VERSION" 124 // since Qt6/moc does not handle it correctly! (With it, Qt6/moc 125 // will anyway NOT handle this class. It looks to be a known Qt problem). 126 //#if 0x060000 <= QT_VERSION 127 class G4OpenInventorQtDestroyCallback : public QObject { 128 Q_OBJECT 129 public: 130 G4OpenInventorQtDestroyCallback(G4OpenInventorQtViewer* a_viewer):fViewer(a_viewer) {} 131 virtual ~G4OpenInventorQtDestroyCallback() = default; 132 public slots: 133 void execute(){ 134 delete fViewer; 135 } 136 private: 137 G4OpenInventorQtViewer* fViewer; 138 }; 139 //#endif 140 141 #endif 142