21 #ifndef ROOT_TSessionViewer
22 #define ROOT_TSessionViewer
67 class TRootEmbeddedCanvas;
76 class TSessionLogView;
90 class TQueryDescription :
public TObject {
93 enum ESessionQueryStatus {
94 kSessionQueryAborted = 0,
95 kSessionQuerySubmitted,
98 kSessionQueryCompleted,
99 kSessionQueryFinalized,
100 kSessionQueryCreated,
101 kSessionQueryFromProof
104 ESessionQueryStatus fStatus;
107 TString fSelectorString;
108 TString fTDSetString;
113 Long64_t fFirstEntry;
117 TQueryResult *fResult;
119 const char *GetName()
const {
return fQueryName; }
121 ClassDef(TQueryDescription, 1)
125 enum EMenuIdentification {
128 kMenuRemoveFromFeedback
135 class TSessionDescription :
public TObject {
152 TQueryDescription *fActQuery;
154 TProofMgr *fProofMgr;
157 const char *GetName()
const {
return fName; }
159 ClassDef(TSessionDescription, 1)
166 class TPackageDescription :
public TObject {
175 const char *GetName()
const {
return fName; }
177 ClassDef(TPackageDescription, 1)
188 class TSessionServerFrame :
public TGCompositeFrame {
191 TGCompositeFrame *fFrmNewServer;
192 TGTextEntry *fTxtName;
193 TGTextEntry *fTxtAddress;
194 TGNumberEntry *fNumPort;
195 TGNumberEntry *fLogLevel;
196 TGTextEntry *fTxtConfig;
197 TGTextEntry *fTxtUsrName;
198 TGCheckButton *fSync;
199 TSessionViewer *fViewer;
200 TGTextButton *fBtnAdd;
201 TGTextButton *fBtnConnect;
204 TSessionServerFrame(TGWindow *parent, Int_t w, Int_t h);
205 virtual ~TSessionServerFrame();
207 void Build(TSessionViewer *gui);
209 const char *GetName()
const {
return fTxtName->GetText(); }
210 const char *GetAddress()
const {
return fTxtAddress->GetText(); }
211 Int_t GetPortNumber()
const {
return fNumPort->GetIntNumber(); }
212 Int_t GetLogLevel()
const {
return fLogLevel->GetIntNumber(); }
213 const char *GetConfigText()
const {
return fTxtConfig->GetText(); }
214 const char *GetUserName()
const {
return fTxtUsrName->GetText(); }
215 Bool_t IsSync()
const {
return (Bool_t)(fSync->GetState() == kButtonDown); }
217 void SetAddEnabled(Bool_t on = kTRUE) {
218 on == kTRUE ? ShowFrame(fBtnAdd) : HideFrame(fBtnAdd); }
219 void SetConnectEnabled(Bool_t on = kTRUE) {
220 on == kTRUE ? ShowFrame(fBtnConnect) : HideFrame(fBtnConnect); }
221 void SetName(
const char *str) { fTxtName->SetText(str); }
222 void SetAddress(
const char *str) { fTxtAddress->SetText(str); }
223 void SetPortNumber(Int_t port) { fNumPort->SetIntNumber(port); }
224 void SetLogLevel(Int_t log) { fLogLevel->SetIntNumber(log); }
225 void SetConfigText(
const char *str) { fTxtConfig->SetText(str); }
226 void SetUserName(
const char *str) { fTxtUsrName->SetText(str); }
227 void SetSync(Bool_t sync) {
228 fSync->SetState(sync ? kButtonDown : kButtonUp); }
230 void SettingsChanged();
232 void OnBtnConnectClicked();
233 void OnBtnNewServerClicked();
234 void OnBtnDeleteClicked();
235 void OnBtnAddClicked();
236 void OnConfigFileClicked();
237 void Update(TSessionDescription* desc);
238 virtual Bool_t HandleExpose(Event_t *event);
239 virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
241 ClassDef(TSessionServerFrame, 0)
254 class TSessionFrame :
public TGCompositeFrame {
259 TGCompositeFrame *fFA, *fFB, *fFC;
260 TGCompositeFrame *fFD, *fFE;
261 TGTextEntry *fCommandTxt;
262 TGTextBuffer *fCommandBuf;
263 TGTextView *fInfoTextView;
264 TGCheckButton *fClearCheck;
265 TGTextButton *fBtnShowLog;
266 TGTextButton *fBtnNewQuery;
267 TGTextButton *fBtnGetQueries;
269 TGListBox *fLBPackages;
270 TGTextButton *fBtnAdd;
271 TGTextButton *fBtnRemove;
272 TGTextButton *fBtnUp;
273 TGTextButton *fBtnDown;
274 TGTextButton *fBtnShow;
275 TGTextButton *fBtnShowEnabled;
276 TGCheckButton *fChkMulti;
277 TGCheckButton *fChkEnable;
278 TGTextButton *fBtnUpload;
279 TGTextButton *fBtnEnable;
280 TGTextButton *fBtnClear;
281 TGTextButton *fBtnDisable;
284 TGListTree *fDataSetTree;
285 TGTextButton *fBtnUploadDSet;
286 TGTextButton *fBtnRemoveDSet;
287 TGTextButton *fBtnVerifyDSet;
288 TGTextButton *fBtnRefresh;
290 TGTextEntry *fTxtParallel;
291 TGNumberEntry *fLogLevel;
292 TGTextButton *fApplyLogLevel;
293 TGTextButton *fApplyParallel;
295 TSessionViewer *fViewer;
296 TGLabel *fInfoLine[19];
299 TSessionFrame(TGWindow* parent, Int_t w, Int_t h);
300 virtual ~TSessionFrame();
302 void Build(TSessionViewer *gui);
303 void CheckAutoEnPack(Bool_t checked = kTRUE) {
304 fChkEnable->SetState(checked ? kButtonDown : kButtonUp); }
305 Int_t GetLogLevel()
const {
return fLogLevel->GetIntNumber(); }
306 void SetLogLevel(Int_t log) { fLogLevel->SetIntNumber(log); }
307 TGTab *GetTab()
const {
return fTab; }
310 void OnApplyLogLevel();
311 void OnApplyParallel();
312 void OnBtnAddClicked();
313 void OnBtnRemoveClicked();
314 void OnBtnUpClicked();
315 void OnBtnDownClicked();
316 void OnBtnShowLogClicked();
317 void OnBtnNewQueryClicked();
318 void OnBtnGetQueriesClicked();
319 void OnBtnDisconnectClicked();
320 void OnCommandLine();
321 void OnUploadPackages();
322 void OnEnablePackages();
323 void OnDisablePackages();
324 void OnClearPackages();
325 void OnMultipleSelection(Bool_t on);
326 void OnStartupEnable(Bool_t on);
328 void SetLocal(Bool_t local = kTRUE);
329 void ShutdownSession();
330 void UpdatePackages();
331 void OnBtnUploadDSet();
332 void OnBtnRemoveDSet();
333 void OnBtnVerifyDSet();
334 void UpdateListOfDataSets();
336 ClassDef(TSessionFrame, 0)
343 class TEditQueryFrame :
public TGCompositeFrame {
346 TGCompositeFrame *fFrmMore;
347 TGTextButton *fBtnMore;
349 TGTextEntry *fTxtQueryName;
350 TGTextEntry *fTxtChain;
351 TGTextEntry *fTxtSelector;
352 TGTextEntry *fTxtOptions;
353 TGNumberEntry *fNumEntries;
354 TGNumberEntry *fNumFirstEntry;
355 TGTextEntry *fTxtParFile;
356 TGTextEntry *fTxtEventList;
357 TSessionViewer *fViewer;
358 TQueryDescription *fQuery;
362 TEditQueryFrame(TGWindow* p, Int_t w, Int_t h);
363 virtual ~TEditQueryFrame();
364 void Build(TSessionViewer *gui);
365 void OnNewQueryMore();
366 void OnBrowseChain();
367 void OnBrowseSelector();
368 void OnBrowseEventList();
370 void OnElementSelected(TObject *obj);
371 void SettingsChanged();
372 void UpdateFields(TQueryDescription *desc);
374 ClassDef(TEditQueryFrame, 0)
385 class TSessionQueryFrame :
public TGCompositeFrame {
389 enum EQueryStatus { kRunning = 0, kDone, kStopped, kAborted };
391 TGTextButton *fBtnSubmit;
392 TGTextButton *fBtnFinalize;
393 TGTextButton *fBtnStop;
394 TGTextButton *fBtnAbort;
395 TGTextButton *fBtnShowLog;
396 TGTextButton *fBtnRetrieve;
397 TGTextButton *fBtnSave;
398 TGTextView *fInfoTextView;
405 Long64_t fPrevProcessed;
410 EQueryStatus fStatus;
412 TGCompositeFrame *fFA, *fFB, *fFC;
413 TEditQueryFrame *fFD;
414 TGHProgressBar *frmProg;
415 TRootEmbeddedCanvas *fECanvas;
416 TCanvas *fStatsCanvas;
417 TSessionViewer *fViewer;
418 TQueryDescription *fDesc;
421 TSessionQueryFrame(TGWindow* parent, Int_t w, Int_t h);
422 virtual ~TSessionQueryFrame();
424 void Build(TSessionViewer *gui);
426 TCanvas *GetStatsCanvas()
const {
return fStatsCanvas; }
427 TEditQueryFrame *GetQueryEditFrame()
const {
return fFD; }
428 TGTab *GetTab()
const {
return fTab; }
430 void Feedback(TList *objs);
431 void Modified(Bool_t mod = kTRUE);
432 void Progress(Long64_t total, Long64_t processed);
433 void Progress(Long64_t total, Long64_t processed, Long64_t bytesread,
434 Float_t initTime, Float_t procTime,
435 Float_t evtrti, Float_t mbrti, Int_t actw, Int_t tses, Float_t eses);
436 void Progress(Long64_t total, Long64_t processed, Long64_t bytesread,
437 Float_t initTime, Float_t procTime,
438 Float_t evtrti, Float_t mbrti) {
439 Progress(total, processed, bytesread, initTime, procTime,
440 evtrti, mbrti, -1, -1, -1.); }
441 void ProgressLocal(Long64_t total, Long64_t processed);
442 void IndicateStop(Bool_t aborted);
443 void ResetProgressDialog(
const char *selec, Int_t files, Long64_t first, Long64_t entries);
447 void OnBtnFinalize();
451 void OnBtnRetrieve();
453 void UpdateButtons(TQueryDescription *desc);
454 void UpdateHistos(TList *objs);
456 ClassDef(TSessionQueryFrame, 0)
467 class TSessionOutputFrame :
public TGCompositeFrame {
470 TGLVEntry *fEntryTmp;
471 TGLVContainer *fLVContainer;
472 TSessionViewer *fViewer;
475 TSessionOutputFrame(TGWindow* parent, Int_t w, Int_t h);
476 virtual ~TSessionOutputFrame();
478 void AddObject(TObject *obj);
479 void Build(TSessionViewer *gui);
480 TGLVContainer *GetLVContainer() {
return fLVContainer; }
481 void OnElementClicked(TGLVEntry* entry, Int_t btn, Int_t x, Int_t y);
482 void OnElementDblClicked(TGLVEntry *entry ,Int_t btn, Int_t x, Int_t y);
483 void RemoveAll() { fLVContainer->RemoveAll(); }
485 ClassDef(TSessionOutputFrame, 0)
496 class TSessionInputFrame :
public TGCompositeFrame {
499 TSessionViewer *fViewer;
500 TGLVContainer *fLVContainer;
503 TSessionInputFrame(TGWindow* parent, Int_t w, Int_t h);
504 virtual ~TSessionInputFrame();
506 void AddObject(TObject *obj);
507 void Build(TSessionViewer *gui);
508 void RemoveAll() { fLVContainer->RemoveAll(); }
509 TGLVContainer *GetLVContainer() {
return fLVContainer; }
511 ClassDef(TSessionInputFrame, 0)
523 class TSessionViewer :
public TGMainFrame {
526 time_t fStart, fElapsed;
529 TGHorizontalFrame *fHf;
530 TGVerticalFrame *fV1;
531 TGVerticalFrame *fV2;
532 TSessionServerFrame *fServerFrame;
533 TSessionFrame *fSessionFrame;
534 TSessionQueryFrame *fQueryFrame;
535 TSessionOutputFrame *fOutputFrame;
536 TSessionInputFrame *fInputFrame;
537 TSessionLogView *fLogWindow;
538 TSessionDescription *fActDesc;
540 const TGPicture *fLocal;
541 const TGPicture *fProofCon;
542 const TGPicture *fProofDiscon;
543 const TGPicture *fQueryCon;
544 const TGPicture *fQueryDiscon;
545 const TGPicture *fBaseIcon;
550 TGPopupMenu *fFileMenu;
551 TGPopupMenu *fSessionMenu;
552 TGPopupMenu *fQueryMenu;
553 TGPopupMenu *fOptionsMenu;
554 TGPopupMenu *fCascadeMenu;
555 TGPopupMenu *fHelpMenu;
557 TGPopupMenu *fPopupSrv;
558 TGPopupMenu *fPopupQry;
559 TContextMenu *fContextMenu;
561 TGHProgressBar *fConnectProg;
563 TGListTree *fSessionHierarchy;
564 TGListTreeItem *fSessionItem;
565 TGStatusBar *fStatusBar;
566 TGPicture *fRightIconPicture;
569 UserGroup_t *fUserGroup;
576 TSessionViewer(
const char *title =
"ROOT Session Viewer", UInt_t w = 550, UInt_t h = 320);
577 TSessionViewer(
const char *title, Int_t x, Int_t y, UInt_t w, UInt_t h);
578 virtual ~TSessionViewer();
579 virtual void Build();
580 virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t);
582 TSessionServerFrame *GetServerFrame()
const {
return fServerFrame; }
583 TSessionFrame *GetSessionFrame()
const {
return fSessionFrame; }
584 TSessionQueryFrame *GetQueryFrame()
const {
return fQueryFrame; }
585 TSessionOutputFrame *GetOutputFrame()
const {
return fOutputFrame; }
586 TSessionInputFrame *GetInputFrame()
const {
return fInputFrame; }
587 TSessionDescription *GetActDesc()
const {
return fActDesc; }
588 TList *GetSessions()
const {
return fSessions; }
589 TGListTree *GetSessionHierarchy()
const {
return fSessionHierarchy; }
590 TGListTreeItem *GetSessionItem()
const {
return fSessionItem; }
591 const TGPicture *GetLocalPict()
const {
return fLocal; }
592 const TGPicture *GetProofConPict()
const {
return fProofCon; }
593 const TGPicture *GetProofDisconPict()
const {
return fProofDiscon; }
594 const TGPicture *GetQueryConPict()
const {
return fQueryCon; }
595 const TGPicture *GetQueryDisconPict()
const {
return fQueryDiscon; }
596 const TGPicture *GetBasePict()
const {
return fBaseIcon; }
597 TGPopupMenu *GetPopupSrv()
const {
return fPopupSrv; }
598 TGPopupMenu *GetPopupQry()
const {
return fPopupQry; }
599 TContextMenu *GetContextMenu()
const {
return fContextMenu; }
600 TGStatusBar *GetStatusBar()
const {
return fStatusBar; }
601 TGHProgressBar *GetConnectProg()
const {
return fConnectProg; }
602 TGPopupMenu *GetCascadeMenu()
const {
return fCascadeMenu; }
603 TGPopupMenu *GetOptionsMenu()
const {
return fOptionsMenu; }
605 void ChangeRightLogo(
const char *name);
606 void CleanupSession();
611 Bool_t HandleTimer(TTimer *);
612 Bool_t IsBusy()
const {
return fBusy; }
613 Bool_t IsAutoSave()
const {
return fAutoSave; }
614 void LogMessage(
const char *msg, Bool_t all);
615 void MyHandleMenu(Int_t);
616 void OnCascadeMenu();
617 void OnListTreeClicked(TGListTreeItem *entry, Int_t btn, Int_t x, Int_t y);
618 void OnListTreeDoubleClicked(TGListTreeItem *entry, Int_t btn);
619 void QueryResultReady(
char *query);
621 void ReadConfiguration(
const char *filename = 0);
623 void UpdateListOfProofs();
624 void UpdateListOfSessions();
625 void UpdateListOfPackages();
626 void WriteConfiguration(
const char *filename = 0);
627 void SetBusy(Bool_t busy = kTRUE) { fBusy = busy; }
628 void SetChangePic(Bool_t change) { fChangePic = change;}
629 void SetLogWindow(TSessionLogView *log) { fLogWindow = log; }
630 void ShowEnabledPackages();
632 void ShowInfo(
const char *txt);
633 void ShowLog(
const char *queryref);
635 void StartupMessage(
char *msg, Bool_t stat, Int_t curr, Int_t total);
639 ClassDef(TSessionViewer, 0)
642 R__EXTERN TSessionViewer *gSessionViewer;