16 #include "Riostream.h"
19 #include <QFileDialog>
36 QFileDialog fd(
this,
"Select ROOT macro to execute in GUI", QString(),
37 "ROOT macro (*.C *.c);;Go4 hotstart script (*.hotstart);;Python script(*.py)");
38 fd.setFileMode( QFileDialog::ExistingFile);
40 if (fd.exec() != QDialog::Accepted)
return;
42 QStringList flst = fd.selectedFiles();
43 if (flst.isEmpty())
return;
44 bool iscint = fd.selectedNameFilter().contains(
".C") || fd.selectedNameFilter().contains(
".c");
45 bool ishot = fd.selectedNameFilter().contains(
".hotstart");
46 bool ispyth = fd.selectedNameFilter().contains(
".py");
51 cmd = QString(
".x ") + flst[0];
55 cmd = QString(
"$") + flst[0];
63 std::cout <<
"TGo4CommandLine NEVER COME HERE - unknown file type!\n-" << std::endl;
67 int index=InputLine->findText(cmd);
70 InputLine->insertItem(-1,cmd);
71 index=InputLine->findText(cmd);
74 InputLine->setCurrentIndex(index);
86 const char pyprompt =
'$';
87 QString pyinitfile=
"python/go4init.py";
88 QString str = InputLine->currentText();
89 if (str.length() == 0)
92 if (str.contains(
"help") || str.contains(
".go4h"))
96 else if (str.contains(
".hotstart") && !str.contains(
".x"))
104 if (str.contains(pyprompt))
107 str.remove(0, str.indexOf(pyprompt) + 1);
109 const QString PY_EXT =
".py";
110 int imin = str.indexOf(PY_EXT +
" ");
111 int imax = str.length();
116 imin += PY_EXT.length();
119 QString scrstring = str.left(imin);
120 QString argstring = str.mid(imin);
122 str =
"TPython::Exec(\"import sys; sys.argv = [\'" + scrstring +
"\'] + \'" + argstring +
"\'.split()\");";
123 str +=
"TPython::LoadMacro(\"" + scrstring +
"\")";
127 str.prepend(
"TPython::LoadMacro(\"" + go4sys + pyinitfile +
"\");");
128 str.prepend(
"TPython::Bind(TGo4AbstractInterface::Instance(), \"go4\");");
139 gROOT->ProcessLineSync(str.toLatin1().constData());
142 catch(std::exception& ex)
144 StatusMessage(QString(
"Error invoking command - Exception: ") + QString(ex.what()));
148 StatusMessage(QString(
"Error invoking command - unknown Exception!"));
159 InputLine->addItems(histlist);
161 gROOT->ProcessLineSync(Form(
".L %s",
TGo4Log::subGO4SYS(
"macros/corrhistos.C").Data()));
162 gROOT->ProcessLineSync(Form(
".L %s",
TGo4Log::subGO4SYS(
"macros/hishisto.C").Data()));
163 gROOT->ProcessLineSync(Form(
".L %s",
TGo4Log::subGO4SYS(
"macros/addhistos.C").Data()));
164 gROOT->ProcessLineSync(Form(
".L %s",
TGo4Log::subGO4SYS(
"macros/divhistos.C").Data()));
165 gROOT->ProcessLineSync(Form(
".L %s",
TGo4Log::subGO4SYS(
"macros/profileX.C").Data()));
166 gROOT->ProcessLineSync(Form(
".L %s",
TGo4Log::subGO4SYS(
"macros/profileY.C").Data()));
167 gROOT->ProcessLineSync(Form(
".L %s",
TGo4Log::subGO4SYS(
"macros/projectionX.C").Data()));
168 gROOT->ProcessLineSync(Form(
".L %s",
TGo4Log::subGO4SYS(
"macros/projectionY.C").Data()));
179 if (md.exec() != QDialog::Accepted)
return;
181 InputLine->setCurrentIndex(0);
187 std::cout <<
"\n--- Go4 GUI command line short help --- " << std::endl;
188 std::cout <<
"- execute any command by pressing RETURN (Enter key)" << std::endl;
189 std::cout <<
"--" << std::endl;
190 std::cout <<
"- use '.h' for help concerning ROOT commands" << std::endl;
191 std::cout <<
"--" << std::endl;
192 std::cout <<
"- use 'go4->...' to access TGo4AbstractInterface for gui commands" << std::endl;
193 std::cout <<
"--" << std::endl;
194 std::cout <<
"- Some useful Go4 GUI command functions:" << std::endl;
196 std::cout <<
"\t- TObject* go4->GetObject(const char* itemname);"<< std::endl;
197 std::cout <<
"\t\t: get browser object by full pathname. " << std::endl;
198 std::cout <<
"\t- TString go4->FindItem(const char* name); " << std::endl;
199 std::cout <<
"\t\t: get full pathname of browser object by name " << std::endl;
200 std::cout <<
"\t- TString go4->SaveToMemory(const char* path, TObject* obj, Bool_t ownership = kFALSE);"<< std::endl;
201 std::cout <<
"\t\t: Put object obj into workspace memory under subfolder path. Returns full item pathname. " << std::endl;
202 std::cout <<
"\t- ViewPanelHandle go4->StartViewPanel()"<< std::endl;
203 std::cout <<
"\t\t: Open new Go4 viewpanel with default size. Returns handle of new panel." << std::endl;
204 std::cout <<
"\t- Bool_t go4->DrawItem(const char* itemname, ViewPanelHandle panel = 0, const char* drawopt = 0);"<< std::endl;
205 std::cout <<
"\t\t: Draw object of full name itemname onto viewpanel panel. Will open new viewpanel if panel not specified. \n\t ROOT drawoption may be set. " << std::endl;
206 std::cout <<
"\t- go4->OpenFile(const char* fname)" << std::endl;
207 std::cout <<
"\t\t: open ROOT file of fname in Go4 browser " << std::endl;
208 std::cout <<
"\t- go4->LaunchAnalysis()" << std::endl;
209 std::cout <<
"\t\t: Start Go4 analysis process with previous set up " << std::endl;
210 std::cout <<
"--" << std::endl;
211 std::cout <<
"---- Please: note the Go4 helpwindow with TGo4AbstractInterface full method documentation!" << std::endl;
212 std::cout <<
"---- see example scripts at $GO4SYS/macros !" << std::endl;
213 std::cout <<
"---- visit our website at: \t http://go4.gsi.de !" << std::endl;
214 std::cout <<
"------ " << std::endl;
215 HelpWindow(
"docs/Go4Reference.pdf",
"Show Go4 Reference manual...");
TGo4CommandLine(QWidget *parent=0, const char *name=0)
virtual void ExecuteSlot()
virtual void LoadHistory()
virtual void FileSearchDialog()
const QString & getCommand()
virtual void PredefinedDialog()
virtual void enterPressedSlot()
QStringList getCommandsHistoryGUI()
static TString subGO4SYS(const char *subdir)
static const char * GO4SYS()
void setCommandsHistoryGUI(const QStringList &commands)