16 #include <TCollection.h>
17 #include <TApplication.h>
18 #include <TEveWindow.h>
26 #include <TGStatusBar.h>
27 #include <KeySymbols.h>
68 FWPack(
const TGWindow*
w) : TGPack(w, 100, 100) {}
86 const unsigned int backgroundColor=0x2f2f2f;
87 const unsigned int textColor= 0xb3b3b3;
88 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, 0, 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, 0, 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, 0, 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, 0, 20);
518 TEveCompositeFrameInPack *slot =
new TEveCompositeFrameInPack(csArea, 0, csArea);
519 csArea->AddFrameWithWeight(slot, 0, 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
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)
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
CSGContinuousAction * playEventsBackwardsAction() const
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
T x() const
Cartesian x coordinate.
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
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 sLoadPartialConfig
CSGContinuousAction * playEventsAction() const
const std::string sSearchFiles