Geant4 Cross Reference |
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 // Frederick Jones TRIUMF 30 NOV 2017 27 // Frederick Jones TRIUMF 30 NOV 2017 28 28 >> 29 #ifdef G4VIS_BUILD_OIQT_DRIVER >> 30 29 // this : 31 // this : 30 #include "G4OpenInventorQt.hh" 32 #include "G4OpenInventorQt.hh" 31 33 >> 34 #include <Inventor/Qt/SoQt.h> >> 35 32 #include "G4SoQt.hh" 36 #include "G4SoQt.hh" >> 37 //#include "G4Qt.hh" 33 #include "G4OpenInventorSceneHandler.hh" 38 #include "G4OpenInventorSceneHandler.hh" 34 #include "G4OpenInventorQtViewer.hh" 39 #include "G4OpenInventorQtViewer.hh" 35 40 36 #ifndef G4GMAKE << 37 #include "moc_G4OpenInventorQt.cpp" << 38 #endif << 39 << 40 #define G4warn G4cout << 41 << 42 G4OpenInventorQt::G4OpenInventorQt() 41 G4OpenInventorQt::G4OpenInventorQt() 43 : G4OpenInventor("OpenInventorQt", "OIQt", G << 42 : G4OpenInventor("OpenInventorQt", "OIQT", G4VGraphicsSystem::threeD), 44 fInited(false) 43 fInited(false) 45 { 44 { 46 } 45 } 47 46 48 void G4OpenInventorQt::Initialize() 47 void G4OpenInventorQt::Initialize() 49 { 48 { 50 if(fInited) return; //Done 49 if(fInited) return; //Done 51 50 52 // FWJ DEBUG << 51 G4cout << "G4OpenInventorQt: SETINTERACTORMANAGER " << G4SoQt::getInstance() 53 // G4cout << "G4OpenInventorQt: SETINTERACT << 52 << G4endl; 54 // << G4endl; << 55 << 56 SetInteractorManager(G4SoQt::getInstance()); 53 SetInteractorManager(G4SoQt::getInstance()); >> 54 G4cout << "G4OpenInventorQt: GETINTERACTORMANAGER " << GetInteractorManager() >> 55 << G4endl; 57 56 58 // FWJ DEBUG << 57 // FWJ from G4OIXt: these have no counterpart in Qt 59 // G4cout << "G4OpenInventorQt: GETINTERACTO << 58 // GetInteractorManager() -> 60 // GetInteractorManager() << G4endl; << 59 // RemoveDispatcher((G4DispatchFunction)XtDispatchEvent); >> 60 // GetInteractorManager() -> >> 61 // AddDispatcher((G4DispatchFunction)SoXt::dispatchEvent); >> 62 // Widget top = (Widget)GetInteractorManager()->GetMainInteractor(); >> 63 >> 64 // FWJ apparently not used in OpenGLQt: >> 65 // if(getenv("XENVIRONMENT")==NULL) { >> 66 // XrmDatabase database = XrmGetDatabase(QtDisplay(top)); >> 67 // if(database!=NULL) { >> 68 // XrmPutLineResource(&database,"*topShadowColor:white"); >> 69 // XrmPutLineResource(&database,"*bottomShadowColor:black"); >> 70 // XrmPutLineResource(&database,"*foreground:black"); >> 71 // XrmPutLineResource(&database,"*background:lightgrey"); >> 72 // XrmPutLineResource(&database,"*borderColor:lightgrey"); >> 73 // XrmPutLineResource(&database,"*fontList:-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-1"); >> 74 // XrmPutLineResource(&database,"*help_popup.title:Help"); >> 75 // XrmPutLineResource(&database,"*helpCancel.labelString:Cancel"); >> 76 // XrmPutLineResource(&database,"*helpText.editMode:multi_line_edit"); >> 77 // XrmPutLineResource(&database,"*helpText.columns:60"); >> 78 // XrmPutLineResource(&database,"*helpText.rows:20"); >> 79 // XrmPutLineResource(&database,"*helpText.background:white"); >> 80 // XrmPutLineResource(&database,"*helpText.fontList:*courier*-r-*--14-*"); >> 81 // XrmPutLineResource(&database,"*helpText.maxLength:8000"); >> 82 // } >> 83 // } 61 84 62 // FWJ for now, create an independent main w 85 // FWJ for now, create an independent main window 63 // NOW should be done in G4SoQt [public G4VI 86 // NOW should be done in G4SoQt [public G4VInteractorManager] 64 // QWidget* mainWin = SoQt::init("Geant4"); << 87 //QWidget* mainWin = SoQt::init("Geant4"); >> 88 >> 89 // Note that GetMainInteractor() returns G4Interactor [typedef void*] >> 90 QWidget* mainWin = (QWidget*)(GetInteractorManager()->GetMainInteractor()); >> 91 G4cout << "OpenInventorQt: OBTAINED SoQt main window " << mainWin << G4endl; >> 92 // G4cout << "OpenInventorQt: CREATED SoQt main window " << mainWin << G4endl; >> 93 G4cout << "SoQt::getTopLevelWidget()" << SoQt::getTopLevelWidget() << G4endl; 65 94 66 // In parent G4OpenInventor 95 // In parent G4OpenInventor 67 InitNodes(); 96 InitNodes(); 68 97 69 fInited = true; 98 fInited = true; 70 } 99 } 71 100 72 G4OpenInventorQt::~G4OpenInventorQt() 101 G4OpenInventorQt::~G4OpenInventorQt() 73 { 102 { 74 } 103 } 75 104 76 G4VViewer* G4OpenInventorQt::CreateViewer(G4VS 105 G4VViewer* G4OpenInventorQt::CreateViewer(G4VSceneHandler& scene, 77 cons << 106 const G4String& name) 78 { 107 { 79 auto pView = new G4OpenInventorQtViewer(stat << 80 << 81 if (pView) { << 82 if (pView->GetViewId() < 0) { << 83 G4warn << << 84 "G4OpenInventorQt::CreateViewer: ERROR f << 85 " view id in G4OpenInventorQtViewer crea << 86 "\n Destroying view and returning null p << 87 << G4endl; << 88 delete pView; << 89 pView = 0; << 90 } << 91 } << 92 if (!pView) { << 93 G4warn << << 94 "G4OpenInventorQt::CreateViewer: ERROR: nu << 95 << G4endl; << 96 } << 97 << 98 Initialize(); 108 Initialize(); 99 << 109 G4OpenInventorSceneHandler* pScene = (G4OpenInventorSceneHandler*)&scene; 100 return pView; << 110 return new G4OpenInventorQtViewer(*pScene, name); 101 } 111 } >> 112 >> 113 >> 114 #endif 102 115