Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/interfaces/implementation/src/G4Qt.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 /interfaces/implementation/src/G4Qt.cc (Version 11.3.0) and /interfaces/implementation/src/G4Qt.cc (Version 10.2.p3)


  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 //                                                
 27 //                                                
 28 // L. Garnier                                     
 29                                                   
 30 #include "G4Qt.hh"                                
 31                                                   
 32 #include "G4UImanager.hh"                         
 33 #include "G4ios.hh"                               
 34                                                   
 35 #include <qapplication.h>                         
 36 #include <qwidget.h>                              
 37                                                   
 38 #include <cstdlib>                                
 39 #include <cstring>                                
 40                                                   
 41 #ifdef G4VIS_USE_VTK_QT                           
 42 #  include "QVTKOpenGLNativeWidget.h"             
 43 #  include <qsurfaceformat.h>                     
 44 #endif                                            
 45                                                   
 46 G4Qt* G4Qt::instance = nullptr;                   
 47                                                   
 48 static G4bool QtInited = false;                   
 49                                                   
 50 /*********************************************    
 51 G4Qt* G4Qt::getInstance()                         
 52 /*********************************************    
 53 /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!    
 54 {                                                 
 55   return G4Qt::getInstance(0, nullptr, (char*)    
 56 }                                                 
 57 /*********************************************    
 58 G4Qt* G4Qt::getInstance(int a_argn, char** a_a    
 59 /*********************************************    
 60 /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!    
 61 {                                                 
 62   if (instance == nullptr) {                      
 63     instance = new G4Qt(a_argn, a_args, a_clas    
 64   }                                               
 65   return instance;                                
 66 }                                                 
 67 /*********************************************    
 68 G4Qt::G4Qt(int a_argn, char** a_args, char* /*    
 69 )                                                 
 70 /*********************************************    
 71 /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!    
 72 {                                                 
 73   argn = 0;                                       
 74   args = nullptr;                                 
 75   externalApp = false;                            
 76                                                   
 77   // Check if Qt already init in another exter    
 78   if (qApp) {                                     
 79     externalApp = true;                           
 80     QtInited = true;                              
 81     SetMainInteractor(qApp);                      
 82     SetArguments(a_argn, a_args);                 
 83   }                                               
 84   else {                                          
 85     if (! QtInited) {  // Qt should be Inited     
 86       // Then two cases :                         
 87       // - It is the first time we create G4UI    
 88       //   -> Inited and register                 
 89       // - It is the first time we create G4VI    
 90       //   -> Inited and NOT register             
 91                                                   
 92       if (a_argn != 0) {                          
 93         argn = a_argn;                            
 94         args = a_args;                            
 95       }                                           
 96       else {  // argc = 0                         
 97                                                   
 98         // FIXME : That's not the good argumen    
 99         // Interactor. Ex: How to get them fro    
100         argn = 1;                                 
101         args = (char**)malloc(1 * sizeof(char*    
102         args[0] = (char*)malloc(10 * sizeof(ch    
103         strncpy(args[0], "my_app \0", 9);         
104       }                                           
105                                                   
106       int* p_argn = (int*)malloc(sizeof(int));    
107       *p_argn = argn;                             
108 #ifdef WIN32                                      
109       qApp->setAttribute(Qt::AA_UseDesktopOpen    
110 #endif                                            
111                                                   
112 #ifdef G4VIS_USE_VTK_QT                           
113       QSurfaceFormat::setDefaultFormat(QVTKOpe    
114 #endif                                            
115       new QApplication(*p_argn, args);            
116       if (! qApp) {                               
117         G4UImanager* UImanager = G4UImanager::    
118         G4int verbose = UImanager->GetVerboseL    
119         if (verbose >= 2) {                       
120           G4cout << "G4Qt : Unable to init Qt.    
121         }                                         
122       }                                           
123       else {                                      
124         QtInited = true;                          
125         if (a_argn != 0) {                        
126           SetMainInteractor(qApp);                
127         }                                         
128         SetArguments(a_argn, a_args);             
129       }                                           
130     }                                             
131   }                                               
132   //  AddDispatcher     ((G4DispatchFunction)X    
133                                                   
134   /*                                              
135    * On some non-English locale, comma is used    
136    * bringing to weird behavior of strtod (str    
137    * This is "by design" from Qt, see https://    
138    *                                              
139    *      $ LC_NUMERIC=fr_FR.UTF-8 ./qtstrtod     
140    *      strtod(0.1) = 0                         
141    *      $ LC_NUMERIC=C ./qtstrtod               
142    *      strtod(0.1) = 0.1                       
143    *                                              
144    * Jerome Suhard, jerome@suhard.fr              
145    */                                             
146                                                   
147   // explicitly set the LC_NUMBERIC locale to     
148   setlocale(LC_NUMERIC, "C");                     
149 }                                                 
150 /*********************************************    
151 G4Qt::~G4Qt()                                     
152 /*********************************************    
153 /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!    
154 {                                                 
155   if (this == instance) {                         
156     instance = nullptr;                           
157   }                                               
158 }                                                 
159 /*********************************************    
160 G4bool G4Qt::Inited()                             
161 /*********************************************    
162 /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!    
163 {                                                 
164   return QtInited;                                
165 }                                                 
166 /*********************************************    
167 void* G4Qt::GetEvent()                            
168 /*********************************************    
169 /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!    
170 {                                                 
171   return nullptr;                                 
172 }                                                 
173 /*********************************************    
174 void G4Qt::FlushAndWaitExecution()                
175 /*********************************************    
176 /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!    
177 {                                                 
178   if (! qApp) return;                             
179   qApp->processEvents();                          
180 }                                                 
181                                                   
182 /*********************************************    
183 bool G4Qt::IsExternalApp()                        
184 /*********************************************    
185 /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!    
186 {                                                 
187   return externalApp;                             
188 }                                                 
189