ROOT logo
// @(#)root/sessionviewer:$Id: TSessionDialogs.cxx 27478 2009-02-18 10:12:10Z bellenot $
// 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.             *
 *************************************************************************/

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

#include "TSessionDialogs.h"
#include "TSessionViewer.h"
#include "TROOT.h"
#include "TSystem.h"
#include "TGButton.h"
#include "TList.h"
#include "TChain.h"
#include "TDSet.h"
#include "TGTextEntry.h"
#include "TGTextBuffer.h"
#include "TGNumberEntry.h"
#include "TGLabel.h"
#include "TGListView.h"
#include "TGPicture.h"
#include "TGFSContainer.h"
#include "TGFileDialog.h"
#include "TGListTree.h"
#include "TInterpreter.h"
#include "TApplication.h"
#include "TKey.h"
#include "TGTableLayout.h"
#include "TGFileDialog.h"
#include "TProof.h"
#include "TFileInfo.h"
#include "TGMsgBox.h"
#include "TRegexp.h"

ClassImp(TNewChainDlg)
ClassImp(TNewQueryDlg)

/* not yet used
static const char *gParTypes[] = {
   "Par files",  "*.par",
   "All files",  "*",
    0,            0
};
*/

static const char *gDatasetTypes[] = {
   "ROOT files",    "*.root",
   "All files",     "*",
   0,               0
};

static const char *gFileTypes[] = {
   "C files",       "*.[C|c]*",
   "ROOT files",    "*.root",
   "All files",     "*",
   0,               0
};

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

//______________________________________________________________________________
TNewChainDlg::TNewChainDlg(const TGWindow *p, const TGWindow *main) :
   TGTransientFrame(p, main, 350, 300, kVerticalFrame)
{
   // Create a new chain dialog box. Used to list chains present in memory
   // and offers the possibility to create new ones by executing macros
   // directly from the associate file container.

   Pixel_t backgnd;
   if (!p || !main) return;
   SetCleanup(kDeepCleanup);
   fClient->GetColorByName("#F0FFF0", backgnd);
   AddFrame(new TGLabel(this, new TGHotString("List of Chains in Memory :")),
            new TGLayoutHints(kLHintsLeft, 5, 5, 7, 2) );

   // Add TGListView used to show objects in memory
   fListView = new TGListView(this, 300, 100);
   fLVContainer = new TGLVContainer(fListView, kSunkenFrame, GetWhitePixel());
   fLVContainer->Associate(fListView);
   fLVContainer->SetViewMode(kLVSmallIcons);
   fLVContainer->SetCleanup(kDeepCleanup);
   AddFrame(fListView, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 4, 4, 4, 4));

   fListView->Connect("Clicked(TGLVEntry*, Int_t)", "TNewChainDlg",
            this, "OnElementClicked(TGLVEntry* ,Int_t)");

   // Add text entry showing type and name of user's selection
   TGCompositeFrame* frmSel = new TGHorizontalFrame(this, 300, 100);
   frmSel->SetCleanup(kDeepCleanup);
   frmSel->AddFrame(new TGLabel(frmSel, new TGHotString("Selected chain :")),
            new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5, 5, 5, 5) );
   fNameBuf = new TGTextBuffer(100);
   fName = new TGTextEntry(frmSel, fNameBuf);
   fName->Resize(200, fName->GetDefaultHeight());
   fName->Associate(this);
   fName->SetEnabled(kFALSE);
   fName->ChangeBackground(backgnd);
   frmSel->AddFrame(fName, new TGLayoutHints(kLHintsLeft | kLHintsCenterY | kLHintsExpandX, 5, 5, 5, 5));
   AddFrame(frmSel, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));

   AddFrame(new TGLabel(this, "Double-click on the macro to be executed to create a new Chain:"),
            new TGLayoutHints(kLHintsCenterX, 5, 5, 5, 2));

   // Add TGListview / TGFileContainer to allow user to execute Macros
   // for the creation of new TChains / TDSets
   TGListView* lv = new TGListView(this, 300, 100);
   AddFrame(lv,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 5, 5, 2, 5));

   Pixel_t white;
   gClient->GetColorByName("white",white);
   fContents = new TGFileContainer(lv, kSunkenFrame, white);
   fContents->SetCleanup(kDeepCleanup);
   fContents->SetFilter("*.[C|c]*");
   fContents->SetViewMode(kLVSmallIcons);
   fContents->Associate(this);
   fContents->SetDefaultHeaders();
   fContents->DisplayDirectory();
   fContents->AddFile("..");        // up level directory
   fContents->Resize();
   fContents->StopRefreshTimer();   // stop refreshing

   // position relative to the parent's window
   Window_t wdummy;
   Int_t  ax, ay;
   gVirtualX->TranslateCoordinates( main->GetId(),
                                    fClient->GetDefaultRoot()->GetId(),
                                    0, 0, ax, ay, wdummy);
   Move(ax + 200, ay + 35);

   TGCompositeFrame *tmp;
   AddFrame(tmp = new TGCompositeFrame(this, 140, 20, kHorizontalFrame),
            new TGLayoutHints(kLHintsLeft | kLHintsExpandX));
   tmp->SetCleanup(kDeepCleanup);
   // Apply and Close buttons
   tmp->AddFrame(fOkButton = new TGTextButton(tmp, "&Ok", 0),
            new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
   tmp->AddFrame(fCancelButton = new TGTextButton(tmp, "&Cancel", 1),
            new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
   fOkButton->Associate(this);
   fCancelButton->Associate(this);
   fOkButton->SetEnabled(kFALSE);

   SetWindowName("Chain Selection Dialog");
   MapSubwindows();
   Layout();
   Resize(GetDefaultSize());
   MapWindow();
   UpdateList();
}

//______________________________________________________________________________
TNewChainDlg::~TNewChainDlg()
{
   // Delete chain dialog.
   if (IsZombie()) return;
   delete fLVContainer;
   delete fContents;
   Cleanup();
}

//______________________________________________________________________________
void TNewChainDlg::OnElementSelected(TObject *obj)
{
   // Emits OnElementSelected signal if dset is not zero.

   if (obj && (obj->IsA() == TChain::Class() ||
       obj->IsA() == TDSet::Class())) {
      Emit("OnElementSelected(TObject *)", (Long_t)obj);
   }
}

//______________________________________________________________________________
void TNewChainDlg::OnElementClicked(TGLVEntry *entry, Int_t)
{
   // Handle click in the Memory list view and put the type
   // and name of selected object in the text entry.

   fChain = (TObject *)entry->GetUserData();
   if (fChain->IsA() == TChain::Class()) {
      TString s = TString::Format("%s : %s" , ((TChain *)fChain)->GetTitle(),
                                  ((TChain *)fChain)->GetName());
      fName->SetText(s);
   }
   else if (fChain->IsA() == TDSet::Class()) {
      TString s = TString::Format("%s : %s" , ((TDSet *)fChain)->GetName(),
                                  ((TDSet *)fChain)->GetObjName());
      fName->SetText(s);
   }
   fOkButton->SetEnabled(kTRUE);
}

//______________________________________________________________________________
void TNewChainDlg::UpdateList()
{
   // Update Memory list view.

   TGLVEntry *item=0;
   TObject *obj = 0;
   fChains = gROOT->GetListOfDataSets();
   fLVContainer->RemoveAll();
   if (!fChains) return;
   TIter next(fChains);
   // loop on the list of chains/datasets in memory,
   // and fill the associated listview
   while ((obj = (TObject *)next())) {
      item = 0;
      if (obj->IsA() == TChain::Class()) {
         const char *title = ((TChain *)obj)->GetTitle();
         if (strlen(title) == 0)
            ((TChain *)obj)->SetTitle("TChain");
         item = new TGLVEntry(fLVContainer, ((TChain *)obj)->GetName(),
                              ((TChain *)obj)->GetTitle());
      }
      else if (obj->IsA() == TDSet::Class()) {
         item = new TGLVEntry(fLVContainer, ((TDSet *)obj)->GetObjName(),
                              ((TDSet *)obj)->GetName());
      }
      if (item) {
         item->SetUserData(obj);
         fLVContainer->AddItem(item);
      }
   }
   fClient->NeedRedraw(fLVContainer);
   Resize();
}

//______________________________________________________________________________
void TNewChainDlg::DisplayDirectory(const TString &fname)
{
   // Display content of directory.

   fContents->SetDefaultHeaders();
   gSystem->ChangeDirectory(fname);
   fContents->ChangeDirectory(fname);
   fContents->DisplayDirectory();
   fContents->AddFile("..");  // up level directory
   Resize();
}

//______________________________________________________________________________
void TNewChainDlg::OnDoubleClick(TGLVEntry* f, Int_t btn)
{
   // Handle double click in the File container.

   if (btn!=kButton1) return;
   gVirtualX->SetCursor(fContents->GetId(),gVirtualX->CreateCursor(kWatch));

   TString name(f->GetTitle());

   // Check if the file is a root macro file type
   if (name.Contains(".C")) {
      // form the command
      TString command = TString::Format(".x %s/%s",
                        gSystem->UnixPathName(fContents->GetDirectory()),
                        name.Data());
      // and process
      gApplication->ProcessLine(command.Data());
      UpdateList();
   } else {
      // if double clicked on a directory, then display it
      DisplayDirectory(name);
   }
   gVirtualX->SetCursor(fContents->GetId(),gVirtualX->CreateCursor(kPointer));
}

//______________________________________________________________________________
Bool_t TNewChainDlg::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
{
   // Process messages for new chain dialog.

   switch (GET_MSG(msg)) {
      case kC_COMMAND:
         switch (GET_SUBMSG(msg)) {
            case kCM_BUTTON:
               switch (parm1) {

                  case 0:
                     // Apply button
                     fOkButton->SetEnabled(kFALSE);
                     OnElementSelected(fChain);
                     DeleteWindow();
                     break;

                  case 1:
                     // Close button
                     fChain = 0;
                     DeleteWindow();
                     break;
               }
               break;
            default:
               break;
         }
         break;

      case kC_CONTAINER:
         switch (GET_SUBMSG(msg)) {
            case kCT_ITEMDBLCLICK:
               if (parm1==kButton1)
                  OnDoubleClick((TGLVEntry*)fContents->GetLastActive(), parm1);
               break;
         }
         break;
      default:
         break;
   }
   return kTRUE;
}

//______________________________________________________________________________
void TNewChainDlg::CloseWindow()
{
   // Close file dialog.

   DeleteWindow();
}


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

//______________________________________________________________________________
TNewQueryDlg::TNewQueryDlg(TSessionViewer *gui, Int_t Width, Int_t Height,
         TQueryDescription *query, Bool_t editmode) :
         TGTransientFrame(gClient->GetRoot(), gui, Width, Height)
{
   // Create a new Query dialog, used by the Session Viewer, to Edit a Query if
   // the editmode flag is set, or to create a new one if not set.

   Window_t wdummy;
   Int_t  ax, ay;
   fEditMode = editmode;
   fModified = kFALSE;
   fChain = 0;
   fQuery = query;
   if (fQuery && fQuery->fChain) {
      fChain = fQuery->fChain;
   }
   Build(gui);
   // if in edit mode, update fields with query description data
   if (editmode && query)
      UpdateFields(query);
   else if (!editmode) {
      TQueryDescription *fquery;
      fquery = (TQueryDescription *)fViewer->GetActDesc()->fQueries->Last();
      if(fquery)
         fTxtQueryName->SetText(fquery->fQueryName);
      else
         fTxtQueryName->SetText("Query 1");
   }
   MapSubwindows();
   Resize(Width, Height);
   // hide options frame
   fFrmNewQuery->HideFrame(fFrmMore);
   fBtnMore->SetText(" More >> ");
   SetWMSizeHints(Width+5, Height+25, Width+5, Height+25, 1, 1);
   ChangeOptions(GetOptions() | kFixedSize);
   Layout();
   SetWindowName("Query Dialog");
   // Position relative to parent
   gVirtualX->TranslateCoordinates( fViewer->GetId(),
                                    fClient->GetDefaultRoot()->GetId(),
                                    0, 0, ax, ay, wdummy);
   Move(ax + fViewer->GetWidth()/2, ay + 35);
}

//______________________________________________________________________________
TNewQueryDlg::~TNewQueryDlg()
{
   // Delete query dialog.

   if (IsZombie()) return;
   Cleanup();
}

//______________________________________________________________________________
void TNewQueryDlg::Build(TSessionViewer *gui)
{
   // Build the "new query" dialog.

   TGButton*   btnTmp;
   fViewer = gui;
   SetLayoutManager(new TGVerticalLayout(this));
   SetCleanup(kDeepCleanup);
   SetMinWidth(500);
   fFrmNewQuery = new TGGroupFrame(this, "New Query");
   fFrmNewQuery->SetCleanup(kDeepCleanup);

   AddFrame(fFrmNewQuery, new TGLayoutHints(kLHintsExpandX |
         kLHintsExpandY, 2, 2, 2, 2));
   fFrmNewQuery->SetLayoutManager(new TGTableLayout(fFrmNewQuery, 6, 5));

   // add "Query Name" label and text entry
   fFrmNewQuery->AddFrame(new TGLabel(fFrmNewQuery, "Query Name :"),
         new TGTableLayoutHints(0, 1, 0, 1, kLHintsCenterY, 0, 5, 4, 0));
   fFrmNewQuery->AddFrame(fTxtQueryName = new TGTextEntry(fFrmNewQuery,
         (const char *)0, 1), new TGTableLayoutHints(1, 2, 0, 1,
         kLHintsCenterY, 5, 5, 4, 0));

   // add "TChain" label and text entry
   fFrmNewQuery->AddFrame(new TGLabel(fFrmNewQuery, "TChain :"),
         new TGTableLayoutHints(0, 1, 1, 2, kLHintsCenterY, 0, 5, 4, 0));
   fFrmNewQuery->AddFrame(fTxtChain = new TGTextEntry(fFrmNewQuery,
         (const char *)0, 2), new TGTableLayoutHints(1, 2, 1, 2,
         kLHintsCenterY, 5, 5, 4, 0));
   fTxtChain->SetToolTipText("Specify TChain or TDSet from memory or file");
   fTxtChain->SetEnabled(kFALSE);
   // add "Browse" button
   fFrmNewQuery->AddFrame(btnTmp = new TGTextButton(fFrmNewQuery, "Browse..."),
         new TGTableLayoutHints(2, 3, 1, 2, kLHintsCenterY, 5, 0, 4, 8));
   btnTmp->Connect("Clicked()", "TNewQueryDlg", this, "OnBrowseChain()");

   // add "Selector" label and text entry
   fFrmNewQuery->AddFrame(new TGLabel(fFrmNewQuery, "Selector :"),
         new TGTableLayoutHints(0, 1, 2, 3, kLHintsCenterY, 0, 5, 0, 0));
   fFrmNewQuery->AddFrame(fTxtSelector = new TGTextEntry(fFrmNewQuery,
         (const char *)0, 3), new TGTableLayoutHints(1, 2, 2, 3,
         kLHintsCenterY, 5, 5, 0, 0));
   // add "Browse" button
   fFrmNewQuery->AddFrame(btnTmp = new TGTextButton(fFrmNewQuery, "Browse..."),
         new TGTableLayoutHints(2, 3, 2, 3, kLHintsCenterY, 5, 0, 0, 8));
   btnTmp->Connect("Clicked()", "TNewQueryDlg", this, "OnBrowseSelector()");

   // add "Less <<" ("More >>") button
   fFrmNewQuery->AddFrame(fBtnMore = new TGTextButton(fFrmNewQuery, " Less << "),
         new TGTableLayoutHints(2, 3, 4, 5, kLHintsCenterY, 5, 5, 4, 0));
   fBtnMore->Connect("Clicked()", "TNewQueryDlg", this, "OnNewQueryMore()");

   // add (initially hidden) options frame
   fFrmMore = new TGCompositeFrame(fFrmNewQuery, 200, 200);
   fFrmMore->SetCleanup(kDeepCleanup);

   fFrmNewQuery->AddFrame(fFrmMore, new TGTableLayoutHints(0, 3, 5, 6,
         kLHintsExpandX | kLHintsExpandY));
   fFrmMore->SetLayoutManager(new TGTableLayout(fFrmMore, 4, 3));

   // add "Options" label and text entry
   fFrmMore->AddFrame(new TGLabel(fFrmMore, "Options :"),
         new TGTableLayoutHints(0, 1, 0, 1, kLHintsCenterY, 0, 5, 0, 0));
   fFrmMore->AddFrame(fTxtOptions = new TGTextEntry(fFrmMore,
         (const char *)0, 4), new TGTableLayoutHints(1, 2, 0, 1, 0, 22,
         0, 0, 8));
   fTxtOptions->SetText("ASYN");

   // add "Nb Entries" label and number entry
   fFrmMore->AddFrame(new TGLabel(fFrmMore, "Nb Entries :"),
         new TGTableLayoutHints(0, 1, 1, 2, kLHintsCenterY, 0, 5, 0, 0));
   fFrmMore->AddFrame(fNumEntries = new TGNumberEntry(fFrmMore, 0, 5, -1,
         TGNumberFormat::kNESInteger, TGNumberFormat::kNEAAnyNumber,
         TGNumberFormat::kNELNoLimits), new TGTableLayoutHints(1, 2, 1, 2,
         0, 22, 0, 0, 8));
   fNumEntries->SetIntNumber(-1);
   // add "First Entry" label and number entry
   fFrmMore->AddFrame(new TGLabel(fFrmMore, "First entry :"),
         new TGTableLayoutHints(0, 1, 2, 3, kLHintsCenterY, 0, 5, 0, 0));
   fFrmMore->AddFrame(fNumFirstEntry = new TGNumberEntry(fFrmMore, 0, 5, -1,
         TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative,
         TGNumberFormat::kNELNoLimits), new TGTableLayoutHints(1, 2, 2, 3, 0,
         22, 0, 0, 8));

   // add "Event list" label and text entry
   fFrmMore->AddFrame(new TGLabel(fFrmMore, "Event list :"),
         new TGTableLayoutHints(0, 1, 3, 4, kLHintsCenterY, 0, 5, 0, 0));
   fFrmMore->AddFrame(fTxtEventList = new TGTextEntry(fFrmMore,
         (const char *)0, 6), new TGTableLayoutHints(1, 2, 3, 4, 0, 22,
         5, 0, 0));
   // add "Browse" button
   fFrmMore->AddFrame(btnTmp = new TGTextButton(fFrmMore, "Browse..."),
         new TGTableLayoutHints(2, 3, 3, 4, 0, 6, 0, 0, 8));
   btnTmp->Connect("Clicked()", "TNewQueryDlg", this, "OnBrowseEventList()");

   fTxtQueryName->Associate(this);
   fTxtChain->Associate(this);
   fTxtSelector->Associate(this);
   fTxtOptions->Associate(this);
   fNumEntries->Associate(this);
   fNumFirstEntry->Associate(this);
   fTxtEventList->Associate(this);

   fTxtQueryName->Connect("TextChanged(char*)", "TNewQueryDlg", this,
                        "SettingsChanged()");
   fTxtChain->Connect("TextChanged(char*)", "TNewQueryDlg", this,
                        "SettingsChanged()");
   fTxtSelector->Connect("TextChanged(char*)", "TNewQueryDlg", this,
                        "SettingsChanged()");
   fTxtOptions->Connect("TextChanged(char*)", "TNewQueryDlg", this,
                        "SettingsChanged()");
   fNumEntries->Connect("ValueChanged(Long_t)", "TNewQueryDlg", this,
                        "SettingsChanged()");
   fNumFirstEntry->Connect("ValueChanged(Long_t)", "TNewQueryDlg", this,
                        "SettingsChanged()");
   fTxtEventList->Connect("TextChanged(char*)", "TNewQueryDlg", this,
                        "SettingsChanged()");

   TGCompositeFrame *tmp;
   AddFrame(tmp = new TGCompositeFrame(this, 140, 20, kHorizontalFrame),
         new TGLayoutHints(kLHintsLeft | kLHintsExpandX));
   tmp->SetCleanup(kDeepCleanup);
   // Add "Save" and "Save & Submit" buttons if we are in edition mode
   // or "Add" and "Add & Submit" if we are not in edition mode.
   if (fEditMode) {
      fBtnSave = new TGTextButton(tmp, "Save");
      fBtnSubmit = new TGTextButton(tmp, "Save && Submit");
   }
   else {
      fBtnSave = new TGTextButton(tmp, "Add");
      fBtnSubmit = new TGTextButton(tmp, "Add && Submit");
   }
   tmp->AddFrame(fBtnSave, new TGLayoutHints(kLHintsLeft | kLHintsExpandX,
         3, 3, 3, 3));
   tmp->AddFrame(fBtnSubmit, new TGLayoutHints(kLHintsLeft | kLHintsExpandX,
         3, 3, 3, 3));
   fBtnSave->Connect("Clicked()", "TNewQueryDlg", this, "OnBtnSaveClicked()");
   fBtnSubmit->Connect("Clicked()", "TNewQueryDlg", this, "OnBtnSubmitClicked()");
   tmp->AddFrame(fBtnClose = new TGTextButton(tmp, "Close"),
         new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 3, 3, 3, 3));
   fBtnClose->Connect("Clicked()", "TNewQueryDlg", this, "OnBtnCloseClicked()");
   fBtnSave->SetState(kButtonDisabled);
   fBtnSubmit->SetState(kButtonDisabled);
}

//______________________________________________________________________________
void TNewQueryDlg::CloseWindow()
{
   // Called when window is closed via the window manager.

   DeleteWindow();
}

//______________________________________________________________________________
void TNewQueryDlg::OnNewQueryMore()
{
   // Show/hide options frame and update button text accordingly.

   if (fFrmNewQuery->IsVisible(fFrmMore)) {
      fFrmNewQuery->HideFrame(fFrmMore);
      fBtnMore->SetText(" More >> ");
   }
   else {
      fFrmNewQuery->ShowFrame(fFrmMore);
      fBtnMore->SetText(" Less << ");
   }
}

//______________________________________________________________________________
void TNewQueryDlg::OnBrowseChain()
{
   // Call new chain dialog.

   TNewChainDlg *dlg = new TNewChainDlg(fClient->GetRoot(), this);
   dlg->Connect("OnElementSelected(TObject *)", "TNewQueryDlg",
         this, "OnElementSelected(TObject *)");
}

//____________________________________________________________________________
void TNewQueryDlg::OnElementSelected(TObject *obj)
{
   // Handle OnElementSelected signal coming from new chain dialog.

   if (obj) {
      fChain = obj;
      if (obj->IsA() == TChain::Class())
         fTxtChain->SetText(((TChain *)fChain)->GetName());
      else if (obj->IsA() == TDSet::Class())
         fTxtChain->SetText(((TDSet *)fChain)->GetObjName());
   }
}

//______________________________________________________________________________
void TNewQueryDlg::OnBrowseSelector()
{
   // Open file browser to choose selector macro.

   TGFileInfo fi;
   fi.fFileTypes = gFileTypes;
   new TGFileDialog(fClient->GetRoot(), this, kFDOpen, &fi);
   if (!fi.fFilename) return;
   fTxtSelector->SetText(gSystem->UnixPathName(fi.fFilename));
}

//______________________________________________________________________________
void TNewQueryDlg::OnBrowseEventList()
{
   //Browse event list

}

//______________________________________________________________________________
void TNewQueryDlg::OnBtnSaveClicked()
{
   // Save current settings in main session viewer.

   // if we are in edition mode and query description is valid,
   // use it, otherwise create a new one
   TQueryDescription *newquery;
   if (fEditMode && fQuery)
      newquery = fQuery;
   else
      newquery = new TQueryDescription();

   // update query description fields
   newquery->fSelectorString  = fTxtSelector->GetText();
   if (fChain) {
      newquery->fTDSetString  = fChain->GetName();
      newquery->fChain        = fChain;
   }
   else {
      newquery->fTDSetString = "";
      newquery->fChain       = 0;
   }
   newquery->fQueryName      = fTxtQueryName->GetText();
   newquery->fOptions.Form("%s",fTxtOptions->GetText());
   newquery->fNoEntries      = fNumEntries->GetIntNumber();
   newquery->fFirstEntry     = fNumFirstEntry->GetIntNumber();
   newquery->fNbFiles        = 0;
   newquery->fResult         = 0;

   if (newquery->fChain) {
      if (newquery->fChain->IsA() == TChain::Class())
         newquery->fNbFiles = ((TChain *)newquery->fChain)->GetListOfFiles()->GetEntriesFast();
      else if (newquery->fChain->IsA() == TDSet::Class())
         newquery->fNbFiles = ((TDSet *)newquery->fChain)->GetListOfElements()->GetSize();
   }
   if (!fEditMode) {
      // if not in editor mode, create a new list tree item
      // and set user data to the newly created query description
      newquery->fResult = 0;
      newquery->fStatus = TQueryDescription::kSessionQueryCreated;

      TQueryDescription *fquery;
      fquery = (TQueryDescription *)fViewer->GetActDesc()->fQueries->FindObject(newquery->fQueryName);
      while (fquery) {
         int e = 1, j = 0, idx = 0;
         const char *name = fquery->fQueryName;
         for (int i=strlen(name)-1;i>0;i--) {
            if (isdigit(name[i])) {
               idx += (name[i]-'0') * e;
               e *= 10;
               j++;
            }
            else
               break;
         }
         if (idx > 0) {
            idx++;
            newquery->fQueryName.Remove(strlen(name)-j,j);
            newquery->fQueryName.Append(Form("%d",idx));
         }
         else
            newquery->fQueryName.Append(" 1");
         fquery = (TQueryDescription *)fViewer->GetActDesc()->fQueries->FindObject(newquery->fQueryName);
      }
      fTxtQueryName->SetText(newquery->fQueryName);
      fViewer->GetActDesc()->fQueries->Add((TObject *)newquery);
      TGListTreeItem *item = fViewer->GetSessionHierarchy()->FindChildByData(
         fViewer->GetSessionItem(), fViewer->GetActDesc());
      TGListTreeItem *item2 = fViewer->GetSessionHierarchy()->AddItem(item,
         newquery->fQueryName, fViewer->GetQueryConPict(), fViewer->GetQueryConPict());
      item2->SetUserData(newquery);
      fViewer->GetSessionHierarchy()->OpenItem(item);
      fViewer->GetSessionHierarchy()->ClearHighlighted();
      fViewer->GetSessionHierarchy()->HighlightItem(item2);
      fViewer->GetSessionHierarchy()->SetSelected(item2);
      fViewer->OnListTreeClicked(item2, 1, 0, 0);
   }
   else {
      // else if in editor mode, just update user data with modified
      // query description
      TGListTreeItem *item = fViewer->GetSessionHierarchy()->GetSelected();
      fViewer->GetSessionHierarchy()->RenameItem(item, newquery->fQueryName);
      item->SetUserData(newquery);
   }
   // update list tree
   fClient->NeedRedraw(fViewer->GetSessionHierarchy());
   fTxtQueryName->SelectAll();
   fTxtQueryName->SetFocus();
   fViewer->WriteConfiguration();
   fModified = kFALSE;
}

//______________________________________________________________________________
void TNewQueryDlg::OnBtnSubmitClicked()
{
   // Save and submit query description.

   OnBtnSaveClicked();
   fViewer->GetQueryFrame()->OnBtnSubmit();
}

//______________________________________________________________________________
void TNewQueryDlg::OnBtnCloseClicked()
{
   // Close dialog.

   Int_t result = kMBNo;
   if (fModified) {
      new TGMsgBox(fClient->GetRoot(), this, "Modified Settings",
                   "Do you wish to SAVE changes ?", 0,
                   kMBYes | kMBNo | kMBCancel, &result);
      if (result == kMBYes) {
         OnBtnSaveClicked();
      }
   }
   if (result == kMBNo) {
      DeleteWindow();
   }
}

//______________________________________________________________________________
void TNewQueryDlg::Popup()
{
   // Display dialog and set focus to query name text entry.

   MapWindow();
   fTxtQueryName->SetFocus();
}

//______________________________________________________________________________
void TNewQueryDlg::SettingsChanged()
{
   // Settings have changed, update GUI accordingly.

   if (fEditMode && fQuery) {
      if ((strcmp(fQuery->fSelectorString.Data(), fTxtSelector->GetText())) ||
          (strcmp(fQuery->fQueryName.Data(), fTxtQueryName->GetText())) ||
          (strcmp(fQuery->fOptions.Data(), fTxtOptions->GetText())) ||
          (fQuery->fNoEntries  != fNumEntries->GetIntNumber()) ||
          (fQuery->fFirstEntry != fNumFirstEntry->GetIntNumber()) ||
          (fQuery->fChain != fChain)) {
         fModified = kTRUE;
      }
      else {
         fModified = kFALSE;
      }
   }
   else {
      if ((fTxtQueryName->GetText()) &&
         ((fTxtQueryName->GetText()) ||
          (fTxtChain->GetText())))
         fModified = kTRUE;
      else
         fModified = kFALSE;
   }
   if (fModified) {
      fBtnSave->SetState(kButtonUp);
      fBtnSubmit->SetState(kButtonUp);
   }
   else {
      fBtnSave->SetState(kButtonDisabled);
      fBtnSubmit->SetState(kButtonDisabled);
   }
}

//______________________________________________________________________________
void TNewQueryDlg::UpdateFields(TQueryDescription *desc)
{
   // Update entry fields with query description values.

   fQuery = desc;
   fTxtQueryName->SetText(desc->fQueryName);
   fTxtChain->SetText("");
   if (desc->fChain)
      fTxtChain->SetText(desc->fTDSetString);
   fTxtSelector->SetText(desc->fSelectorString);
   fTxtOptions->SetText(desc->fOptions);
   fNumEntries->SetIntNumber(desc->fNoEntries);
   fNumFirstEntry->SetIntNumber(desc->fFirstEntry);
   fTxtEventList->SetText(desc->fEventList);
}
//______________________________________________________________________________
Bool_t TNewQueryDlg::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
{
   // Process messages for new query dialog.
   // Essentially used to navigate between text entry fields.

   switch (GET_MSG(msg)) {
      case kC_TEXTENTRY:
         switch (GET_SUBMSG(msg)) {
            case kTE_ENTER:
            case kTE_TAB:
               switch (parm1) {
                  case 1: // Query Name
                     fTxtChain->SelectAll();
                     fTxtChain->SetFocus();
                     break;
                  case 2: // Chain Name
                     fTxtSelector->SelectAll();
                     fTxtSelector->SetFocus();
                     break;
                  case 3: // Selector Name
                     fTxtOptions->SelectAll();
                     fTxtOptions->SetFocus();
                     break;
                  case 4: // Options
                     fTxtEventList->SelectAll();
                     fTxtEventList->SetFocus();
                     break;
                  case 6: // Event List
                     fTxtQueryName->SelectAll();
                     fTxtQueryName->SetFocus();
                     break;
               }
               break;

            default:
               break;
         }
         break;

      default:
         break;
   }
   return kTRUE;
}

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

//______________________________________________________________________________
TUploadDataSetDlg::TUploadDataSetDlg(TSessionViewer *gui, Int_t w, Int_t h) :
         TGTransientFrame(gClient->GetRoot(), gui, w, h)
{
   // Create a Upload DataSet dialog box. Used to create and upload a dataset

   if (!gui) return;
   fViewer = gui;
   fUploading = kFALSE;

   SetCleanup(kDeepCleanup);
   TGHorizontalFrame *hFrame1 = new TGHorizontalFrame(this);
   hFrame1->SetCleanup(kDeepCleanup);
   hFrame1->AddFrame(new TGLabel(hFrame1,"Name of DataSet :"),
                     new TGLayoutHints(kLHintsLeft | kLHintsCenterY,
                     10, 10, 5, 5));
   fDSetName = new TGTextEntry(hFrame1, new TGTextBuffer(50));
   fDSetName->SetText("DataSet1");
   fDSetName->Resize(150, fDSetName->GetDefaultHeight());
   hFrame1->AddFrame(fDSetName, new TGLayoutHints(kLHintsLeft | kLHintsCenterY,
                     10, 10, 5, 5));
   AddFrame(hFrame1, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,
            2, 2, 2, 2));

   // "DataSet Files" group frame
   TGGroupFrame *groupFrame1 = new TGGroupFrame(this, "DataSet Files");
   groupFrame1->SetCleanup(kDeepCleanup);

   // horizontal frame for files location URL
   TGHorizontalFrame *hFrame11 = new TGHorizontalFrame(groupFrame1);
   hFrame11->SetCleanup(kDeepCleanup);
   hFrame11->AddFrame(new TGLabel(hFrame11,"Location URL :"),
                     new TGLayoutHints(kLHintsLeft | kLHintsCenterY,
                     10, 10, 5, 5));
   fLocationURL = new TGTextEntry(hFrame11, new TGTextBuffer(150));
   fLocationURL->SetToolTipText("Enter location URL ( i.e \" root://lxplus//castor/cern.ch/user/n/name/*.root \" )");
   fLocationURL->Resize(210, fLocationURL->GetDefaultHeight());
   hFrame11->AddFrame(fLocationURL, new TGLayoutHints(kLHintsLeft |
                      kLHintsCenterY, 10, 10, 5, 5));
   fAddButton = new TGTextButton(hFrame11, " Add >> ", 0);
   fAddButton->SetToolTipText("Add file(s) to the list");
   fAddButton->Associate(this);
   hFrame11->AddFrame(fAddButton, new TGLayoutHints(kLHintsLeft | kLHintsCenterY |
                      kLHintsExpandX, 5, 10, 5, 5));
   groupFrame1->AddFrame(hFrame11, new TGLayoutHints(kLHintsLeft | kLHintsTop |
                         kLHintsExpandX, 2, 2, 2, 2));
   // horizontal frame for the list view displaying list of files
   // and for a vertical frame with control buttons
   TGHorizontalFrame *hFrame2 = new TGHorizontalFrame(groupFrame1);
   hFrame2->SetCleanup(kDeepCleanup);

   // list view
   // Add TGListView used to show list of files
   fListView = new TGListView(hFrame2, 300, 100);
   fLVContainer = new TGLVContainer(fListView, kSunkenFrame, GetWhitePixel());
   fLVContainer->Associate(fListView);
   fLVContainer->SetViewMode(kLVDetails);
   fLVContainer->SetCleanup(kDeepCleanup);
   fLVContainer->SetHeaders(1);
   fLVContainer->SetHeader("File Name", kTextLeft, kTextLeft , 0);
   hFrame2->AddFrame(fListView, new TGLayoutHints(kLHintsLeft | kLHintsTop |
                     kLHintsExpandX | kLHintsExpandY, 2, 2, 10, 10));

   // vertical frame for control buttons
   TGVerticalFrame *vFrame1 = new TGVerticalFrame(hFrame2);
   vFrame1->SetCleanup(kDeepCleanup);

   fBrowseButton = new TGTextButton(vFrame1, " Browse... ", 1);
   fBrowseButton->SetToolTipText("Add file(s) to the list");
   fBrowseButton->Associate(this);
   vFrame1->AddFrame(fBrowseButton, new TGLayoutHints(kLHintsLeft | kLHintsTop |
                     kLHintsExpandX, 15, 5, 5, 5));
   fRemoveButton = new TGTextButton(vFrame1, " Remove ", 2);
   fRemoveButton->SetToolTipText("Remove selected file from the list");
   fRemoveButton->Associate(this);
   vFrame1->AddFrame(fRemoveButton, new TGLayoutHints(kLHintsLeft | kLHintsTop |
                     kLHintsExpandX, 15, 5, 5, 5));
   fClearButton = new TGTextButton(vFrame1, " Clear ", 3);
   fClearButton->SetToolTipText("Clear list of files");
   fClearButton->Associate(this);
   vFrame1->AddFrame(fClearButton, new TGLayoutHints(kLHintsLeft | kLHintsTop |
                     kLHintsExpandX, 15, 5, 5, 5));

   fOverwriteDSet = new TGCheckButton(vFrame1, "Overwrite DataSet");
   fOverwriteDSet->SetToolTipText("Overwrite DataSet");
   vFrame1->AddFrame(fOverwriteDSet, new TGLayoutHints(kLHintsLeft | kLHintsTop |
                     kLHintsExpandX, 15, 5, 5, 5));
   fOverwriteFiles = new TGCheckButton(vFrame1, "Overwrite Files");
   fOverwriteFiles->SetToolTipText("Overwrite files in DataSet");
   vFrame1->AddFrame(fOverwriteFiles, new TGLayoutHints(kLHintsLeft | kLHintsTop |
                     kLHintsExpandX, 15, 5, 5, 5));
   fAppendFiles = new TGCheckButton(vFrame1, "Append Files");
   fAppendFiles->SetToolTipText("Append files in DataSet");
   vFrame1->AddFrame(fAppendFiles, new TGLayoutHints(kLHintsLeft | kLHintsTop |
                     kLHintsExpandX, 15, 5, 5, 5));

   fOverwriteDSet->Connect("Toggled(Bool_t)", "TUploadDataSetDlg", this,
         "OnOverwriteDataset(Bool_t)");
   fOverwriteFiles->Connect("Toggled(Bool_t)", "TUploadDataSetDlg", this,
         "OnOverwriteFiles(Bool_t)");
   fAppendFiles->Connect("Toggled(Bool_t)", "TUploadDataSetDlg", this,
         "OnAppendFiles(Bool_t)");

   hFrame2->AddFrame(vFrame1, new TGLayoutHints(kLHintsRight | kLHintsTop |
                     kLHintsExpandY, 2, 2, 2, 2));
   groupFrame1->AddFrame(hFrame2, new TGLayoutHints(kLHintsLeft | kLHintsTop |
                         kLHintsExpandX | kLHintsExpandY, 2, 2, 2, 2));

   AddFrame(groupFrame1, new TGLayoutHints(kLHintsLeft | kLHintsTop |
            kLHintsExpandX, 5, 5, 2, 2));

   // horizontal frame for destination URL
   TGHorizontalFrame *hFrame3 = new TGHorizontalFrame(this);
   hFrame3->SetCleanup(kDeepCleanup);
   hFrame3->AddFrame(new TGLabel(hFrame3,"Destination URL :"),
                     new TGLayoutHints(kLHintsLeft | kLHintsCenterY,
                     15, 10, 5, 5));
   fDestinationURL = new TGTextEntry(hFrame3, new TGTextBuffer(150));
   if (fViewer->GetActDesc()->fConnected &&
      fViewer->GetActDesc()->fAttached &&
      fViewer->GetActDesc()->fProof &&
      fViewer->GetActDesc()->fProof->IsValid()) {
      // const char *dest = fViewer->GetActDesc()->fProof->GetDataPoolUrl();
      // fDestinationURL->SetText(dest);
   }
   fDestinationURL->SetToolTipText("Enter destination URL ( relative to \" root://host//proofpool/user/ \" )");
   fDestinationURL->Resize(305, fDestinationURL->GetDefaultHeight());
   hFrame3->AddFrame(fDestinationURL, new TGLayoutHints(kLHintsLeft |
                     kLHintsCenterY, 10, 15, 5, 5));
   AddFrame(hFrame3, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,
            2, 2, 2, 2));

   // horizontal frame for upload and close buttons
   TGHorizontalFrame *hFrame4 = new TGHorizontalFrame(this);
   hFrame4->SetCleanup(kDeepCleanup);
   fUploadButton = new TGTextButton(hFrame4, "Upload DataSet", 10);
   fUploadButton->SetToolTipText("Upload the dataset to the cluster");
   fUploadButton->Associate(this);
   hFrame4->AddFrame(fUploadButton, new TGLayoutHints(kLHintsLeft | kLHintsCenterY |
                     kLHintsExpandX, 15, 15, 2, 2));
   fCloseDlgButton = new TGTextButton(hFrame4, "Close Dialog", 11);
   fCloseDlgButton->SetToolTipText("Close the dialog");
   fCloseDlgButton->Associate(this);
   hFrame4->AddFrame(fCloseDlgButton, new TGLayoutHints(kLHintsLeft | kLHintsCenterY |
                     kLHintsExpandX, 15, 15, 2, 2));
   AddFrame(hFrame4, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsExpandX,
            2, 2, 2, 2));

   // position relative to the parent's window
   Window_t wdummy;
   Int_t  ax, ay;
   gVirtualX->TranslateCoordinates( gui->GetId(),
                                    fClient->GetDefaultRoot()->GetId(),
                                    0, 0, ax, ay, wdummy);
   Move(ax + 250, ay + 200);

   SetWindowName("Upload DataSet Dialog");
   MapSubwindows();
   MapWindow();

   Resize(w, h);
   SetWMSizeHints(w+5, h+5, w+5, h+5, 1, 1);
   ChangeOptions(GetOptions() | kFixedSize);
   Layout();
}

//______________________________________________________________________________
TUploadDataSetDlg::~TUploadDataSetDlg()
{
   // Delete chain dialog.
   if (IsZombie()) return;
   Cleanup();
}

//______________________________________________________________________________
void TUploadDataSetDlg::CloseWindow()
{
   // Close upload dataset dialog.

   if (!fUploading)
      DeleteWindow();
}

//______________________________________________________________________________
Bool_t TUploadDataSetDlg::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
{
   // Process messages for upload dataset dialog.

   switch (GET_MSG(msg)) {
      case kC_COMMAND:
         switch (GET_SUBMSG(msg)) {
            case kCM_BUTTON:
               switch (parm1) {
                  case 0:
                     // Add button
                     if (fLocationURL->GetText())
                        AddFiles(fLocationURL->GetText());
                     break;
                  case 1:
                     // Add button
                     BrowseFiles();
                     break;
                  case 2:
                     // Remove button
                     RemoveFile();
                     break;
                  case 3:
                     // Clear button
                     ClearFiles();
                     break;
                  case 10:
                     // Upload button
                     UploadDataSet();
                     break;
                  case 11:
                     // Close button
                     CloseWindow();
                     break;
               }
               break;
            default:
               break;
         }
         break;

      default:
         break;
   }
   return kTRUE;
}

//______________________________________________________________________________
void TUploadDataSetDlg::AddFiles(const char *fileName)
{
   // Add File name(s) from the file location URL to the list view.

   if (strlen(fileName) < 5)
      return;
   if (strstr(fileName,"*.")) {
      // wildcarding case
      void *filesDir = gSystem->OpenDirectory(gSystem->DirName(fileName));
      const char* ent;
      TString filesExp(gSystem->BaseName(fileName));
      filesExp.ReplaceAll("*",".*");
      TRegexp rg(filesExp);
      while ((ent = gSystem->GetDirEntry(filesDir))) {
         TString entryString(ent);
         if (entryString.Index(rg) != kNPOS &&
             gSystem->AccessPathName(Form("%s/%s", gSystem->DirName(fileName),
                ent), kReadPermission) == kFALSE) {
            TString text = TString::Format("%s/%s",
               gSystem->UnixPathName(gSystem->DirName(fileName)), ent);
            if (!fLVContainer->FindItem(text.Data())) {
               TGLVEntry *entry = new TGLVEntry(fLVContainer, text.Data(), text.Data());
               entry->SetPictures(gClient->GetPicture("rootdb_t.xpm"),
                                  gClient->GetPicture("rootdb_t.xpm"));
               fLVContainer->AddItem(entry);
            }
         }
      }
   }
   else {
      // single file
      if (!fLVContainer->FindItem(fileName)) {
         TGLVEntry *entry = new TGLVEntry(fLVContainer, fileName, fileName);
         entry->SetPictures(gClient->GetPicture("rootdb_t.xpm"),
                            gClient->GetPicture("rootdb_t.xpm"));
         fLVContainer->AddItem(entry);
      }
   }
   // update list view
   fListView->AdjustHeaders();
   fListView->Layout();
   fClient->NeedRedraw(fLVContainer);
}

//______________________________________________________________________________
void TUploadDataSetDlg::AddFiles(TList *fileList)
{
   // Add File name(s) from the file location URL to the list view.

   TObjString *el;
   TIter next(fileList);
   while ((el = (TObjString *) next())) {
      TString fileName = TString::Format("%s/%s",
                  gSystem->UnixPathName(gSystem->DirName(el->GetString())),
                  gSystem->BaseName(el->GetString()));
      // single file
      if (!fLVContainer->FindItem(fileName.Data())) {
         TGLVEntry *entry = new TGLVEntry(fLVContainer, fileName.Data(), fileName.Data());
         entry->SetPictures(gClient->GetPicture("rootdb_t.xpm"),
                            gClient->GetPicture("rootdb_t.xpm"));
         fLVContainer->AddItem(entry);
      }
   }
   // update list view
   fListView->AdjustHeaders();
   fListView->Layout();
   fClient->NeedRedraw(fLVContainer);
}

//______________________________________________________________________________
void TUploadDataSetDlg::BrowseFiles()
{
   // Opens the TGFileDialog to allow user to select local file(s) to be added
   // in the list view of dataset files.

   TGFileInfo fi;
   fi.fFileTypes = gDatasetTypes;
   fi.fFilename  = strdup("*.root");
   new TGFileDialog(fClient->GetRoot(), this, kFDOpen, &fi);
   if (fi.fMultipleSelection && fi.fFileNamesList) {
      AddFiles(fi.fFileNamesList);
   }
   else if (fi.fFilename) {
      AddFiles(fi.fFilename);
   }
}

//______________________________________________________________________________
void TUploadDataSetDlg::ClearFiles()
{
   // Clear content of the list view.

   fLVContainer->RemoveAll();
   fListView->Layout();
   // update list view
   fClient->NeedRedraw(fLVContainer);
}

//______________________________________________________________________________
void TUploadDataSetDlg::OnOverwriteDataset(Bool_t on)
{
   // Notification of Overwrite Dataset check button.

   if (on && fAppendFiles->IsOn())
      fAppendFiles->SetState(kButtonUp);
}

//______________________________________________________________________________
void TUploadDataSetDlg::OnOverwriteFiles(Bool_t)
{
   // Notification of Overwrite Files check button.

}

//______________________________________________________________________________
void TUploadDataSetDlg::OnAppendFiles(Bool_t on)
{
   // Notification of Append Files check button.

   if (on && fOverwriteDSet->IsOn())
      fOverwriteDSet->SetState(kButtonUp);
}

//______________________________________________________________________________
void TUploadDataSetDlg::RemoveFile()
{
   // Remove the selected entry from the list view.

   TGFrame *item = (TGFrame *)fLVContainer->GetLastActive();
   fLVContainer->RemoveItem(item);
   // update list view
   fListView->AdjustHeaders();
   fListView->Layout();
   fClient->NeedRedraw(fLVContainer);
}

//______________________________________________________________________________
void TUploadDataSetDlg::UploadDataSet()
{
   // Upload the dataset to the server.

   Int_t retval;
   TString fileList;
   const char *dsetName = fDSetName->GetText();
   const char *destination = fDestinationURL->GetText();
   UInt_t flags = 0;
   TList *skippedFiles = new TList();
   TList *datasetFiles = new TList();

   if (fUploading)
      return;
   if (!fViewer->GetActDesc()->fConnected ||
       !fViewer->GetActDesc()->fAttached ||
       !fViewer->GetActDesc()->fProof ||
       !fViewer->GetActDesc()->fProof->IsValid()) {
      return;
   }
   // Format upload flags with user selection
   if (fOverwriteDSet->IsOn())
      flags |= TProof::kOverwriteDataSet;
   else
      flags |= TProof::kNoOverwriteDataSet;
   if (fOverwriteFiles->IsOn())
      flags |= TProof::kOverwriteAllFiles;
   else
      flags |= TProof::kOverwriteNoFiles;
   if (fAppendFiles->IsOn()) {
      flags |= TProof::kAppend;
      if (flags & TProof::kNoOverwriteDataSet)
         flags &= ~TProof::kNoOverwriteDataSet;
   }

   Int_t ret = 0;
   TIter next(fLVContainer->GetList());
   TGFrameElement *el;
   TGLVEntry *entry;

   while ((el = (TGFrameElement *)next())) {
      entry = (TGLVEntry *) el->fFrame;
      const char *fname = gSystem->UnixPathName(entry->GetTitle());
      datasetFiles->Add(new TFileInfo(fname));
   }
   fUploading = kTRUE;
   fUploadButton->SetState(kButtonDisabled);
   fCloseDlgButton->SetState(kButtonDisabled);

   if (strlen(destination) < 2) destination = 0;
   ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                  datasetFiles, destination, flags, skippedFiles);
   if (ret == TProof::kDataSetExists) {
      // ask user what to do :
      // cancel/overwrite and change option
      new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
                   TString::Format("The dataset \"%s\" already exists on the cluster ! Overwrite ?",
                   dsetName), kMBIconQuestion, kMBYes | kMBNo | kMBCancel | kMBAppend,
                   &retval);
      if (retval == kMBYes) {
         ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                          datasetFiles, destination,
                          TProof::kOverwriteDataSet |
                          TProof::kOverwriteNoFiles,
                          skippedFiles);
      }
      if (retval == kMBAppend) {
         ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                          datasetFiles, destination,
                          TProof::kAppend |
                          TProof::kOverwriteNoFiles,
                          skippedFiles);
      }
   }
   if (ret == TProof::kError) {
      // Inform user
      new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
                   "Failed uploading dataset/files to the cluster",
                   kMBIconExclamation, kMBOk, &retval);
      fUploading = kFALSE;
      fUploadButton->SetState(kButtonUp);
      fCloseDlgButton->SetState(kButtonUp);
      return;
   }
   // Here we cope with files that existed on the cluster and were skipped.
   if (skippedFiles->GetSize()) {
      TIter nexts(skippedFiles);
      while (TFileInfo *obj = (TFileInfo*)nexts()) {
         // Notify user that file: obj->GetFirstUrl()->GetUrl() exists on
         // the cluster and ask user what to do
         new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
                      TString::Format("The file \"%s\" already exists on the cluster ! Overwrite ?",
                      obj->GetFirstUrl()->GetUrl()), kMBIconQuestion,
                      kMBYes | kMBNo | kMBYesAll | kMBNoAll | kMBDismiss, &retval);
         if (retval == kMBYesAll) {
            ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                           skippedFiles, destination,
                           TProof::kAppend |
                           TProof::kOverwriteAllFiles);
            if (ret == TProof::kError) {
               // Inform user
               new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
                            TString::Format("Failed uploading \"%s\" to the cluster",
                            obj->GetFirstUrl()->GetUrl()), kMBIconExclamation,
                            kMBOk, &retval);
            }
            else {
               new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
                            "Files have been succesfully uploaded to the cluster",
                            kMBIconAsterisk, kMBOk, &retval);
            }
            fUploading = kFALSE;
            fUploadButton->SetState(kButtonUp);
            fCloseDlgButton->SetState(kButtonUp);
            return;
         }
         if ((retval == kMBNoAll) || (retval == kMBDismiss)) {
            break;
         }
         if (retval == kMBYes) {
            // Append one file to the dataSet
            ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                  obj->GetFirstUrl()->GetUrl(), destination,
                  TProof::kAppend | TProof::kOverwriteAllFiles);
            if (ret == TProof::kError) {
               // Inform user
               new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
                            TString::Format("Failed uploading \"%s\" to the cluster",
                            obj->GetFirstUrl()->GetUrl()), kMBIconExclamation,
                            kMBOk, &retval);
            }
            else {
               new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
                            "Files have been succesfully uploaded to the cluster",
                            kMBIconAsterisk, kMBOk, &retval);
            }
         }
      }
      skippedFiles->Clear();
   }
   else {
      new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
                   "Files have been succesfully uploaded to the cluster",
                   kMBIconAsterisk, kMBOk, &retval);
   }
   // finally, update list of datasets in session viewer
   fViewer->GetSessionFrame()->UpdateListOfDataSets();
   fUploading = kFALSE;
   fUploadButton->SetState(kButtonUp);
   fCloseDlgButton->SetState(kButtonUp);
}

 TSessionDialogs.cxx:1
 TSessionDialogs.cxx:2
 TSessionDialogs.cxx:3
 TSessionDialogs.cxx:4
 TSessionDialogs.cxx:5
 TSessionDialogs.cxx:6
 TSessionDialogs.cxx:7
 TSessionDialogs.cxx:8
 TSessionDialogs.cxx:9
 TSessionDialogs.cxx:10
 TSessionDialogs.cxx:11
 TSessionDialogs.cxx:12
 TSessionDialogs.cxx:13
 TSessionDialogs.cxx:14
 TSessionDialogs.cxx:15
 TSessionDialogs.cxx:16
 TSessionDialogs.cxx:17
 TSessionDialogs.cxx:18
 TSessionDialogs.cxx:19
 TSessionDialogs.cxx:20
 TSessionDialogs.cxx:21
 TSessionDialogs.cxx:22
 TSessionDialogs.cxx:23
 TSessionDialogs.cxx:24
 TSessionDialogs.cxx:25
 TSessionDialogs.cxx:26
 TSessionDialogs.cxx:27
 TSessionDialogs.cxx:28
 TSessionDialogs.cxx:29
 TSessionDialogs.cxx:30
 TSessionDialogs.cxx:31
 TSessionDialogs.cxx:32
 TSessionDialogs.cxx:33
 TSessionDialogs.cxx:34
 TSessionDialogs.cxx:35
 TSessionDialogs.cxx:36
 TSessionDialogs.cxx:37
 TSessionDialogs.cxx:38
 TSessionDialogs.cxx:39
 TSessionDialogs.cxx:40
 TSessionDialogs.cxx:41
 TSessionDialogs.cxx:42
 TSessionDialogs.cxx:43
 TSessionDialogs.cxx:44
 TSessionDialogs.cxx:45
 TSessionDialogs.cxx:46
 TSessionDialogs.cxx:47
 TSessionDialogs.cxx:48
 TSessionDialogs.cxx:49
 TSessionDialogs.cxx:50
 TSessionDialogs.cxx:51
 TSessionDialogs.cxx:52
 TSessionDialogs.cxx:53
 TSessionDialogs.cxx:54
 TSessionDialogs.cxx:55
 TSessionDialogs.cxx:56
 TSessionDialogs.cxx:57
 TSessionDialogs.cxx:58
 TSessionDialogs.cxx:59
 TSessionDialogs.cxx:60
 TSessionDialogs.cxx:61
 TSessionDialogs.cxx:62
 TSessionDialogs.cxx:63
 TSessionDialogs.cxx:64
 TSessionDialogs.cxx:65
 TSessionDialogs.cxx:66
 TSessionDialogs.cxx:67
 TSessionDialogs.cxx:68
 TSessionDialogs.cxx:69
 TSessionDialogs.cxx:70
 TSessionDialogs.cxx:71
 TSessionDialogs.cxx:72
 TSessionDialogs.cxx:73
 TSessionDialogs.cxx:74
 TSessionDialogs.cxx:75
 TSessionDialogs.cxx:76
 TSessionDialogs.cxx:77
 TSessionDialogs.cxx:78
 TSessionDialogs.cxx:79
 TSessionDialogs.cxx:80
 TSessionDialogs.cxx:81
 TSessionDialogs.cxx:82
 TSessionDialogs.cxx:83
 TSessionDialogs.cxx:84
 TSessionDialogs.cxx:85
 TSessionDialogs.cxx:86
 TSessionDialogs.cxx:87
 TSessionDialogs.cxx:88
 TSessionDialogs.cxx:89
 TSessionDialogs.cxx:90
 TSessionDialogs.cxx:91
 TSessionDialogs.cxx:92
 TSessionDialogs.cxx:93
 TSessionDialogs.cxx:94
 TSessionDialogs.cxx:95
 TSessionDialogs.cxx:96
 TSessionDialogs.cxx:97
 TSessionDialogs.cxx:98
 TSessionDialogs.cxx:99
 TSessionDialogs.cxx:100
 TSessionDialogs.cxx:101
 TSessionDialogs.cxx:102
 TSessionDialogs.cxx:103
 TSessionDialogs.cxx:104
 TSessionDialogs.cxx:105
 TSessionDialogs.cxx:106
 TSessionDialogs.cxx:107
 TSessionDialogs.cxx:108
 TSessionDialogs.cxx:109
 TSessionDialogs.cxx:110
 TSessionDialogs.cxx:111
 TSessionDialogs.cxx:112
 TSessionDialogs.cxx:113
 TSessionDialogs.cxx:114
 TSessionDialogs.cxx:115
 TSessionDialogs.cxx:116
 TSessionDialogs.cxx:117
 TSessionDialogs.cxx:118
 TSessionDialogs.cxx:119
 TSessionDialogs.cxx:120
 TSessionDialogs.cxx:121
 TSessionDialogs.cxx:122
 TSessionDialogs.cxx:123
 TSessionDialogs.cxx:124
 TSessionDialogs.cxx:125
 TSessionDialogs.cxx:126
 TSessionDialogs.cxx:127
 TSessionDialogs.cxx:128
 TSessionDialogs.cxx:129
 TSessionDialogs.cxx:130
 TSessionDialogs.cxx:131
 TSessionDialogs.cxx:132
 TSessionDialogs.cxx:133
 TSessionDialogs.cxx:134
 TSessionDialogs.cxx:135
 TSessionDialogs.cxx:136
 TSessionDialogs.cxx:137
 TSessionDialogs.cxx:138
 TSessionDialogs.cxx:139
 TSessionDialogs.cxx:140
 TSessionDialogs.cxx:141
 TSessionDialogs.cxx:142
 TSessionDialogs.cxx:143
 TSessionDialogs.cxx:144
 TSessionDialogs.cxx:145
 TSessionDialogs.cxx:146
 TSessionDialogs.cxx:147
 TSessionDialogs.cxx:148
 TSessionDialogs.cxx:149
 TSessionDialogs.cxx:150
 TSessionDialogs.cxx:151
 TSessionDialogs.cxx:152
 TSessionDialogs.cxx:153
 TSessionDialogs.cxx:154
 TSessionDialogs.cxx:155
 TSessionDialogs.cxx:156
 TSessionDialogs.cxx:157
 TSessionDialogs.cxx:158
 TSessionDialogs.cxx:159
 TSessionDialogs.cxx:160
 TSessionDialogs.cxx:161
 TSessionDialogs.cxx:162
 TSessionDialogs.cxx:163
 TSessionDialogs.cxx:164
 TSessionDialogs.cxx:165
 TSessionDialogs.cxx:166
 TSessionDialogs.cxx:167
 TSessionDialogs.cxx:168
 TSessionDialogs.cxx:169
 TSessionDialogs.cxx:170
 TSessionDialogs.cxx:171
 TSessionDialogs.cxx:172
 TSessionDialogs.cxx:173
 TSessionDialogs.cxx:174
 TSessionDialogs.cxx:175
 TSessionDialogs.cxx:176
 TSessionDialogs.cxx:177
 TSessionDialogs.cxx:178
 TSessionDialogs.cxx:179
 TSessionDialogs.cxx:180
 TSessionDialogs.cxx:181
 TSessionDialogs.cxx:182
 TSessionDialogs.cxx:183
 TSessionDialogs.cxx:184
 TSessionDialogs.cxx:185
 TSessionDialogs.cxx:186
 TSessionDialogs.cxx:187
 TSessionDialogs.cxx:188
 TSessionDialogs.cxx:189
 TSessionDialogs.cxx:190
 TSessionDialogs.cxx:191
 TSessionDialogs.cxx:192
 TSessionDialogs.cxx:193
 TSessionDialogs.cxx:194
 TSessionDialogs.cxx:195
 TSessionDialogs.cxx:196
 TSessionDialogs.cxx:197
 TSessionDialogs.cxx:198
 TSessionDialogs.cxx:199
 TSessionDialogs.cxx:200
 TSessionDialogs.cxx:201
 TSessionDialogs.cxx:202
 TSessionDialogs.cxx:203
 TSessionDialogs.cxx:204
 TSessionDialogs.cxx:205
 TSessionDialogs.cxx:206
 TSessionDialogs.cxx:207
 TSessionDialogs.cxx:208
 TSessionDialogs.cxx:209
 TSessionDialogs.cxx:210
 TSessionDialogs.cxx:211
 TSessionDialogs.cxx:212
 TSessionDialogs.cxx:213
 TSessionDialogs.cxx:214
 TSessionDialogs.cxx:215
 TSessionDialogs.cxx:216
 TSessionDialogs.cxx:217
 TSessionDialogs.cxx:218
 TSessionDialogs.cxx:219
 TSessionDialogs.cxx:220
 TSessionDialogs.cxx:221
 TSessionDialogs.cxx:222
 TSessionDialogs.cxx:223
 TSessionDialogs.cxx:224
 TSessionDialogs.cxx:225
 TSessionDialogs.cxx:226
 TSessionDialogs.cxx:227
 TSessionDialogs.cxx:228
 TSessionDialogs.cxx:229
 TSessionDialogs.cxx:230
 TSessionDialogs.cxx:231
 TSessionDialogs.cxx:232
 TSessionDialogs.cxx:233
 TSessionDialogs.cxx:234
 TSessionDialogs.cxx:235
 TSessionDialogs.cxx:236
 TSessionDialogs.cxx:237
 TSessionDialogs.cxx:238
 TSessionDialogs.cxx:239
 TSessionDialogs.cxx:240
 TSessionDialogs.cxx:241
 TSessionDialogs.cxx:242
 TSessionDialogs.cxx:243
 TSessionDialogs.cxx:244
 TSessionDialogs.cxx:245
 TSessionDialogs.cxx:246
 TSessionDialogs.cxx:247
 TSessionDialogs.cxx:248
 TSessionDialogs.cxx:249
 TSessionDialogs.cxx:250
 TSessionDialogs.cxx:251
 TSessionDialogs.cxx:252
 TSessionDialogs.cxx:253
 TSessionDialogs.cxx:254
 TSessionDialogs.cxx:255
 TSessionDialogs.cxx:256
 TSessionDialogs.cxx:257
 TSessionDialogs.cxx:258
 TSessionDialogs.cxx:259
 TSessionDialogs.cxx:260
 TSessionDialogs.cxx:261
 TSessionDialogs.cxx:262
 TSessionDialogs.cxx:263
 TSessionDialogs.cxx:264
 TSessionDialogs.cxx:265
 TSessionDialogs.cxx:266
 TSessionDialogs.cxx:267
 TSessionDialogs.cxx:268
 TSessionDialogs.cxx:269
 TSessionDialogs.cxx:270
 TSessionDialogs.cxx:271
 TSessionDialogs.cxx:272
 TSessionDialogs.cxx:273
 TSessionDialogs.cxx:274
 TSessionDialogs.cxx:275
 TSessionDialogs.cxx:276
 TSessionDialogs.cxx:277
 TSessionDialogs.cxx:278
 TSessionDialogs.cxx:279
 TSessionDialogs.cxx:280
 TSessionDialogs.cxx:281
 TSessionDialogs.cxx:282
 TSessionDialogs.cxx:283
 TSessionDialogs.cxx:284
 TSessionDialogs.cxx:285
 TSessionDialogs.cxx:286
 TSessionDialogs.cxx:287
 TSessionDialogs.cxx:288
 TSessionDialogs.cxx:289
 TSessionDialogs.cxx:290
 TSessionDialogs.cxx:291
 TSessionDialogs.cxx:292
 TSessionDialogs.cxx:293
 TSessionDialogs.cxx:294
 TSessionDialogs.cxx:295
 TSessionDialogs.cxx:296
 TSessionDialogs.cxx:297
 TSessionDialogs.cxx:298
 TSessionDialogs.cxx:299
 TSessionDialogs.cxx:300
 TSessionDialogs.cxx:301
 TSessionDialogs.cxx:302
 TSessionDialogs.cxx:303
 TSessionDialogs.cxx:304
 TSessionDialogs.cxx:305
 TSessionDialogs.cxx:306
 TSessionDialogs.cxx:307
 TSessionDialogs.cxx:308
 TSessionDialogs.cxx:309
 TSessionDialogs.cxx:310
 TSessionDialogs.cxx:311
 TSessionDialogs.cxx:312
 TSessionDialogs.cxx:313
 TSessionDialogs.cxx:314
 TSessionDialogs.cxx:315
 TSessionDialogs.cxx:316
 TSessionDialogs.cxx:317
 TSessionDialogs.cxx:318
 TSessionDialogs.cxx:319
 TSessionDialogs.cxx:320
 TSessionDialogs.cxx:321
 TSessionDialogs.cxx:322
 TSessionDialogs.cxx:323
 TSessionDialogs.cxx:324
 TSessionDialogs.cxx:325
 TSessionDialogs.cxx:326
 TSessionDialogs.cxx:327
 TSessionDialogs.cxx:328
 TSessionDialogs.cxx:329
 TSessionDialogs.cxx:330
 TSessionDialogs.cxx:331
 TSessionDialogs.cxx:332
 TSessionDialogs.cxx:333
 TSessionDialogs.cxx:334
 TSessionDialogs.cxx:335
 TSessionDialogs.cxx:336
 TSessionDialogs.cxx:337
 TSessionDialogs.cxx:338
 TSessionDialogs.cxx:339
 TSessionDialogs.cxx:340
 TSessionDialogs.cxx:341
 TSessionDialogs.cxx:342
 TSessionDialogs.cxx:343
 TSessionDialogs.cxx:344
 TSessionDialogs.cxx:345
 TSessionDialogs.cxx:346
 TSessionDialogs.cxx:347
 TSessionDialogs.cxx:348
 TSessionDialogs.cxx:349
 TSessionDialogs.cxx:350
 TSessionDialogs.cxx:351
 TSessionDialogs.cxx:352
 TSessionDialogs.cxx:353
 TSessionDialogs.cxx:354
 TSessionDialogs.cxx:355
 TSessionDialogs.cxx:356
 TSessionDialogs.cxx:357
 TSessionDialogs.cxx:358
 TSessionDialogs.cxx:359
 TSessionDialogs.cxx:360
 TSessionDialogs.cxx:361
 TSessionDialogs.cxx:362
 TSessionDialogs.cxx:363
 TSessionDialogs.cxx:364
 TSessionDialogs.cxx:365
 TSessionDialogs.cxx:366
 TSessionDialogs.cxx:367
 TSessionDialogs.cxx:368
 TSessionDialogs.cxx:369
 TSessionDialogs.cxx:370
 TSessionDialogs.cxx:371
 TSessionDialogs.cxx:372
 TSessionDialogs.cxx:373
 TSessionDialogs.cxx:374
 TSessionDialogs.cxx:375
 TSessionDialogs.cxx:376
 TSessionDialogs.cxx:377
 TSessionDialogs.cxx:378
 TSessionDialogs.cxx:379
 TSessionDialogs.cxx:380
 TSessionDialogs.cxx:381
 TSessionDialogs.cxx:382
 TSessionDialogs.cxx:383
 TSessionDialogs.cxx:384
 TSessionDialogs.cxx:385
 TSessionDialogs.cxx:386
 TSessionDialogs.cxx:387
 TSessionDialogs.cxx:388
 TSessionDialogs.cxx:389
 TSessionDialogs.cxx:390
 TSessionDialogs.cxx:391
 TSessionDialogs.cxx:392
 TSessionDialogs.cxx:393
 TSessionDialogs.cxx:394
 TSessionDialogs.cxx:395
 TSessionDialogs.cxx:396
 TSessionDialogs.cxx:397
 TSessionDialogs.cxx:398
 TSessionDialogs.cxx:399
 TSessionDialogs.cxx:400
 TSessionDialogs.cxx:401
 TSessionDialogs.cxx:402
 TSessionDialogs.cxx:403
 TSessionDialogs.cxx:404
 TSessionDialogs.cxx:405
 TSessionDialogs.cxx:406
 TSessionDialogs.cxx:407
 TSessionDialogs.cxx:408
 TSessionDialogs.cxx:409
 TSessionDialogs.cxx:410
 TSessionDialogs.cxx:411
 TSessionDialogs.cxx:412
 TSessionDialogs.cxx:413
 TSessionDialogs.cxx:414
 TSessionDialogs.cxx:415
 TSessionDialogs.cxx:416
 TSessionDialogs.cxx:417
 TSessionDialogs.cxx:418
 TSessionDialogs.cxx:419
 TSessionDialogs.cxx:420
 TSessionDialogs.cxx:421
 TSessionDialogs.cxx:422
 TSessionDialogs.cxx:423
 TSessionDialogs.cxx:424
 TSessionDialogs.cxx:425
 TSessionDialogs.cxx:426
 TSessionDialogs.cxx:427
 TSessionDialogs.cxx:428
 TSessionDialogs.cxx:429
 TSessionDialogs.cxx:430
 TSessionDialogs.cxx:431
 TSessionDialogs.cxx:432
 TSessionDialogs.cxx:433
 TSessionDialogs.cxx:434
 TSessionDialogs.cxx:435
 TSessionDialogs.cxx:436
 TSessionDialogs.cxx:437
 TSessionDialogs.cxx:438
 TSessionDialogs.cxx:439
 TSessionDialogs.cxx:440
 TSessionDialogs.cxx:441
 TSessionDialogs.cxx:442
 TSessionDialogs.cxx:443
 TSessionDialogs.cxx:444
 TSessionDialogs.cxx:445
 TSessionDialogs.cxx:446
 TSessionDialogs.cxx:447
 TSessionDialogs.cxx:448
 TSessionDialogs.cxx:449
 TSessionDialogs.cxx:450
 TSessionDialogs.cxx:451
 TSessionDialogs.cxx:452
 TSessionDialogs.cxx:453
 TSessionDialogs.cxx:454
 TSessionDialogs.cxx:455
 TSessionDialogs.cxx:456
 TSessionDialogs.cxx:457
 TSessionDialogs.cxx:458
 TSessionDialogs.cxx:459
 TSessionDialogs.cxx:460
 TSessionDialogs.cxx:461
 TSessionDialogs.cxx:462
 TSessionDialogs.cxx:463
 TSessionDialogs.cxx:464
 TSessionDialogs.cxx:465
 TSessionDialogs.cxx:466
 TSessionDialogs.cxx:467
 TSessionDialogs.cxx:468
 TSessionDialogs.cxx:469
 TSessionDialogs.cxx:470
 TSessionDialogs.cxx:471
 TSessionDialogs.cxx:472
 TSessionDialogs.cxx:473
 TSessionDialogs.cxx:474
 TSessionDialogs.cxx:475
 TSessionDialogs.cxx:476
 TSessionDialogs.cxx:477
 TSessionDialogs.cxx:478
 TSessionDialogs.cxx:479
 TSessionDialogs.cxx:480
 TSessionDialogs.cxx:481
 TSessionDialogs.cxx:482
 TSessionDialogs.cxx:483
 TSessionDialogs.cxx:484
 TSessionDialogs.cxx:485
 TSessionDialogs.cxx:486
 TSessionDialogs.cxx:487
 TSessionDialogs.cxx:488
 TSessionDialogs.cxx:489
 TSessionDialogs.cxx:490
 TSessionDialogs.cxx:491
 TSessionDialogs.cxx:492
 TSessionDialogs.cxx:493
 TSessionDialogs.cxx:494
 TSessionDialogs.cxx:495
 TSessionDialogs.cxx:496
 TSessionDialogs.cxx:497
 TSessionDialogs.cxx:498
 TSessionDialogs.cxx:499
 TSessionDialogs.cxx:500
 TSessionDialogs.cxx:501
 TSessionDialogs.cxx:502
 TSessionDialogs.cxx:503
 TSessionDialogs.cxx:504
 TSessionDialogs.cxx:505
 TSessionDialogs.cxx:506
 TSessionDialogs.cxx:507
 TSessionDialogs.cxx:508
 TSessionDialogs.cxx:509
 TSessionDialogs.cxx:510
 TSessionDialogs.cxx:511
 TSessionDialogs.cxx:512
 TSessionDialogs.cxx:513
 TSessionDialogs.cxx:514
 TSessionDialogs.cxx:515
 TSessionDialogs.cxx:516
 TSessionDialogs.cxx:517
 TSessionDialogs.cxx:518
 TSessionDialogs.cxx:519
 TSessionDialogs.cxx:520
 TSessionDialogs.cxx:521
 TSessionDialogs.cxx:522
 TSessionDialogs.cxx:523
 TSessionDialogs.cxx:524
 TSessionDialogs.cxx:525
 TSessionDialogs.cxx:526
 TSessionDialogs.cxx:527
 TSessionDialogs.cxx:528
 TSessionDialogs.cxx:529
 TSessionDialogs.cxx:530
 TSessionDialogs.cxx:531
 TSessionDialogs.cxx:532
 TSessionDialogs.cxx:533
 TSessionDialogs.cxx:534
 TSessionDialogs.cxx:535
 TSessionDialogs.cxx:536
 TSessionDialogs.cxx:537
 TSessionDialogs.cxx:538
 TSessionDialogs.cxx:539
 TSessionDialogs.cxx:540
 TSessionDialogs.cxx:541
 TSessionDialogs.cxx:542
 TSessionDialogs.cxx:543
 TSessionDialogs.cxx:544
 TSessionDialogs.cxx:545
 TSessionDialogs.cxx:546
 TSessionDialogs.cxx:547
 TSessionDialogs.cxx:548
 TSessionDialogs.cxx:549
 TSessionDialogs.cxx:550
 TSessionDialogs.cxx:551
 TSessionDialogs.cxx:552
 TSessionDialogs.cxx:553
 TSessionDialogs.cxx:554
 TSessionDialogs.cxx:555
 TSessionDialogs.cxx:556
 TSessionDialogs.cxx:557
 TSessionDialogs.cxx:558
 TSessionDialogs.cxx:559
 TSessionDialogs.cxx:560
 TSessionDialogs.cxx:561
 TSessionDialogs.cxx:562
 TSessionDialogs.cxx:563
 TSessionDialogs.cxx:564
 TSessionDialogs.cxx:565
 TSessionDialogs.cxx:566
 TSessionDialogs.cxx:567
 TSessionDialogs.cxx:568
 TSessionDialogs.cxx:569
 TSessionDialogs.cxx:570
 TSessionDialogs.cxx:571
 TSessionDialogs.cxx:572
 TSessionDialogs.cxx:573
 TSessionDialogs.cxx:574
 TSessionDialogs.cxx:575
 TSessionDialogs.cxx:576
 TSessionDialogs.cxx:577
 TSessionDialogs.cxx:578
 TSessionDialogs.cxx:579
 TSessionDialogs.cxx:580
 TSessionDialogs.cxx:581
 TSessionDialogs.cxx:582
 TSessionDialogs.cxx:583
 TSessionDialogs.cxx:584
 TSessionDialogs.cxx:585
 TSessionDialogs.cxx:586
 TSessionDialogs.cxx:587
 TSessionDialogs.cxx:588
 TSessionDialogs.cxx:589
 TSessionDialogs.cxx:590
 TSessionDialogs.cxx:591
 TSessionDialogs.cxx:592
 TSessionDialogs.cxx:593
 TSessionDialogs.cxx:594
 TSessionDialogs.cxx:595
 TSessionDialogs.cxx:596
 TSessionDialogs.cxx:597
 TSessionDialogs.cxx:598
 TSessionDialogs.cxx:599
 TSessionDialogs.cxx:600
 TSessionDialogs.cxx:601
 TSessionDialogs.cxx:602
 TSessionDialogs.cxx:603
 TSessionDialogs.cxx:604
 TSessionDialogs.cxx:605
 TSessionDialogs.cxx:606
 TSessionDialogs.cxx:607
 TSessionDialogs.cxx:608
 TSessionDialogs.cxx:609
 TSessionDialogs.cxx:610
 TSessionDialogs.cxx:611
 TSessionDialogs.cxx:612
 TSessionDialogs.cxx:613
 TSessionDialogs.cxx:614
 TSessionDialogs.cxx:615
 TSessionDialogs.cxx:616
 TSessionDialogs.cxx:617
 TSessionDialogs.cxx:618
 TSessionDialogs.cxx:619
 TSessionDialogs.cxx:620
 TSessionDialogs.cxx:621
 TSessionDialogs.cxx:622
 TSessionDialogs.cxx:623
 TSessionDialogs.cxx:624
 TSessionDialogs.cxx:625
 TSessionDialogs.cxx:626
 TSessionDialogs.cxx:627
 TSessionDialogs.cxx:628
 TSessionDialogs.cxx:629
 TSessionDialogs.cxx:630
 TSessionDialogs.cxx:631
 TSessionDialogs.cxx:632
 TSessionDialogs.cxx:633
 TSessionDialogs.cxx:634
 TSessionDialogs.cxx:635
 TSessionDialogs.cxx:636
 TSessionDialogs.cxx:637
 TSessionDialogs.cxx:638
 TSessionDialogs.cxx:639
 TSessionDialogs.cxx:640
 TSessionDialogs.cxx:641
 TSessionDialogs.cxx:642
 TSessionDialogs.cxx:643
 TSessionDialogs.cxx:644
 TSessionDialogs.cxx:645
 TSessionDialogs.cxx:646
 TSessionDialogs.cxx:647
 TSessionDialogs.cxx:648
 TSessionDialogs.cxx:649
 TSessionDialogs.cxx:650
 TSessionDialogs.cxx:651
 TSessionDialogs.cxx:652
 TSessionDialogs.cxx:653
 TSessionDialogs.cxx:654
 TSessionDialogs.cxx:655
 TSessionDialogs.cxx:656
 TSessionDialogs.cxx:657
 TSessionDialogs.cxx:658
 TSessionDialogs.cxx:659
 TSessionDialogs.cxx:660
 TSessionDialogs.cxx:661
 TSessionDialogs.cxx:662
 TSessionDialogs.cxx:663
 TSessionDialogs.cxx:664
 TSessionDialogs.cxx:665
 TSessionDialogs.cxx:666
 TSessionDialogs.cxx:667
 TSessionDialogs.cxx:668
 TSessionDialogs.cxx:669
 TSessionDialogs.cxx:670
 TSessionDialogs.cxx:671
 TSessionDialogs.cxx:672
 TSessionDialogs.cxx:673
 TSessionDialogs.cxx:674
 TSessionDialogs.cxx:675
 TSessionDialogs.cxx:676
 TSessionDialogs.cxx:677
 TSessionDialogs.cxx:678
 TSessionDialogs.cxx:679
 TSessionDialogs.cxx:680
 TSessionDialogs.cxx:681
 TSessionDialogs.cxx:682
 TSessionDialogs.cxx:683
 TSessionDialogs.cxx:684
 TSessionDialogs.cxx:685
 TSessionDialogs.cxx:686
 TSessionDialogs.cxx:687
 TSessionDialogs.cxx:688
 TSessionDialogs.cxx:689
 TSessionDialogs.cxx:690
 TSessionDialogs.cxx:691
 TSessionDialogs.cxx:692
 TSessionDialogs.cxx:693
 TSessionDialogs.cxx:694
 TSessionDialogs.cxx:695
 TSessionDialogs.cxx:696
 TSessionDialogs.cxx:697
 TSessionDialogs.cxx:698
 TSessionDialogs.cxx:699
 TSessionDialogs.cxx:700
 TSessionDialogs.cxx:701
 TSessionDialogs.cxx:702
 TSessionDialogs.cxx:703
 TSessionDialogs.cxx:704
 TSessionDialogs.cxx:705
 TSessionDialogs.cxx:706
 TSessionDialogs.cxx:707
 TSessionDialogs.cxx:708
 TSessionDialogs.cxx:709
 TSessionDialogs.cxx:710
 TSessionDialogs.cxx:711
 TSessionDialogs.cxx:712
 TSessionDialogs.cxx:713
 TSessionDialogs.cxx:714
 TSessionDialogs.cxx:715
 TSessionDialogs.cxx:716
 TSessionDialogs.cxx:717
 TSessionDialogs.cxx:718
 TSessionDialogs.cxx:719
 TSessionDialogs.cxx:720
 TSessionDialogs.cxx:721
 TSessionDialogs.cxx:722
 TSessionDialogs.cxx:723
 TSessionDialogs.cxx:724
 TSessionDialogs.cxx:725
 TSessionDialogs.cxx:726
 TSessionDialogs.cxx:727
 TSessionDialogs.cxx:728
 TSessionDialogs.cxx:729
 TSessionDialogs.cxx:730
 TSessionDialogs.cxx:731
 TSessionDialogs.cxx:732
 TSessionDialogs.cxx:733
 TSessionDialogs.cxx:734
 TSessionDialogs.cxx:735
 TSessionDialogs.cxx:736
 TSessionDialogs.cxx:737
 TSessionDialogs.cxx:738
 TSessionDialogs.cxx:739
 TSessionDialogs.cxx:740
 TSessionDialogs.cxx:741
 TSessionDialogs.cxx:742
 TSessionDialogs.cxx:743
 TSessionDialogs.cxx:744
 TSessionDialogs.cxx:745
 TSessionDialogs.cxx:746
 TSessionDialogs.cxx:747
 TSessionDialogs.cxx:748
 TSessionDialogs.cxx:749
 TSessionDialogs.cxx:750
 TSessionDialogs.cxx:751
 TSessionDialogs.cxx:752
 TSessionDialogs.cxx:753
 TSessionDialogs.cxx:754
 TSessionDialogs.cxx:755
 TSessionDialogs.cxx:756
 TSessionDialogs.cxx:757
 TSessionDialogs.cxx:758
 TSessionDialogs.cxx:759
 TSessionDialogs.cxx:760
 TSessionDialogs.cxx:761
 TSessionDialogs.cxx:762
 TSessionDialogs.cxx:763
 TSessionDialogs.cxx:764
 TSessionDialogs.cxx:765
 TSessionDialogs.cxx:766
 TSessionDialogs.cxx:767
 TSessionDialogs.cxx:768
 TSessionDialogs.cxx:769
 TSessionDialogs.cxx:770
 TSessionDialogs.cxx:771
 TSessionDialogs.cxx:772
 TSessionDialogs.cxx:773
 TSessionDialogs.cxx:774
 TSessionDialogs.cxx:775
 TSessionDialogs.cxx:776
 TSessionDialogs.cxx:777
 TSessionDialogs.cxx:778
 TSessionDialogs.cxx:779
 TSessionDialogs.cxx:780
 TSessionDialogs.cxx:781
 TSessionDialogs.cxx:782
 TSessionDialogs.cxx:783
 TSessionDialogs.cxx:784
 TSessionDialogs.cxx:785
 TSessionDialogs.cxx:786
 TSessionDialogs.cxx:787
 TSessionDialogs.cxx:788
 TSessionDialogs.cxx:789
 TSessionDialogs.cxx:790
 TSessionDialogs.cxx:791
 TSessionDialogs.cxx:792
 TSessionDialogs.cxx:793
 TSessionDialogs.cxx:794
 TSessionDialogs.cxx:795
 TSessionDialogs.cxx:796
 TSessionDialogs.cxx:797
 TSessionDialogs.cxx:798
 TSessionDialogs.cxx:799
 TSessionDialogs.cxx:800
 TSessionDialogs.cxx:801
 TSessionDialogs.cxx:802
 TSessionDialogs.cxx:803
 TSessionDialogs.cxx:804
 TSessionDialogs.cxx:805
 TSessionDialogs.cxx:806
 TSessionDialogs.cxx:807
 TSessionDialogs.cxx:808
 TSessionDialogs.cxx:809
 TSessionDialogs.cxx:810
 TSessionDialogs.cxx:811
 TSessionDialogs.cxx:812
 TSessionDialogs.cxx:813
 TSessionDialogs.cxx:814
 TSessionDialogs.cxx:815
 TSessionDialogs.cxx:816
 TSessionDialogs.cxx:817
 TSessionDialogs.cxx:818
 TSessionDialogs.cxx:819
 TSessionDialogs.cxx:820
 TSessionDialogs.cxx:821
 TSessionDialogs.cxx:822
 TSessionDialogs.cxx:823
 TSessionDialogs.cxx:824
 TSessionDialogs.cxx:825
 TSessionDialogs.cxx:826
 TSessionDialogs.cxx:827
 TSessionDialogs.cxx:828
 TSessionDialogs.cxx:829
 TSessionDialogs.cxx:830
 TSessionDialogs.cxx:831
 TSessionDialogs.cxx:832
 TSessionDialogs.cxx:833
 TSessionDialogs.cxx:834
 TSessionDialogs.cxx:835
 TSessionDialogs.cxx:836
 TSessionDialogs.cxx:837
 TSessionDialogs.cxx:838
 TSessionDialogs.cxx:839
 TSessionDialogs.cxx:840
 TSessionDialogs.cxx:841
 TSessionDialogs.cxx:842
 TSessionDialogs.cxx:843
 TSessionDialogs.cxx:844
 TSessionDialogs.cxx:845
 TSessionDialogs.cxx:846
 TSessionDialogs.cxx:847
 TSessionDialogs.cxx:848
 TSessionDialogs.cxx:849
 TSessionDialogs.cxx:850
 TSessionDialogs.cxx:851
 TSessionDialogs.cxx:852
 TSessionDialogs.cxx:853
 TSessionDialogs.cxx:854
 TSessionDialogs.cxx:855
 TSessionDialogs.cxx:856
 TSessionDialogs.cxx:857
 TSessionDialogs.cxx:858
 TSessionDialogs.cxx:859
 TSessionDialogs.cxx:860
 TSessionDialogs.cxx:861
 TSessionDialogs.cxx:862
 TSessionDialogs.cxx:863
 TSessionDialogs.cxx:864
 TSessionDialogs.cxx:865
 TSessionDialogs.cxx:866
 TSessionDialogs.cxx:867
 TSessionDialogs.cxx:868
 TSessionDialogs.cxx:869
 TSessionDialogs.cxx:870
 TSessionDialogs.cxx:871
 TSessionDialogs.cxx:872
 TSessionDialogs.cxx:873
 TSessionDialogs.cxx:874
 TSessionDialogs.cxx:875
 TSessionDialogs.cxx:876
 TSessionDialogs.cxx:877
 TSessionDialogs.cxx:878
 TSessionDialogs.cxx:879
 TSessionDialogs.cxx:880
 TSessionDialogs.cxx:881
 TSessionDialogs.cxx:882
 TSessionDialogs.cxx:883
 TSessionDialogs.cxx:884
 TSessionDialogs.cxx:885
 TSessionDialogs.cxx:886
 TSessionDialogs.cxx:887
 TSessionDialogs.cxx:888
 TSessionDialogs.cxx:889
 TSessionDialogs.cxx:890
 TSessionDialogs.cxx:891
 TSessionDialogs.cxx:892
 TSessionDialogs.cxx:893
 TSessionDialogs.cxx:894
 TSessionDialogs.cxx:895
 TSessionDialogs.cxx:896
 TSessionDialogs.cxx:897
 TSessionDialogs.cxx:898
 TSessionDialogs.cxx:899
 TSessionDialogs.cxx:900
 TSessionDialogs.cxx:901
 TSessionDialogs.cxx:902
 TSessionDialogs.cxx:903
 TSessionDialogs.cxx:904
 TSessionDialogs.cxx:905
 TSessionDialogs.cxx:906
 TSessionDialogs.cxx:907
 TSessionDialogs.cxx:908
 TSessionDialogs.cxx:909
 TSessionDialogs.cxx:910
 TSessionDialogs.cxx:911
 TSessionDialogs.cxx:912
 TSessionDialogs.cxx:913
 TSessionDialogs.cxx:914
 TSessionDialogs.cxx:915
 TSessionDialogs.cxx:916
 TSessionDialogs.cxx:917
 TSessionDialogs.cxx:918
 TSessionDialogs.cxx:919
 TSessionDialogs.cxx:920
 TSessionDialogs.cxx:921
 TSessionDialogs.cxx:922
 TSessionDialogs.cxx:923
 TSessionDialogs.cxx:924
 TSessionDialogs.cxx:925
 TSessionDialogs.cxx:926
 TSessionDialogs.cxx:927
 TSessionDialogs.cxx:928
 TSessionDialogs.cxx:929
 TSessionDialogs.cxx:930
 TSessionDialogs.cxx:931
 TSessionDialogs.cxx:932
 TSessionDialogs.cxx:933
 TSessionDialogs.cxx:934
 TSessionDialogs.cxx:935
 TSessionDialogs.cxx:936
 TSessionDialogs.cxx:937
 TSessionDialogs.cxx:938
 TSessionDialogs.cxx:939
 TSessionDialogs.cxx:940
 TSessionDialogs.cxx:941
 TSessionDialogs.cxx:942
 TSessionDialogs.cxx:943
 TSessionDialogs.cxx:944
 TSessionDialogs.cxx:945
 TSessionDialogs.cxx:946
 TSessionDialogs.cxx:947
 TSessionDialogs.cxx:948
 TSessionDialogs.cxx:949
 TSessionDialogs.cxx:950
 TSessionDialogs.cxx:951
 TSessionDialogs.cxx:952
 TSessionDialogs.cxx:953
 TSessionDialogs.cxx:954
 TSessionDialogs.cxx:955
 TSessionDialogs.cxx:956
 TSessionDialogs.cxx:957
 TSessionDialogs.cxx:958
 TSessionDialogs.cxx:959
 TSessionDialogs.cxx:960
 TSessionDialogs.cxx:961
 TSessionDialogs.cxx:962
 TSessionDialogs.cxx:963
 TSessionDialogs.cxx:964
 TSessionDialogs.cxx:965
 TSessionDialogs.cxx:966
 TSessionDialogs.cxx:967
 TSessionDialogs.cxx:968
 TSessionDialogs.cxx:969
 TSessionDialogs.cxx:970
 TSessionDialogs.cxx:971
 TSessionDialogs.cxx:972
 TSessionDialogs.cxx:973
 TSessionDialogs.cxx:974
 TSessionDialogs.cxx:975
 TSessionDialogs.cxx:976
 TSessionDialogs.cxx:977
 TSessionDialogs.cxx:978
 TSessionDialogs.cxx:979
 TSessionDialogs.cxx:980
 TSessionDialogs.cxx:981
 TSessionDialogs.cxx:982
 TSessionDialogs.cxx:983
 TSessionDialogs.cxx:984
 TSessionDialogs.cxx:985
 TSessionDialogs.cxx:986
 TSessionDialogs.cxx:987
 TSessionDialogs.cxx:988
 TSessionDialogs.cxx:989
 TSessionDialogs.cxx:990
 TSessionDialogs.cxx:991
 TSessionDialogs.cxx:992
 TSessionDialogs.cxx:993
 TSessionDialogs.cxx:994
 TSessionDialogs.cxx:995
 TSessionDialogs.cxx:996
 TSessionDialogs.cxx:997
 TSessionDialogs.cxx:998
 TSessionDialogs.cxx:999
 TSessionDialogs.cxx:1000
 TSessionDialogs.cxx:1001
 TSessionDialogs.cxx:1002
 TSessionDialogs.cxx:1003
 TSessionDialogs.cxx:1004
 TSessionDialogs.cxx:1005
 TSessionDialogs.cxx:1006
 TSessionDialogs.cxx:1007
 TSessionDialogs.cxx:1008
 TSessionDialogs.cxx:1009
 TSessionDialogs.cxx:1010
 TSessionDialogs.cxx:1011
 TSessionDialogs.cxx:1012
 TSessionDialogs.cxx:1013
 TSessionDialogs.cxx:1014
 TSessionDialogs.cxx:1015
 TSessionDialogs.cxx:1016
 TSessionDialogs.cxx:1017
 TSessionDialogs.cxx:1018
 TSessionDialogs.cxx:1019
 TSessionDialogs.cxx:1020
 TSessionDialogs.cxx:1021
 TSessionDialogs.cxx:1022
 TSessionDialogs.cxx:1023
 TSessionDialogs.cxx:1024
 TSessionDialogs.cxx:1025
 TSessionDialogs.cxx:1026
 TSessionDialogs.cxx:1027
 TSessionDialogs.cxx:1028
 TSessionDialogs.cxx:1029
 TSessionDialogs.cxx:1030
 TSessionDialogs.cxx:1031
 TSessionDialogs.cxx:1032
 TSessionDialogs.cxx:1033
 TSessionDialogs.cxx:1034
 TSessionDialogs.cxx:1035
 TSessionDialogs.cxx:1036
 TSessionDialogs.cxx:1037
 TSessionDialogs.cxx:1038
 TSessionDialogs.cxx:1039
 TSessionDialogs.cxx:1040
 TSessionDialogs.cxx:1041
 TSessionDialogs.cxx:1042
 TSessionDialogs.cxx:1043
 TSessionDialogs.cxx:1044
 TSessionDialogs.cxx:1045
 TSessionDialogs.cxx:1046
 TSessionDialogs.cxx:1047
 TSessionDialogs.cxx:1048
 TSessionDialogs.cxx:1049
 TSessionDialogs.cxx:1050
 TSessionDialogs.cxx:1051
 TSessionDialogs.cxx:1052
 TSessionDialogs.cxx:1053
 TSessionDialogs.cxx:1054
 TSessionDialogs.cxx:1055
 TSessionDialogs.cxx:1056
 TSessionDialogs.cxx:1057
 TSessionDialogs.cxx:1058
 TSessionDialogs.cxx:1059
 TSessionDialogs.cxx:1060
 TSessionDialogs.cxx:1061
 TSessionDialogs.cxx:1062
 TSessionDialogs.cxx:1063
 TSessionDialogs.cxx:1064
 TSessionDialogs.cxx:1065
 TSessionDialogs.cxx:1066
 TSessionDialogs.cxx:1067
 TSessionDialogs.cxx:1068
 TSessionDialogs.cxx:1069
 TSessionDialogs.cxx:1070
 TSessionDialogs.cxx:1071
 TSessionDialogs.cxx:1072
 TSessionDialogs.cxx:1073
 TSessionDialogs.cxx:1074
 TSessionDialogs.cxx:1075
 TSessionDialogs.cxx:1076
 TSessionDialogs.cxx:1077
 TSessionDialogs.cxx:1078
 TSessionDialogs.cxx:1079
 TSessionDialogs.cxx:1080
 TSessionDialogs.cxx:1081
 TSessionDialogs.cxx:1082
 TSessionDialogs.cxx:1083
 TSessionDialogs.cxx:1084
 TSessionDialogs.cxx:1085
 TSessionDialogs.cxx:1086
 TSessionDialogs.cxx:1087
 TSessionDialogs.cxx:1088
 TSessionDialogs.cxx:1089
 TSessionDialogs.cxx:1090
 TSessionDialogs.cxx:1091
 TSessionDialogs.cxx:1092
 TSessionDialogs.cxx:1093
 TSessionDialogs.cxx:1094
 TSessionDialogs.cxx:1095
 TSessionDialogs.cxx:1096
 TSessionDialogs.cxx:1097
 TSessionDialogs.cxx:1098
 TSessionDialogs.cxx:1099
 TSessionDialogs.cxx:1100
 TSessionDialogs.cxx:1101
 TSessionDialogs.cxx:1102
 TSessionDialogs.cxx:1103
 TSessionDialogs.cxx:1104
 TSessionDialogs.cxx:1105
 TSessionDialogs.cxx:1106
 TSessionDialogs.cxx:1107
 TSessionDialogs.cxx:1108
 TSessionDialogs.cxx:1109
 TSessionDialogs.cxx:1110
 TSessionDialogs.cxx:1111
 TSessionDialogs.cxx:1112
 TSessionDialogs.cxx:1113
 TSessionDialogs.cxx:1114
 TSessionDialogs.cxx:1115
 TSessionDialogs.cxx:1116
 TSessionDialogs.cxx:1117
 TSessionDialogs.cxx:1118
 TSessionDialogs.cxx:1119
 TSessionDialogs.cxx:1120
 TSessionDialogs.cxx:1121
 TSessionDialogs.cxx:1122
 TSessionDialogs.cxx:1123
 TSessionDialogs.cxx:1124
 TSessionDialogs.cxx:1125
 TSessionDialogs.cxx:1126
 TSessionDialogs.cxx:1127
 TSessionDialogs.cxx:1128
 TSessionDialogs.cxx:1129
 TSessionDialogs.cxx:1130
 TSessionDialogs.cxx:1131
 TSessionDialogs.cxx:1132
 TSessionDialogs.cxx:1133
 TSessionDialogs.cxx:1134
 TSessionDialogs.cxx:1135
 TSessionDialogs.cxx:1136
 TSessionDialogs.cxx:1137
 TSessionDialogs.cxx:1138
 TSessionDialogs.cxx:1139
 TSessionDialogs.cxx:1140
 TSessionDialogs.cxx:1141
 TSessionDialogs.cxx:1142
 TSessionDialogs.cxx:1143
 TSessionDialogs.cxx:1144
 TSessionDialogs.cxx:1145
 TSessionDialogs.cxx:1146
 TSessionDialogs.cxx:1147
 TSessionDialogs.cxx:1148
 TSessionDialogs.cxx:1149
 TSessionDialogs.cxx:1150
 TSessionDialogs.cxx:1151
 TSessionDialogs.cxx:1152
 TSessionDialogs.cxx:1153
 TSessionDialogs.cxx:1154
 TSessionDialogs.cxx:1155
 TSessionDialogs.cxx:1156
 TSessionDialogs.cxx:1157
 TSessionDialogs.cxx:1158
 TSessionDialogs.cxx:1159
 TSessionDialogs.cxx:1160
 TSessionDialogs.cxx:1161
 TSessionDialogs.cxx:1162
 TSessionDialogs.cxx:1163
 TSessionDialogs.cxx:1164
 TSessionDialogs.cxx:1165
 TSessionDialogs.cxx:1166
 TSessionDialogs.cxx:1167
 TSessionDialogs.cxx:1168
 TSessionDialogs.cxx:1169
 TSessionDialogs.cxx:1170
 TSessionDialogs.cxx:1171
 TSessionDialogs.cxx:1172
 TSessionDialogs.cxx:1173
 TSessionDialogs.cxx:1174
 TSessionDialogs.cxx:1175
 TSessionDialogs.cxx:1176
 TSessionDialogs.cxx:1177
 TSessionDialogs.cxx:1178
 TSessionDialogs.cxx:1179
 TSessionDialogs.cxx:1180
 TSessionDialogs.cxx:1181
 TSessionDialogs.cxx:1182
 TSessionDialogs.cxx:1183
 TSessionDialogs.cxx:1184
 TSessionDialogs.cxx:1185
 TSessionDialogs.cxx:1186
 TSessionDialogs.cxx:1187
 TSessionDialogs.cxx:1188
 TSessionDialogs.cxx:1189
 TSessionDialogs.cxx:1190
 TSessionDialogs.cxx:1191
 TSessionDialogs.cxx:1192
 TSessionDialogs.cxx:1193
 TSessionDialogs.cxx:1194
 TSessionDialogs.cxx:1195
 TSessionDialogs.cxx:1196
 TSessionDialogs.cxx:1197
 TSessionDialogs.cxx:1198
 TSessionDialogs.cxx:1199
 TSessionDialogs.cxx:1200
 TSessionDialogs.cxx:1201
 TSessionDialogs.cxx:1202
 TSessionDialogs.cxx:1203
 TSessionDialogs.cxx:1204
 TSessionDialogs.cxx:1205
 TSessionDialogs.cxx:1206
 TSessionDialogs.cxx:1207
 TSessionDialogs.cxx:1208
 TSessionDialogs.cxx:1209
 TSessionDialogs.cxx:1210
 TSessionDialogs.cxx:1211
 TSessionDialogs.cxx:1212
 TSessionDialogs.cxx:1213
 TSessionDialogs.cxx:1214
 TSessionDialogs.cxx:1215
 TSessionDialogs.cxx:1216
 TSessionDialogs.cxx:1217
 TSessionDialogs.cxx:1218
 TSessionDialogs.cxx:1219
 TSessionDialogs.cxx:1220
 TSessionDialogs.cxx:1221
 TSessionDialogs.cxx:1222
 TSessionDialogs.cxx:1223
 TSessionDialogs.cxx:1224
 TSessionDialogs.cxx:1225
 TSessionDialogs.cxx:1226
 TSessionDialogs.cxx:1227
 TSessionDialogs.cxx:1228
 TSessionDialogs.cxx:1229
 TSessionDialogs.cxx:1230
 TSessionDialogs.cxx:1231
 TSessionDialogs.cxx:1232
 TSessionDialogs.cxx:1233
 TSessionDialogs.cxx:1234
 TSessionDialogs.cxx:1235
 TSessionDialogs.cxx:1236
 TSessionDialogs.cxx:1237
 TSessionDialogs.cxx:1238
 TSessionDialogs.cxx:1239
 TSessionDialogs.cxx:1240
 TSessionDialogs.cxx:1241
 TSessionDialogs.cxx:1242
 TSessionDialogs.cxx:1243
 TSessionDialogs.cxx:1244
 TSessionDialogs.cxx:1245
 TSessionDialogs.cxx:1246
 TSessionDialogs.cxx:1247
 TSessionDialogs.cxx:1248
 TSessionDialogs.cxx:1249
 TSessionDialogs.cxx:1250
 TSessionDialogs.cxx:1251
 TSessionDialogs.cxx:1252
 TSessionDialogs.cxx:1253
 TSessionDialogs.cxx:1254
 TSessionDialogs.cxx:1255
 TSessionDialogs.cxx:1256
 TSessionDialogs.cxx:1257
 TSessionDialogs.cxx:1258
 TSessionDialogs.cxx:1259
 TSessionDialogs.cxx:1260
 TSessionDialogs.cxx:1261
 TSessionDialogs.cxx:1262
 TSessionDialogs.cxx:1263
 TSessionDialogs.cxx:1264
 TSessionDialogs.cxx:1265
 TSessionDialogs.cxx:1266
 TSessionDialogs.cxx:1267
 TSessionDialogs.cxx:1268
 TSessionDialogs.cxx:1269
 TSessionDialogs.cxx:1270
 TSessionDialogs.cxx:1271
 TSessionDialogs.cxx:1272
 TSessionDialogs.cxx:1273
 TSessionDialogs.cxx:1274
 TSessionDialogs.cxx:1275
 TSessionDialogs.cxx:1276
 TSessionDialogs.cxx:1277
 TSessionDialogs.cxx:1278
 TSessionDialogs.cxx:1279
 TSessionDialogs.cxx:1280
 TSessionDialogs.cxx:1281
 TSessionDialogs.cxx:1282
 TSessionDialogs.cxx:1283
 TSessionDialogs.cxx:1284
 TSessionDialogs.cxx:1285
 TSessionDialogs.cxx:1286
 TSessionDialogs.cxx:1287
 TSessionDialogs.cxx:1288
 TSessionDialogs.cxx:1289
 TSessionDialogs.cxx:1290
 TSessionDialogs.cxx:1291
 TSessionDialogs.cxx:1292
 TSessionDialogs.cxx:1293
 TSessionDialogs.cxx:1294
 TSessionDialogs.cxx:1295
 TSessionDialogs.cxx:1296
 TSessionDialogs.cxx:1297
 TSessionDialogs.cxx:1298
 TSessionDialogs.cxx:1299
 TSessionDialogs.cxx:1300
 TSessionDialogs.cxx:1301
 TSessionDialogs.cxx:1302
 TSessionDialogs.cxx:1303
 TSessionDialogs.cxx:1304
 TSessionDialogs.cxx:1305
 TSessionDialogs.cxx:1306
 TSessionDialogs.cxx:1307
 TSessionDialogs.cxx:1308
 TSessionDialogs.cxx:1309
 TSessionDialogs.cxx:1310
 TSessionDialogs.cxx:1311
 TSessionDialogs.cxx:1312
 TSessionDialogs.cxx:1313
 TSessionDialogs.cxx:1314
 TSessionDialogs.cxx:1315
 TSessionDialogs.cxx:1316
 TSessionDialogs.cxx:1317
 TSessionDialogs.cxx:1318
 TSessionDialogs.cxx:1319
 TSessionDialogs.cxx:1320
 TSessionDialogs.cxx:1321
 TSessionDialogs.cxx:1322
 TSessionDialogs.cxx:1323
 TSessionDialogs.cxx:1324
 TSessionDialogs.cxx:1325
 TSessionDialogs.cxx:1326
 TSessionDialogs.cxx:1327
 TSessionDialogs.cxx:1328
 TSessionDialogs.cxx:1329
 TSessionDialogs.cxx:1330
 TSessionDialogs.cxx:1331
 TSessionDialogs.cxx:1332
 TSessionDialogs.cxx:1333
 TSessionDialogs.cxx:1334
 TSessionDialogs.cxx:1335
 TSessionDialogs.cxx:1336
 TSessionDialogs.cxx:1337
 TSessionDialogs.cxx:1338
 TSessionDialogs.cxx:1339
 TSessionDialogs.cxx:1340
 TSessionDialogs.cxx:1341
 TSessionDialogs.cxx:1342
 TSessionDialogs.cxx:1343
 TSessionDialogs.cxx:1344
 TSessionDialogs.cxx:1345
 TSessionDialogs.cxx:1346
 TSessionDialogs.cxx:1347
 TSessionDialogs.cxx:1348
 TSessionDialogs.cxx:1349
 TSessionDialogs.cxx:1350
 TSessionDialogs.cxx:1351
 TSessionDialogs.cxx:1352
 TSessionDialogs.cxx:1353
 TSessionDialogs.cxx:1354
 TSessionDialogs.cxx:1355
 TSessionDialogs.cxx:1356