Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/visualization/management/src/G4VisCommandsCompound.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/management/src/G4VisCommandsCompound.cc (Version 11.3.0) and /visualization/management/src/G4VisCommandsCompound.cc (Version 1.0)


  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 // Compound /vis/ commands - John Allison  15t    
 29                                                   
 30 #include "G4VisCommandsCompound.hh"               
 31                                                   
 32 #include "G4VisManager.hh"                        
 33 #include "G4UImanager.hh"                         
 34 #include "G4UIcommandTree.hh"                     
 35 #include "G4UIcmdWithAString.hh"                  
 36                                                   
 37 #include <sstream>                                
 38 #include <set>                                    
 39                                                   
 40 #define G4warn G4cout                             
 41                                                   
 42 ////////////// /vis/drawTree /////////////////    
 43                                                   
 44 G4VisCommandDrawTree::G4VisCommandDrawTree() {    
 45   G4bool omitable;                                
 46   fpCommand = new G4UIcommand("/vis/drawTree",    
 47   fpCommand->SetGuidance                          
 48     ("Produces a representation of the geometr    
 49      "\nguidance is given on running the comma    
 50      "\nfor \"/vis/ASCIITree/verbose\".");        
 51   fpCommand->SetGuidance("The pre-existing sce    
 52   G4UIparameter* parameter;                       
 53   parameter = new G4UIparameter("physical-volu    
 54   parameter -> SetDefaultValue("world");          
 55   fpCommand -> SetParameter (parameter);          
 56   parameter = new G4UIparameter("system", 's',    
 57   parameter -> SetDefaultValue("ATree");          
 58   fpCommand -> SetParameter (parameter);          
 59 }                                                 
 60                                                   
 61 G4VisCommandDrawTree::~G4VisCommandDrawTree()     
 62   delete fpCommand;                               
 63 }                                                 
 64                                                   
 65 void G4VisCommandDrawTree::SetNewValue(G4UIcom    
 66                                                   
 67   G4String pvname, system;                        
 68   std::istringstream is(newValue);                
 69   is >> pvname >> system;                         
 70                                                   
 71   // Note: The second parameter, "system", is     
 72   // a choice of dedicated tree printing/displ    
 73   // the only such dedicated system is ASCIITr    
 74   // specify OGLSX, for example.  So to avoid     
 75   // feature to systems that have "Tree" in th    
 76                                                   
 77   // Of course, some other systems, such as OG    
 78   // built-in.  The HepRApp offline browser al    
 79   // built in.                                    
 80                                                   
 81   if (!G4StrUtil::contains(system, "Tree")) {     
 82     system = "ATree";                             
 83   }                                               
 84                                                   
 85   G4VGraphicsSystem* keepSystem = fpVisManager    
 86   G4Scene* keepScene = fpVisManager->GetCurren    
 87   G4VSceneHandler* keepSceneHandler = fpVisMan    
 88   G4VViewer* keepViewer = fpVisManager->GetCur    
 89   G4VisManager::Verbosity keepVisVerbosity = f    
 90   G4bool keepAbleness = fpVisManager->GetConcr    
 91                                                   
 92   G4UImanager* UImanager = G4UImanager::GetUIp    
 93   G4int keepUIVerbose = UImanager->GetVerboseL    
 94   G4int newVerbose(0);                            
 95   if (keepUIVerbose >= 2 ||                       
 96       fpVisManager->GetVerbosity() >= G4VisMan    
 97     newVerbose = 2;                               
 98   UImanager->SetVerboseLevel(newVerbose);         
 99                                                   
100   auto errorCode = UImanager->ApplyCommand(G4S    
101   if (errorCode == 0) {                           
102     if (!keepAbleness) {  // Enable temporaril    
103       fpVisManager->SetVerboseLevel("Quiet");     
104       UImanager->ApplyCommand("/vis/enable");     
105       fpVisManager->SetVerboseLevel(keepVisVer    
106     }                                             
107     UImanager->ApplyCommand("/vis/viewer/reset    
108     UImanager->ApplyCommand(G4String("/vis/dra    
109     UImanager->ApplyCommand("/vis/viewer/flush    
110     if (!keepAbleness) {  // Disable again        
111       fpVisManager->SetVerboseLevel("Quiet");     
112       UImanager->ApplyCommand("/vis/disable");    
113       fpVisManager->SetVerboseLevel(keepVisVer    
114     }                                             
115     if (keepViewer) {                             
116       if (fpVisManager->GetVerbosity() >= G4Vi    
117         G4warn << "Reverting to " << keepViewe    
118       }                                           
119       fpVisManager->SetCurrentGraphicsSystem(k    
120       fpVisManager->SetCurrentScene(keepScene)    
121       fpVisManager->SetCurrentSceneHandler(kee    
122       fpVisManager->SetCurrentViewer(keepViewe    
123     }                                             
124   }                                               
125   UImanager->SetVerboseLevel(keepUIVerbose);      
126 }                                                 
127                                                   
128 ////////////// /vis/drawView /////////////////    
129                                                   
130 G4VisCommandDrawView::G4VisCommandDrawView() {    
131   G4bool omitable;                                
132   fpCommand = new G4UIcommand("/vis/drawView",    
133   fpCommand->SetGuidance                          
134     ("Draw view from this angle, etc.");          
135   G4UIparameter* parameter;                       
136   parameter = new G4UIparameter("theta-degrees    
137   parameter -> SetDefaultValue(0.);               
138   fpCommand -> SetParameter (parameter);          
139   parameter = new G4UIparameter("phi-degrees",    
140   parameter -> SetDefaultValue(0.);               
141   fpCommand -> SetParameter (parameter);          
142   parameter = new G4UIparameter("pan-right", '    
143   parameter -> SetDefaultValue(0.);               
144   fpCommand -> SetParameter (parameter);          
145   parameter = new G4UIparameter("pan-up", 'd',    
146   parameter -> SetDefaultValue(0.);               
147   fpCommand -> SetParameter (parameter);          
148   parameter = new G4UIparameter("pan-unit", 's    
149   parameter -> SetDefaultValue("cm");             
150   fpCommand -> SetParameter (parameter);          
151   parameter = new G4UIparameter("zoom-factor",    
152   parameter -> SetDefaultValue(1.);               
153   fpCommand -> SetParameter (parameter);          
154   parameter = new G4UIparameter("dolly", 'd',     
155   parameter -> SetDefaultValue(0.);               
156   fpCommand -> SetParameter (parameter);          
157   parameter = new G4UIparameter("dolly-unit",     
158   parameter -> SetDefaultValue("cm");             
159   fpCommand -> SetParameter (parameter);          
160 }                                                 
161                                                   
162 G4VisCommandDrawView::~G4VisCommandDrawView()     
163   delete fpCommand;                               
164 }                                                 
165                                                   
166 void G4VisCommandDrawView::SetNewValue(G4UIcom    
167                                                   
168   G4VisManager::Verbosity verbosity = fpVisMan    
169                                                   
170   G4VViewer* currentViewer = fpVisManager->Get    
171   if (!currentViewer) {                           
172     if (verbosity >= G4VisManager::warnings) {    
173       G4warn <<                                   
174   "WARNING: G4VisCommandsDrawView::SetNewValue    
175        << G4endl;                                 
176     }                                             
177     return;                                       
178   }                                               
179                                                   
180   G4String thetaDeg;                              
181   G4String phiDeg;                                
182   G4String panRight;                              
183   G4String panUp;                                 
184   G4String panUnit;                               
185   G4String zoomFactor;                            
186   G4String dolly;                                 
187   G4String dollyUnit;                             
188   std::istringstream is(newValue);                
189   is >> thetaDeg >> phiDeg >> panRight >> panU    
190      >> zoomFactor >> dolly >> dollyUnit;         
191                                                   
192   G4UImanager* UImanager = G4UImanager::GetUIp    
193   G4ViewParameters vp = currentViewer->GetView    
194   G4bool keepAutoRefresh = vp.IsAutoRefresh();    
195   vp.SetAutoRefresh(false);                       
196   currentViewer->SetViewParameters(vp);           
197   UImanager->ApplyCommand(                        
198     G4String("/vis/viewer/set/viewpointThetaPh    
199   UImanager->ApplyCommand(                        
200     G4String("/vis/viewer/panTo " + panRight +    
201   UImanager->ApplyCommand(                        
202     G4String("/vis/viewer/zoomTo " + zoomFacto    
203   vp = currentViewer->GetViewParameters();        
204   vp.SetAutoRefresh(keepAutoRefresh);             
205   currentViewer->SetViewParameters(vp);           
206   UImanager->ApplyCommand(                        
207     G4String("/vis/viewer/dollyTo " + dolly +     
208 }                                                 
209                                                   
210 ////////////// /vis/drawLogicalVolume ////////    
211                                                   
212 G4VisCommandDrawLogicalVolume::G4VisCommandDra    
213   fpCommand = new G4UIcommand("/vis/drawLogica    
214   fpCommand->SetGuidance                          
215   ("Draws logical volume with additional compo    
216   fpCommand->SetGuidance                          
217   ("Synonymous with \"/vis/specify\".");          
218   fpCommand->SetGuidance                          
219   ("Creates a scene consisting of this logical    
220    "\n  current viewer to draw it. The scene b    
221   const G4UIcommandTree* tree = G4UImanager::G    
222   const G4UIcommand* addLogVolCmd = tree->Find    
223   // Pick up guidance from /vis/scene/add/logi    
224   CopyGuidanceFrom(addLogVolCmd,fpCommand);       
225   // Pick up parameters from /vis/scene/add/lo    
226   CopyParametersFrom(addLogVolCmd,fpCommand);     
227 }                                                 
228                                                   
229 G4VisCommandDrawLogicalVolume::~G4VisCommandDr    
230   delete fpCommand;                               
231 }                                                 
232                                                   
233 void G4VisCommandDrawLogicalVolume::SetNewValu    
234   G4VisManager::Verbosity verbosity = fpVisMan    
235   G4UImanager* UImanager = G4UImanager::GetUIp    
236   G4VViewer* currentViewer = fpVisManager->Get    
237   const G4ViewParameters& currentViewParams =     
238   G4bool keepAutoRefresh = currentViewParams.I    
239   if (keepAutoRefresh) UImanager->ApplyCommand    
240   UImanager->ApplyCommand("/vis/scene/create")    
241   UImanager->ApplyCommand(G4String("/vis/scene    
242   UImanager->ApplyCommand("/vis/sceneHandler/a    
243   G4ViewParameters::DrawingStyle keepDrawingSt    
244   if(keepDrawingStyle != G4ViewParameters::wir    
245     UImanager->ApplyCommand("/vis/viewer/set/s    
246   G4bool keepMarkerNotHidden = currentViewPara    
247   if (!keepMarkerNotHidden) UImanager->ApplyCo    
248   if (keepAutoRefresh) UImanager->ApplyCommand    
249   if (verbosity >= G4VisManager::warnings) {      
250     if (keepDrawingStyle != currentViewParams.    
251       G4warn                                      
252       << "Drawing style changed to wireframe.     
253       G4String style, edge;                       
254       switch (keepDrawingStyle) {                 
255         case G4ViewParameters::wireframe:         
256           style = "wireframe"; edge = "false";    
257         case G4ViewParameters::hlr:               
258           style = "wireframe"; edge = "true";     
259         case G4ViewParameters::hsr:               
260           style = "surface"; edge = "false"; b    
261         case G4ViewParameters::hlhsr:             
262           style = "surface"; edge = "true"; br    
263         case G4ViewParameters::cloud:             
264           style = "cloud"; edge = ""; break;      
265       }                                           
266       G4warn << "\n  /vis/viewer/set/style " +    
267       if (!edge.empty()) G4warn << "\n  /vis/v    
268       G4warn << G4endl;                           
269     }                                             
270     if (keepMarkerNotHidden != currentViewPara    
271       G4warn                                      
272       << "Markers changed to \"not hidden\". T    
273       << "\n  /vis/viewer/set/hiddenmarker tru    
274       << G4endl;                                  
275     }                                             
276   }                                               
277   static G4bool warned = false;                   
278   if (verbosity >= G4VisManager::confirmations    
279     G4cout <<                                     
280     "NOTE: For systems which are not \"auto-re    
281     "\n  issue \"/vis/viewer/refresh\" or \"/v    
282     << G4endl;                                    
283     warned = true;                                
284   }                                               
285 }                                                 
286                                                   
287 ////////////// /vis/drawVolume ///////////////    
288                                                   
289 G4VisCommandDrawVolume::G4VisCommandDrawVolume    
290   fpCommand = new G4UIcommand("/vis/drawVolume    
291   fpCommand->SetGuidance                          
292   ("Creates a scene containing this physical v    
293    "\ncurrent viewer to draw it.  The scene be    
294   const G4UIcommandTree* tree = G4UImanager::G    
295   const G4UIcommand* addVolCmd = tree->FindPat    
296   // Pick up guidance from /vis/scene/add/volu    
297   CopyGuidanceFrom(addVolCmd,fpCommand);          
298   // Pick up parameters from /vis/scene/add/vo    
299   CopyParametersFrom(addVolCmd,fpCommand);        
300 }                                                 
301                                                   
302 G4VisCommandDrawVolume::~G4VisCommandDrawVolum    
303   delete fpCommand;                               
304 }                                                 
305                                                   
306 void G4VisCommandDrawVolume::SetNewValue(G4UIc    
307   G4VisManager::Verbosity verbosity = fpVisMan    
308   G4UImanager* UImanager = G4UImanager::GetUIp    
309   UImanager->ApplyCommand("/vis/scene/create")    
310   UImanager->ApplyCommand(G4String("/vis/scene    
311   UImanager->ApplyCommand("/vis/sceneHandler/a    
312   static G4bool warned = false;                   
313   if (verbosity >= G4VisManager::confirmations    
314     G4cout <<                                     
315       "NOTE: For systems which are not \"auto-    
316       "\n  issue \"/vis/viewer/refresh\" or \"    
317      << G4endl;                                   
318     warned = true;                                
319   }                                               
320 }                                                 
321                                                   
322 ////////////// /vis/open /////////////////////    
323                                                   
324 G4VisCommandOpen::G4VisCommandOpen() {            
325   G4bool omitable;                                
326   fpCommand = new G4UIcommand("/vis/open", thi    
327   fpCommand->SetGuidance                          
328     ("Creates a scene handler and viewer ready    
329   fpCommand->SetGuidance                          
330     ("The scene handler and viewer names are a    
331   // Pick up guidance from /vis/viewer/create     
332   const G4UIcommandTree* tree = G4UImanager::G    
333   const G4UIcommand* viewerCreateCmd = tree->F    
334   CopyGuidanceFrom(viewerCreateCmd,fpCommand,2    
335   G4UIparameter* parameter;                       
336   parameter = new G4UIparameter("graphics-syst    
337   parameter->SetCurrentAsDefault(true);           
338   fpCommand->SetParameter(parameter);             
339   parameter = new G4UIparameter("window-size-h    
340   parameter->SetGuidance                          
341     ("integer (pixels) for square window place    
342      " X-Windows-type geometry string, e.g. 60    
343   parameter->SetCurrentAsDefault(true);           
344   fpCommand->SetParameter(parameter);             
345 }                                                 
346                                                   
347 G4VisCommandOpen::~G4VisCommandOpen() {           
348   delete fpCommand;                               
349 }                                                 
350                                                   
351 G4String G4VisCommandOpen::GetCurrentValue(G4U    
352 {                                                 
353   G4String graphicsSystemName, windowSizeHint;    
354   auto graphicsSystem = fpVisManager->GetCurre    
355   if (graphicsSystem) {                           
356     // Take name and hint from latest graphics    
357     graphicsSystemName = graphicsSystem->GetNa    
358     auto viewer = fpVisManager->GetCurrentView    
359     if (viewer) {                                 
360       windowSizeHint = viewer->GetViewParamete    
361     }                                             
362     else {  // Viewer not yet created?            
363       windowSizeHint = fpVisManager->GetDefaul    
364     }                                             
365   }                                               
366   else {  // No graphics system yet - must be     
367     graphicsSystemName = fpVisManager->GetDefa    
368     windowSizeHint = fpVisManager->GetDefaultX    
369   }                                               
370   return graphicsSystemName + ' ' + windowSize    
371 }                                                 
372                                                   
373 void G4VisCommandOpen::SetNewValue (G4UIcomman    
374 {                                                 
375   G4String systemName, windowSizeHint;            
376   std::istringstream is(newValue);                
377   is >> systemName >> windowSizeHint;             
378   G4UImanager* UImanager = G4UImanager::GetUIp    
379                                                   
380   auto errorCode = UImanager->ApplyCommand(G4S    
381   if (errorCode) {                                
382     G4warn << "sub-command \"/vis/sceneHandler    
383     goto finish;                                  
384   }                                               
385                                                   
386   errorCode = UImanager->ApplyCommand(G4String    
387   if (errorCode) {                                
388     G4warn << "sub-command \"/vis/viewer/creat    
389     goto finish;                                  
390   }                                               
391                                                   
392 finish:                                           
393   if (errorCode) {                                
394     fpVisManager->PrintAvailableGraphicsSystem    
395     if (errorCode != JustWarning) {               
396       G4ExceptionDescription ed;                  
397       ed << "Invoked command has failed - see     
398       command->CommandFailed(errorCode,ed);       
399     }                                             
400   }                                               
401 }                                                 
402                                                   
403 ////////////// /vis/plot /////////////////////    
404                                                   
405 G4VisCommandPlot::G4VisCommandPlot ()             
406 {                                                 
407   G4bool omitable;                                
408   G4UIparameter* parameter;                       
409                                                   
410   fpCommand = new G4UIcommand("/vis/plot", thi    
411   fpCommand -> SetGuidance("Draws plots.");       
412   parameter = new G4UIparameter ("type", 's',     
413   parameter -> SetParameterCandidates("h1 h2")    
414   fpCommand -> SetParameter (parameter);          
415   parameter = new G4UIparameter ("id", 'i', om    
416   fpCommand -> SetParameter (parameter);          
417 #ifdef TOOLS_USE_FREETYPE                         
418   parameter = new G4UIparameter ("style", 's',    
419   parameter -> SetParameterCandidates("none RO    
420   parameter -> SetDefaultValue("ROOT_default")    
421   fpCommand -> SetParameter (parameter);          
422 #endif                                            
423 }                                                 
424                                                   
425 G4VisCommandPlot::~G4VisCommandPlot ()            
426 {                                                 
427   delete fpCommand;                               
428 }                                                 
429                                                   
430 G4String G4VisCommandPlot::GetCurrentValue (G4    
431 {                                                 
432   return "";                                      
433 }                                                 
434                                                   
435 void G4VisCommandPlot::SetNewValue (G4UIcomman    
436 {                                                 
437   auto currentViewer = fpVisManager->GetCurren    
438   if (currentViewer->GetName().find("TOOLSSG")    
439     G4warn <<                                     
440     "WARNING: Current viewer not able to draw     
441     "\n  Try \"/vis/open TSG\", then \"/vis/pl    
442     << G4endl;                                    
443     return;                                       
444   }                                               
445                                                   
446   std::istringstream is (newValue);               
447   G4String type, id;                              
448   is >> type >> id;                               
449 #ifdef TOOLS_USE_FREETYPE                         
450   G4String style;                                 
451   is >> style;                                    
452 #endif                                            
453                                                   
454   auto keepEnable = fpVisManager->IsEnabled();    
455                                                   
456   auto ui = G4UImanager::GetUIpointer();          
457   ui->ApplyCommand("/vis/enable");                
458   ui->ApplyCommand("/vis/viewer/resetCameraPar    
459   ui->ApplyCommand("/vis/scene/create");          
460   ui->ApplyCommand("/vis/scene/endOfEventActio    
461   static G4int plotterID = 0;                     
462   std::ostringstream ossPlotter;                  
463   ossPlotter << "plotter-" << plotterID++;        
464   const G4String& plotterName = ossPlotter.str    
465   ui->ApplyCommand("/vis/plotter/create " + pl    
466   ui->ApplyCommand("/vis/scene/add/plotter " +    
467   ui->ApplyCommand("/vis/plotter/add/" + type     
468 #ifdef TOOLS_USE_FREETYPE                         
469   if (style != "none") {                          
470     ui->ApplyCommand("/vis/plotter/addStyle "     
471   }                                               
472 #endif                                            
473   ui->ApplyCommand("/vis/sceneHandler/attach")    
474                                                   
475   if (!keepEnable) {                              
476     fpVisManager->Disable();                      
477     G4warn <<                                     
478     "WARNING: drawing was enabled for plotting    
479     << G4endl;                                    
480   }                                               
481 }                                                 
482                                                   
483 ////////////// /vis/specify //////////////////    
484                                                   
485 G4VisCommandSpecify::G4VisCommandSpecify() {      
486   G4bool omitable;                                
487   fpCommand = new G4UIcommand("/vis/specify",     
488   fpCommand->SetGuidance                          
489     ("Draws logical volume with Boolean compon    
490   fpCommand->SetGuidance                          
491     ("Synonymous with \"/vis/drawLogicalVolume    
492   fpCommand->SetGuidance                          
493     ("Creates a scene consisting of this logic    
494      "\n  current viewer to draw it to the spe    
495      "\n  showing boolean components (if any),    
496      "\n  readout geometry (if any), local axe    
497      "\n  under control of the appropriate fla    
498   fpCommand->SetGuidance                          
499   ("Note: voxels are not constructed until sta    
500    "\n  (For voxels without a run, \"/run/beam    
501   fpCommand->SetGuidance("The scene becomes cu    
502   G4UIparameter* parameter;                       
503   parameter = new G4UIparameter("logical-volum    
504   fpCommand->SetParameter(parameter);             
505   parameter = new G4UIparameter("depth-of-desc    
506   parameter->SetDefaultValue(1);                  
507   fpCommand->SetParameter(parameter);             
508   parameter = new G4UIparameter("booleans-flag    
509   parameter->SetDefaultValue(true);               
510   fpCommand->SetParameter(parameter);             
511   parameter = new G4UIparameter("voxels-flag",    
512   parameter->SetDefaultValue(true);               
513   fpCommand->SetParameter(parameter);             
514   parameter = new G4UIparameter("readout-flag"    
515   parameter->SetDefaultValue(true);               
516   fpCommand->SetParameter(parameter);             
517   parameter = new G4UIparameter("axes-flag", '    
518   parameter->SetDefaultValue(true);               
519   parameter -> SetGuidance ("Set \"false\" to     
520   fpCommand->SetParameter(parameter);             
521   parameter = new G4UIparameter("check-overlap    
522   parameter->SetDefaultValue(true);               
523   parameter -> SetGuidance ("Set \"false\" to     
524   fpCommand->SetParameter(parameter);             
525 }                                                 
526                                                   
527 G4VisCommandSpecify::~G4VisCommandSpecify() {     
528   delete fpCommand;                               
529 }                                                 
530                                                   
531 void G4VisCommandSpecify::SetNewValue(G4UIcomm    
532   G4VisManager::Verbosity verbosity = fpVisMan    
533   G4UImanager* UImanager = G4UImanager::GetUIp    
534   // UImanager->ApplyCommand(G4String("/geomet    
535   UImanager->ApplyCommand("/vis/scene/create")    
536   UImanager->ApplyCommand(G4String("/vis/scene    
537   UImanager->ApplyCommand("/vis/sceneHandler/a    
538   static G4bool warned = false;                   
539   if (verbosity >= G4VisManager::confirmations    
540     G4cout <<                                     
541       "NOTE: For systems which are not \"auto-    
542       "\n  issue \"/vis/viewer/refresh\" or \"    
543      << G4endl;                                   
544     warned = true;                                
545   }                                               
546 }                                                 
547