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;