6 #include "TGListTree.h" 18 TGCompositeFrame(p, w, h, opt),
23 fCanvas =
new TGCanvas(
this, w, h);
24 TGLayoutHints* hints =
new TGLayoutHints(kLHintsExpandX|kLHintsExpandY,
29 fListTree->Connect(
"DoubleClicked(TGListTreeItem*,Int_t)",
30 "om::HistogramBrowser",
32 "DoubleClicked(TGListTreeItem*,Int_t)");
34 TGLayoutHints*
xx =
new TGLayoutHints(kLHintsExpandX);
35 fRefresh =
new TGTextButton(
this,
"Refresh Histogram List");
36 fRefresh->SetToolTipText(
"Request the current histogram list from the histogram source and refresh the browser.");
38 "om::HistogramBrowser",
57 std::list<std::string> obj;
58 hs.FindAllMatches(
"*",
"*_prev_*",obj);
64 const TGPicture* pic1d = gClient->GetPicture(
"h1_t.xpm");
65 const TGPicture* pic2d = gClient->GetPicture(
"h2_t.xpm");
66 const TGPicture* pic = 0;
68 std::list<std::string>::const_iterator itr(obj.begin());
69 std::list<std::string>::const_iterator
end(obj.end());
70 for (; itr!=
end; ++itr) {
73 if((*itr) ==
"Header")
continue;
82 if (pic==0) pic = pic1d;
85 h =
fListTree->AddItem(p, itr->c_str(), pic, pic);
114 std::vector<TGListTreeItem*> item;
115 TGListTreeItem* i1 =
fListTree->GetFirstItem();
117 for (; i1!=0; i1=i1->GetNextSibling()) item.push_back(i1);
118 for (
unsigned int i=0;
i<item.size(); ++
i) {
141 std::map<std::string,HistoData>::iterator itr (ht.
fTable.begin());
142 std::map<std::string,HistoData>::iterator itrEnd(ht.
fTable.end());
143 std::list<std::string> cats;
144 for (; itr!=itrEnd; ++itr) {
156 std::list<std::string>::iterator iCat(cats.begin());
157 std::list<std::string>::iterator iCatEnd(cats.end());
158 for (; iCat!=iCatEnd; ++iCat) {
167 std::map<std::string, TGListTreeItem*>::iterator itr;
177 TGListTreeItem* lti = 0;
183 if (lti!=0)
return lti;
191 size_t pos = n.find_last_of(
"/");
192 if (pos<n.length()) {
196 c = n.substr(pos+1, n.length());
197 p = n.substr(0, pos);
212 lti =
fListTree->AddItem(parent, c.c_str());
226 if (item->GetFirstChild()==0) {
232 bool iswildcard = (nm.find(
'*')!=nm.npos);
233 if (iswildcard)
return;
251 if (this->
GetLock()==
false)
return;
260 if ( (which&kHistogramSourceID) || (which&kWatchListUpdateID) ) {
268 if ( (which&kCurrentHistogramID) ) {
283 std::map<std::string,TGListTreeItem*>::iterator itr;
294 if (itr->second ==
fListTree->GetSelected()) {
303 if ( (itr->second->IsOpen()==1) && (itr->second->IsActive()==0) ) {
TGListTreeItem * MakeCategory(const char *nm)
std::string fHistoCSVFile
std::map< std::string, TGListTreeItem * > fCategories
std::vector< std::string > fCategory
Categories this hist. belongs to.
static const unsigned int kWatchListUpdateID
static const unsigned int kCurrentHistogramID
static constexpr Double_t nm
std::string fCaption
What does this histogram show?
void DoubleClicked(TGListTreeItem *, Int_t i)
TGListTreeItem * FindCategory(const char *nm)
Class to read, hold, and deliver histogram data.
static GUIModel & Instance()
void GUIModelDataIssue(const GUIModelData &d, unsigned int which)
std::map< std::string, TGListTreeItem * > fHistograms
const char * Current() const
static const unsigned int kHistogramSourceID
void SetCurrentHistogram(const char *h)
CurrentHistogram fCurrentHistogram
Histo_t fType
What kind of histogram is this?
std::map< std::string, HistoData > fTable
Histogram data by C++ name.
HistogramBrowser(const TGWindow *p, unsigned int w, unsigned int h, unsigned int opt)
static HistoTable & Instance(const char *f=0, Detector_t d=kALLDET)
const XML_Char XML_Content * model
const GUIModelData & Data() const
Online Monitoring package header.