12 #include "TEveBrowser.h"
13 #include "TEveScene.h"
14 #include "TEveTrans.h"
21 #include "application/Application.h"
22 #include "application/gui/HitOptionFrame.h"
23 #include "application/gui/MainWindow.h"
25 const char *filetypes[] = {
"ROOT files",
"*.root",
"Text files",
"*.[tT][xX][tT]", 0, 0};
27 void MainWindow::AddControlTab() {
28 static const std::string routineName(
"MainWindow::AddControlTab");
32 TEveBrowser *browser = gEve->GetBrowser();
33 browser->StartEmbedding(TRootBrowser::kLeft);
35 _frmMain =
new TGMainFrame(gClient->GetRoot(), 1000, 600);
36 _frmMain->SetWindowName(
"XX GUI");
37 _frmMain->SetCleanup(kDeepCleanup);
39 TString icondir(TString::Format(
"%s/icons/", gSystem->Getenv(
"ROOTSYS")));
40 _frmMainVertical =
new TGVerticalFrame(_frmMain);
44 TGGroupFrame *fileGroup =
new TGGroupFrame(_frmMainVertical,
"File", kVerticalFrame);
46 TGHorizontalFrame *fileLoadFrame =
new TGHorizontalFrame(fileGroup);
48 TGPictureButton *b = 0;
50 _fileField =
new TGTextEntry(fileLoadFrame, (
const char *)
"");
51 _fileField->Connect(
"TextChanged(char*)",
"EDApplication", thisApp,
"SetFileToBeLoaded(char*)");
52 fileLoadFrame->AddFrame(_fileField,
new TGLayoutHints(kLHintsCenterX | kLHintsCenterY | kLHintsExpandX));
54 b =
new TGPictureButton(fileLoadFrame, gClient->GetPicture(icondir +
"open.xpm"));
55 fileLoadFrame->AddFrame(b,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
56 b->Connect(
"Clicked()",
"MainWindow",
this,
"SpawnFileDialog()");
58 fileGroup->AddFrame(fileLoadFrame,
new TGLayoutHints(kLHintsCenterX | kLHintsCenterY | kLHintsExpandX, 5, 5, 5, 5));
60 TGHorizontalFrame *fileButtonsFrame =
new TGHorizontalFrame(fileGroup);
64 t =
new TGTextButton(fileButtonsFrame,
"Open File");
65 fileButtonsFrame->AddFrame(t,
new TGLayoutHints(kLHintsCenterX | kLHintsCenterY));
66 t->Connect(
"Clicked()",
"EDApplication", thisApp,
"LoadRootFile()");
68 fileGroup->AddFrame(fileButtonsFrame,
69 new TGLayoutHints(kLHintsCenterX | kLHintsCenterY | kLHintsExpandX, 5, 5, 5, 5));
71 _frmMainVertical->AddFrame(fileGroup,
72 new TGLayoutHints(kLHintsCenterX | kLHintsCenterY | kLHintsExpandX, 5, 5, 5, 5));
75 icondir = TString::Format(
"%s/img/resized/", _SRCDIR_);
78 TGGroupFrame *evtGroup =
new TGGroupFrame(_frmMainVertical,
"Event", kVerticalFrame);
80 _evNumbersFrame =
new TGHorizontalFrame(evtGroup);
82 _evField =
new TGNumberEntryField(_evNumbersFrame);
83 _evField->SetWidth(50);
84 _evField->SetFormat(TGNumberFormat::kNESInteger, TGNumberFormat::kNEAPositive);
85 _evNumbersFrame->AddFrame(_evField,
new TGLayoutHints(kLHintsCenterY | kLHintsLeft));
86 _evField->Connect(
"TextChanged(char*)",
"EDApplication", thisApp,
"SetEventToBeLoaded(char*)");
88 _evFileText =
new TGLabel(_evNumbersFrame, Form(
" of %i", (
int)thisApp->GetFileManager()->
GetEntries()));
89 _evNumbersFrame->AddFrame(_evFileText,
new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 5, 0, 0, 0));
91 evtGroup->AddFrame(_evNumbersFrame,
92 new TGLayoutHints(kLHintsCenterX | kLHintsCenterY | kLHintsExpandX, 5, 5, 5, 5));
94 TGHorizontalFrame *evButtonsFrame =
new TGHorizontalFrame(evtGroup);
96 TGPictureButton *b = 0;
99 COUT(DEBUG) << icondir +
"left.gif" <<
ENDL;
100 b =
new TGPictureButton(evButtonsFrame, gClient->GetPicture(icondir +
"left.gif"));
101 evButtonsFrame->AddFrame(b,
new TGLayoutHints(kLHintsLeft));
102 b->Connect(
"Clicked()",
"EDApplication", thisApp,
"PrevEvent()");
104 t =
new TGTextButton(evButtonsFrame,
"&Refresh");
105 evButtonsFrame->AddFrame(t,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX | kLHintsExpandY));
106 t->Connect(
"Clicked()",
"EDApplication", thisApp,
"LoadEvent()");
108 COUT(DEBUG) << icondir +
"right.gif" <<
ENDL;
109 b =
new TGPictureButton(evButtonsFrame, gClient->GetPicture(icondir +
"right.gif"));
110 evButtonsFrame->AddFrame(b,
new TGLayoutHints(kLHintsLeft));
111 b->Connect(
"Clicked()",
"EDApplication", thisApp,
"NextEvent()");
113 evtGroup->AddFrame(evButtonsFrame,
new TGLayoutHints(kLHintsExpandX | kLHintsCenterX | kLHintsCenterY, 5, 5, 0, 0));
114 evButtonsFrame->DrawBorder();
116 _frmMainVertical->AddFrame(evtGroup,
new TGLayoutHints(kLHintsCenterX | kLHintsCenterY | kLHintsExpandX, 5, 5, 5, 5));
118 _progressBar =
new TGHProgressBar(_frmMainVertical, TGProgressBar::kFancy, 300);
119 _progressBar->SetRange(0, (
int)thisApp->GetFileManager()->
GetEntries());
120 _progressBar->SetBarColor(
"lightblue");
121 _progressBar->ShowPosition();
122 _frmMainVertical->AddFrame(_progressBar,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 5, 5, 5, 10));
125 _frmMain->AddFrame(_frmMainVertical,
new TGLayoutHints(kLHintsCenterX | kLHintsCenterY | kLHintsExpandX, 5, 5, 5, 5));
127 _frmMain->MapSubwindows();
129 _frmMain->MapWindow();
131 browser->StopEmbedding();
132 browser->SetTabTitle(
"Event Control", 0);
135 void MainWindow::AddHitControls() {
136 static const std::string routineName(
"MainWindow::AddHitControls");
142 TGGroupFrame *hitGroup =
new TGGroupFrame(_frmMainVertical,
"Hits", kVerticalFrame);
145 for (TString det : thisApp->GetFileManager()->GetDetList()) {
146 TGCheckButton *hitHbutton =
new TGCheckButton(hitGroup, Form(
"%s hits", det.Data()));
148 hitHbutton->Connect(
"Clicked()",
"EDApplication", thisApp, Form(
"SetDisplayDetector(=\"%s\")", det.Data()));
149 hitGroup->AddFrame(hitHbutton,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
152 TGCheckButton *partHbutton =
new TGCheckButton(hitGroup,
"Particle hits");
153 partHbutton->SetOn(0);
154 partHbutton->Connect(
"Toggled(Bool_t)",
"EDApplication", thisApp,
"SetDisplayPartHits(Bool_t)");
155 hitGroup->AddFrame(partHbutton,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
157 _frmMainVertical->AddFrame(hitGroup,
new TGLayoutHints(kLHintsCenterX | kLHintsCenterY | kLHintsExpandX, 5, 5, 5, 5));
160 _frmMainVertical->Layout();
161 _frmMainVertical->MapSubwindows();
162 _frmMainVertical->Resize(_frmMainVertical->GetDefaultSize());
164 _frmMain->MapSubwindows();
167 void MainWindow::AddHitOptions() {
169 static const std::string routineName(
"MainWindow::AddHitOptions");
173 TEveBrowser *browser = gEve->GetBrowser();
174 browser->StartEmbedding(TRootBrowser::kLeft);
176 TGMainFrame *thisFrmMain =
new TGMainFrame(gClient->GetRoot(), 1000, 600);
177 thisFrmMain->SetWindowName(
"XX GUI");
178 thisFrmMain->SetCleanup(kDeepCleanup);
179 TGVerticalFrame *thisFrmMainVertical =
new TGVerticalFrame(thisFrmMain);
185 for (TString det : thisApp->GetFileManager()->GetDetList()) {
221 thisFrmMainVertical->AddFrame(grFrame,
222 new TGLayoutHints(kLHintsCenterX | kLHintsCenterY | kLHintsExpandX, 5, 5, 5, 5));
227 thisFrmMain->AddFrame(thisFrmMainVertical,
228 new TGLayoutHints(kLHintsCenterX | kLHintsCenterY | kLHintsExpandX, 5, 5, 5, 5));
230 thisFrmMain->MapSubwindows();
231 thisFrmMain->Resize();
232 thisFrmMain->MapWindow();
234 browser->StopEmbedding();
235 browser->SetTabTitle(
"Hit Options", 0);
238 void MainWindow::SpawnFileDialog() {
243 fi.fFileTypes = filetypes;
244 fi.fIniDir = StrDup(dir);
245 printf(
"fIniDir = %s\n", fi.fIniDir);
246 new TGFileDialog(gClient->GetRoot(), _frmMain, kFDOpen, &fi);
247 printf(
"Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
248 thisApp->SetFileToBeLoaded(fi.fFilename);
249 thisApp->LoadRootFile();
#define COUT(level)
Smart log macro. It writes on stdout only if the specified verbosity level is lesser than the maximum...
Long64_t GetEntries()
The total number of events.