17 #include <TCollection.h>
18 #include <TApplication.h>
19 #include <TEveWindow.h>
27 #include <TGStatusBar.h>
28 #include <KeySymbols.h>
67 FWPack(
const TGWindow*
w) : TGPack(w, 100, 100) {}
85 const unsigned int backgroundColor=0x2f2f2f;
86 const unsigned int textColor= 0xb3b3b3;
143 previousEvent->
setToolTip(
"Goto previous event");
146 playEventsBack->
setToolTip(
"Play events backwards");
148 TGCompositeFrame *menuTopFrame =
new TGCompositeFrame(
this, 1, 1, kHorizontalFrame, backgroundColor);
150 TGMenuBar *menuBar =
new TGMenuBar(menuTopFrame, this->GetWidth(), 28, kHorizontalFrame);
152 TGPopupMenu *fileMenu =
new TGPopupMenu(gClient->GetRoot());
153 menuBar->AddPopup(
"File", fileMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
162 fileMenu->AddSeparator();
166 fileMenu->AddSeparator();
178 TGPopupMenu *editMenu =
new TGPopupMenu(gClient->GetRoot());
179 menuBar->AddPopup(
"Edit", editMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
185 editMenu->AddSeparator();
191 editMenu->AddSeparator();
200 TGPopupMenu *viewMenu =
new TGPopupMenu(gClient->GetRoot());
201 menuBar->AddPopup(
"View", viewMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
206 viewMenu->AddSeparator();
217 playEventsBack->
createShortcut(kKey_Space,
"CTRL+SHIFT", GetId());
220 TGPopupMenu* windowMenu =
new TGPopupMenu(gClient->GetRoot());
221 menuBar->AddPopup(
"Window", windowMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
231 TGPopupMenu *helpMenu =
new TGPopupMenu(gClient->GetRoot());
232 menuBar->AddPopup(
"Help", helpMenu,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 2, 0));
235 helpMenu->AddSeparator();
239 menuBar->SetBackgroundColor(backgroundColor);
240 TIter
next(menuBar->GetTitles());
242 while ((title = (TGMenuTitle *)
next()))
243 title->SetTextColor(textColor);
245 menuTopFrame->AddFrame(menuBar,
new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
246 AddFrame(menuTopFrame,
new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
250 AddFrame(
new TGFrame(
this, 1, 1, kChildFrame, 0x503020),
251 new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
253 m_statBar =
new TGStatusBar(
this, this->GetWidth(), 12);
254 AddFrame(
m_statBar,
new TGLayoutHints(kLHintsBottom | kLHintsExpandX));
256 TGHorizontalFrame *fullbar =
new TGHorizontalFrame(
this, this->GetWidth(), 30,0, backgroundColor);
261 TGCompositeFrame* controlFrame =
new TGVerticalFrame(fullbar, 10, 20, 0, backgroundColor);
263 TGCompositeFrame* buttonFrame =
new TGHorizontalFrame(controlFrame, 10, 10, 0, backgroundColor);
265 buttonFrame->SetBackgroundPixmap(imgBtn->GetPixmap());
272 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 4, 3, 10, 0));
280 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
286 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
292 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
301 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
307 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
309 controlFrame->AddFrame(buttonFrame,
new TGLayoutHints(kLHintsTop, 10, 0, 0, 0));
313 TGHorizontalFrame* sliderFrame =
new TGHorizontalFrame(controlFrame, 10, 10, 0, backgroundColor);
315 sliderFrame->SetBackgroundPixmap(imgSld->GetPixmap());
318 m_delaySlider =
new TGHSlider(sliderFrame, 109, kSlider1 | kScaleNo);
319 sliderFrame->AddFrame(
m_delaySlider,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 39, 8, 1, 3));
325 controlFrame->AddFrame(sliderFrame,
new TGLayoutHints(kLHintsTop, 10, 0, 0, 0));
327 fullbar->AddFrame(controlFrame,
new TGLayoutHints(kLHintsLeft, 2, 2, 5, 8));
336 TGVerticalFrame* delayFrame =
new TGVerticalFrame(fullbar, 60, 10, 0, backgroundColor);
338 TGLabel *
label =
new TGLabel(delayFrame,
"Delay");
339 label->SetTextJustify(kTextCenterX);
340 label->SetTextColor(0xb3b3b3);
341 label->SetBackgroundColor(backgroundColor);
342 delayFrame->AddFrame(label,
new TGLayoutHints(kLHintsTop | kLHintsCenterX, 0, 0, 22, 0));
344 TGHorizontalFrame *labFixed =
new TGHorizontalFrame(delayFrame, 70, 20, kFixedSize, backgroundColor);
349 labFixed->AddFrame(
m_delayLabel,
new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 0, 0, 0, 0));
350 delayFrame->AddFrame(labFixed,
new TGLayoutHints(kLHintsLeft, 0, 4, 0, 0));
352 fullbar->AddFrame(delayFrame,
new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
359 Int_t entryHeight = 22;
360 TGVerticalFrame *texts =
new TGVerticalFrame(fullbar, 400, 10, 0, backgroundColor);
364 TGPack *runInfo =
new TGPack(texts, 400, entryHeight, kFixedHeight);
365 runInfo->SetVertical(kFALSE);
366 runInfo->SetUseSplitters(kFALSE);
367 runInfo->SetBackgroundColor(backgroundColor);
369 TGHorizontalFrame *rLeft =
new TGHorizontalFrame(runInfo, 1, entryHeight);
372 rLeft->AddFrame(
m_runEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,8,0,0));
373 runInfo->AddFrameWithWeight(rLeft, 0, 0.28);
375 TGHorizontalFrame *rMid =
new TGHorizontalFrame(runInfo, 1, entryHeight);
378 rMid->AddFrame(
m_lumiEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,8,0,0));
379 runInfo->AddFrameWithWeight(rMid, 0, 0.32);
381 TGHorizontalFrame *rRight =
new TGHorizontalFrame(runInfo, 1, entryHeight);
384 rRight->AddFrame(
m_eventEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,0,0,0));
385 runInfo->AddFrameWithWeight(rRight, 0, 0.4);
387 texts->AddFrame(runInfo,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,4));
392 TGHorizontalFrame *filterFrame =
new TGHorizontalFrame(texts, 400, entryHeight, 0, backgroundColor);
397 m_filterIcons[2] = fClient->GetPicture(
"unchecked_dis_t.xpm");
412 filterFrame->AddFrame(
m_filterEnableBtn,
new TGLayoutHints(kLHintsLeft, 4,0,3,0));
419 filterFrame->AddFrame(
m_filterShowGUIBtn,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 6,7,0,0));
421 texts->AddFrame(filterFrame,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,4,0));
424 fullbar->AddFrame(texts,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 5, 5, 12, 0));
428 TGVerticalFrame *texts2 =
new TGVerticalFrame(fullbar, 200, 44, kFixedSize, backgroundColor);
434 m_timeText->SetBackgroundColor(backgroundColor);
435 texts2->AddFrame(
m_timeText,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,1));
437 fullbar->AddFrame(texts2,
new TGLayoutHints(kLHintsLeft, 5, 5, 16, 5));
443 TGVerticalFrame* parentLogoFrame =
new TGVerticalFrame(fullbar, 70, 53, kFixedSize);
444 parentLogoFrame->SetBackgroundColor(backgroundColor);
445 fullbar->AddFrame(parentLogoFrame,
new TGLayoutHints(kLHintsRight | kLHintsCenterY));
447 TGVerticalFrame* logoFrame =
new TGVerticalFrame(parentLogoFrame, 53, 53, kFixedSize);
449 logoFrame->SetBackgroundPixmap(logoImg->GetPixmap());
450 parentLogoFrame->AddFrame(logoFrame,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 0, 14, 0, 0));
453 TGCompositeFrame *logoFrame =
new TGCompositeFrame(
this, 61, 23, kFixedSize | kHorizontalFrame, backgroundColor);
459 logoFrame->AddFrame(infoBut);
460 infoBut->Connect(
"Clicked()",
"CmsShowMainFrame",
this,
"showFWorksInfo()");
463 menuTopFrame->AddFrame(logoFrame,
new TGLayoutHints(kLHintsRight | kLHintsBottom, 0, 13, 3, 1));
468 AddFrame(fullbar,
new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
491 csArea->SetVertical(kFALSE);
494 csArea->AddFrameWithWeight(cf, 0, 20);
496 TEveCompositeFrameInPack *slot =
new TEveCompositeFrameInPack(csArea, 0, csArea);
497 csArea->AddFrameWithWeight(slot, 0, 80);
498 TEveWindowSlot *ew_slot = TEveWindow::CreateDefaultWindowSlot();
499 ew_slot->PopulateEmptyFrame(slot);
502 AddFrame(csArea,
new TGLayoutHints(kLHintsTop | kLHintsExpandX | kLHintsExpandY, 0, 0, 0, 2));
503 csArea->MapSubwindows();
505 SetWindowName(
"cmsShow");
658 gApplication->Terminate(0);
668 if (event->fType == kGKeyPress) {
670 std::vector<CSGAction*>::const_iterator it_act;
673 for (it_act = alist.begin(); it_act != alist.end(); ++it_act) {
674 keycode = (*it_act)->getKeycode();
675 modcode = (*it_act)->getModcode();
676 if ((event->fCode == (
UInt_t)keycode) &&
677 ((event->fState == (
UInt_t)modcode) ||
678 (event->fState == (
UInt_t)(modcode | kKeyMod2Mask)) ||
679 (event->fState == (
UInt_t)(modcode | kKeyLockMask)) ||
680 (event->fState == (
UInt_t)(modcode | kKeyMod2Mask | kKeyLockMask)))) {
681 (*it_act)->activated.emit();
701 Int_t
width, Int_t height)
706 p->SetBackgroundColor(bgCol);
707 TGCompositeFrame *lframe =
new TGHorizontalFrame(p, width, height, kFixedSize, bgCol);
708 TGLabel*
label =
new TGLabel(lframe, txt);
709 label->SetBackgroundColor(bgCol);
710 label->SetTextColor(txtCol);
711 lframe->AddFrame(label,
new TGLayoutHints(kLHintsRight | kLHintsTop, 0, 4));
712 p->AddFrame(lframe,
new TGLayoutHints(kLHintsLeft, 0, 0, 3, 0));
731 UInt_t ww = 280, hh = 190;
732 int number_of_lines = 0;
735 if (gSystem->Getenv(
"CMSSW_VERSION"))
737 infoText =
"Version ";
738 infoText += gSystem->Getenv(
"CMSSW_VERSION");
740 number_of_lines += 1;
744 TString infoFileName(
"/data/version.txt");
747 ifstream infoFile(infoFileName);
748 while (std::getline(infoFile, line))
751 infoText += line.c_str();
756 infoText +=
"\nIt works or we fix it for free!\nhn-cms-visualization@cern.ch\n";
758 hh = 130 + 2* fontSize*(number_of_lines + 1);
761 m_fworksAbout->SetWMSizeHints(ww, hh, ww, hh, 0, 0);
762 m_fworksAbout->SetBackgroundColor(0x2f2f2f);
764 TGFrame* logoFrame =
new TGFrame(m_fworksAbout, 140, 48, kFixedSize);
766 logoFrame->SetBackgroundPixmap(logoImg->GetPixmap());
767 m_fworksAbout->AddFrame(logoFrame,
new TGLayoutHints(kLHintsTop | kLHintsCenterX, 0, 0, 16, 0));
769 TGLabel*
label =
new TGLabel(m_fworksAbout, infoText);
770 label->SetBackgroundColor(0x2f2f2f);
771 label->SetForegroundColor(0xffffff);
773 FontStruct_t defaultFontStruct = label->GetDefaultFontStruct();
776 TGFontPool *
pool = gClient->GetFontPool();
777 TGFont* defaultFont = pool->GetFont(defaultFontStruct);
778 FontAttributes_t
attributes = defaultFont->GetFontAttributes();
779 label->SetTextFont(pool->GetFont(attributes.fFamily, fontSize,
780 attributes.fWeight, attributes.fSlant));
786 m_fworksAbout->AddFrame(label,
new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 0, 0, 12, 0));
788 TGTextButton* btn =
new TGTextButton(m_fworksAbout,
" OK ");
789 btn->SetBackgroundColor(0x2f2f2f);
790 btn->SetForegroundColor(0xffffff);
791 m_fworksAbout->AddFrame(btn,
new TGLayoutHints(kLHintsBottom | kLHintsCenterX, 0, 0, 0, 12));
792 btn->Connect(
"Clicked()",
"TGMainFrame", m_fworksAbout,
"CloseWindow()");
794 m_fworksAbout->MapSubwindows();
795 m_fworksAbout->Layout();
807 if ((*i)-> getKeycode())
808 f->BindKey(
this, (*i)->getKeycode(), (*i)->getModcode());
816 TGFrameElement* fe = (TGFrameElement*) GetList()->Last();
819 TGFrameElementPack* fep;
820 fep = (TGFrameElementPack*)pack->GetList()->At(1);
823 fep = (TGFrameElementPack*)pack->GetList()->At(3);
824 fep->fWeight = 100 -
x;
826 pack->ResizeExistingFrames();
833 TGFrameElement* fe = (TGFrameElement*)GetList()->Last();
834 TGPack*
pack = (TGPack*)(fe->fFrame);
836 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
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
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)
virtual void CloseWindow()
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)
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
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