16 #include <TCollection.h>
17 #include <TApplication.h>
18 #include <TEveWindow.h>
26 #include <TGStatusBar.h>
27 #include <KeySymbols.h>
66 FWPack(
const TGWindow*
w) : TGPack(w, 100, 100) {}
84 const unsigned int backgroundColor=0x2f2f2f;
85 const unsigned int textColor= 0xb3b3b3;
142 previousEvent->
setToolTip(
"Goto previous event");
145 playEventsBack->
setToolTip(
"Play events backwards");
147 TGCompositeFrame *menuTopFrame =
new TGCompositeFrame(
this, 1, 1, kHorizontalFrame, backgroundColor);
149 TGMenuBar *menuBar =
new TGMenuBar(menuTopFrame, this->GetWidth(), 28, kHorizontalFrame);
151 TGPopupMenu *fileMenu =
new TGPopupMenu(gClient->GetRoot());
152 menuBar->AddPopup(
"File", fileMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
161 fileMenu->AddSeparator();
165 fileMenu->AddSeparator();
177 TGPopupMenu *editMenu =
new TGPopupMenu(gClient->GetRoot());
178 menuBar->AddPopup(
"Edit", editMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
184 editMenu->AddSeparator();
190 editMenu->AddSeparator();
199 TGPopupMenu *viewMenu =
new TGPopupMenu(gClient->GetRoot());
200 menuBar->AddPopup(
"View", viewMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
205 viewMenu->AddSeparator();
216 playEventsBack->
createShortcut(kKey_Space,
"CTRL+SHIFT", GetId());
219 TGPopupMenu* windowMenu =
new TGPopupMenu(gClient->GetRoot());
220 menuBar->AddPopup(
"Window", windowMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
230 TGPopupMenu *helpMenu =
new TGPopupMenu(gClient->GetRoot());
231 menuBar->AddPopup(
"Help", helpMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
234 helpMenu->AddSeparator();
238 menuBar->SetBackgroundColor(backgroundColor);
239 TIter
next(menuBar->GetTitles());
241 while ((title = (TGMenuTitle *)
next()))
242 title->SetTextColor(textColor);
244 menuTopFrame->AddFrame(menuBar,
new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
245 AddFrame(menuTopFrame,
new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
249 AddFrame(
new TGFrame(
this, 1, 1, kChildFrame, 0x503020),
250 new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
252 m_statBar =
new TGStatusBar(
this, this->GetWidth(), 12);
253 AddFrame(
m_statBar,
new TGLayoutHints(kLHintsBottom | kLHintsExpandX));
255 TGHorizontalFrame *fullbar =
new TGHorizontalFrame(
this, this->GetWidth(), 30,0, backgroundColor);
260 TGCompositeFrame* controlFrame =
new TGVerticalFrame(fullbar, 10, 20, 0, backgroundColor);
262 TGCompositeFrame* buttonFrame =
new TGHorizontalFrame(controlFrame, 10, 10, 0, backgroundColor);
264 buttonFrame->SetBackgroundPixmap(imgBtn->GetPixmap());
271 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 4, 3, 10, 0));
279 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
285 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
291 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
300 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
306 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
308 controlFrame->AddFrame(buttonFrame,
new TGLayoutHints(kLHintsTop, 10, 0, 0, 0));
312 TGHorizontalFrame* sliderFrame =
new TGHorizontalFrame(controlFrame, 10, 10, 0, backgroundColor);
314 sliderFrame->SetBackgroundPixmap(imgSld->GetPixmap());
317 m_delaySlider =
new TGHSlider(sliderFrame, 109, kSlider1 | kScaleNo);
318 sliderFrame->AddFrame(
m_delaySlider,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 39, 8, 1, 3));
324 controlFrame->AddFrame(sliderFrame,
new TGLayoutHints(kLHintsTop, 10, 0, 0, 0));
326 fullbar->AddFrame(controlFrame,
new TGLayoutHints(kLHintsLeft, 2, 2, 5, 8));
335 TGVerticalFrame* delayFrame =
new TGVerticalFrame(fullbar, 60, 10, 0, backgroundColor);
337 TGLabel *
label =
new TGLabel(delayFrame,
"Delay");
338 label->SetTextJustify(kTextCenterX);
339 label->SetTextColor(0xb3b3b3);
340 label->SetBackgroundColor(backgroundColor);
341 delayFrame->AddFrame(label,
new TGLayoutHints(kLHintsTop | kLHintsCenterX, 0, 0, 22, 0));
343 TGHorizontalFrame *labFixed =
new TGHorizontalFrame(delayFrame, 70, 20, kFixedSize, backgroundColor);
348 labFixed->AddFrame(
m_delayLabel,
new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 0, 0, 0, 0));
349 delayFrame->AddFrame(labFixed,
new TGLayoutHints(kLHintsLeft, 0, 4, 0, 0));
351 fullbar->AddFrame(delayFrame,
new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
358 Int_t entryHeight = 22;
359 TGVerticalFrame *texts =
new TGVerticalFrame(fullbar, 400, 10, 0, backgroundColor);
363 TGPack *runInfo =
new TGPack(texts, 400, entryHeight, kFixedHeight);
364 runInfo->SetVertical(kFALSE);
365 runInfo->SetUseSplitters(kFALSE);
366 runInfo->SetBackgroundColor(backgroundColor);
368 TGHorizontalFrame *rLeft =
new TGHorizontalFrame(runInfo, 1, entryHeight);
371 rLeft->AddFrame(
m_runEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,8,0,0));
372 runInfo->AddFrameWithWeight(rLeft, 0, 0.28);
374 TGHorizontalFrame *rMid =
new TGHorizontalFrame(runInfo, 1, entryHeight);
377 rMid->AddFrame(
m_lumiEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,8,0,0));
378 runInfo->AddFrameWithWeight(rMid, 0, 0.32);
380 TGHorizontalFrame *rRight =
new TGHorizontalFrame(runInfo, 1, entryHeight);
383 rRight->AddFrame(
m_eventEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,0,0,0));
384 runInfo->AddFrameWithWeight(rRight, 0, 0.4);
386 texts->AddFrame(runInfo,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,4));
391 TGHorizontalFrame *filterFrame =
new TGHorizontalFrame(texts, 400, entryHeight, 0, backgroundColor);
396 m_filterIcons[2] = fClient->GetPicture(
"unchecked_dis_t.xpm");
411 filterFrame->AddFrame(
m_filterEnableBtn,
new TGLayoutHints(kLHintsLeft, 4,0,3,0));
418 filterFrame->AddFrame(
m_filterShowGUIBtn,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 6,7,0,0));
420 texts->AddFrame(filterFrame,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,4,0));
423 fullbar->AddFrame(texts,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 5, 5, 12, 0));
427 TGVerticalFrame *texts2 =
new TGVerticalFrame(fullbar, 200, 44, kFixedSize, backgroundColor);
433 m_timeText->SetBackgroundColor(backgroundColor);
434 texts2->AddFrame(
m_timeText,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,1));
436 fullbar->AddFrame(texts2,
new TGLayoutHints(kLHintsLeft, 5, 5, 16, 5));
442 TGVerticalFrame* parentLogoFrame =
new TGVerticalFrame(fullbar, 70, 53, kFixedSize);
443 parentLogoFrame->SetBackgroundColor(backgroundColor);
444 fullbar->AddFrame(parentLogoFrame,
new TGLayoutHints(kLHintsRight | kLHintsCenterY));
446 TGVerticalFrame* logoFrame =
new TGVerticalFrame(parentLogoFrame, 53, 53, kFixedSize);
448 logoFrame->SetBackgroundPixmap(logoImg->GetPixmap());
449 parentLogoFrame->AddFrame(logoFrame,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 0, 14, 0, 0));
452 TGCompositeFrame *logoFrame =
new TGCompositeFrame(
this, 61, 23, kFixedSize | kHorizontalFrame, backgroundColor);
458 logoFrame->AddFrame(infoBut);
459 infoBut->Connect(
"Clicked()",
"CmsShowMainFrame",
this,
"showFWorksInfo()");
462 menuTopFrame->AddFrame(logoFrame,
new TGLayoutHints(kLHintsRight | kLHintsBottom, 0, 13, 3, 1));
467 AddFrame(fullbar,
new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
490 csArea->SetVertical(kFALSE);
493 csArea->AddFrameWithWeight(cf, 0, 20);
495 TEveCompositeFrameInPack *slot =
new TEveCompositeFrameInPack(csArea, 0, csArea);
496 csArea->AddFrameWithWeight(slot, 0, 80);
497 TEveWindowSlot *ew_slot = TEveWindow::CreateDefaultWindowSlot();
498 ew_slot->PopulateEmptyFrame(slot);
501 AddFrame(csArea,
new TGLayoutHints(kLHintsTop | kLHintsExpandX | kLHintsExpandY, 0, 0, 0, 2));
502 csArea->MapSubwindows();
504 SetWindowName(
"cmsShow");
657 gApplication->Terminate(0);
667 if (event->fType == kGKeyPress) {
669 std::vector<CSGAction*>::const_iterator it_act;
672 for (it_act = alist.begin(); it_act != alist.end(); ++it_act) {
673 keycode = (*it_act)->getKeycode();
674 modcode = (*it_act)->getModcode();
675 if ((event->fCode == (UInt_t)keycode) &&
676 ((event->fState == (UInt_t)modcode) ||
677 (event->fState == (UInt_t)(modcode | kKeyMod2Mask)) ||
678 (event->fState == (UInt_t)(modcode | kKeyLockMask)) ||
679 (event->fState == (UInt_t)(modcode | kKeyMod2Mask | kKeyLockMask)))) {
680 (*it_act)->activated.emit();
699 UInt_t bgCol, UInt_t txtCol,
700 Int_t
width, Int_t height)
705 p->SetBackgroundColor(bgCol);
706 TGCompositeFrame *lframe =
new TGHorizontalFrame(p, width, height, kFixedSize, bgCol);
707 TGLabel*
label =
new TGLabel(lframe, txt);
708 label->SetBackgroundColor(bgCol);
709 label->SetTextColor(txtCol);
710 lframe->AddFrame(label,
new TGLayoutHints(kLHintsRight | kLHintsTop, 0, 4));
711 p->AddFrame(lframe,
new TGLayoutHints(kLHintsLeft, 0, 0, 3, 0));
716 InfoFrame(
const TGWindow*
p, UInt_t
w, UInt_t
h, UInt_t
opts) : TGMainFrame(p, w, h, opts) {}
730 UInt_t ww = 280, hh = 190;
731 int number_of_lines = 0;
734 if (gSystem->Getenv(
"CMSSW_VERSION"))
736 infoText =
"Version ";
737 infoText += gSystem->Getenv(
"CMSSW_VERSION");
739 number_of_lines += 1;
743 TString infoFileName(
"/data/version.txt");
746 std::ifstream infoFile(infoFileName);
747 while (std::getline(infoFile, line))
750 infoText += line.c_str();
755 infoText +=
"\nIt works or we fix it for free!\nhn-cms-visualization@cern.ch\n";
757 hh = 130 + 2* fontSize*(number_of_lines + 1);
760 m_fworksAbout->SetWMSizeHints(ww, hh, ww, hh, 0, 0);
761 m_fworksAbout->SetBackgroundColor(0x2f2f2f);
763 TGFrame* logoFrame =
new TGFrame(m_fworksAbout, 140, 48, kFixedSize);
765 logoFrame->SetBackgroundPixmap(logoImg->GetPixmap());
766 m_fworksAbout->AddFrame(logoFrame,
new TGLayoutHints(kLHintsTop | kLHintsCenterX, 0, 0, 16, 0));
768 TGLabel*
label =
new TGLabel(m_fworksAbout, infoText);
769 label->SetBackgroundColor(0x2f2f2f);
770 label->SetForegroundColor(0xffffff);
772 FontStruct_t defaultFontStruct = label->GetDefaultFontStruct();
775 TGFontPool *
pool = gClient->GetFontPool();
776 TGFont* defaultFont = pool->GetFont(defaultFontStruct);
777 FontAttributes_t
attributes = defaultFont->GetFontAttributes();
778 label->SetTextFont(pool->GetFont(attributes.fFamily, fontSize,
779 attributes.fWeight, attributes.fSlant));
785 m_fworksAbout->AddFrame(label,
new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 0, 0, 12, 0));
787 TGTextButton* btn =
new TGTextButton(m_fworksAbout,
" OK ");
788 btn->SetBackgroundColor(0x2f2f2f);
789 btn->SetForegroundColor(0xffffff);
790 m_fworksAbout->AddFrame(btn,
new TGLayoutHints(kLHintsBottom | kLHintsCenterX, 0, 0, 0, 12));
791 btn->Connect(
"Clicked()",
"TGMainFrame", m_fworksAbout,
"CloseWindow()");
793 m_fworksAbout->MapSubwindows();
794 m_fworksAbout->Layout();
806 if ((*i)-> getKeycode())
807 f->BindKey(
this, (*i)->getKeycode(), (*i)->getModcode());
815 TGFrameElement* fe = (TGFrameElement*) GetList()->Last();
818 TGFrameElementPack* fep;
819 fep = (TGFrameElementPack*)pack->GetList()->At(1);
822 fep = (TGFrameElementPack*)pack->GetList()->At(3);
823 fep->fWeight = 100 -
x;
825 pack->ResizeExistingFrames();
832 TGFrameElement* fe = (TGFrameElement*)GetList()->Last();
833 TGPack*
pack = (TGPack*)(fe->fFrame);
835 TGFrameElementPack* fep = (TGFrameElementPack*)pack->GetList()->At(1);
const std::string sKeyboardShort
TGVerticalFrame * createList(TGCompositeFrame *p)
static const TString & coreIcondir()
FWNumberEntryField * m_lumiEntry
EventNumber_t event() const
void bindCSGActionKeys(const TGMainFrame *f) const
const std::string sShowCommonInsp
virtual void SetUIntNumber(UInt_t n)
FWPack(const TGWindow *w)
InfoFrame(const TGWindow *p, UInt_t w, UInt_t h, UInt_t opts)
void loadEvent(const edm::EventBase &event)
void createViews(TEveWindowSlot *slot)
virtual void enableActions(bool enable=true)
const std::string sBackgroundColor
const std::string sPlayEvents
sigc::signal< void > activated
FWCustomIconsButton * m_filterEnableBtn
void enableNext(bool enable=true)
const std::string sOpenData
virtual void CloseWindow() override
FWIntValueListener * m_delaySliderListener
void enableNavigatorControls()
LuminosityBlockNumber_t luminosityBlock() const
const std::string sSaveConfigAs
CSGContinuousAction * m_playEventsBack
const std::string sNextEvent
const std::string sSaveConfig
const TGPicture * m_filterIcons[9]
void createCustomIconsButton(TGCompositeFrame *p, const TGPicture *upPic, const TGPicture *downPic, const TGPicture *disabledPic, const TGPicture *upRunningPic, const TGPicture *downRunningPic, TGLayoutHints *l=0, Int_t id=-1, GContext_t norm=TGButton::GetDefaultGC()(), UInt_t option=0)
std::vector< CSGAction * > m_actionList
virtual void SetULong64Number(ULong64_t n)
const std::string sAppendData
void setToolTip(const std::string &tip)
virtual Bool_t isEnabled() const
CSGContinuousAction * m_loopAction
TGMainFrame * m_fworksAbout
CSGAction * createNewViewerAction(const std::string &iActionName, bool seaprator)
FWNumberEntryField * m_eventEntry
virtual ~CmsShowMainFrame()
void updateStatusBar(const char *status)
const std::string sShowAddCollection
const std::string sGotoLastEvent
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
TGPopupMenu * m_newViewerMenu
const std::string sExportImage
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
const std::string sAutoRewind
void createMenuEntry(TGPopupMenu *menu)
Bool_t HandleKey(Event_t *event)
const std::string sShowMainViewCtl
FWNumberEntryField * m_runEntry
const std::string sPlayEventsBack
CSGAction * getAction(const std::string &name)
virtual void enableActions(bool enable=true)
const std::string sShowObjInsp
FWCustomIconsButton * createCustomIconsButton(TGCompositeFrame *p, const TGPicture *upPic, const TGPicture *downPic, const TGPicture *disabledPic, TGLayoutHints *l=0, Int_t id=-1, GContext_t norm=TGButton::GetDefaultGC()(), UInt_t option=0)
CSGAction * m_previousEvent
const std::string sGotoFirstEvent
virtual void CloseWindow()
const std::string sShowInvMassDialog
void setSummaryViewWeight(float)
const std::string sShowEventDisplayInsp
void enablePrevious(bool enable=true)
const std::string sPreviousEvent
CSGContinuousAction * m_playEvents
std::string getLocalTime(const edm::EventBase &event)
float getSummaryViewWeight() const
const std::vector< CSGAction * > & getListOfActions() const
const std::string sLoadConfig
virtual void HandleMenu(Int_t id)
void makeFixedSizeLabel(TGHorizontalFrame *p, const char *txt, UInt_t bgCol, UInt_t txtCol, Int_t width, Int_t height)
void createShortcut(UInt_t key, const char *mod, int windowID)
const std::string sExportAllImages
void enableComplexNavigation(bool enable=true)
TGTextButton * m_filterShowGUIBtn
CmsShowMainFrame(const TGWindow *p=0, UInt_t w=1, UInt_t h=1, FWGUIManager *m=0)
const std::string sHelpGL
void setPlayDelayGUI(Float_t val, Bool_t sliderChanged)
const std::string sSearchFiles