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 TGHorizontalFrame* hft =
new TGHorizontalFrame(menuTopFrame);
269 menuTopFrame->AddFrame(hft,
new TGLayoutHints(kLHintsLeft, 73, 0, 3, 0));
270 hft->SetBackgroundColor(backgroundColor);
274 TGLabel *
label =
new TGLabel(hft,
"New palettes functions: ");
275 label->SetTextJustify(kTextCenterX);
276 label->SetTextColor(0xaa4488);
277 label->SetBackgroundColor(backgroundColor);
279 hft->AddFrame(label,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 0, 2, 0));
282 TGTextButton*
b =
new TGTextButton(hft,
" Change color palette ");
283 hft->AddFrame(b,
new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0) );
284 b->SetBackgroundColor(backgroundColor);
285 b->SetForegroundColor(0xffffff);
286 b->SetToolTipText(
"Also available through Common preferences dialog");
287 b->Connect(
"Clicked()",
"CmsShowCommon", ctx->
commonPrefs(),
"loopPalettes()");
290 TGTextButton*
b =
new TGTextButton(hft,
" Permute colors ");
291 hft->AddFrame(b,
new TGLayoutHints(kLHintsLeft, 5, 0, 0, 0) );
292 b->SetBackgroundColor(backgroundColor);
293 b->SetForegroundColor(0xffffff);
294 b->Connect(
"Clicked()",
"CmsShowCommon", ctx->
commonPrefs(),
"permuteColors()");
298 TGTextButton*
b =
new TGTextButton(hft,
" Randomize colors ");
299 hft->AddFrame(b,
new TGLayoutHints(kLHintsLeft, 5, 0, 0, 0) );
300 b->SetBackgroundColor(backgroundColor);
301 b->SetForegroundColor(0xffffff);
302 b->Connect(
"Clicked()",
"CmsShowCommon", ctx->
commonPrefs(),
"randomizeColors()");
307 AddFrame(menuTopFrame,
new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
311 AddFrame(
new TGFrame(
this, 1, 1, kChildFrame, 0x503020),
312 new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
314 m_statBar =
new TGStatusBar(
this, this->GetWidth(), 12);
315 AddFrame(
m_statBar,
new TGLayoutHints(kLHintsBottom | kLHintsExpandX));
317 TGHorizontalFrame *fullbar =
new TGHorizontalFrame(
this, this->GetWidth(), 30,0, backgroundColor);
322 TGCompositeFrame* controlFrame =
new TGVerticalFrame(fullbar, 10, 20, 0, backgroundColor);
324 TGCompositeFrame* buttonFrame =
new TGHorizontalFrame(controlFrame, 10, 10, 0, backgroundColor);
326 buttonFrame->SetBackgroundPixmap(imgBtn->GetPixmap());
333 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 4, 3, 10, 0));
341 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
347 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
353 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
362 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
368 new TGLayoutHints(kLHintsCenterY| kLHintsLeft, 2, 3, 10, 0));
370 controlFrame->AddFrame(buttonFrame,
new TGLayoutHints(kLHintsTop, 10, 0, 0, 0));
374 TGHorizontalFrame* sliderFrame =
new TGHorizontalFrame(controlFrame, 10, 10, 0, backgroundColor);
376 sliderFrame->SetBackgroundPixmap(imgSld->GetPixmap());
379 m_delaySlider =
new TGHSlider(sliderFrame, 109, kSlider1 | kScaleNo);
380 sliderFrame->AddFrame(
m_delaySlider,
new TGLayoutHints(kLHintsTop | kLHintsLeft, 39, 8, 1, 3));
386 controlFrame->AddFrame(sliderFrame,
new TGLayoutHints(kLHintsTop, 10, 0, 0, 0));
388 fullbar->AddFrame(controlFrame,
new TGLayoutHints(kLHintsLeft, 2, 2, 5, 8));
397 TGVerticalFrame* delayFrame =
new TGVerticalFrame(fullbar, 60, 10, 0, backgroundColor);
399 TGLabel *
label =
new TGLabel(delayFrame,
"Delay");
400 label->SetTextJustify(kTextCenterX);
401 label->SetTextColor(0xb3b3b3);
402 label->SetBackgroundColor(backgroundColor);
403 delayFrame->AddFrame(label,
new TGLayoutHints(kLHintsTop | kLHintsCenterX, 0, 0, 22, 0));
405 TGHorizontalFrame *labFixed =
new TGHorizontalFrame(delayFrame, 70, 20, kFixedSize, backgroundColor);
410 labFixed->AddFrame(
m_delayLabel,
new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 0, 0, 0, 0));
411 delayFrame->AddFrame(labFixed,
new TGLayoutHints(kLHintsLeft, 0, 4, 0, 0));
413 fullbar->AddFrame(delayFrame,
new TGLayoutHints(kLHintsLeft, 0, 0, 0, 0));
420 Int_t entryHeight = 22;
421 TGVerticalFrame *texts =
new TGVerticalFrame(fullbar, 400, 10, 0, backgroundColor);
425 TGPack *runInfo =
new TGPack(texts, 400, entryHeight, kFixedHeight);
426 runInfo->SetVertical(kFALSE);
427 runInfo->SetUseSplitters(kFALSE);
428 runInfo->SetBackgroundColor(backgroundColor);
430 TGHorizontalFrame *rLeft =
new TGHorizontalFrame(runInfo, 1, entryHeight);
433 rLeft->AddFrame(
m_runEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,8,0,0));
434 runInfo->AddFrameWithWeight(rLeft, 0, 0.28);
436 TGHorizontalFrame *rMid =
new TGHorizontalFrame(runInfo, 1, entryHeight);
439 rMid->AddFrame(
m_lumiEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,8,0,0));
440 runInfo->AddFrameWithWeight(rMid, 0, 0.32);
442 TGHorizontalFrame *rRight =
new TGHorizontalFrame(runInfo, 1, entryHeight);
445 rRight->AddFrame(
m_eventEntry,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 0,0,0,0));
446 runInfo->AddFrameWithWeight(rRight, 0, 0.4);
448 texts->AddFrame(runInfo,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,4));
453 TGHorizontalFrame *filterFrame =
new TGHorizontalFrame(texts, 400, entryHeight, 0, backgroundColor);
473 filterFrame->AddFrame(
m_filterEnableBtn,
new TGLayoutHints(kLHintsLeft, 4,0,3,0));
480 filterFrame->AddFrame(
m_filterShowGUIBtn,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 6,7,0,0));
482 texts->AddFrame(filterFrame,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,4,0));
485 fullbar->AddFrame(texts,
new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 5, 5, 12, 0));
489 TGVerticalFrame *texts2 =
new TGVerticalFrame(fullbar, 200, 44, kFixedSize, backgroundColor);
495 m_timeText->SetBackgroundColor(backgroundColor);
496 texts2->AddFrame(
m_timeText,
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,0,1));
498 fullbar->AddFrame(texts2,
new TGLayoutHints(kLHintsLeft, 5, 5, 16, 5));
504 TGVerticalFrame* parentLogoFrame =
new TGVerticalFrame(fullbar, 70, 53, kFixedSize);
505 parentLogoFrame->SetBackgroundColor(backgroundColor);
506 fullbar->AddFrame(parentLogoFrame,
new TGLayoutHints(kLHintsRight | kLHintsCenterY));
508 TGVerticalFrame* logoFrame =
new TGVerticalFrame(parentLogoFrame, 53, 53, kFixedSize);
510 logoFrame->SetBackgroundPixmap(logoImg->GetPixmap());
511 parentLogoFrame->AddFrame(logoFrame,
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 0, 14, 0, 0));
514 TGCompositeFrame *logoFrame =
new TGCompositeFrame(
this, 61, 23, kFixedSize | kHorizontalFrame, backgroundColor);
520 logoFrame->AddFrame(infoBut);
521 infoBut->Connect(
"Clicked()",
"CmsShowMainFrame",
this,
"showFWorksInfo()");
524 menuTopFrame->AddFrame(logoFrame,
new TGLayoutHints(kLHintsRight | kLHintsBottom, 0, 13, 3, 1));
529 AddFrame(fullbar,
new TGLayoutHints(kLHintsExpandX, 0, 0, 0, 0));
552 csArea->SetVertical(kFALSE);
555 csArea->AddFrameWithWeight(cf, 0, 20);
557 TEveCompositeFrameInPack *slot =
new TEveCompositeFrameInPack(csArea, 0, csArea);
558 csArea->AddFrameWithWeight(slot, 0, 80);
559 TEveWindowSlot *ew_slot = TEveWindow::CreateDefaultWindowSlot();
560 ew_slot->PopulateEmptyFrame(slot);
563 AddFrame(csArea,
new TGLayoutHints(kLHintsTop | kLHintsExpandX | kLHintsExpandY, 0, 0, 0, 2));
564 csArea->MapSubwindows();
566 SetWindowName(
"cmsShow");
719 gApplication->Terminate(0);
730 if (event->fType == kGKeyPress) {
732 std::vector<CSGAction*>::const_iterator it_act;
735 for (it_act = alist.begin(); it_act != alist.end(); ++it_act) {
736 keycode = (*it_act)->getKeycode();
737 modcode = (*it_act)->getModcode();
738 if ((event->fCode == (UInt_t)keycode) &&
739 ((event->fState == (UInt_t)modcode) ||
740 (event->fState == (UInt_t)(modcode | kKeyMod2Mask)) ||
741 (event->fState == (UInt_t)(modcode | kKeyLockMask)) ||
742 (event->fState == (UInt_t)(modcode | kKeyMod2Mask | kKeyLockMask)))) {
743 (*it_act)->activated.emit();
750 static UInt_t spacecode = gVirtualX->KeysymToKeycode((
int)kKey_Space);
751 if (event->fCode == spacecode && event->fState == 0 ) {
771 UInt_t bgCol, UInt_t txtCol,
772 Int_t
width, Int_t height)
777 p->SetBackgroundColor(bgCol);
778 TGCompositeFrame *lframe =
new TGHorizontalFrame(p, width, height, kFixedSize, bgCol);
779 TGLabel*
label =
new TGLabel(lframe, txt);
780 label->SetBackgroundColor(bgCol);
781 label->SetTextColor(txtCol);
782 lframe->AddFrame(label,
new TGLayoutHints(kLHintsRight | kLHintsTop, 0, 4));
783 p->AddFrame(lframe,
new TGLayoutHints(kLHintsLeft, 0, 0, 3, 0));
788 InfoFrame(
const TGWindow*
p, UInt_t
w, UInt_t
h, UInt_t
opts) : TGMainFrame(p, w, h, opts) {}
802 UInt_t ww = 280, hh = 190;
803 int number_of_lines = 0;
806 if (gSystem->Getenv(
"CMSSW_VERSION"))
808 infoText =
"Version ";
809 infoText += gSystem->Getenv(
"CMSSW_VERSION");
811 number_of_lines += 1;
815 TString infoFileName(
"/data/version.txt");
818 std::ifstream infoFile(infoFileName);
819 while (std::getline(infoFile, line))
822 infoText += line.c_str();
827 infoText +=
"\nIt works or we fix it for free!\nhn-cms-visualization@cern.ch\n";
829 hh = 130 + 2* fontSize*(number_of_lines + 1);
832 m_fworksAbout->SetWMSizeHints(ww, hh, ww, hh, 0, 0);
833 m_fworksAbout->SetBackgroundColor(0x2f2f2f);
835 TGFrame* logoFrame =
new TGFrame(m_fworksAbout, 140, 48, kFixedSize);
837 logoFrame->SetBackgroundPixmap(logoImg->GetPixmap());
838 m_fworksAbout->AddFrame(logoFrame,
new TGLayoutHints(kLHintsTop | kLHintsCenterX, 0, 0, 16, 0));
840 TGLabel*
label =
new TGLabel(m_fworksAbout, infoText);
841 label->SetBackgroundColor(0x2f2f2f);
842 label->SetForegroundColor(0xffffff);
844 FontStruct_t defaultFontStruct = label->GetDefaultFontStruct();
847 TGFontPool *
pool = gClient->GetFontPool();
848 TGFont* defaultFont = pool->GetFont(defaultFontStruct);
849 FontAttributes_t attributes = defaultFont->GetFontAttributes();
850 label->SetTextFont(pool->GetFont(attributes.fFamily, fontSize,
851 attributes.fWeight, attributes.fSlant));
857 m_fworksAbout->AddFrame(label,
new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 0, 0, 12, 0));
859 TGTextButton* btn =
new TGTextButton(m_fworksAbout,
" OK ");
860 btn->SetBackgroundColor(0x2f2f2f);
861 btn->SetForegroundColor(0xffffff);
862 m_fworksAbout->AddFrame(btn,
new TGLayoutHints(kLHintsBottom | kLHintsCenterX, 0, 0, 0, 12));
863 btn->Connect(
"Clicked()",
"TGMainFrame", m_fworksAbout,
"CloseWindow()");
865 m_fworksAbout->MapSubwindows();
866 m_fworksAbout->Layout();
878 if ((*i)-> getKeycode())
879 f->BindKey(
this, (*i)->getKeycode(), (*i)->getModcode());
887 TGFrameElement* fe = (TGFrameElement*) GetList()->Last();
890 TGFrameElementPack* fep;
891 fep = (TGFrameElementPack*)pack->GetList()->At(1);
894 fep = (TGFrameElementPack*)pack->GetList()->At(3);
895 fep->fWeight = 100 -
x;
897 pack->ResizeExistingFrames();
904 TGFrameElement* fe = (TGFrameElement*)GetList()->Last();
905 TGPack*
pack = (TGPack*)(fe->fFrame);
907 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)
static Context * getInstance()
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
CmsShowCommon * commonPrefs() const
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