// This code implementation is the intellectual property of // the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // // $Id: G4UIcontrolMessenger.cc,v 1.1.10.1 1999/12/07 20:49:03 gunter Exp $ // GEANT4 tag $Name: geant4-01-00 $ // #include "G4UIcontrolMessenger.hh" #include "G4UImanager.hh" #include "G4UIdirectory.hh" #include "G4UIcmdWithAString.hh" #include "G4UIcmdWithAnInteger.hh" #include "G4UIcmdWithoutParameter.hh" #include "G4ios.hh" G4UIcontrolMessenger::G4UIcontrolMessenger() { controlDirectory = new G4UIdirectory("/control/"); controlDirectory->SetGuidance("UI control commands."); ExecuteCommand = new G4UIcmdWithAString("/control/execute",this); ExecuteCommand->SetGuidance("Execute a macro file."); ExecuteCommand->SetParameterName("fileName",false); verboseCommand = new G4UIcmdWithAnInteger("/control/verbose",this); verboseCommand->SetGuidance("Applied command will also be shown on screen."); verboseCommand->SetGuidance("This command is useful with MACRO file."); verboseCommand->SetGuidance(" 0 : silent"); verboseCommand->SetGuidance(" 1 : only the valid commands are shown."); verboseCommand->SetGuidance(" 2 : comment lines are also shown (default)."); verboseCommand->SetParameterName("switch",true); verboseCommand->SetRange("switch >= 0 && switch <=2"); verboseCommand->SetDefaultValue(2); historyCommand = new G4UIcmdWithAString("/control/saveHistory",this); historyCommand->SetGuidance("Store command history to a file."); historyCommand->SetGuidance("Defaul file name is G4history.macro."); historyCommand->SetParameterName("fileName",true); historyCommand->SetDefaultValue("G4History.macro"); stopStoreHistoryCommand = new G4UIcmdWithoutParameter("/control/stopSavingHistory",this); stopStoreHistoryCommand->SetGuidance("Stop saving history file."); ManualCommand = new G4UIcmdWithAString("/control/manual",this); ManualCommand->SetGuidance("Display all of sub-directories and commands."); ManualCommand->SetGuidance("Directory path should be given by FULL-PATH."); ManualCommand->SetParameterName("dirPath",true); ManualCommand->SetDefaultValue("/"); } G4UIcontrolMessenger::~G4UIcontrolMessenger() { delete ExecuteCommand; delete verboseCommand; delete historyCommand; delete stopStoreHistoryCommand; delete ManualCommand; delete controlDirectory; } void G4UIcontrolMessenger::SetNewValue(G4UIcommand * command,G4String newValue) { G4UImanager * UI = G4UImanager::GetUIpointer(); if(command==ExecuteCommand) { UI->ExecuteMacroFile(newValue); } if(command==verboseCommand) { UI->SetVerboseLevel(verboseCommand->GetNewIntValue(newValue)); } if(command==historyCommand) { UI->StoreHistory(newValue); } if(command==stopStoreHistoryCommand) { UI->StoreHistory(false); } if(command==ManualCommand) { UI->ListCommands(newValue); } } G4String G4UIcontrolMessenger::GetCurrentValue(G4UIcommand * command) { G4UImanager * UI = G4UImanager::GetUIpointer(); G4String currentValue; if(command==verboseCommand) { currentValue = verboseCommand->ConvertToString(UI->GetVerboseLevel()); } return currentValue; }