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;
86 gClient->SetStyle(
"classic");
150 previousEvent->
setToolTip(
"Goto previous event");
153 playEventsBack->
setToolTip(
"Play events backwards");
155 TGCompositeFrame *menuTopFrame =
new TGCompositeFrame(
this, 1, 1, kHorizontalFrame, backgroundColor);
157 TGMenuBar *menuBar =
new TGMenuBar(menuTopFrame, this->GetWidth(), 28, kHorizontalFrame);
159 TGPopupMenu *fileMenu =
new TGPopupMenu(gClient->GetRoot());
160 menuBar->AddPopup(
"File", fileMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
167 fileMenu->AddSeparator();
173 TGPopupMenu* partialSaveMenu =
new TGPopupMenu(gClient->GetRoot());
174 fileMenu->AddPopup(
"Advanced Configuration", partialSaveMenu);
179 fileMenu->AddSeparator();
183 fileMenu->AddSeparator();
196 TGPopupMenu *editMenu =
new TGPopupMenu(gClient->GetRoot());
197 menuBar->AddPopup(
"Edit", editMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
203 editMenu->AddSeparator();
209 editMenu->AddSeparator();
218 TGPopupMenu *viewMenu =
new TGPopupMenu(gClient->GetRoot());
219 menuBar->AddPopup(
"View", viewMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
224 viewMenu->AddSeparator();
235 playEventsBack->
createShortcut(kKey_Space,
"CTRL+SHIFT", GetId());
238 TGPopupMenu* windowMenu =
new TGPopupMenu(gClient->GetRoot());
239 menuBar->AddPopup(
"Window", windowMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
249 TGPopupMenu *helpMenu =
new TGPopupMenu(gClient->GetRoot());
250 menuBar->AddPopup(
"Help", helpMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
253 helpMenu->AddSeparator();
257 menuBar->SetBackgroundColor(backgroundColor);
258 TIter
next(menuBar->GetTitles());
260 while ((title = (TGMenuTitle *)
next()))
261 title->SetTextColor(textColor);
263 menuTopFrame->AddFrame(menuBar,
new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
264 AddFrame(menuTopFrame,
new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
268 AddFrame(
new TGFrame(
this, 1, 1, kChildFrame, 0x503020),
269 new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
271 m_statBar =
new TGStatusBar(
this, this->GetWidth(), 12);
272 AddFrame(
m_statBar,
new TGLayoutHints(kLHintsBottom | kLHintsExpandX));
274 TGHorizontalFrame *fullbar =
new TGHorizontalFrame(
this, this->GetWidth(), 30,0, backgroundColor);
279 TGCompositeFrame* controlFrame =
new TGVerticalFrame(fullbar, 10, 20, 0, backgroundColor);
281 TGCompositeFrame* buttonFrame =
new TGHorizontalFrame(controlFrame, 10, 10, 0, backgroundColor);
283 buttonFrame->SetBackgroundPixmap(imgBtn->GetPixmap());
290 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 4, 3, 10, 0));
298 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
304 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
310 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
319 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
325 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
327 controlFrame->AddFrame(buttonFrame,
new TGLayoutHints(kLHintsTop, 10, 0, 0, 0));
331 TGHorizontalFrame* sliderFrame =
new TGHorizontalFrame(controlFrame, 10, 10, 0, backgroundColor);
333 sliderFrame->SetBackgroundPixmap(imgSld->GetPixmap());
336 m_delaySlider =
new TGHSlider(sliderFrame, 109, kSlider1 | kScaleNo);
337 sliderFrame->AddFrame(
m_delaySlider,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 39, 8, 1, 3));
343 controlFrame->AddFrame(sliderFrame,
new TGLayoutHints(kLHintsTop, 10, 0, 0, 0));
345 fullbar->AddFrame(controlFrame,
new TGLayoutHints(kLHintsLeft, 2, 2, 5, 8));
354 TGVerticalFrame* delayFrame =
new TGVerticalFrame(fullbar, 60, 10, 0, backgroundColor);
356 TGLabel *
label =
new TGLabel(delayFrame,
"Delay");
357 label->SetTextJustify(kTextCenterX);
358 label->SetTextColor(0xb3b3b3);
359 label->SetBackgroundColor(backgroundColor);
360 delayFrame->AddFrame(label,
new TGLayoutHints(kLHintsTop | kLHintsCenterX, 0, 0, 22, 0));
362 TGHorizontalFrame *labFixed =
new TGHorizontalFrame(delayFrame, 70, 20, kFixedSize, backgroundColor);
367 labFixed->AddFrame(
m_delayLabel,
new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 0, 0, 0, 0));
368 delayFrame->AddFrame(labFixed,
new TGLayoutHints(kLHintsLeft, 0, 4, 0, 0));
370 fullbar->AddFrame(delayFrame,
new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
377 Int_t entryHeight = 22;
378 TGVerticalFrame *texts =
new TGVerticalFrame(fullbar, 400, 10, 0, backgroundColor);
382 TGPack *runInfo =
new TGPack(texts, 400, entryHeight, kFixedHeight);
383 runInfo->SetVertical(kFALSE);
384 runInfo->SetUseSplitters(kFALSE);
385 runInfo->SetBackgroundColor(backgroundColor);
387 TGHorizontalFrame *rLeft =
new TGHorizontalFrame(runInfo, 1, entryHeight);
390 rLeft->AddFrame(
m_runEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,8,0,0));
391 runInfo->AddFrameWithWeight(rLeft, 0, 0.28);
393 TGHorizontalFrame *rMid =
new TGHorizontalFrame(runInfo, 1, entryHeight);
396 rMid->AddFrame(
m_lumiEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,8,0,0));
397 runInfo->AddFrameWithWeight(rMid, 0, 0.32);
399 TGHorizontalFrame *rRight =
new TGHorizontalFrame(runInfo, 1, entryHeight);
402 rRight->AddFrame(
m_eventEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,0,0,0));
403 runInfo->AddFrameWithWeight(rRight, 0, 0.4);
405 texts->AddFrame(runInfo,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,4));
410 TGHorizontalFrame *filterFrame =
new TGHorizontalFrame(texts, 400, entryHeight, 0, backgroundColor);
430 filterFrame->AddFrame(
m_filterEnableBtn,
new TGLayoutHints(kLHintsLeft, 4,0,3,0));
437 filterFrame->AddFrame(
m_filterShowGUIBtn,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 6,7,0,0));
439 texts->AddFrame(filterFrame,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,4,0));
442 fullbar->AddFrame(texts,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 5, 5, 12, 0));
446 TGVerticalFrame *texts2 =
new TGVerticalFrame(fullbar, 200, 44, kFixedSize, backgroundColor);
452 m_timeText->SetBackgroundColor(backgroundColor);
453 texts2->AddFrame(
m_timeText,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,1));
455 fullbar->AddFrame(texts2,
new TGLayoutHints(kLHintsLeft, 5, 5, 16, 5));
461 TGVerticalFrame* parentLogoFrame =
new TGVerticalFrame(fullbar, 70, 53, kFixedSize);
462 parentLogoFrame->SetBackgroundColor(backgroundColor);
463 fullbar->AddFrame(parentLogoFrame,
new TGLayoutHints(kLHintsRight | kLHintsCenterY));
465 TGVerticalFrame* logoFrame =
new TGVerticalFrame(parentLogoFrame, 53, 53, kFixedSize);
467 logoFrame->SetBackgroundPixmap(logoImg->GetPixmap());
468 parentLogoFrame->AddFrame(logoFrame,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 0, 14, 0, 0));
471 TGCompositeFrame *logoFrame =
new TGCompositeFrame(
this, 61, 23, kFixedSize | kHorizontalFrame, backgroundColor);
477 logoFrame->AddFrame(infoBut);
478 infoBut->Connect(
"Clicked()",
"CmsShowMainFrame",
this,
"showFWorksInfo()");
481 menuTopFrame->AddFrame(logoFrame,
new TGLayoutHints(kLHintsRight | kLHintsBottom, 0, 13, 3, 1));
486 AddFrame(fullbar,
new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
509 csArea->SetVertical(kFALSE);
512 csArea->AddFrameWithWeight(cf, 0, 20);
514 TEveCompositeFrameInPack *slot =
new TEveCompositeFrameInPack(csArea, 0, csArea);
515 csArea->AddFrameWithWeight(slot, 0, 80);
516 TEveWindowSlot *ew_slot = TEveWindow::CreateDefaultWindowSlot();
517 ew_slot->PopulateEmptyFrame(slot);
520 AddFrame(csArea,
new TGLayoutHints(kLHintsTop | kLHintsExpandX | kLHintsExpandY, 0, 0, 0, 2));
521 csArea->MapSubwindows();
523 SetWindowName(
"cmsShow");
676 gApplication->Terminate(0);
687 if (event->fType == kGKeyPress) {
689 std::vector<CSGAction*>::const_iterator it_act;
692 for (it_act = alist.begin(); it_act != alist.end(); ++it_act) {
693 keycode = (*it_act)->getKeycode();
694 modcode = (*it_act)->getModcode();
695 if ((event->fCode == (UInt_t)keycode) &&
696 ((event->fState == (UInt_t)modcode) ||
697 (event->fState == (UInt_t)(modcode | kKeyMod2Mask)) ||
698 (event->fState == (UInt_t)(modcode | kKeyLockMask)) ||
699 (event->fState == (UInt_t)(modcode | kKeyMod2Mask | kKeyLockMask)))) {
700 (*it_act)->activated.emit();
707 static UInt_t spacecode = gVirtualX->KeysymToKeycode((
int)kKey_Space);
708 if (event->fCode == spacecode && event->fState == 0 ) {
728 UInt_t bgCol, UInt_t txtCol,
729 Int_t
width, Int_t height)
734 p->SetBackgroundColor(bgCol);
735 TGCompositeFrame *lframe =
new TGHorizontalFrame(p, width, height, kFixedSize, bgCol);
736 TGLabel*
label =
new TGLabel(lframe, txt);
737 label->SetBackgroundColor(bgCol);
738 label->SetTextColor(txtCol);
739 lframe->AddFrame(label,
new TGLayoutHints(kLHintsRight | kLHintsTop, 0, 4));
740 p->AddFrame(lframe,
new TGLayoutHints(kLHintsLeft, 0, 0, 3, 0));
745 InfoFrame(
const TGWindow*
p, UInt_t
w, UInt_t
h, UInt_t
opts) : TGMainFrame(p, w, h, opts) {}
759 UInt_t ww = 280, hh = 190;
760 int number_of_lines = 0;
763 if (gSystem->Getenv(
"CMSSW_VERSION"))
765 infoText =
"Version ";
766 infoText += gSystem->Getenv(
"CMSSW_VERSION");
768 number_of_lines += 1;
772 TString infoFileName(
"/data/version.txt");
775 std::ifstream infoFile(infoFileName);
776 while (std::getline(infoFile, line))
779 infoText += line.c_str();
784 infoText +=
"\nIt works or we fix it for free!\nhn-cms-visualization@cern.ch\n";
786 hh = 130 + 2* fontSize*(number_of_lines + 1);
789 m_fworksAbout->SetWMSizeHints(ww, hh, ww, hh, 0, 0);
790 m_fworksAbout->SetBackgroundColor(0x2f2f2f);
792 TGFrame* logoFrame =
new TGFrame(m_fworksAbout, 140, 48, kFixedSize);
794 logoFrame->SetBackgroundPixmap(logoImg->GetPixmap());
795 m_fworksAbout->AddFrame(logoFrame,
new TGLayoutHints(kLHintsTop | kLHintsCenterX, 0, 0, 16, 0));
797 TGLabel*
label =
new TGLabel(m_fworksAbout, infoText);
798 label->SetBackgroundColor(0x2f2f2f);
799 label->SetForegroundColor(0xffffff);
801 FontStruct_t defaultFontStruct = label->GetDefaultFontStruct();
804 TGFontPool *
pool = gClient->GetFontPool();
805 TGFont* defaultFont = pool->GetFont(defaultFontStruct);
806 FontAttributes_t attributes = defaultFont->GetFontAttributes();
807 label->SetTextFont(pool->GetFont(attributes.fFamily, fontSize,
808 attributes.fWeight, attributes.fSlant));
814 m_fworksAbout->AddFrame(label,
new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 0, 0, 12, 0));
816 TGTextButton* btn =
new TGTextButton(m_fworksAbout,
" OK ");
817 btn->SetBackgroundColor(0x2f2f2f);
818 btn->SetForegroundColor(0xffffff);
819 m_fworksAbout->AddFrame(btn,
new TGLayoutHints(kLHintsBottom | kLHintsCenterX, 0, 0, 0, 12));
820 btn->Connect(
"Clicked()",
"TGMainFrame", m_fworksAbout,
"CloseWindow()");
822 m_fworksAbout->MapSubwindows();
823 m_fworksAbout->Layout();
835 if ((*i)-> getKeycode())
836 f->BindKey(
this, (*i)->getKeycode(), (*i)->getModcode());
844 TGFrameElement* fe = (TGFrameElement*) GetList()->Last();
847 TGFrameElementPack* fep;
848 fep = (TGFrameElementPack*)pack->GetList()->At(1);
851 fep = (TGFrameElementPack*)pack->GetList()->At(3);
852 fep->fWeight = 100 -
x;
854 pack->ResizeExistingFrames();
861 TGFrameElement* fe = (TGFrameElement*)GetList()->Last();
862 TGPack*
pack = (TGPack*)(fe->fFrame);
864 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