Files
geant4/source/intercoms/src/G4UIcontrolMessenger.cc
T
2016-06-08 15:28:20 +02:00

107 lines
3.3 KiB
C++

// 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;
}