// @(#)root/sessionviewer:$Id$
// Author: Marek Biskup, Jakub Madejczyk, Bertrand Bellenot 10/08/2005

/*************************************************************************
 * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TSessionDialogs
#define ROOT_TSessionDialogs

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TSessionDialogs                                                      //
//                                                                      //
// This file defines several dialogs that are used by TSessionViewer.   //
// The following dialogs are available: TNewChainDlg and TNewQueryDlg.  //
//                                                                      //
//////////////////////////////////////////////////////////////////////////


#ifndef ROOT_TSessionViewer
#include "TSessionViewer.h"
#endif

class TList;
class TSeqCollection;
class TChain;
class TDSet;
class TGTextEntry;
class TGTextButton;
class TGTextBuffer;
class TGCheckButton;
class TGLabel;
class TGListView;
class TGPicture;
class TGFileContainer;

//////////////////////////////////////////////////////////////////////////
// New Chain Dialog
//////////////////////////////////////////////////////////////////////////

class TNewChainDlg : public TGTransientFrame {

private:
   TGFileContainer      *fContents;       // macro files container
   TGListView           *fListView;       // memory objects list view
   TGLVContainer        *fLVContainer;    // and its container
   TGTextBuffer         *fNameBuf;        // buffer for dataset name
   TGTextEntry          *fName;           // dataset name text entry
   TGTextButton         *fOkButton;       // ok button
   TGTextButton         *fCancelButton;   // cancel button
   TSeqCollection       *fChains;         // collection of datasets
   TObject              *fChain;          // actual TDSet or TChain

public:
   TNewChainDlg(const TGWindow *p=0, const TGWindow *main=0);
   virtual ~TNewChainDlg();

   void         UpdateList();
   virtual void OnDoubleClick(TGLVEntry*,Int_t);
   virtual void DisplayDirectory(const TString &fname);
   void         OnElementClicked(TGLVEntry* entry, Int_t btn);
   void         OnElementSelected(TObject *obj); //*SIGNAL*

   virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
   virtual void CloseWindow();

   ClassDef(TNewChainDlg, 0) // New chain dialog
};

//////////////////////////////////////////////////////////////////////////
// New Query Dialog
//////////////////////////////////////////////////////////////////////////

class TNewQueryDlg : public TGTransientFrame {

private:
   Bool_t             fEditMode;       // kTRUE if used to edit existing query
   Bool_t             fModified;       // kTRUE if settings have changed
   TGCompositeFrame  *fFrmNewQuery;    // top (main) frame
   TGCompositeFrame  *fFrmMore;        // options frame
   TGTextButton      *fBtnMore;        // "more >>" / "less <<" button
   TGTextButton      *fBtnClose;       // close button
   TGTextButton      *fBtnSave;        // save button
   TGTextButton      *fBtnSubmit;      // save & submit button

   TGTextEntry       *fTxtQueryName;   // query name text entry
   TGTextEntry       *fTxtChain;       // chain name text entry
   TGTextEntry       *fTxtSelector;    // selector name text entry
   TGTextEntry       *fTxtOptions;     // options text entry
   TGNumberEntry     *fNumEntries;     // number of entries selector
   TGNumberEntry     *fNumFirstEntry;  // first entry selector
   TGTextEntry       *fTxtEventList;   // event list text entry
   TSessionViewer    *fViewer;         // pointer on main viewer
   TQueryDescription *fQuery;          // query description class
   TObject           *fChain;          // actual TChain

public:
   TNewQueryDlg(TSessionViewer *gui, Int_t Width, Int_t Height,
                   TQueryDescription *query = 0, Bool_t editmode = kFALSE);
   virtual ~TNewQueryDlg();
   void     Build(TSessionViewer *gui);
   void     OnNewQueryMore();
   void     OnBrowseChain();
   void     OnBrowseSelector();
   void     OnBrowseEventList();
   void     OnBtnSaveClicked();
   void     OnBtnCloseClicked();
   void     OnBtnSubmitClicked();
   void     OnElementSelected(TObject *obj);
   void     CloseWindow();
   void     Popup();
   void     SettingsChanged();
   void     UpdateFields(TQueryDescription *desc);
   virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);

   ClassDef(TNewQueryDlg, 0) // New query dialog
};

//////////////////////////////////////////////////////////////////////////
// Upload DataSet Dialog
//////////////////////////////////////////////////////////////////////////

class TUploadDataSetDlg : public TGTransientFrame {

private:
   Bool_t                fUploading;
   TList                *fSkippedFiles;   // List of skipped files
   TGTextEntry          *fDSetName;       // dataset name text entry
   TGTextEntry          *fDestinationURL; // destination URL text entry
   TGTextEntry          *fLocationURL;    // location URL text entry
   TGListView           *fListView;       // dataset files list view
   TGLVContainer        *fLVContainer;    // and its container
   TGTextButton         *fAddButton;      // Add >> button
   TGTextButton         *fBrowseButton;   // Browse... button
   TGTextButton         *fRemoveButton;   // Remove button
   TGTextButton         *fClearButton;    // Clear button
   TGCheckButton        *fOverwriteDSet;  // overwrite DataSet
   TGCheckButton        *fOverwriteFiles; // overwrite All Files
   TGCheckButton        *fAppendFiles;    // append files
   TGTextButton         *fUploadButton;   // Upload button
   TGTextButton         *fCloseDlgButton; // Close Dialog button
   TSessionViewer       *fViewer;         // pointer on main viewer

public:
   TUploadDataSetDlg(TSessionViewer *gui, Int_t w, Int_t h);
   virtual ~TUploadDataSetDlg();

   virtual void   CloseWindow();
   virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
   void           AddFiles(const char *fileName);
   void           AddFiles(TList *fileList);
   void           BrowseFiles();
   void           ClearFiles();
   void           RemoveFile();
   void           UploadDataSet();
   void           OnOverwriteDataset(Bool_t on);
   void           OnOverwriteFiles(Bool_t on);
   void           OnAppendFiles(Bool_t on);

   ClassDef(TUploadDataSetDlg, 0) // New query dialog
};

#endif
 TSessionDialogs.h:1
 TSessionDialogs.h:2
 TSessionDialogs.h:3
 TSessionDialogs.h:4
 TSessionDialogs.h:5
 TSessionDialogs.h:6
 TSessionDialogs.h:7
 TSessionDialogs.h:8
 TSessionDialogs.h:9
 TSessionDialogs.h:10
 TSessionDialogs.h:11
 TSessionDialogs.h:12
 TSessionDialogs.h:13
 TSessionDialogs.h:14
 TSessionDialogs.h:15
 TSessionDialogs.h:16
 TSessionDialogs.h:17
 TSessionDialogs.h:18
 TSessionDialogs.h:19
 TSessionDialogs.h:20
 TSessionDialogs.h:21
 TSessionDialogs.h:22
 TSessionDialogs.h:23
 TSessionDialogs.h:24
 TSessionDialogs.h:25
 TSessionDialogs.h:26
 TSessionDialogs.h:27
 TSessionDialogs.h:28
 TSessionDialogs.h:29
 TSessionDialogs.h:30
 TSessionDialogs.h:31
 TSessionDialogs.h:32
 TSessionDialogs.h:33
 TSessionDialogs.h:34
 TSessionDialogs.h:35
 TSessionDialogs.h:36
 TSessionDialogs.h:37
 TSessionDialogs.h:38
 TSessionDialogs.h:39
 TSessionDialogs.h:40
 TSessionDialogs.h:41
 TSessionDialogs.h:42
 TSessionDialogs.h:43
 TSessionDialogs.h:44
 TSessionDialogs.h:45
 TSessionDialogs.h:46
 TSessionDialogs.h:47
 TSessionDialogs.h:48
 TSessionDialogs.h:49
 TSessionDialogs.h:50
 TSessionDialogs.h:51
 TSessionDialogs.h:52
 TSessionDialogs.h:53
 TSessionDialogs.h:54
 TSessionDialogs.h:55
 TSessionDialogs.h:56
 TSessionDialogs.h:57
 TSessionDialogs.h:58
 TSessionDialogs.h:59
 TSessionDialogs.h:60
 TSessionDialogs.h:61
 TSessionDialogs.h:62
 TSessionDialogs.h:63
 TSessionDialogs.h:64
 TSessionDialogs.h:65
 TSessionDialogs.h:66
 TSessionDialogs.h:67
 TSessionDialogs.h:68
 TSessionDialogs.h:69
 TSessionDialogs.h:70
 TSessionDialogs.h:71
 TSessionDialogs.h:72
 TSessionDialogs.h:73
 TSessionDialogs.h:74
 TSessionDialogs.h:75
 TSessionDialogs.h:76
 TSessionDialogs.h:77
 TSessionDialogs.h:78
 TSessionDialogs.h:79
 TSessionDialogs.h:80
 TSessionDialogs.h:81
 TSessionDialogs.h:82
 TSessionDialogs.h:83
 TSessionDialogs.h:84
 TSessionDialogs.h:85
 TSessionDialogs.h:86
 TSessionDialogs.h:87
 TSessionDialogs.h:88
 TSessionDialogs.h:89
 TSessionDialogs.h:90
 TSessionDialogs.h:91
 TSessionDialogs.h:92
 TSessionDialogs.h:93
 TSessionDialogs.h:94
 TSessionDialogs.h:95
 TSessionDialogs.h:96
 TSessionDialogs.h:97
 TSessionDialogs.h:98
 TSessionDialogs.h:99
 TSessionDialogs.h:100
 TSessionDialogs.h:101
 TSessionDialogs.h:102
 TSessionDialogs.h:103
 TSessionDialogs.h:104
 TSessionDialogs.h:105
 TSessionDialogs.h:106
 TSessionDialogs.h:107
 TSessionDialogs.h:108
 TSessionDialogs.h:109
 TSessionDialogs.h:110
 TSessionDialogs.h:111
 TSessionDialogs.h:112
 TSessionDialogs.h:113
 TSessionDialogs.h:114
 TSessionDialogs.h:115
 TSessionDialogs.h:116
 TSessionDialogs.h:117
 TSessionDialogs.h:118
 TSessionDialogs.h:119
 TSessionDialogs.h:120
 TSessionDialogs.h:121
 TSessionDialogs.h:122
 TSessionDialogs.h:123
 TSessionDialogs.h:124
 TSessionDialogs.h:125
 TSessionDialogs.h:126
 TSessionDialogs.h:127
 TSessionDialogs.h:128
 TSessionDialogs.h:129
 TSessionDialogs.h:130
 TSessionDialogs.h:131
 TSessionDialogs.h:132
 TSessionDialogs.h:133
 TSessionDialogs.h:134
 TSessionDialogs.h:135
 TSessionDialogs.h:136
 TSessionDialogs.h:137
 TSessionDialogs.h:138
 TSessionDialogs.h:139
 TSessionDialogs.h:140
 TSessionDialogs.h:141
 TSessionDialogs.h:142
 TSessionDialogs.h:143
 TSessionDialogs.h:144
 TSessionDialogs.h:145
 TSessionDialogs.h:146
 TSessionDialogs.h:147
 TSessionDialogs.h:148
 TSessionDialogs.h:149
 TSessionDialogs.h:150
 TSessionDialogs.h:151
 TSessionDialogs.h:152
 TSessionDialogs.h:153
 TSessionDialogs.h:154
 TSessionDialogs.h:155
 TSessionDialogs.h:156
 TSessionDialogs.h:157
 TSessionDialogs.h:158
 TSessionDialogs.h:159
 TSessionDialogs.h:160
 TSessionDialogs.h:161
 TSessionDialogs.h:162
 TSessionDialogs.h:163
 TSessionDialogs.h:164
 TSessionDialogs.h:165
 TSessionDialogs.h:166
 TSessionDialogs.h:167
 TSessionDialogs.h:168