7 #include "TGComboBox.h" 24 TGCompositeFrame(win, w, h, opt),
28 TGLayoutHints*
xx =
new TGLayoutHints(kLHintsExpandX);
39 fRemoveFromList->SetToolTipText(
"Remove the selected item from the WatchList");
43 "HandleRemoveFromList()");
61 fDB =
new TGComboBox(fHWboxes);
62 fDCM =
new TGComboBox(fHWboxes);
63 fFEB =
new TGComboBox(fHWboxes);
64 fPIX =
new TGComboBox(fHWboxes);
66 TGLayoutHints* yy =
new TGLayoutHints(kLHintsNormal, 10, 0, 0, 0);
67 TGLayoutHints*
zz =
new TGLayoutHints(kLHintsNormal, 2, 0, 0, 0);
94 fHWboxes->AddFrame(
fDB, zz);
95 fDB->AddEntry(
"ALL", 1);
98 sprintf(entry,
"%.2u",
i);
99 fDB->AddEntry(entry,
i+1);
104 fHWboxes->AddFrame(
fDCM, zz);
105 fDCM->AddEntry(
"ALL", 1);
106 for(
int i = 1;
i <= numDCM; ++
i) {
108 sprintf(entry,
"%.2u",
i);
109 fDCM->AddEntry(entry,
i+1);
111 fDCM->Resize(50, 20);
114 fHWboxes->AddFrame(
fFEB, zz);
115 fFEB->AddEntry(
"ALL", 1);
116 for(
int i = 0;
i < 64; ++
i) {
118 sprintf(entry,
"%.2u",
i);
119 fFEB->AddEntry(entry,
i+2);
121 fFEB->Resize(50, 20);
124 fHWboxes->AddFrame(
fPIX, zz);
125 fPIX->AddEntry(
"ALL", 1);
126 for(
int i = 0;
i < 32; ++
i) {
128 sprintf(entry,
"%.2u",
i);
129 fPIX->AddEntry(entry,
i+2);
131 fPIX->Resize(50, 20);
133 fAddToList =
new TGTextButton(fHWboxes,
"ADD");
134 fAddToList->SetToolTipText(
"Add the chosen hardware to the WatchList");
138 "HandleAddToList()");
142 "Diblock - DCM - FEB - Pixel");
155 TGLayoutHints*
zz =
new TGLayoutHints(kLHintsExpandX);
179 if(
fDB ->GetSelected() < 1 ||
fDCM->GetSelected() < 1 ||
180 fFEB->GetSelected() < 1 ||
fPIX->GetSelected() < 1) {
181 om::cout <<
"You must make a selection in every hardware field!" 190 int DB =
fDB->GetSelected();
191 if(
fDB->GetSelected() == 1) DB = -1;
194 int DCM =
fDCM->GetSelected();
195 if(
fDCM->GetSelected() == 1) DCM = -1;
198 int FEB =
fFEB->GetSelected()-2;
199 int PIX =
fPIX->GetSelected()-2;
204 bool is_root =
s.find(
".root")<
s.length();
205 bool is_shm =
s.find(
".shm")<
s.length();
207 if (is_root && is_shm) abort();
209 om::cout <<
"WatchList disabled (input source is not SHM.)";
233 bool is_root =
s.find(
".root")<
s.length();
234 bool is_shm =
s.find(
".shm")<
s.length();
236 if (is_root && is_shm) abort();
241 TList* selected =
new TList();
244 std::vector<unsigned int> rlist;
246 for(
int i = 0;
i < selected->GetSize(); ++
i) {
252 for(
unsigned int k = 0; k < rlist.size(); ++k) {
253 ipc.RequestRemoveFromWatchList(
fCWLdb [rlist[k]],
fCWLdcm[rlist[k]],
272 bool is_root =
s.find(
".root")<
s.length();
273 bool is_shm =
s.find(
".shm")<
s.length();
275 if (is_root && is_shm) abort();
281 std::vector<int>
dcm;
282 std::vector<int>
feb;
283 std::vector<int> pix;
285 ipc.RequestCurrentWatchList(db, dcm, feb, pix);
299 for(
unsigned int i = 0;
i < db.size(); ++
i) {
303 if(db[
i] < 0) label +=
"XX";
306 sprintf(temp,
"%.2u", db[
i]);
311 if(dcm[
i] < 0) label +=
"XX";
314 sprintf(temp,
"%.2u", dcm[
i]);
319 if(feb[
i] < 0) label +=
"XX";
322 sprintf(temp,
"%.2u", feb[
i]);
327 if(pix[
i] < 0) label +=
"XX";
330 sprintf(temp,
"%.2u", pix[
i]);
364 fDB->AddEntry(
"ALL", 1);
367 sprintf(entry,
"%.2u",
i);
368 fDB->AddEntry(entry,
i+1);
372 fDCM->AddEntry(
"ALL", 1);
373 for(
int i = 1;
i <= numDCM; ++
i) {
375 sprintf(entry,
"%.2u",
i);
376 fDCM->AddEntry(entry,
i+1);
380 fFEB->AddEntry(
"ALL", 1);
381 for(
int i = 0;
i < 64; ++
i) {
383 sprintf(entry,
"%.2u",
i);
384 fFEB->AddEntry(entry,
i+2);
388 fPIX->AddEntry(
"ALL", 1);
389 for(
int i = 0;
i < 32; ++
i) {
391 sprintf(entry,
"%.2u",
i);
392 fPIX->AddEntry(entry,
i+2);
403 if (this->
GetLock()==
false)
return;
409 if((which&kWatchListUpdateID) != 0 ||
TGTextButton * fAddToList
void GUIModelDataIssue(const GUIModelData &m, unsigned int which)
int RequestAddToWatchList(int db, int dcm, int feb, int pix)
static const unsigned int kWatchListUpdateID
Class to manage the shared memory segment.
WatchListBox(const TGWindow *win, unsigned int w, unsigned int h, unsigned int opt)
std::vector< int > fCWLfeb
TGCompositeFrame * fHWboxes
static const int kIPC_CLIENT
std::vector< int > fCWLdcm
void LayoutHardwareFrame()
TGGroupFrame * fCurrentListFrame
Class to read, hold, and deliver histogram data.
static const unsigned int numDB
TGTextButton * fRemoveFromList
static GUIModel & Instance()
void LayoutCurrentListFrame()
std::vector< int > fCWLdb
static const unsigned int kHistogramSourceID
TGGroupFrame * fHardwareFrame
void HandleRemoveFromList()
void SendWatchListUpdate()
std::vector< int > fCWLpix
static const unsigned int kDetectorID
Online Monitoring package header.