48 ClassImp(TNewChainDlg);
 
   49 ClassImp(TNewQueryDlg);
 
   59 static const char *gDatasetTypes[] = {
 
   60    "ROOT files",    
"*.root",
 
   65 static const char *gFileTypes[] = {
 
   66    "C files",       
"*.[C|c]*",
 
   67    "ROOT files",    
"*.root",
 
   81 TNewChainDlg::TNewChainDlg(
const TGWindow *p, 
const TGWindow *main) :
 
   82    TGTransientFrame(p, main, 350, 300, kVerticalFrame)
 
   85    if (!p || !main) 
return;
 
   86    SetCleanup(kDeepCleanup);
 
   87    fClient->GetColorByName(
"#F0FFF0", backgnd);
 
   88    AddFrame(
new TGLabel(
this, 
new TGHotString(
"List of Chains in Memory :")),
 
   89             new TGLayoutHints(kLHintsLeft, 5, 5, 7, 2) );
 
   92    fListView = 
new TGListView(
this, 300, 100);
 
   93    fLVContainer = 
new TGLVContainer(fListView, kSunkenFrame, GetWhitePixel());
 
   94    fLVContainer->Associate(fListView);
 
   95    fLVContainer->SetViewMode(kLVSmallIcons);
 
   96    fLVContainer->SetCleanup(kDeepCleanup);
 
   97    AddFrame(fListView, 
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 4, 4, 4, 4));
 
   99    fListView->Connect(
"Clicked(TGLVEntry*, Int_t)", 
"TNewChainDlg",
 
  100             this, 
"OnElementClicked(TGLVEntry* ,Int_t)");
 
  103    TGCompositeFrame* frmSel = 
new TGHorizontalFrame(
this, 300, 100);
 
  104    frmSel->SetCleanup(kDeepCleanup);
 
  105    frmSel->AddFrame(
new TGLabel(frmSel, 
new TGHotString(
"Selected chain :")),
 
  106             new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5, 5, 5, 5) );
 
  107    fNameBuf = 
new TGTextBuffer(100);
 
  108    fName = 
new TGTextEntry(frmSel, fNameBuf);
 
  109    fName->Resize(200, fName->GetDefaultHeight());
 
  110    fName->Associate(
this);
 
  111    fName->SetEnabled(kFALSE);
 
  112    fName->ChangeBackground(backgnd);
 
  113    frmSel->AddFrame(fName, 
new TGLayoutHints(kLHintsLeft | kLHintsCenterY | kLHintsExpandX, 5, 5, 5, 5));
 
  114    AddFrame(frmSel, 
new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
 
  116    AddFrame(
new TGLabel(
this, 
"Double-click on the macro to be executed to create a new Chain:"),
 
  117             new TGLayoutHints(kLHintsCenterX, 5, 5, 5, 2));
 
  121    TGListView* lv = 
new TGListView(
this, 300, 100);
 
  122    AddFrame(lv,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 5, 5, 2, 5));
 
  125    gClient->GetColorByName(
"white",white);
 
  126    fContents = 
new TGFileContainer(lv, kSunkenFrame, white);
 
  127    fContents->SetCleanup(kDeepCleanup);
 
  128    fContents->SetFilter(
"*.[C|c]*");
 
  129    fContents->SetViewMode(kLVSmallIcons);
 
  130    fContents->Associate(
this);
 
  131    fContents->SetDefaultHeaders();
 
  132    fContents->DisplayDirectory();
 
  133    fContents->AddFile(
"..");        
 
  135    fContents->StopRefreshTimer();   
 
  140    gVirtualX->TranslateCoordinates( main->GetId(),
 
  141                                     fClient->GetDefaultRoot()->GetId(),
 
  142                                     0, 0, ax, ay, wdummy);
 
  143    Move(ax + 200, ay + 35);
 
  145    TGCompositeFrame *tmp;
 
  146    AddFrame(tmp = 
new TGCompositeFrame(
this, 140, 20, kHorizontalFrame),
 
  147             new TGLayoutHints(kLHintsLeft | kLHintsExpandX));
 
  148    tmp->SetCleanup(kDeepCleanup);
 
  150    tmp->AddFrame(fOkButton = 
new TGTextButton(tmp, 
"&Ok", 0),
 
  151             new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
 
  152    tmp->AddFrame(fCancelButton = 
new TGTextButton(tmp, 
"&Cancel", 1),
 
  153             new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
 
  154    fOkButton->Associate(
this);
 
  155    fCancelButton->Associate(
this);
 
  156    fOkButton->SetEnabled(kFALSE);
 
  158    SetWindowName(
"Chain Selection Dialog");
 
  161    Resize(GetDefaultSize());
 
  169 TNewChainDlg::~TNewChainDlg()
 
  171    if (IsZombie()) 
return;
 
  180 void TNewChainDlg::OnElementSelected(TObject *obj)
 
  182    if (obj && (obj->IsA() == TChain::Class() ||
 
  183        obj->IsA() == TDSet::Class())) {
 
  184       Emit(
"OnElementSelected(TObject *)", (Long_t)obj);
 
  192 void TNewChainDlg::OnElementClicked(TGLVEntry *entry, Int_t)
 
  194    fChain = (TObject *)entry->GetUserData();
 
  195    if (fChain->IsA() == TChain::Class()) {
 
  196       TString s = TString::Format(
"%s : %s" , ((TChain *)fChain)->GetTitle(),
 
  197                                   ((TChain *)fChain)->GetName());
 
  200    else if (fChain->IsA() == TDSet::Class()) {
 
  201       TString s = TString::Format(
"%s : %s" , ((TDSet *)fChain)->GetName(),
 
  202                                   ((TDSet *)fChain)->GetObjName());
 
  205    fOkButton->SetEnabled(kTRUE);
 
  211 void TNewChainDlg::UpdateList()
 
  215    fChains = gROOT->GetListOfDataSets();
 
  216    fLVContainer->RemoveAll();
 
  217    if (!fChains) 
return;
 
  221    while ((obj = (TObject *)next())) {
 
  223       if (obj->IsA() == TChain::Class()) {
 
  224          const char *title = ((TChain *)obj)->GetTitle();
 
  226             ((TChain *)obj)->SetTitle(
"TChain");
 
  227          item = 
new TGLVEntry(fLVContainer, ((TChain *)obj)->GetName(),
 
  228                               ((TChain *)obj)->GetTitle());
 
  230       else if (obj->IsA() == TDSet::Class()) {
 
  231          item = 
new TGLVEntry(fLVContainer, ((TDSet *)obj)->GetObjName(),
 
  232                               ((TDSet *)obj)->GetName());
 
  235          item->SetUserData(obj);
 
  236          fLVContainer->AddItem(item);
 
  239    fClient->NeedRedraw(fLVContainer);
 
  246 void TNewChainDlg::DisplayDirectory(
const TString &fname)
 
  248    fContents->SetDefaultHeaders();
 
  249    gSystem->ChangeDirectory(fname);
 
  250    fContents->ChangeDirectory(fname);
 
  251    fContents->DisplayDirectory();
 
  252    fContents->AddFile(
"..");  
 
  259 void TNewChainDlg::OnDoubleClick(TGLVEntry* f, Int_t btn)
 
  261    if (btn!=kButton1) 
return;
 
  262    gVirtualX->SetCursor(fContents->GetId(),gVirtualX->CreateCursor(kWatch));
 
  264    TString name(f->GetTitle());
 
  267    if (name.Contains(
".C")) {
 
  269       TString command = TString::Format(
".x %s/%s",
 
  270                         gSystem->UnixPathName(fContents->GetDirectory()),
 
  273       gApplication->ProcessLine(command.Data());
 
  277       DisplayDirectory(name);
 
  279    gVirtualX->SetCursor(fContents->GetId(),gVirtualX->CreateCursor(kPointer));
 
  285 Bool_t TNewChainDlg::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
 
  287    switch (GET_MSG(msg)) {
 
  289          switch (GET_SUBMSG(msg)) {
 
  295                      fOkButton->SetEnabled(kFALSE);
 
  296                      OnElementSelected(fChain);
 
  313          switch (GET_SUBMSG(msg)) {
 
  314             case kCT_ITEMDBLCLICK:
 
  315                if (parm1==kButton1) {
 
  316                   TGLVEntry *lv_entry = (TGLVEntry *)fContents->GetLastActive();
 
  317                   if (lv_entry) OnDoubleClick(lv_entry, parm1);
 
  331 void TNewChainDlg::CloseWindow()
 
  345 TNewQueryDlg::TNewQueryDlg(TSessionViewer *gui, Int_t Width, Int_t Height,
 
  346          TQueryDescription *query, Bool_t editmode) :
 
  347          TGTransientFrame(gClient->GetRoot(), gui, Width, Height)
 
  351    fEditMode = editmode;
 
  355    if (fQuery && fQuery->fChain) {
 
  356       fChain = fQuery->fChain;
 
  360    if (editmode && query)
 
  362    else if (!editmode) {
 
  363       TQueryDescription *fquery;
 
  364       fquery = (TQueryDescription *)fViewer->GetActDesc()->fQueries->Last();
 
  366          fTxtQueryName->SetText(fquery->fQueryName);
 
  368          fTxtQueryName->SetText(
"Query 1");
 
  371    Resize(Width, Height);
 
  373    fFrmNewQuery->HideFrame(fFrmMore);
 
  374    fBtnMore->SetText(
" More >> ");
 
  375    SetWMSizeHints(Width+5, Height+25, Width+5, Height+25, 1, 1);
 
  376    ChangeOptions(GetOptions() | kFixedSize);
 
  378    SetWindowName(
"Query Dialog");
 
  380    gVirtualX->TranslateCoordinates( fViewer->GetId(),
 
  381                                     fClient->GetDefaultRoot()->GetId(),
 
  382                                     0, 0, ax, ay, wdummy);
 
  383    Move(ax + fViewer->GetWidth()/2, ay + 35);
 
  389 TNewQueryDlg::~TNewQueryDlg()
 
  391    if (IsZombie()) 
return;
 
  398 void TNewQueryDlg::Build(TSessionViewer *gui)
 
  402    SetLayoutManager(
new TGVerticalLayout(
this));
 
  403    SetCleanup(kDeepCleanup);
 
  405    fFrmNewQuery = 
new TGGroupFrame(
this, 
"New Query");
 
  406    fFrmNewQuery->SetCleanup(kDeepCleanup);
 
  408    AddFrame(fFrmNewQuery, 
new TGLayoutHints(kLHintsExpandX |
 
  409          kLHintsExpandY, 2, 2, 2, 2));
 
  410    fFrmNewQuery->SetLayoutManager(
new TGTableLayout(fFrmNewQuery, 6, 5));
 
  413    fFrmNewQuery->AddFrame(
new TGLabel(fFrmNewQuery, 
"Query Name :"),
 
  414          new TGTableLayoutHints(0, 1, 0, 1, kLHintsCenterY, 0, 5, 4, 0));
 
  415    fFrmNewQuery->AddFrame(fTxtQueryName = 
new TGTextEntry(fFrmNewQuery,
 
  416          (
const char *)0, 1), 
new TGTableLayoutHints(1, 2, 0, 1,
 
  417          kLHintsCenterY, 5, 5, 4, 0));
 
  420    fFrmNewQuery->AddFrame(
new TGLabel(fFrmNewQuery, 
"TChain :"),
 
  421          new TGTableLayoutHints(0, 1, 1, 2, kLHintsCenterY, 0, 5, 4, 0));
 
  422    fFrmNewQuery->AddFrame(fTxtChain = 
new TGTextEntry(fFrmNewQuery,
 
  423          (
const char *)0, 2), 
new TGTableLayoutHints(1, 2, 1, 2,
 
  424          kLHintsCenterY, 5, 5, 4, 0));
 
  425    fTxtChain->SetToolTipText(
"Specify TChain or TDSet from memory or file");
 
  426    fTxtChain->SetEnabled(kFALSE);
 
  428    fFrmNewQuery->AddFrame(btnTmp = 
new TGTextButton(fFrmNewQuery, 
"Browse..."),
 
  429          new TGTableLayoutHints(2, 3, 1, 2, kLHintsCenterY, 5, 0, 4, 8));
 
  430    btnTmp->Connect(
"Clicked()", 
"TNewQueryDlg", 
this, 
"OnBrowseChain()");
 
  433    fFrmNewQuery->AddFrame(
new TGLabel(fFrmNewQuery, 
"Selector :"),
 
  434          new TGTableLayoutHints(0, 1, 2, 3, kLHintsCenterY, 0, 5, 0, 0));
 
  435    fFrmNewQuery->AddFrame(fTxtSelector = 
new TGTextEntry(fFrmNewQuery,
 
  436          (
const char *)0, 3), 
new TGTableLayoutHints(1, 2, 2, 3,
 
  437          kLHintsCenterY, 5, 5, 0, 0));
 
  439    fFrmNewQuery->AddFrame(btnTmp = 
new TGTextButton(fFrmNewQuery, 
"Browse..."),
 
  440          new TGTableLayoutHints(2, 3, 2, 3, kLHintsCenterY, 5, 0, 0, 8));
 
  441    btnTmp->Connect(
"Clicked()", 
"TNewQueryDlg", 
this, 
"OnBrowseSelector()");
 
  444    fFrmNewQuery->AddFrame(fBtnMore = 
new TGTextButton(fFrmNewQuery, 
" Less << "),
 
  445          new TGTableLayoutHints(2, 3, 4, 5, kLHintsCenterY, 5, 5, 4, 0));
 
  446    fBtnMore->Connect(
"Clicked()", 
"TNewQueryDlg", 
this, 
"OnNewQueryMore()");
 
  449    fFrmMore = 
new TGCompositeFrame(fFrmNewQuery, 200, 200);
 
  450    fFrmMore->SetCleanup(kDeepCleanup);
 
  452    fFrmNewQuery->AddFrame(fFrmMore, 
new TGTableLayoutHints(0, 3, 5, 6,
 
  453          kLHintsExpandX | kLHintsExpandY));
 
  454    fFrmMore->SetLayoutManager(
new TGTableLayout(fFrmMore, 4, 3));
 
  457    fFrmMore->AddFrame(
new TGLabel(fFrmMore, 
"Options :"),
 
  458          new TGTableLayoutHints(0, 1, 0, 1, kLHintsCenterY, 0, 5, 0, 0));
 
  459    fFrmMore->AddFrame(fTxtOptions = 
new TGTextEntry(fFrmMore,
 
  460          (
const char *)0, 4), 
new TGTableLayoutHints(1, 2, 0, 1, 0, 22,
 
  462    fTxtOptions->SetText(
"ASYN");
 
  465    fFrmMore->AddFrame(
new TGLabel(fFrmMore, 
"Nb Entries :"),
 
  466          new TGTableLayoutHints(0, 1, 1, 2, kLHintsCenterY, 0, 5, 0, 0));
 
  467    fFrmMore->AddFrame(fNumEntries = 
new TGNumberEntry(fFrmMore, 0, 5, -1,
 
  468          TGNumberFormat::kNESInteger, TGNumberFormat::kNEAAnyNumber,
 
  469          TGNumberFormat::kNELNoLimits), 
new TGTableLayoutHints(1, 2, 1, 2,
 
  472    fNumEntries->SetIntNumber(-1);
 
  474    fFrmMore->AddFrame(
new TGLabel(fFrmMore, 
"First entry :"),
 
  475          new TGTableLayoutHints(0, 1, 2, 3, kLHintsCenterY, 0, 5, 0, 0));
 
  476    fFrmMore->AddFrame(fNumFirstEntry = 
new TGNumberEntry(fFrmMore, 0, 5, -1,
 
  477          TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
 
  478          TGNumberFormat::kNELNoLimits), 
new TGTableLayoutHints(1, 2, 2, 3, 0,
 
  482    fFrmMore->AddFrame(
new TGLabel(fFrmMore, 
"Event list :"),
 
  483          new TGTableLayoutHints(0, 1, 3, 4, kLHintsCenterY, 0, 5, 0, 0));
 
  484    fFrmMore->AddFrame(fTxtEventList = 
new TGTextEntry(fFrmMore,
 
  485          (
const char *)0, 6), 
new TGTableLayoutHints(1, 2, 3, 4, 0, 22,
 
  488    fFrmMore->AddFrame(btnTmp = 
new TGTextButton(fFrmMore, 
"Browse..."),
 
  489          new TGTableLayoutHints(2, 3, 3, 4, 0, 6, 0, 0, 8));
 
  490    btnTmp->Connect(
"Clicked()", 
"TNewQueryDlg", 
this, 
"OnBrowseEventList()");
 
  492    fTxtQueryName->Associate(
this);
 
  493    fTxtChain->Associate(
this);
 
  494    fTxtSelector->Associate(
this);
 
  495    fTxtOptions->Associate(
this);
 
  496    fNumEntries->Associate(
this);
 
  497    fNumFirstEntry->Associate(
this);
 
  498    fTxtEventList->Associate(
this);
 
  500    fTxtQueryName->Connect(
"TextChanged(char*)", 
"TNewQueryDlg", 
this,
 
  501                         "SettingsChanged()");
 
  502    fTxtChain->Connect(
"TextChanged(char*)", 
"TNewQueryDlg", 
this,
 
  503                         "SettingsChanged()");
 
  504    fTxtSelector->Connect(
"TextChanged(char*)", 
"TNewQueryDlg", 
this,
 
  505                         "SettingsChanged()");
 
  506    fTxtOptions->Connect(
"TextChanged(char*)", 
"TNewQueryDlg", 
this,
 
  507                         "SettingsChanged()");
 
  508    fNumEntries->Connect(
"ValueChanged(Long_t)", 
"TNewQueryDlg", 
this,
 
  509                         "SettingsChanged()");
 
  510    fNumFirstEntry->Connect(
"ValueChanged(Long_t)", 
"TNewQueryDlg", 
this,
 
  511                         "SettingsChanged()");
 
  512    fTxtEventList->Connect(
"TextChanged(char*)", 
"TNewQueryDlg", 
this,
 
  513                         "SettingsChanged()");
 
  515    TGCompositeFrame *tmp;
 
  516    AddFrame(tmp = 
new TGCompositeFrame(
this, 140, 20, kHorizontalFrame),
 
  517          new TGLayoutHints(kLHintsLeft | kLHintsExpandX));
 
  518    tmp->SetCleanup(kDeepCleanup);
 
  522       fBtnSave = 
new TGTextButton(tmp, 
"Save");
 
  523       fBtnSubmit = 
new TGTextButton(tmp, 
"Save && Submit");
 
  526       fBtnSave = 
new TGTextButton(tmp, 
"Add");
 
  527       fBtnSubmit = 
new TGTextButton(tmp, 
"Add && Submit");
 
  529    tmp->AddFrame(fBtnSave, 
new TGLayoutHints(kLHintsLeft | kLHintsExpandX,
 
  531    tmp->AddFrame(fBtnSubmit, 
new TGLayoutHints(kLHintsLeft | kLHintsExpandX,
 
  533    fBtnSave->Connect(
"Clicked()", 
"TNewQueryDlg", 
this, 
"OnBtnSaveClicked()");
 
  534    fBtnSubmit->Connect(
"Clicked()", 
"TNewQueryDlg", 
this, 
"OnBtnSubmitClicked()");
 
  535    tmp->AddFrame(fBtnClose = 
new TGTextButton(tmp, 
"Close"),
 
  536          new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 3, 3, 3, 3));
 
  537    fBtnClose->Connect(
"Clicked()", 
"TNewQueryDlg", 
this, 
"OnBtnCloseClicked()");
 
  538    fBtnSave->SetState(kButtonDisabled);
 
  539    fBtnSubmit->SetState(kButtonDisabled);
 
  545 void TNewQueryDlg::CloseWindow()
 
  553 void TNewQueryDlg::OnNewQueryMore()
 
  555    if (fFrmNewQuery->IsVisible(fFrmMore)) {
 
  556       fFrmNewQuery->HideFrame(fFrmMore);
 
  557       fBtnMore->SetText(
" More >> ");
 
  560       fFrmNewQuery->ShowFrame(fFrmMore);
 
  561       fBtnMore->SetText(
" Less << ");
 
  568 void TNewQueryDlg::OnBrowseChain()
 
  570    TNewChainDlg *dlg = 
new TNewChainDlg(fClient->GetRoot(), 
this);
 
  571    dlg->Connect(
"OnElementSelected(TObject *)", 
"TNewQueryDlg",
 
  572          this, 
"OnElementSelected(TObject *)");
 
  578 void TNewQueryDlg::OnElementSelected(TObject *obj)
 
  582       if (obj->IsA() == TChain::Class())
 
  583          fTxtChain->SetText(((TChain *)fChain)->GetName());
 
  584       else if (obj->IsA() == TDSet::Class())
 
  585          fTxtChain->SetText(((TDSet *)fChain)->GetObjName());
 
  592 void TNewQueryDlg::OnBrowseSelector()
 
  595    fi.fFileTypes = gFileTypes;
 
  596    new TGFileDialog(fClient->GetRoot(), 
this, kFDOpen, &fi);
 
  597    if (!fi.fFilename) 
return;
 
  598    fTxtSelector->SetText(gSystem->UnixPathName(fi.fFilename));
 
  604 void TNewQueryDlg::OnBrowseEventList()
 
  611 void TNewQueryDlg::OnBtnSaveClicked()
 
  615    TQueryDescription *newquery;
 
  616    if (fEditMode && fQuery)
 
  619       newquery = 
new TQueryDescription();
 
  622    newquery->fSelectorString  = fTxtSelector->GetText();
 
  624       newquery->fTDSetString  = fChain->GetName();
 
  625       newquery->fChain        = fChain;
 
  628       newquery->fTDSetString = 
"";
 
  629       newquery->fChain       = 0;
 
  631    newquery->fQueryName      = fTxtQueryName->GetText();
 
  632    newquery->fOptions.Form(
"%s",fTxtOptions->GetText());
 
  633    newquery->fNoEntries      = fNumEntries->GetIntNumber();
 
  634    newquery->fFirstEntry     = fNumFirstEntry->GetIntNumber();
 
  635    newquery->fNbFiles        = 0;
 
  636    newquery->fResult         = 0;
 
  638    if (newquery->fChain) {
 
  639       if (newquery->fChain->IsA() == TChain::Class())
 
  640          newquery->fNbFiles = ((TChain *)newquery->fChain)->GetListOfFiles()->GetEntriesFast();
 
  641       else if (newquery->fChain->IsA() == TDSet::Class())
 
  642          newquery->fNbFiles = ((TDSet *)newquery->fChain)->GetListOfElements()->GetSize();
 
  647       newquery->fResult = 0;
 
  648       newquery->fStatus = TQueryDescription::kSessionQueryCreated;
 
  650       TQueryDescription *fquery;
 
  651       fquery = (TQueryDescription *)fViewer->GetActDesc()->fQueries->FindObject(newquery->fQueryName);
 
  653          int e = 1, j = 0, idx = 0;
 
  654          const char *name = fquery->fQueryName;
 
  655          for (
int i=strlen(name)-1;i>0;i--) {
 
  656             if (isdigit(name[i])) {
 
  657                idx += (name[i]-
'0') * e;
 
  666             newquery->fQueryName.Remove(strlen(name)-j,j);
 
  667             newquery->fQueryName.Append(Form(
"%d",idx));
 
  670             newquery->fQueryName.Append(
" 1");
 
  671          fquery = (TQueryDescription *)fViewer->GetActDesc()->fQueries->FindObject(newquery->fQueryName);
 
  673       fTxtQueryName->SetText(newquery->fQueryName);
 
  674       fViewer->GetActDesc()->fQueries->Add((TObject *)newquery);
 
  675       TGListTreeItem *item = fViewer->GetSessionHierarchy()->FindChildByData(
 
  676          fViewer->GetSessionItem(), fViewer->GetActDesc());
 
  677       TGListTreeItem *item2 = fViewer->GetSessionHierarchy()->AddItem(item,
 
  678          newquery->fQueryName, fViewer->GetQueryConPict(), fViewer->GetQueryConPict());
 
  679       item2->SetUserData(newquery);
 
  680       fViewer->GetSessionHierarchy()->OpenItem(item);
 
  681       fViewer->GetSessionHierarchy()->ClearHighlighted();
 
  682       fViewer->GetSessionHierarchy()->HighlightItem(item2);
 
  683       fViewer->GetSessionHierarchy()->SetSelected(item2);
 
  684       fViewer->OnListTreeClicked(item2, 1, 0, 0);
 
  689       TGListTreeItem *item = fViewer->GetSessionHierarchy()->GetSelected();
 
  690       fViewer->GetSessionHierarchy()->RenameItem(item, newquery->fQueryName);
 
  691       item->SetUserData(newquery);
 
  694    fClient->NeedRedraw(fViewer->GetSessionHierarchy());
 
  695    fTxtQueryName->SelectAll();
 
  696    fTxtQueryName->SetFocus();
 
  697    fViewer->WriteConfiguration();
 
  704 void TNewQueryDlg::OnBtnSubmitClicked()
 
  707    fViewer->GetQueryFrame()->OnBtnSubmit();
 
  713 void TNewQueryDlg::OnBtnCloseClicked()
 
  715    Int_t result = kMBNo;
 
  717       new TGMsgBox(fClient->GetRoot(), 
this, 
"Modified Settings",
 
  718                    "Do you wish to SAVE changes ?", 0,
 
  719                    kMBYes | kMBNo | kMBCancel, &result);
 
  720       if (result == kMBYes) {
 
  724    if (result == kMBNo) {
 
  732 void TNewQueryDlg::Popup()
 
  735    fTxtQueryName->SetFocus();
 
  741 void TNewQueryDlg::SettingsChanged()
 
  743    if (fEditMode && fQuery) {
 
  744       if ((strcmp(fQuery->fSelectorString.Data(), fTxtSelector->GetText())) ||
 
  745           (strcmp(fQuery->fQueryName.Data(), fTxtQueryName->GetText())) ||
 
  746           (strcmp(fQuery->fOptions.Data(), fTxtOptions->GetText())) ||
 
  747           (fQuery->fNoEntries  != fNumEntries->GetIntNumber()) ||
 
  748           (fQuery->fFirstEntry != fNumFirstEntry->GetIntNumber()) ||
 
  749           (fQuery->fChain != fChain)) {
 
  757       if ((fTxtQueryName->GetText()) &&
 
  758          ((fTxtQueryName->GetText()) ||
 
  759           (fTxtChain->GetText())))
 
  765       fBtnSave->SetState(kButtonUp);
 
  766       fBtnSubmit->SetState(kButtonUp);
 
  769       fBtnSave->SetState(kButtonDisabled);
 
  770       fBtnSubmit->SetState(kButtonDisabled);
 
  777 void TNewQueryDlg::UpdateFields(TQueryDescription *desc)
 
  780    fTxtQueryName->SetText(desc->fQueryName);
 
  781    fTxtChain->SetText(
"");
 
  783       fTxtChain->SetText(desc->fTDSetString);
 
  784    fTxtSelector->SetText(desc->fSelectorString);
 
  785    fTxtOptions->SetText(desc->fOptions);
 
  786    fNumEntries->SetIntNumber(desc->fNoEntries);
 
  787    fNumFirstEntry->SetIntNumber(desc->fFirstEntry);
 
  788    fTxtEventList->SetText(desc->fEventList);
 
  794 Bool_t TNewQueryDlg::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
 
  796    switch (GET_MSG(msg)) {
 
  798          switch (GET_SUBMSG(msg)) {
 
  803                      fTxtChain->SelectAll();
 
  804                      fTxtChain->SetFocus();
 
  807                      fTxtSelector->SelectAll();
 
  808                      fTxtSelector->SetFocus();
 
  811                      fTxtOptions->SelectAll();
 
  812                      fTxtOptions->SetFocus();
 
  815                      fTxtEventList->SelectAll();
 
  816                      fTxtEventList->SetFocus();
 
  819                      fTxtQueryName->SelectAll();
 
  820                      fTxtQueryName->SetFocus();
 
  843 TUploadDataSetDlg::TUploadDataSetDlg(TSessionViewer *gui, Int_t w, Int_t h) :
 
  844          TGTransientFrame(gClient->GetRoot(), gui, w, h)
 
  850    SetCleanup(kDeepCleanup);
 
  851    TGHorizontalFrame *hFrame1 = 
new TGHorizontalFrame(
this);
 
  852    hFrame1->SetCleanup(kDeepCleanup);
 
  853    hFrame1->AddFrame(
new TGLabel(hFrame1,
"Name of DataSet :"),
 
  854                      new TGLayoutHints(kLHintsLeft | kLHintsCenterY,
 
  856    fDSetName = 
new TGTextEntry(hFrame1, 
new TGTextBuffer(50));
 
  857    fDSetName->SetText(
"DataSet1");
 
  858    fDSetName->Resize(150, fDSetName->GetDefaultHeight());
 
  859    hFrame1->AddFrame(fDSetName, 
new TGLayoutHints(kLHintsLeft | kLHintsCenterY,
 
  861    AddFrame(hFrame1, 
new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,
 
  865    TGGroupFrame *groupFrame1 = 
new TGGroupFrame(
this, 
"DataSet Files");
 
  866    groupFrame1->SetCleanup(kDeepCleanup);
 
  869    TGHorizontalFrame *hFrame11 = 
new TGHorizontalFrame(groupFrame1);
 
  870    hFrame11->SetCleanup(kDeepCleanup);
 
  871    hFrame11->AddFrame(
new TGLabel(hFrame11,
"Location URL :"),
 
  872                      new TGLayoutHints(kLHintsLeft | kLHintsCenterY,
 
  874    fLocationURL = 
new TGTextEntry(hFrame11, 
new TGTextBuffer(150));
 
  875    fLocationURL->SetToolTipText(
"Enter location URL (i.e \"root://host//path/to/file.root\")");
 
  876    fLocationURL->Resize(210, fLocationURL->GetDefaultHeight());
 
  877    hFrame11->AddFrame(fLocationURL, 
new TGLayoutHints(kLHintsLeft |
 
  878                       kLHintsCenterY, 10, 10, 5, 5));
 
  879    fAddButton = 
new TGTextButton(hFrame11, 
" Add >> ", 0);
 
  880    fAddButton->SetToolTipText(
"Add file(s) to the list");
 
  881    fAddButton->Associate(
this);
 
  882    hFrame11->AddFrame(fAddButton, 
new TGLayoutHints(kLHintsLeft | kLHintsCenterY |
 
  883                       kLHintsExpandX, 5, 10, 5, 5));
 
  884    groupFrame1->AddFrame(hFrame11, 
new TGLayoutHints(kLHintsLeft | kLHintsTop |
 
  885                          kLHintsExpandX, 2, 2, 2, 2));
 
  888    TGHorizontalFrame *hFrame2 = 
new TGHorizontalFrame(groupFrame1);
 
  889    hFrame2->SetCleanup(kDeepCleanup);
 
  893    fListView = 
new TGListView(hFrame2, 300, 100);
 
  894    fLVContainer = 
new TGLVContainer(fListView, kSunkenFrame, GetWhitePixel());
 
  895    fLVContainer->Associate(fListView);
 
  896    fLVContainer->SetViewMode(kLVDetails);
 
  897    fLVContainer->SetCleanup(kDeepCleanup);
 
  898    fLVContainer->SetHeaders(1);
 
  899    fLVContainer->SetHeader(
"File Name", kTextLeft, kTextLeft , 0);
 
  900    hFrame2->AddFrame(fListView, 
new TGLayoutHints(kLHintsLeft | kLHintsTop |
 
  901                      kLHintsExpandX | kLHintsExpandY, 2, 2, 10, 10));
 
  904    TGVerticalFrame *vFrame1 = 
new TGVerticalFrame(hFrame2);
 
  905    vFrame1->SetCleanup(kDeepCleanup);
 
  907    fBrowseButton = 
new TGTextButton(vFrame1, 
" Browse... ", 1);
 
  908    fBrowseButton->SetToolTipText(
"Add file(s) to the list");
 
  909    fBrowseButton->Associate(
this);
 
  910    vFrame1->AddFrame(fBrowseButton, 
new TGLayoutHints(kLHintsLeft | kLHintsTop |
 
  911                      kLHintsExpandX, 15, 5, 5, 5));
 
  912    fRemoveButton = 
new TGTextButton(vFrame1, 
" Remove ", 2);
 
  913    fRemoveButton->SetToolTipText(
"Remove selected file from the list");
 
  914    fRemoveButton->Associate(
this);
 
  915    vFrame1->AddFrame(fRemoveButton, 
new TGLayoutHints(kLHintsLeft | kLHintsTop |
 
  916                      kLHintsExpandX, 15, 5, 5, 5));
 
  917    fClearButton = 
new TGTextButton(vFrame1, 
" Clear ", 3);
 
  918    fClearButton->SetToolTipText(
"Clear list of files");
 
  919    fClearButton->Associate(
this);
 
  920    vFrame1->AddFrame(fClearButton, 
new TGLayoutHints(kLHintsLeft | kLHintsTop |
 
  921                      kLHintsExpandX, 15, 5, 5, 5));
 
  923    fOverwriteDSet = 
new TGCheckButton(vFrame1, 
"Overwrite DataSet");
 
  924    fOverwriteDSet->SetToolTipText(
"Overwrite DataSet");
 
  925    vFrame1->AddFrame(fOverwriteDSet, 
new TGLayoutHints(kLHintsLeft | kLHintsTop |
 
  926                      kLHintsExpandX, 15, 5, 5, 5));
 
  927    fOverwriteFiles = 
new TGCheckButton(vFrame1, 
"Overwrite Files");
 
  928    fOverwriteFiles->SetToolTipText(
"Overwrite files in DataSet");
 
  929    vFrame1->AddFrame(fOverwriteFiles, 
new TGLayoutHints(kLHintsLeft | kLHintsTop |
 
  930                      kLHintsExpandX, 15, 5, 5, 5));
 
  931    fAppendFiles = 
new TGCheckButton(vFrame1, 
"Append Files");
 
  932    fAppendFiles->SetToolTipText(
"Append files in DataSet");
 
  933    vFrame1->AddFrame(fAppendFiles, 
new TGLayoutHints(kLHintsLeft | kLHintsTop |
 
  934                      kLHintsExpandX, 15, 5, 5, 5));
 
  936    fOverwriteDSet->Connect(
"Toggled(Bool_t)", 
"TUploadDataSetDlg", 
this,
 
  937          "OnOverwriteDataset(Bool_t)");
 
  938    fOverwriteFiles->Connect(
"Toggled(Bool_t)", 
"TUploadDataSetDlg", 
this,
 
  939          "OnOverwriteFiles(Bool_t)");
 
  940    fAppendFiles->Connect(
"Toggled(Bool_t)", 
"TUploadDataSetDlg", 
this,
 
  941          "OnAppendFiles(Bool_t)");
 
  943    hFrame2->AddFrame(vFrame1, 
new TGLayoutHints(kLHintsRight | kLHintsTop |
 
  944                      kLHintsExpandY, 2, 2, 2, 2));
 
  945    groupFrame1->AddFrame(hFrame2, 
new TGLayoutHints(kLHintsLeft | kLHintsTop |
 
  946                          kLHintsExpandX | kLHintsExpandY, 2, 2, 2, 2));
 
  948    AddFrame(groupFrame1, 
new TGLayoutHints(kLHintsLeft | kLHintsTop |
 
  949             kLHintsExpandX, 5, 5, 2, 2));
 
  952    TGHorizontalFrame *hFrame3 = 
new TGHorizontalFrame(
this);
 
  953    hFrame3->SetCleanup(kDeepCleanup);
 
  954    hFrame3->AddFrame(
new TGLabel(hFrame3,
"Destination URL :"),
 
  955                      new TGLayoutHints(kLHintsLeft | kLHintsCenterY,
 
  957    fDestinationURL = 
new TGTextEntry(hFrame3, 
new TGTextBuffer(150));
 
  958    if (fViewer->GetActDesc()->fConnected &&
 
  959       fViewer->GetActDesc()->fAttached &&
 
  960       fViewer->GetActDesc()->fProof &&
 
  961       fViewer->GetActDesc()->fProof->IsValid()) {
 
  965    fDestinationURL->SetToolTipText(
"Enter destination URL ( relative to \" root://host//proofpool/user/ \" )");
 
  966    fDestinationURL->Resize(305, fDestinationURL->GetDefaultHeight());
 
  967    hFrame3->AddFrame(fDestinationURL, 
new TGLayoutHints(kLHintsLeft |
 
  968                      kLHintsCenterY, 10, 15, 5, 5));
 
  969    AddFrame(hFrame3, 
new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,
 
  973    TGHorizontalFrame *hFrame4 = 
new TGHorizontalFrame(
this);
 
  974    hFrame4->SetCleanup(kDeepCleanup);
 
  975    fUploadButton = 
new TGTextButton(hFrame4, 
"Upload DataSet", 10);
 
  976    fUploadButton->SetToolTipText(
"Upload the dataset to the cluster");
 
  977    fUploadButton->Associate(
this);
 
  978    hFrame4->AddFrame(fUploadButton, 
new TGLayoutHints(kLHintsLeft | kLHintsCenterY |
 
  979                      kLHintsExpandX, 15, 15, 2, 2));
 
  980    fCloseDlgButton = 
new TGTextButton(hFrame4, 
"Close Dialog", 11);
 
  981    fCloseDlgButton->SetToolTipText(
"Close the dialog");
 
  982    fCloseDlgButton->Associate(
this);
 
  983    hFrame4->AddFrame(fCloseDlgButton, 
new TGLayoutHints(kLHintsLeft | kLHintsCenterY |
 
  984                      kLHintsExpandX, 15, 15, 2, 2));
 
  985    AddFrame(hFrame4, 
new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,
 
  991    gVirtualX->TranslateCoordinates( gui->GetId(),
 
  992                                     fClient->GetDefaultRoot()->GetId(),
 
  993                                     0, 0, ax, ay, wdummy);
 
  994    Move(ax + 250, ay + 200);
 
  996    SetWindowName(
"Upload DataSet Dialog");
 
 1001    SetWMSizeHints(w+5, h+5, w+5, h+5, 1, 1);
 
 1002    ChangeOptions(GetOptions() | kFixedSize);
 
 1009 TUploadDataSetDlg::~TUploadDataSetDlg()
 
 1011    if (IsZombie()) 
return;
 
 1018 void TUploadDataSetDlg::CloseWindow()
 
 1027 Bool_t TUploadDataSetDlg::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
 
 1029    switch (GET_MSG(msg)) {
 
 1031          switch (GET_SUBMSG(msg)) {
 
 1036                      if (fLocationURL->GetText())
 
 1037                         AddFiles(fLocationURL->GetText());
 
 1075 void TUploadDataSetDlg::AddFiles(
const char *fileName)
 
 1077    if (strlen(fileName) < 5)
 
 1079    if (strstr(fileName,
"*.")) {
 
 1081       void *filesDir = gSystem->OpenDirectory(gSystem->DirName(fileName));
 
 1083       TString filesExp(gSystem->BaseName(fileName));
 
 1084       filesExp.ReplaceAll(
"*",
".*");
 
 1085       TRegexp rg(filesExp);
 
 1086       while ((ent = gSystem->GetDirEntry(filesDir))) {
 
 1087          TString entryString(ent);
 
 1088          if (entryString.Index(rg) != kNPOS &&
 
 1089              gSystem->AccessPathName(Form(
"%s/%s", gSystem->DirName(fileName),
 
 1090                 ent), kReadPermission) == kFALSE) {
 
 1091             TString text = TString::Format(
"%s/%s",
 
 1092                gSystem->UnixPathName(gSystem->DirName(fileName)), ent);
 
 1093             if (!fLVContainer->FindItem(text.Data())) {
 
 1094                TGLVEntry *entry = 
new TGLVEntry(fLVContainer, text.Data(), text.Data());
 
 1095                entry->SetPictures(gClient->GetPicture(
"rootdb_t.xpm"),
 
 1096                                   gClient->GetPicture(
"rootdb_t.xpm"));
 
 1097                fLVContainer->AddItem(entry);
 
 1104       if (!fLVContainer->FindItem(fileName)) {
 
 1105          TGLVEntry *entry = 
new TGLVEntry(fLVContainer, fileName, fileName);
 
 1106          entry->SetPictures(gClient->GetPicture(
"rootdb_t.xpm"),
 
 1107                             gClient->GetPicture(
"rootdb_t.xpm"));
 
 1108          fLVContainer->AddItem(entry);
 
 1112    fListView->AdjustHeaders();
 
 1113    fListView->Layout();
 
 1114    fClient->NeedRedraw(fLVContainer);
 
 1120 void TUploadDataSetDlg::AddFiles(TList *fileList)
 
 1123    TIter next(fileList);
 
 1124    while ((el = (TObjString *) next())) {
 
 1125       TString fileName = TString::Format(
"%s/%s",
 
 1126                   gSystem->UnixPathName(gSystem->DirName(el->GetString())),
 
 1127                   gSystem->BaseName(el->GetString()));
 
 1129       if (!fLVContainer->FindItem(fileName.Data())) {
 
 1130          TGLVEntry *entry = 
new TGLVEntry(fLVContainer, fileName.Data(), fileName.Data());
 
 1131          entry->SetPictures(gClient->GetPicture(
"rootdb_t.xpm"),
 
 1132                             gClient->GetPicture(
"rootdb_t.xpm"));
 
 1133          fLVContainer->AddItem(entry);
 
 1137    fListView->AdjustHeaders();
 
 1138    fListView->Layout();
 
 1139    fClient->NeedRedraw(fLVContainer);
 
 1146 void TUploadDataSetDlg::BrowseFiles()
 
 1149    fi.fFileTypes = gDatasetTypes;
 
 1150    fi.fFilename  = strdup(
"*.root");
 
 1151    new TGFileDialog(fClient->GetRoot(), 
this, kFDOpen, &fi);
 
 1152    if (fi.fMultipleSelection && fi.fFileNamesList) {
 
 1153       AddFiles(fi.fFileNamesList);
 
 1155    else if (fi.fFilename) {
 
 1156       AddFiles(fi.fFilename);
 
 1163 void TUploadDataSetDlg::ClearFiles()
 
 1165    fLVContainer->RemoveAll();
 
 1166    fListView->Layout();
 
 1168    fClient->NeedRedraw(fLVContainer);
 
 1174 void TUploadDataSetDlg::OnOverwriteDataset(Bool_t on)
 
 1176    if (on && fAppendFiles->IsOn())
 
 1177       fAppendFiles->SetState(kButtonUp);
 
 1183 void TUploadDataSetDlg::OnOverwriteFiles(Bool_t)
 
 1190 void TUploadDataSetDlg::OnAppendFiles(Bool_t on)
 
 1192    if (on && fOverwriteDSet->IsOn())
 
 1193       fOverwriteDSet->SetState(kButtonUp);
 
 1199 void TUploadDataSetDlg::RemoveFile()
 
 1201    TGFrame *item = (TGFrame *)fLVContainer->GetLastActive();
 
 1202    fLVContainer->RemoveItem(item);
 
 1204    fListView->AdjustHeaders();
 
 1205    fListView->Layout();
 
 1206    fClient->NeedRedraw(fLVContainer);
 
 1212 void TUploadDataSetDlg::UploadDataSet()
 
 1216    const char *dsetName = fDSetName->GetText();
 
 1217    const char *destination = fDestinationURL->GetText();
 
 1219    TList *skippedFiles = 
new TList();
 
 1220    TList *datasetFiles = 
new TList();
 
 1224    if (!fViewer->GetActDesc()->fConnected ||
 
 1225        !fViewer->GetActDesc()->fAttached ||
 
 1226        !fViewer->GetActDesc()->fProof ||
 
 1227        !fViewer->GetActDesc()->fProof->IsValid()) {
 
 1231    if (fOverwriteDSet->IsOn())
 
 1232       flags |= TProof::kOverwriteDataSet;
 
 1234       flags |= TProof::kNoOverwriteDataSet;
 
 1235    if (fOverwriteFiles->IsOn())
 
 1236       flags |= TProof::kOverwriteAllFiles;
 
 1238       flags |= TProof::kOverwriteNoFiles;
 
 1239    if (fAppendFiles->IsOn()) {
 
 1240       flags |= TProof::kAppend;
 
 1241       if (flags & TProof::kNoOverwriteDataSet)
 
 1242          flags &= ~TProof::kNoOverwriteDataSet;
 
 1246    TIter next(fLVContainer->GetList());
 
 1250    while ((el = (TGFrameElement *)next())) {
 
 1251       entry = (TGLVEntry *) el->fFrame;
 
 1252       const char *fname = gSystem->UnixPathName(entry->GetTitle());
 
 1253       datasetFiles->Add(
new TFileInfo(fname));
 
 1256    fUploadButton->SetState(kButtonDisabled);
 
 1257    fCloseDlgButton->SetState(kButtonDisabled);
 
 1259    if (strlen(destination) < 2) destination = 0;
 
 1265    ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
 
 1266                   datasetFiles, destination, flags, skippedFiles);
 
 1268    if (ret == TProof::kDataSetExists) {
 
 1271       new TGMsgBox(fClient->GetRoot(), 
this, 
"Upload DataSet",
 
 1272                    TString::Format(
"The dataset \"%s\" already exists on the cluster ! Overwrite ?",
 
 1273                    dsetName), kMBIconQuestion, kMBYes | kMBNo | kMBCancel | kMBAppend,
 
 1275       if (retval == kMBYes) {
 
 1276          ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
 
 1277                           datasetFiles, destination,
 
 1278                           TProof::kOverwriteDataSet |
 
 1279                           TProof::kOverwriteNoFiles,
 
 1282       if (retval == kMBAppend) {
 
 1283          ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
 
 1284                           datasetFiles, destination,
 
 1286                           TProof::kOverwriteNoFiles,
 
 1293       new TGMsgBox(fClient->GetRoot(), 
this, 
"Upload DataSet",
 
 1294                    "Failed uploading dataset/files to the cluster",
 
 1295                    kMBIconExclamation, kMBOk, &retval);
 
 1296       fUploading = kFALSE;
 
 1297       fUploadButton->SetState(kButtonUp);
 
 1298       fCloseDlgButton->SetState(kButtonUp);
 
 1302    if (skippedFiles->GetSize()) {
 
 1303       TIter nexts(skippedFiles);
 
 1304       while (TFileInfo *obj = (TFileInfo*)nexts()) {
 
 1307          new TGMsgBox(fClient->GetRoot(), 
this, 
"Upload DataSet",
 
 1308                       TString::Format(
"The file \"%s\" already exists on the cluster ! Overwrite ?",
 
 1309                       obj->GetFirstUrl()->GetUrl()), kMBIconQuestion,
 
 1310                       kMBYes | kMBNo | kMBYesAll | kMBNoAll | kMBDismiss, &retval);
 
 1311          if (retval == kMBYesAll) {
 
 1312             ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
 
 1313                            skippedFiles, destination,
 
 1315                            TProof::kOverwriteAllFiles);
 
 1318                new TGMsgBox(fClient->GetRoot(), 
this, 
"Upload DataSet",
 
 1319                             TString::Format(
"Failed uploading \"%s\" to the cluster",
 
 1320                             obj->GetFirstUrl()->GetUrl()), kMBIconExclamation,
 
 1324                new TGMsgBox(fClient->GetRoot(), 
this, 
"Upload DataSet",
 
 1325                             "Files have been successfully uploaded to the cluster",
 
 1326                             kMBIconAsterisk, kMBOk, &retval);
 
 1328             fUploading = kFALSE;
 
 1329             fUploadButton->SetState(kButtonUp);
 
 1330             fCloseDlgButton->SetState(kButtonUp);
 
 1333          if ((retval == kMBNoAll) || (retval == kMBDismiss)) {
 
 1336          if (retval == kMBYes) {
 
 1338             ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
 
 1339                   obj->GetFirstUrl()->GetUrl(), destination,
 
 1340                   TProof::kAppend | TProof::kOverwriteAllFiles);
 
 1343                new TGMsgBox(fClient->GetRoot(), 
this, 
"Upload DataSet",
 
 1344                             TString::Format(
"Failed uploading \"%s\" to the cluster",
 
 1345                             obj->GetFirstUrl()->GetUrl()), kMBIconExclamation,
 
 1349                new TGMsgBox(fClient->GetRoot(), 
this, 
"Upload DataSet",
 
 1350                             "Files have been successfully uploaded to the cluster",
 
 1351                             kMBIconAsterisk, kMBOk, &retval);
 
 1355       skippedFiles->Clear();
 
 1358       new TGMsgBox(fClient->GetRoot(), 
this, 
"Upload DataSet",
 
 1359                    "Files have been successfully uploaded to the cluster",
 
 1360                    kMBIconAsterisk, kMBOk, &retval);
 
 1365    fViewer->GetSessionFrame()->UpdateListOfDataSets();
 
 1366    fUploading = kFALSE;
 
 1367    fUploadButton->SetState(kButtonUp);
 
 1368    fCloseDlgButton->SetState(kButtonUp);