16 #include <TCollection.h> 17 #include <TApplication.h> 18 #include <TEveWindow.h> 26 #include <TGStatusBar.h> 27 #include <KeySymbols.h> 69 FWPack(
const TGWindow*
w) : TGPack(w, 100, 100) {}
87 const unsigned int backgroundColor=0x2f2f2f;
89 gClient->SetStyle(
"classic");
152 previousEvent->
setToolTip(
"Goto previous event");
155 playEventsBack->
setToolTip(
"Play events backwards");
157 TGCompositeFrame *menuTopFrame =
new TGCompositeFrame(
this, 1, 1, kHorizontalFrame, backgroundColor);
159 TGMenuBar *menuBar =
new TGMenuBar(menuTopFrame, this->GetWidth(), 28, kHorizontalFrame);
161 TGPopupMenu *fileMenu =
new TGPopupMenu(gClient->GetRoot());
162 menuBar->AddPopup(
"File", fileMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
169 fileMenu->AddSeparator();
175 TGPopupMenu* partialSaveMenu =
new TGPopupMenu(gClient->GetRoot());
176 fileMenu->AddPopup(
"Advanced Configuration", partialSaveMenu);
181 fileMenu->AddSeparator();
185 fileMenu->AddSeparator();
198 TGPopupMenu *editMenu =
new TGPopupMenu(gClient->GetRoot());
199 menuBar->AddPopup(
"Edit", editMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
205 editMenu->AddSeparator();
211 editMenu->AddSeparator();
220 TGPopupMenu *viewMenu =
new TGPopupMenu(gClient->GetRoot());
221 menuBar->AddPopup(
"View", viewMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
226 viewMenu->AddSeparator();
237 playEventsBack->
createShortcut(kKey_Space,
"CTRL+SHIFT", GetId());
240 TGPopupMenu* windowMenu =
new TGPopupMenu(gClient->GetRoot());
241 menuBar->AddPopup(
"Window", windowMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
251 TGPopupMenu *helpMenu =
new TGPopupMenu(gClient->GetRoot());
252 menuBar->AddPopup(
"Help", helpMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
255 helpMenu->AddSeparator();
259 menuBar->SetBackgroundColor(backgroundColor);
260 TIter
next(menuBar->GetTitles());
262 while ((title = (TGMenuTitle *)
next()))
263 title->SetTextColor(textColor);
265 menuTopFrame->AddFrame(menuBar,
new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
268 AddFrame(menuTopFrame,
new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
272 AddFrame(
new TGFrame(
this, 1, 1, kChildFrame, 0x503020),
273 new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
275 m_statBar =
new TGStatusBar(
this, this->GetWidth(), 12);
276 AddFrame(
m_statBar,
new TGLayoutHints(kLHintsBottom | kLHintsExpandX));
278 TGHorizontalFrame *fullbar =
new TGHorizontalFrame(
this, this->GetWidth(), 30,0, backgroundColor);
283 TGCompositeFrame* controlFrame =
new TGVerticalFrame(fullbar, 10, 20, 0, backgroundColor);
285 TGCompositeFrame* buttonFrame =
new TGHorizontalFrame(controlFrame, 10, 10, 0, backgroundColor);
287 buttonFrame->SetBackgroundPixmap(imgBtn->GetPixmap());
294 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 4, 3, 10, 0));
302 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
308 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
314 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
323 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
329 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
331 controlFrame->AddFrame(buttonFrame,
new TGLayoutHints(kLHintsTop, 10, 0, 0, 0));
335 TGHorizontalFrame* sliderFrame =
new TGHorizontalFrame(controlFrame, 10, 10, 0, backgroundColor);
337 sliderFrame->SetBackgroundPixmap(imgSld->GetPixmap());
340 m_delaySlider =
new TGHSlider(sliderFrame, 109, kSlider1 | kScaleNo);
341 sliderFrame->AddFrame(
m_delaySlider,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 39, 8, 1, 3));
347 controlFrame->AddFrame(sliderFrame,
new TGLayoutHints(kLHintsTop, 10, 0, 0, 0));
349 fullbar->AddFrame(controlFrame,
new TGLayoutHints(kLHintsLeft, 2, 2, 5, 8));
358 TGVerticalFrame* delayFrame =
new TGVerticalFrame(fullbar, 60, 10, 0, backgroundColor);
360 TGLabel *
label =
new TGLabel(delayFrame,
"Delay");
361 label->SetTextJustify(kTextCenterX);
362 label->SetTextColor(0xb3b3b3);
363 label->SetBackgroundColor(backgroundColor);
364 delayFrame->AddFrame(label,
new TGLayoutHints(kLHintsTop | kLHintsCenterX, 0, 0, 22, 0));
366 TGHorizontalFrame *labFixed =
new TGHorizontalFrame(delayFrame, 70, 20, kFixedSize, backgroundColor);
371 labFixed->AddFrame(
m_delayLabel,
new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 0, 0, 0, 0));
372 delayFrame->AddFrame(labFixed,
new TGLayoutHints(kLHintsLeft, 0, 4, 0, 0));
374 fullbar->AddFrame(delayFrame,
new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
381 Int_t entryHeight = 22;
382 TGVerticalFrame *texts =
new TGVerticalFrame(fullbar, 400, 10, 0, backgroundColor);
386 TGPack *runInfo =
new TGPack(texts, 400, entryHeight, kFixedHeight);
387 runInfo->SetVertical(kFALSE);
388 runInfo->SetUseSplitters(kFALSE);
389 runInfo->SetBackgroundColor(backgroundColor);
391 TGHorizontalFrame *rLeft =
new TGHorizontalFrame(runInfo, 1, entryHeight);
394 rLeft->AddFrame(
m_runEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,8,0,0));
395 runInfo->AddFrameWithWeight(rLeft,
nullptr, 0.28);
397 TGHorizontalFrame *rMid =
new TGHorizontalFrame(runInfo, 1, entryHeight);
400 rMid->AddFrame(
m_lumiEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,8,0,0));
401 runInfo->AddFrameWithWeight(rMid,
nullptr, 0.32);
403 TGHorizontalFrame *rRight =
new TGHorizontalFrame(runInfo, 1, entryHeight);
406 rRight->AddFrame(
m_eventEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,0,0,0));
407 runInfo->AddFrameWithWeight(rRight,
nullptr, 0.4);
409 texts->AddFrame(runInfo,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,4));
414 TGHorizontalFrame *filterFrame =
new TGHorizontalFrame(texts, 400, entryHeight, 0, backgroundColor);
434 filterFrame->AddFrame(
m_filterEnableBtn,
new TGLayoutHints(kLHintsLeft, 4,0,3,0));
441 filterFrame->AddFrame(
m_filterShowGUIBtn,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 6,7,0,0));
443 texts->AddFrame(filterFrame,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,4,0));
446 fullbar->AddFrame(texts,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 5, 5, 12, 0));
450 TGVerticalFrame *texts2 =
new TGVerticalFrame(fullbar, 200, 44, kFixedSize, backgroundColor);
456 m_timeText->SetBackgroundColor(backgroundColor);
457 texts2->AddFrame(
m_timeText,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,1));
459 fullbar->AddFrame(texts2,
new TGLayoutHints(kLHintsLeft, 5, 5, 16, 5));
465 TGVerticalFrame* parentLogoFrame =
new TGVerticalFrame(fullbar, 70, 53, kFixedSize);
466 parentLogoFrame->SetBackgroundColor(backgroundColor);
467 fullbar->AddFrame(parentLogoFrame,
new TGLayoutHints(kLHintsRight | kLHintsCenterY));
469 TGVerticalFrame* logoFrame =
new TGVerticalFrame(parentLogoFrame, 53, 53, kFixedSize);
471 logoFrame->SetBackgroundPixmap(logoImg->GetPixmap());
472 parentLogoFrame->AddFrame(logoFrame,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 0, 14, 0, 0));
475 TGCompositeFrame *logoFrame =
new TGCompositeFrame(
this, 61, 23, kFixedSize | kHorizontalFrame, backgroundColor);
481 logoFrame->AddFrame(infoBut);
482 infoBut->Connect(
"Clicked()",
"CmsShowMainFrame",
this,
"showFWorksInfo()");
485 menuTopFrame->AddFrame(logoFrame,
new TGLayoutHints(kLHintsRight | kLHintsBottom, 0, 13, 3, 1));
490 AddFrame(fullbar,
new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
513 csArea->SetVertical(kFALSE);
516 csArea->AddFrameWithWeight(cf,
nullptr, 20);
518 TEveCompositeFrameInPack *slot =
new TEveCompositeFrameInPack(csArea,
nullptr, csArea);
519 csArea->AddFrameWithWeight(slot,
nullptr, 80);
520 TEveWindowSlot *ew_slot = TEveWindow::CreateDefaultWindowSlot();
521 ew_slot->PopulateEmptyFrame(slot);
524 AddFrame(csArea,
new TGLayoutHints(kLHintsTop | kLHintsExpandX | kLHintsExpandY, 0, 0, 0, 2));
525 csArea->MapSubwindows();
527 SetWindowName(
"cmsShow");
680 gApplication->Terminate(0);
691 if (event->fType == kGKeyPress) {
693 std::vector<CSGAction*>::const_iterator it_act;
696 for (it_act = alist.begin(); it_act != alist.end(); ++it_act) {
697 keycode = (*it_act)->getKeycode();
698 modcode = (*it_act)->getModcode();
699 if ((event->fCode == (UInt_t)keycode) &&
700 ((event->fState == (UInt_t)modcode) ||
701 (event->fState == (UInt_t)(modcode | kKeyMod2Mask)) ||
702 (event->fState == (UInt_t)(modcode | kKeyLockMask)) ||
703 (event->fState == (UInt_t)(modcode | kKeyMod2Mask | kKeyLockMask)))) {
704 (*it_act)->activated.emit();
711 static UInt_t spacecode = gVirtualX->KeysymToKeycode((
int)kKey_Space);
712 if (event->fCode == spacecode && event->fState == 0 ) {
732 UInt_t bgCol, UInt_t txtCol,
733 Int_t
width, Int_t height)
738 p->SetBackgroundColor(bgCol);
739 TGCompositeFrame *lframe =
new TGHorizontalFrame(p, width, height, kFixedSize, bgCol);
740 TGLabel*
label =
new TGLabel(lframe, txt);
741 label->SetBackgroundColor(bgCol);
742 label->SetTextColor(txtCol);
743 lframe->AddFrame(label,
new TGLayoutHints(kLHintsRight | kLHintsTop, 0, 4));
744 p->AddFrame(lframe,
new TGLayoutHints(kLHintsLeft, 0, 0, 3, 0));
749 InfoFrame(
const TGWindow*
p, UInt_t
w, UInt_t
h, UInt_t
opts) : TGMainFrame(p, w, h, opts) {}
763 UInt_t ww = 280, hh = 190;
764 int number_of_lines = 0;
767 if (gSystem->Getenv(
"CMSSW_VERSION"))
769 infoText =
"Version ";
770 infoText += gSystem->Getenv(
"CMSSW_VERSION");
772 number_of_lines += 1;
776 TString infoFileName(
"/data/version.txt");
779 std::ifstream infoFile(infoFileName);
780 while (std::getline(infoFile, line))
783 infoText += line.c_str();
788 infoText +=
"\nIt works or we fix it for free!\nhn-cms-visualization@cern.ch\n";
790 hh = 130 + 2* fontSize*(number_of_lines + 1);
793 m_fworksAbout->SetWMSizeHints(ww, hh, ww, hh, 0, 0);
794 m_fworksAbout->SetBackgroundColor(0x2f2f2f);
796 TGFrame* logoFrame =
new TGFrame(m_fworksAbout, 140, 48, kFixedSize);
798 logoFrame->SetBackgroundPixmap(logoImg->GetPixmap());
799 m_fworksAbout->AddFrame(logoFrame,
new TGLayoutHints(kLHintsTop | kLHintsCenterX, 0, 0, 16, 0));
801 TGLabel*
label =
new TGLabel(m_fworksAbout, infoText);
802 label->SetBackgroundColor(0x2f2f2f);
803 label->SetForegroundColor(0xffffff);
805 FontStruct_t defaultFontStruct = label->GetDefaultFontStruct();
808 TGFontPool *
pool = gClient->GetFontPool();
809 TGFont* defaultFont = pool->GetFont(defaultFontStruct);
810 FontAttributes_t attributes = defaultFont->GetFontAttributes();
811 label->SetTextFont(pool->GetFont(attributes.fFamily, fontSize,
812 attributes.fWeight, attributes.fSlant));
818 m_fworksAbout->AddFrame(label,
new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 0, 0, 12, 0));
820 TGTextButton* btn =
new TGTextButton(m_fworksAbout,
" OK ");
821 btn->SetBackgroundColor(0x2f2f2f);
822 btn->SetForegroundColor(0xffffff);
823 m_fworksAbout->AddFrame(btn,
new TGLayoutHints(kLHintsBottom | kLHintsCenterX, 0, 0, 0, 12));
824 btn->Connect(
"Clicked()",
"TGMainFrame", m_fworksAbout,
"CloseWindow()");
826 m_fworksAbout->MapSubwindows();
827 m_fworksAbout->Layout();
839 if ((*i)-> getKeycode())
840 f->BindKey(
this, (*i)->getKeycode(), (*i)->getModcode());
848 TGFrameElement* fe = (TGFrameElement*) GetList()->Last();
851 TGFrameElementPack* fep;
852 fep = (TGFrameElementPack*)pack->GetList()->At(1);
855 fep = (TGFrameElementPack*)pack->GetList()->At(3);
856 fep->fWeight = 100 -
x;
858 pack->ResizeExistingFrames();
865 TGFrameElement* fe = (TGFrameElement*)GetList()->Last();
866 TGPack*
pack = (TGPack*)(fe->fFrame);
868 TGFrameElementPack* fep = (TGFrameElementPack*)pack->GetList()->At(1);
const std::string sKeyboardShort
TGVerticalFrame * createList(TGCompositeFrame *p)
static const TString & coreIcondir()
const std::string sSavePartialConfig
void CloseWindow() override
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)
const std::string sSavePartialConfigAs
void loadEvent(const edm::EventBase &event)
CSGContinuousAction * playEventsBackwardsAction() const
void createViews(TEveWindowSlot *slot)
virtual void enableActions(bool enable=true)
~CmsShowMainFrame() override
void HandleMenu(Int_t id) override
const std::string sBackgroundColor
const std::string sPlayEvents
sigc::signal< void > activated
FWCustomIconsButton * m_filterEnableBtn
void enableNext(bool enable=true)
const std::string sOpenData
FWIntValueListener * m_delaySliderListener
void enableNavigatorControls()
LuminosityBlockNumber_t luminosityBlock() const
void createCustomIconsButton(TGCompositeFrame *p, const TGPicture *upPic, const TGPicture *downPic, const TGPicture *disabledPic, const TGPicture *upRunningPic, const TGPicture *downRunningPic, TGLayoutHints *l=nullptr, Int_t id=-1, GContext_t norm=TGButton::GetDefaultGC()(), UInt_t option=0)
const std::string sSaveConfigAs
CSGContinuousAction * m_playEventsBack
const std::string sNextEvent
const std::string sSaveConfig
Bool_t HandleKey(Event_t *event) override
const TGPicture * m_filterIcons[9]
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)
void CloseWindow() override
FWNumberEntryField * m_eventEntry
void updateStatusBar(const char *status)
const std::string sShowAddCollection
const std::string sGotoLastEvent
TGPopupMenu * m_newViewerMenu
const std::string sExportImage
const std::string sAutoRewind
void createMenuEntry(TGPopupMenu *menu)
const std::string sShowMainViewCtl
FWNumberEntryField * m_runEntry
const std::string sPlayEventsBack
CSGAction * getAction(const std::string &name)
void enableActions(bool enable=true) override
const std::string sShowObjInsp
CSGAction * m_previousEvent
const std::string sGotoFirstEvent
CmsShowMainFrame(const TGWindow *p=nullptr, UInt_t w=1, UInt_t h=1, FWGUIManager *m=nullptr)
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
FWCustomIconsButton * createCustomIconsButton(TGCompositeFrame *p, const TGPicture *upPic, const TGPicture *downPic, const TGPicture *disabledPic, TGLayoutHints *l=nullptr, Int_t id=-1, GContext_t norm=TGButton::GetDefaultGC()(), UInt_t option=0)
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
const std::string sHelpGL
void setPlayDelayGUI(Float_t val, Bool_t sliderChanged)
const std::string sLoadPartialConfig
CSGContinuousAction * playEventsAction() const
const std::string sSearchFiles