15 #include "TEveBrowser.h"
16 #include "TEveScene.h"
17 #include "TEveTrans.h"
21 #include "application/gui/MainWindow.h"
22 #include "application/gui/HitOptionFrame.h"
23 #include "application/Application.h"
25 const char *filetypes[] = {
"ROOT files",
"*.root",
26 "Text files",
"*.[tT][xX][tT]",
30 void MainWindow::AddControlTab(){
31 static const std::string routineName(
"MainWindow::AddControlTab");
35 TEveBrowser* browser = gEve->GetBrowser();
36 browser->StartEmbedding(TRootBrowser::kLeft);
38 _frmMain =
new TGMainFrame(gClient->GetRoot(), 1000, 600);
39 _frmMain->SetWindowName(
"XX GUI");
40 _frmMain->SetCleanup(kDeepCleanup);
42 TString icondir(TString::Format(
"%s/icons/", gSystem->Getenv(
"ROOTSYS")));
43 _frmMainVertical =
new TGVerticalFrame(_frmMain);
47 TGGroupFrame* fileGroup =
new TGGroupFrame(_frmMainVertical,
"File", kVerticalFrame);
49 TGHorizontalFrame* fileLoadFrame =
new TGHorizontalFrame(fileGroup);
51 TGPictureButton* b = 0;
53 _fileField =
new TGTextEntry(fileLoadFrame, (
const char *)
"");
54 _fileField->Connect(
"TextChanged(char*)",
"EDApplication", thisApp,
"SetFileToBeLoaded(char*)");
55 fileLoadFrame->AddFrame(_fileField,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY|kLHintsExpandX));
57 b =
new TGPictureButton(fileLoadFrame, gClient->GetPicture(icondir+
"open.xpm"));
58 fileLoadFrame->AddFrame(b,
new TGLayoutHints(kLHintsLeft|kLHintsCenterY));
59 b->Connect(
"Clicked()",
"MainWindow",
this,
"SpawnFileDialog()");
62 fileGroup->AddFrame(fileLoadFrame,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY|kLHintsExpandX, 5, 5, 5, 5));
64 TGHorizontalFrame* fileButtonsFrame =
new TGHorizontalFrame(fileGroup);
68 t =
new TGTextButton(fileButtonsFrame,
"Open File");
69 fileButtonsFrame->AddFrame(t,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY));
70 t->Connect(
"Clicked()",
"EDApplication", thisApp,
"LoadRootFile()");
72 fileGroup->AddFrame(fileButtonsFrame,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY|kLHintsExpandX, 5, 5, 5, 5));
74 _frmMainVertical->AddFrame(fileGroup,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY|kLHintsExpandX, 5, 5, 5, 5));
77 icondir = TString::Format(
"%s/img/resized/", _SRCDIR_);
80 TGGroupFrame* evtGroup =
new TGGroupFrame(_frmMainVertical,
"Event", kVerticalFrame);
82 _evNumbersFrame =
new TGHorizontalFrame(evtGroup);
84 _evField =
new TGNumberEntryField(_evNumbersFrame);
85 _evField->SetWidth(50);
86 _evField->SetFormat(TGNumberFormat::kNESInteger, TGNumberFormat::kNEAPositive);
87 _evNumbersFrame->AddFrame(_evField,
new TGLayoutHints(kLHintsCenterY|kLHintsLeft));
88 _evField->Connect(
"TextChanged(char*)",
"EDApplication", thisApp,
"SetEventToBeLoaded(char*)");
90 _evFileText =
new TGLabel(_evNumbersFrame, Form(
" of %i", (
int) thisApp->GetFileManager()->
GetEntries()));
91 _evNumbersFrame->AddFrame(_evFileText,
new TGLayoutHints(kLHintsCenterY|kLHintsLeft, 5, 0, 0, 0));
94 evtGroup->AddFrame(_evNumbersFrame,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY|kLHintsExpandX, 5, 5, 5, 5));
96 TGHorizontalFrame* evButtonsFrame =
new TGHorizontalFrame(evtGroup);
98 TGPictureButton* b = 0;
101 COUT(DEBUG) << icondir+
"left.gif" <<
ENDL;
102 b =
new TGPictureButton(evButtonsFrame, gClient->GetPicture(icondir+
"left.gif"));
103 evButtonsFrame->AddFrame(b,
new TGLayoutHints(kLHintsLeft));
104 b->Connect(
"Clicked()",
"EDApplication", thisApp,
"PrevEvent()");
106 t =
new TGTextButton(evButtonsFrame,
"&Refresh");
107 evButtonsFrame->AddFrame(t,
new TGLayoutHints(kLHintsLeft|kLHintsExpandX|kLHintsExpandY));
108 t->Connect(
"Clicked()",
"EDApplication", thisApp,
"LoadEvent()");
110 COUT(DEBUG) << icondir+
"right.gif" <<
ENDL;
111 b =
new TGPictureButton(evButtonsFrame, gClient->GetPicture(icondir+
"right.gif"));
112 evButtonsFrame->AddFrame(b,
new TGLayoutHints(kLHintsLeft));
113 b->Connect(
"Clicked()",
"EDApplication", thisApp,
"NextEvent()");
115 evtGroup->AddFrame(evButtonsFrame,
new TGLayoutHints(kLHintsExpandX|kLHintsCenterX|kLHintsCenterY, 5, 5, 0, 0));
116 evButtonsFrame->DrawBorder();
118 _frmMainVertical->AddFrame(evtGroup,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY|kLHintsExpandX, 5, 5, 5, 5));
120 _progressBar =
new TGHProgressBar(_frmMainVertical, TGProgressBar::kFancy, 300);
121 _progressBar->SetRange(0, (
int) thisApp->GetFileManager()->
GetEntries());
122 _progressBar->SetBarColor(
"lightblue");
123 _progressBar->ShowPosition();
124 _frmMainVertical->AddFrame(_progressBar,
new TGLayoutHints(kLHintsLeft|kLHintsExpandX,5,5,5,10));
129 _frmMain->AddFrame(_frmMainVertical,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY|kLHintsExpandX, 5, 5, 5, 5));
131 _frmMain->MapSubwindows();
133 _frmMain->MapWindow();
135 browser->StopEmbedding();
136 browser->SetTabTitle(
"Event Control", 0);
140 void MainWindow::AddHitControls(){
141 static const std::string routineName(
"MainWindow::AddHitControls");
147 TGGroupFrame* hitGroup =
new TGGroupFrame(_frmMainVertical,
"Hits", kVerticalFrame);
150 for( TString det : thisApp->GetFileManager()->GetDetList() ){
151 TGCheckButton *hitHbutton =
new TGCheckButton(hitGroup, Form(
"%s hits", det.Data()) );
153 hitHbutton->Connect(
"Clicked()",
"EDApplication", thisApp, Form(
"SetDisplayDetector(=\"%s\")", det.Data()) );
154 hitGroup->AddFrame(hitHbutton,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
157 TGCheckButton *partHbutton =
new TGCheckButton(hitGroup,
"Particle hits");
158 partHbutton->SetOn(0);
159 partHbutton->Connect(
"Toggled(Bool_t)",
"EDApplication", thisApp,
"SetDisplayPartHits(Bool_t)");
160 hitGroup->AddFrame(partHbutton,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
162 _frmMainVertical->AddFrame(hitGroup,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY|kLHintsExpandX, 5, 5, 5, 5));
165 _frmMainVertical->Layout();
166 _frmMainVertical->MapSubwindows();
167 _frmMainVertical->Resize( _frmMainVertical->GetDefaultSize() );
169 _frmMain->MapSubwindows();
173 void MainWindow::AddHitOptions(){
175 static const std::string routineName(
"MainWindow::AddHitOptions");
179 TEveBrowser* browser = gEve->GetBrowser();
180 browser->StartEmbedding(TRootBrowser::kLeft);
182 TGMainFrame* thisFrmMain =
new TGMainFrame(gClient->GetRoot(), 1000, 600);
183 thisFrmMain->SetWindowName(
"XX GUI");
184 thisFrmMain->SetCleanup(kDeepCleanup);
185 TGVerticalFrame* thisFrmMainVertical =
new TGVerticalFrame(thisFrmMain);
191 for( TString det : thisApp->GetFileManager()->GetDetList() ){
227 thisFrmMainVertical->AddFrame(grFrame,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY|kLHintsExpandX, 5, 5, 5, 5));
234 thisFrmMain->AddFrame(thisFrmMainVertical,
new TGLayoutHints(kLHintsCenterX|kLHintsCenterY|kLHintsExpandX, 5, 5, 5, 5));
236 thisFrmMain->MapSubwindows();
237 thisFrmMain->Resize();
238 thisFrmMain->MapWindow();
240 browser->StopEmbedding();
241 browser->SetTabTitle(
"Hit Options", 0);
245 void MainWindow::SpawnFileDialog(){
250 fi.fFileTypes = filetypes;
251 fi.fIniDir = StrDup(dir);
252 printf(
"fIniDir = %s\n", fi.fIniDir);
253 new TGFileDialog(gClient->GetRoot(), _frmMain, kFDOpen, &fi);
254 printf(
"Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
255 thisApp->SetFileToBeLoaded(fi.fFilename);
256 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.