// @(#)root/gui:$Id$
// Author: Bertrand Bellenot   26/09/2007

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

#include "TROOT.h"
#include "TSystem.h"
#include "TApplication.h"
#include "TGClient.h"
#include "TGListTree.h"
#include "TGLayout.h"
#include "TGComboBox.h"
#include "TContextMenu.h"
#include "TGTextEntry.h"
#include "TGTab.h"
#include "TGLabel.h"
#include "TSystemDirectory.h"
#include "TGMimeTypes.h"
#include "TClass.h"
#include "TQClass.h"
#include "TDataMember.h"
#include "TMethod.h"
#include "TMethodArg.h"
#include "TRealData.h"
#include "TInterpreter.h"
#include "TRegexp.h"
#include "TEnv.h"
#include "TImage.h"
#include "TBrowser.h"
#include "TRemoteObject.h"
#include "TVirtualPad.h"
#include "Getline.h"
#include <time.h>
#include <string.h>
#include <stdlib.h>

#include "TGFileBrowser.h"
#include "TRootBrowser.h"
#include "TGInputDialog.h"

#include "TVirtualPadEditor.h"
#include "TGedEditor.h"
#include "TBaseClass.h"

#include "RConfigure.h"

#ifdef WIN32
const char rootdir[] = "\\";
#else
const char rootdir[] = "/";
#endif

const char *filters[] = {
   "",
   "*.*",
   "*.[C|c|h]*",
   "*.root",
   "*.txt"
};

//_____________________________________________________________________________
//
// TCursorSwitcher
//
// Helper class used to change the cursor in a method and restore the
// original one when going out of the method scope.
//_____________________________________________________________________________

///////////////////////////////////////////////////////////////////////////////
class TCursorSwitcher {
private:
   TGWindow *fW1;
   TGWindow *fW2;
public:
   TCursorSwitcher(TGWindow *w1, TGWindow *w2) : fW1(w1), fW2(w2) {
      if (w1) gVirtualX->SetCursor(w1->GetId(), gVirtualX->CreateCursor(kWatch));
      if (w2) gVirtualX->SetCursor(w2->GetId(), gVirtualX->CreateCursor(kWatch));
   }
   ~TCursorSwitcher() {
      if (fW1) gVirtualX->SetCursor(fW1->GetId(), gVirtualX->CreateCursor(kPointer));
      if (fW2) gVirtualX->SetCursor(fW2->GetId(), gVirtualX->CreateCursor(kPointer));
   }
};

//_____________________________________________________________________________
//
// TGFileBrowser
//
// System file browser, used as TRootBrowser plug-in.
// This class is the real core of the ROOT browser.
//_____________________________________________________________________________

ClassImp(TGFileBrowser)

//______________________________________________________________________________
TGFileBrowser::TGFileBrowser(const TGWindow *p, TBrowser* b, UInt_t w, UInt_t h)
   : TGMainFrame(p, w, h), TBrowserImp(b), fNewBrowser(0)
{
   // TGFileBrowser constructor.

   if (p && p != gClient->GetDefaultRoot())
      fNewBrowser = (TRootBrowser *)p->GetMainFrame();
   if (fNewBrowser)
      fNewBrowser->SetActBrowser(this);
   CreateBrowser();
   Resize(w, h);
   if (fBrowser) Show();
}

//______________________________________________________________________________
void TGFileBrowser::CreateBrowser()
{
   // Create the actual file browser.

   fCachedPic  = 0;
   SetCleanup(kDeepCleanup);

   fTopFrame = new TGHorizontalFrame(this, 100, 30);
   fDrawOption = new TGComboBox(fTopFrame, "");
   TGTextEntry *dropt_entry = fDrawOption->GetTextEntry();
   dropt_entry->SetToolTipText("Object Draw Option", 300);
   fDrawOption->Resize(80, 20);
   TGListBox *lb = fDrawOption->GetListBox();
   lb->Resize(lb->GetWidth(), 120);
   Int_t dropt = 1;
   fDrawOption->AddEntry("", dropt++);
   fDrawOption->AddEntry("box", dropt++);
   fDrawOption->AddEntry("colz", dropt++);
   fDrawOption->AddEntry("lego", dropt++);
   fDrawOption->AddEntry("lego1", dropt++);
   fDrawOption->AddEntry("lego2", dropt++);
   fDrawOption->AddEntry("same", dropt++);
   fDrawOption->AddEntry("surf", dropt++);
   fDrawOption->AddEntry("surf1", dropt++);
   fDrawOption->AddEntry("surf2", dropt++);
   fDrawOption->AddEntry("surf3", dropt++);
   fDrawOption->AddEntry("surf4", dropt++);
   fDrawOption->AddEntry("surf5", dropt++);
   fDrawOption->AddEntry("text", dropt++);
   fTopFrame->AddFrame(fDrawOption, new TGLayoutHints(kLHintsCenterY |
                       kLHintsRight, 2, 2, 2, 2));
   fTopFrame->AddFrame(new TGLabel(fTopFrame, "Draw Option:"),
                       new TGLayoutHints(kLHintsCenterY | kLHintsRight,
                       5, 2, 2, 2));

   fSortButton = new TGPictureButton(fTopFrame, "bld_sortup.png");
   fSortButton->SetStyle(gClient->GetStyle());
   fSortButton->SetToolTipText("Sort Alphabetically\n(Current folder only)");
   fTopFrame->AddFrame(fSortButton, new TGLayoutHints(kLHintsCenterY |
                       kLHintsLeft, 2, 2, 2, 2));
   fSortButton->Connect("Clicked()", "TGFileBrowser", this, "ToggleSort()");

   fFilterButton = new TGPictureButton(fTopFrame, "filter.png");
   fFilterButton->SetStyle(gClient->GetStyle());
   fFilterButton->SetToolTipText("Filter Content");
   fTopFrame->AddFrame(fFilterButton, new TGLayoutHints(kLHintsCenterY |
                       kLHintsLeft, 2, 2, 2, 2));
   fFilterButton->Connect("Clicked()", "TGFileBrowser", this, "RequestFilter()");

   fRefreshButton = new TGPictureButton(fTopFrame, "refresh.png");
   fRefreshButton->SetStyle(gClient->GetStyle());
   fRefreshButton->SetToolTipText("Refresh Current Folder");
   fTopFrame->AddFrame(fRefreshButton, new TGLayoutHints(kLHintsCenterY |
                       kLHintsLeft, 2, 5, 2, 2));
   fRefreshButton->Connect("Clicked()", "TGFileBrowser", this, "Refresh()");

   AddFrame(fTopFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop |
            kLHintsExpandX, 2, 2, 2, 2));
   fCanvas   = new TGCanvas(this, 100, 100);
   fListTree = new TGListTree(fCanvas, kHorizontalFrame);
   AddFrame(fCanvas, new TGLayoutHints(kLHintsLeft | kLHintsTop |
                kLHintsExpandX | kLHintsExpandY));
   fListTree->Connect("DoubleClicked(TGListTreeItem *, Int_t)",
      "TGFileBrowser", this, "DoubleClicked(TGListTreeItem *, Int_t)");
   fListTree->Connect("Clicked(TGListTreeItem *, Int_t, Int_t, Int_t)",
      "TGFileBrowser", this, "Clicked(TGListTreeItem *, Int_t, Int_t, Int_t)");
   fListTree->Connect("Checked(TObject*, Bool_t)", "TGFileBrowser",
      this, "Checked(TObject*, Bool_t)");

   fRootIcon = gClient->GetPicture("rootdb_t.xpm");
   fFileIcon = gClient->GetPicture("doc_t.xpm");

   fBotFrame = new TGHorizontalFrame(this, 100, 30);
   fBotFrame->AddFrame(new TGLabel(fBotFrame, "Filter: "),
                       new TGLayoutHints(kLHintsCenterY | kLHintsLeft,
                       2, 2, 2, 2));
   fFileType = new TGComboBox(fBotFrame, " All Files (*.*)");
   Int_t ftype = 1;
   fFileType->AddEntry(" All Files (*.*)", ftype++);
   fFileType->AddEntry(" C/C++ Files (*.c;*.cxx;*.h;...)", ftype++);
   fFileType->AddEntry(" ROOT Files (*.root)", ftype++);
   fFileType->AddEntry(" Text Files (*.txt)", ftype++);
   fFileType->Resize(200, 20);
   fBotFrame->AddFrame(fFileType, new TGLayoutHints(kLHintsLeft | kLHintsTop |
                kLHintsExpandX, 2, 2, 2, 2));
   fFileType->Connect("Selected(Int_t)", "TGFileBrowser", this,
                      "ApplyFilter(Int_t)");
   fFileType->GetTextEntry()->Connect("ReturnPressed()", "TGFileBrowser",
                                      this, "ApplyFilter(Int_t = -1)");
   AddFrame(fBotFrame, new TGLayoutHints(kLHintsLeft | kLHintsTop |
            kLHintsExpandX, 2, 2, 2, 2));

   fContextMenu = new TContextMenu("FileBrowserContextMenu");
   fFilter      = 0;
   fGroupSize   = 1000;
   fListLevel   = 0;
   fCurrentDir  = 0;
   fRootDir     = 0;
   fDir         = 0;
   fFile        = 0;
   fNKeys       = 0;
   fCnt         = 0;
   fFilterStr   = "*";

   TString gv = gEnv->GetValue("Browser.GroupView", "1000");
   Int_t igv = atoi(gv.Data());
   if (igv > 10)
      fGroupSize = igv;

   if (gEnv->GetValue("Browser.ShowHidden", 0))
      fShowHidden = kTRUE;
   else
      fShowHidden = kFALSE;

   fDblClick = kFALSE;

   TQObject::Connect("TGHtmlBrowser", "Clicked(char*)",
                     "TGFileBrowser", this, "Selected(char*)");

   TQObject::Connect("TPad", "Modified()",
                     "TGFileBrowser", this, "PadModified()");

   fListLevel = 0;
   MapSubwindows();
   Resize(GetDefaultSize());
   MapWindow();
}

//______________________________________________________________________________
TGFileBrowser::~TGFileBrowser()
{
   // Destructor.

   TQObject::Disconnect("TGHtmlBrowser", "Clicked(char*)");
   TQObject::Disconnect("TPad", "Modified()");

   delete fContextMenu;
   delete fListTree;
   if (fRootIcon) fClient->FreePicture(fRootIcon);
   if (fCachedPic && (fCachedPic != fFileIcon))
      fClient->FreePicture(fCachedPic);
   if (fFileIcon) fClient->FreePicture(fFileIcon);
   Cleanup();
}

//______________________________________________________________________________
static Bool_t IsObjectEditable(TClass *cl)
{
   // Helper function checking if a class has a graphic properties editor.

   TBaseClass *base;
   TList* bcl = cl->GetListOfBases();
   TIter next(bcl);
   while ((base = (TBaseClass*) next())) {
      cl = base->GetClassPointer();
      if (cl && TClass::GetClass(Form("%sEditor", cl->GetName())))
         return kTRUE;
      if (IsObjectEditable(cl))
         return kTRUE;
   }
   return kFALSE;
}

//______________________________________________________________________________
static const char *FormatToolTip(TObject *obj, Int_t maxlen=0)
{
   // Format the tooltip information, based on the object passed in argument.

   static TString infos;
   if (!obj) {
      infos.Clear();
      return 0;
   }
   infos = obj->GetName();
   if (obj->GetTitle()) {
      infos += "\n";
      infos += obj->GetTitle();
   }
   if (maxlen > 0 && infos.Length() > maxlen) {
      infos.Remove(maxlen - 3);
      infos += "...";
   }
   TString objinfo = obj->GetObjectInfo(1, 1);
   if (!objinfo.IsNull() && !objinfo.BeginsWith("x=")) {
      Long64_t bsize, fsize, objsize;
      objsize = objinfo.Atoll();
      if (objsize > 0) {
         infos += "\n";
         bsize = fsize = objsize;
         if (fsize > 1024) {
            fsize /= 1024;
            if (fsize > 1024) {
               // 3.7MB is more informative than just 3MB
               infos += TString::Format("Size: %lld.%lldM", fsize/1024,
                                        (fsize%1024)/103);
            } else {
               infos += TString::Format("Size: %lld.%lldK", bsize/1024,
                                        (bsize%1024)/103);
            }
         } else {
            infos += TString::Format("Size: %lld bytes", bsize);
         }
      }
   }
   return infos.Data();
}

/**************************************************************************/
// TBrowserImp virtuals
/**************************************************************************/

//______________________________________________________________________________
void TGFileBrowser::Add(TObject *obj, const char *name, Int_t check)
{
   // Add items to the browser. This function has to be called
   // by the Browse() member function of objects when they are
   // called by a browser. If check < 0 (default) no check box is drawn,
   // if 0 then unchecked checkbox is added, if 1 checked checkbox is added.

   if (fListLevel && !strcmp(fListLevel->GetText(), "Classes") &&
      fListLevel->GetParent() &&
      !strcmp(fListLevel->GetParent()->GetText(), "root")) {
      // Browsing list of root classes...
   }
   else {
      if (obj && obj->InheritsFrom("TApplication"))
         fListLevel = 0;
      if (obj && obj->InheritsFrom("TSystemDirectory"))
         return;
   }
   if (fListLevel) {
      TString oname = "";
      if (name) oname = name;
      else if (obj) oname = obj->GetName();
      // check if the current item is filtered
      mFiltered_i it = fFilteredItems.find(fListLevel);
      if  (it != fFilteredItems.end()) {
         // check if the item (object) name match the filter
         const char *filter = (const char *)(*it).second;
         TRegexp re(filter, kTRUE);
         // if not, simply return, so no item will be added
         if (oname.Index(re) == kNPOS) return;
      }
   }
   const TGPicture *pic=0;
   if (obj && obj->InheritsFrom("TKey") && (obj->IsA() != TClass::Class()))
      AddKey(fListLevel, obj, name);
   else if (obj) {
      GetObjPicture(&pic, obj);
      if (!name) name = obj->GetName();
      if (check > -1) {
         if (!fListTree->FindChildByName(fListLevel, name)) {
            TGListTreeItem *item = fListTree->AddItem(fListLevel, name, obj,
                                                      pic, pic, kTRUE);
            if ((pic != fFileIcon) && (pic != fCachedPic))
               fClient->FreePicture(pic);
            if (item) fListTree->CheckItem(item, (Bool_t)check);
            fListTree->SetToolTipItem(item, FormatToolTip(obj, 32));
         }
      }
      else {
         // special case for remote object
         Bool_t isRemote = kFALSE;
         if (obj->InheritsFrom("TRemoteObject"))
            isRemote = kTRUE;
         else if (fListLevel) {
            // check also if one of its parents is a remote object
            TGListTreeItem *top = fListLevel;
            while (top->GetParent()) {
               TObject *tobj = (TObject *) top->GetUserData();
               if (tobj && (tobj->InheritsFrom("TRemoteObject") ||
                  tobj->InheritsFrom("TApplicationRemote"))) {
                  isRemote = kTRUE;
                  break;
               }
               top = top->GetParent();
            }
         }
         if (isRemote) {
            TRemoteObject *robj = (TRemoteObject *)obj;
            if (!strcmp(robj->GetClassName(), "TKey")) {
               AddKey(fListLevel, obj, name);
            }
            else {
               TString fname = name;
               // add the remote object only if not already in the list
               if (!fShowHidden && fname.BeginsWith("."))
                  return;
               AddRemoteFile(obj);
            }
         }
         else {
            if (!fListTree->FindChildByName(fListLevel, name)) {
               TGListTreeItem *item = fListTree->AddItem(fListLevel, name, obj, pic, pic);
               if ((pic != fFileIcon) && (pic != fCachedPic))
                  fClient->FreePicture(pic);
               if (item && obj && obj->InheritsFrom("TObject"))
                  item->SetDNDSource(kTRUE);
               fListTree->SetToolTipItem(item, FormatToolTip(obj, 32));
            }
         }
      }
   }
}

//______________________________________________________________________________
void TGFileBrowser::AddRemoteFile(TObject *obj)
{
   // Add remote file in list tree.

   Bool_t      is_link;
   Int_t       type;
   TString     filename;
   const TGPicture *spic;
   TGPicture *pic;

   FileStat_t sbuf;

   type    = 0;
   is_link = kFALSE;

   TRemoteObject *robj = (TRemoteObject *)obj;

   robj->GetFileStat(&sbuf);
   is_link = sbuf.fIsLink;
   type    = sbuf.fMode;
   filename = robj->GetName();
   if (R_ISDIR(type) || fFilter == 0 ||
       (fFilter && filename.Index(*fFilter) != kNPOS)) {

      GetFilePictures(&spic, type, is_link, filename);

      pic = (TGPicture*)spic; pic->AddReference();

      if ((!fListTree->FindChildByName(fListLevel, filename)) &&
         (!fListTree->FindChildByData(fListLevel, obj)))
         fListTree->AddItem(fListLevel, filename, obj, pic, pic);
   }
}

//______________________________________________________________________________
void TGFileBrowser::BrowseObj(TObject *obj)
{
   // Browse object. This, in turn, will trigger the calling of
   // TBrowser::Add() which will fill the IconBox and the tree.
   // Emits signal "BrowseObj(TObject*)".

   if (fNewBrowser)
      fNewBrowser->SetActBrowser(this);
   if (obj != gROOT) {
      if (!fListTree->FindItemByObj(fListTree->GetFirstItem(), obj)) {
         fListLevel = 0;
         Add(obj);
         fListLevel = fListTree->FindItemByObj(fListTree->GetFirstItem(), obj);
         fListTree->HighlightItem(fListLevel);
         if (obj->IsFolder())
            fListTree->OpenItem(fListLevel);
         fListTree->ClearViewPort();
         fListTree->AdjustPosition(fListLevel);
      }
   }
   if (fBrowser) obj->Browse(fBrowser);
   if (obj == gROOT) {
      TList *volumes = gSystem->GetVolumes("all");
      TList *curvol  = gSystem->GetVolumes("cur");
      if (volumes && curvol) {
         const char *curdrive;
         TNamed *named = (TNamed *)curvol->At(0);
         if (named)
            curdrive = named->GetName();
         else
            curdrive = "C:";
         TIter next(volumes);
         TNamed *drive;
         while ((drive = (TNamed *)next())) {
            AddFSDirectory(TString::Format("%s\\", drive->GetName()), drive->GetTitle(),
                           (strcmp(drive->GetName(), curdrive) == 0) ?
                           "SetRootDir" : "Add");
         }
         delete volumes;
         delete curvol;
      }
      else {
         AddFSDirectory("/");
      }
      GotoDir(gSystem->WorkingDirectory());
      if (gROOT->GetListOfFiles() && !gROOT->GetListOfFiles()->IsEmpty())
         Selected(0);
   }
}

//______________________________________________________________________________
void TGFileBrowser::Checked(TObject *obj, Bool_t checked)
{
   // Emits signal when double clicking on icon.

   if (fNewBrowser)
      fNewBrowser->Checked(obj, checked);
}

//______________________________________________________________________________
Option_t *TGFileBrowser::GetDrawOption() const
{
   // returns drawing option

   return fDrawOption->GetTextEntry()->GetText();
}

//______________________________________________________________________________
void TGFileBrowser::GetFilePictures(const TGPicture **pic, Int_t file_type,
                                    Bool_t is_link, const char *name)
{
   // Determine the file picture for the given file type.

   static TString cached_ext;
   static const TGPicture *cached_spic = 0;
   const char *ext = name ? strrchr(name, '.') : 0;
   TString sname = name ? name : " ";
   *pic = 0;

   if (ext && cached_spic && (cached_ext == ext)) {
      *pic = cached_spic;
      return;
   }

   if (R_ISREG(file_type)) {
      *pic = gClient->GetMimeTypeList()->GetIcon(name, kTRUE);

      if (*pic) {
         if (ext) {
            cached_ext = ext;
            cached_spic = *pic;
            return;
         }
      }
   } else {
      *pic = 0;
   }

   if (*pic == 0) {
      *pic = gClient->GetPicture("doc_t.xpm");

      if (R_ISREG(file_type) && (file_type) & kS_IXUSR) {
         *pic = gClient->GetPicture("app_t.xpm");
      }
      if (R_ISDIR(file_type)) {
         *pic = gClient->GetPicture("folder_t.xpm");
      }
      if(sname.EndsWith(".root")) {
         *pic = gClient->GetPicture("rootdb_t.xpm");
      }

   }
   if (is_link) {
      *pic = gClient->GetPicture("slink_t.xpm");
   }

   cached_spic = 0;
   cached_ext = "";
}

//______________________________________________________________________________
void TGFileBrowser::RecursiveRemove(TObject *obj)
{
   // Recursively remove object.

   TGListTreeItem *itm = 0, *item = 0;
   if (obj->InheritsFrom("TFile")) {
      itm = fListTree->FindChildByData(0, gROOT->GetListOfFiles());
      if (itm)
         item = fListTree->FindChildByData(itm, obj);
      if (item) {
         // if the item to be deleted has a filter,
         // delete its entry in the map
         if (CheckFiltered(item))
            fFilteredItems.erase(item);
         fListTree->DeleteItem(item);
      }
      itm = fRootDir ? fRootDir->GetFirstChild() : 0;
      while (itm) {
         item = fListTree->FindItemByObj(itm, obj);
         if (item) {
            fListTree->DeleteChildren(item);
            item->SetUserData(0);
         }
         itm = itm->GetNextSibling();
      }
   }
   if (!obj->InheritsFrom("TFile") && fRootDir) {
      item = fListTree->FindItemByObj(fRootDir, obj);
      // if the item to be deleted has a filter, delete its entry in the map
      if (item && CheckFiltered(item))
         fFilteredItems.erase(item);
      fListTree->RecursiveDeleteItem(fRootDir, obj);
   }
   //fListTree->ClearViewPort();
}

//______________________________________________________________________________
void TGFileBrowser::Refresh(Bool_t /*force*/)
{
   // Refresh content of the list tree.

   TTimer::SingleShot(200, "TGFileBrowser", this, "Update()");
   return; // disable refresh for the time being...
   // coverity[unreachable]
   TCursorSwitcher cursorSwitcher(this, fListTree);
   static UInt_t prev = 0;
   UInt_t curr =  gROOT->GetListOfBrowsables()->GetSize();
   if (!prev) prev = curr;

   if (prev != curr) { // refresh gROOT
      TGListTreeItem *sav = fListLevel;
      fListLevel = 0;
      BrowseObj(gROOT);
      fListLevel = sav;
      prev = curr;
   }
}

//______________________________________________________________________________
void TGFileBrowser::Update()
{
   // Update content of the list tree.

   Long64_t size = 0;
   Long_t id = 0, flags = 0, modtime = 0;
   char path[1024];
   TGListTreeItem *item = fCurrentDir;
   TObject *selected = 0;
   if (!item) item = fRootDir;
   if (!item) return;
   //fListTree->DeleteChildren(item);
   TGListTreeItem *curr = fListTree->GetSelected(); // GetCurrent() ??
   if (curr) {
      TObject *obj = (TObject *) curr->GetUserData();
      if (obj && !obj->TestBit(kNotDeleted)) {
         // if the item to be deleted has a filter,
         // delete its entry in the map
         if (CheckFiltered(curr))
            fFilteredItems.erase(curr);
         fListTree->DeleteItem(curr);
         curr = 0;
         obj = 0;
      }
      else if (obj && obj->TestBit(kNotDeleted) &&
               obj->InheritsFrom("TObjString") && curr->GetParent()) {
         fListTree->GetPathnameFromItem(curr->GetParent(), path);
         if (strlen(path) > 1) {
            TString dirpath = FullPathName(curr->GetParent());
            Int_t res = gSystem->GetPathInfo(dirpath.Data(), &id, &size,
                                             &flags, &modtime);
            if ((res == 0) && (flags & 2)) {
               TString fullpath = FullPathName(curr);
               if (gSystem->AccessPathName(fullpath.Data())) {
                  // if the item to be deleted has a filter,
                  // delete its entry in the map
                  if (CheckFiltered(curr))
                     fFilteredItems.erase(curr);
                  fListTree->DeleteItem(curr);
                  curr = 0;
                  obj = 0;
               }
            }
         }
      }
      selected = obj;
      if (selected && selected->InheritsFrom("TLeaf"))
         selected = (TObject *)gROOT->ProcessLine(TString::Format("((TLeaf *)0x%lx)->GetBranch()->GetTree();", (ULong_t)selected));
      if (selected && selected->InheritsFrom("TBranch"))
         selected = (TObject *)gROOT->ProcessLine(TString::Format("((TBranch *)0x%lx)->GetTree();", (ULong_t)selected));
   }
   TString actpath = FullPathName(item);
   flags = id = size = modtime = 0;
   if (gSystem->GetPathInfo(actpath.Data(), &id, &size, &flags, &modtime) == 0) {
      Int_t isdir = (Int_t)flags & 2;

      TString savdir = gSystem->WorkingDirectory();
      if (isdir) {
         TGListTreeItem *del = 0, *itm = item->GetFirstChild();
         while (itm) {
            fListTree->GetPathnameFromItem(itm, path);
            if (strlen(path) > 1) {
               TString recpath = FullPathName(itm);
               if (gSystem->AccessPathName(recpath.Data())) {
                  del = itm;
                  itm = itm->GetNextSibling();
                  // if the item to be deleted has a filter,
                  // delete its entry in the map
                  if (CheckFiltered(del))
                     fFilteredItems.erase(del);
                  fListTree->DeleteItem(del);
               }
            }
            if (del)
               del = 0;
            else
               itm = itm->GetNextSibling();
         }
      }
   }
   TGListTreeItem *sav = fListLevel;
   DoubleClicked(item, 1);
   fListLevel = sav;
   CheckFiltered(fListLevel, kTRUE);

   if (selected && gPad && IsObjectEditable(selected->IsA())) {
      TVirtualPadEditor *ved = TVirtualPadEditor::GetPadEditor(kFALSE);
      if (ved) {
         TGedEditor *ged = (TGedEditor *)ved;
         ged->SetModel(gPad, selected, kButton1Down);
      }
   }
}

/**************************************************************************/
// Other
/**************************************************************************/

//______________________________________________________________________________
void TGFileBrowser::AddFSDirectory(const char *entry, const char *path,
                                   Option_t *opt)
{
   // Add file system directory in the list tree.

   TGListTreeItem *item = 0;
   if ((opt == 0) || (!opt[0])) {
      if (fRootDir == 0 && !fListTree->FindChildByName(0, rootdir))
         item = fRootDir = fListTree->AddItem(0, rootdir);
      return;
   }
   if (strstr(opt, "SetRootDir")) {
      if (!fListTree->FindChildByName(0, entry))
         item = fRootDir = fListTree->AddItem(0, entry);
   }
   else if (strstr(opt, "Add")) {
      // MT: i give up! wanted to place entries for selected
      // directories like home, pwd, alice-macros.
      // TGListTreeItem *lti = fListTree->AddItem(0, entry);
      //
      if (!fListTree->FindChildByName(0, entry))
         item = fListTree->AddItem(0, entry);
   }
   if (item && path) {
      TString infos = path;
      item->SetTipText(path);
      TGPicture *pic = 0;
      if (infos.Contains("Removable"))
         pic = (TGPicture *)gClient->GetPicture("fdisk_t.xpm");
      else if (infos.Contains("Local"))
         pic = (TGPicture *)gClient->GetPicture("hdisk_t.xpm");
      else if (infos.Contains("CD"))
         pic = (TGPicture *)gClient->GetPicture("cdrom_t.xpm");
      else if (infos.Contains("Network"))
         pic = (TGPicture *)gClient->GetPicture("netdisk_t.xpm");
      if (pic)
         item->SetPictures(pic, pic);
   }
}

//______________________________________________________________________________
void TGFileBrowser::AddKey(TGListTreeItem *itm, TObject *obj, const char *name)
{
   // display content of ROOT file

   // Int_t from, to;
   TGListTreeItem *where;
   static TGListTreeItem *olditem = itm;
   static TGListTreeItem *item = itm;
   const TGPicture *pic;

   if (itm == 0) return;

   if ((fCnt == 0) || (olditem != itm)) {
      olditem = item = itm;
   }
   if (!name) name = obj->GetName();
   if (fNKeys > fGroupSize) {
      where = itm->GetFirstChild();
      while (where) {
         if (fListTree->FindItemByObj(where, obj))
            return;
         where = where->GetNextSibling();
      }
   }
   if ((fNKeys > fGroupSize) && (fCnt % fGroupSize == 0)) {
      if (item != itm) {
         TString newname = TString::Format("%s-%s", item->GetText(), name);
         item->Rename(newname.Data());
      }
      item = fListTree->AddItem(itm, name);
      item->SetDNDSource(kTRUE);
   }
   if ((fCnt > fGroupSize) && (fCnt >= fNKeys-1)) {
      TString newname = TString::Format("%s-%s", item->GetText(), name);
      item->Rename(newname.Data());
   }
   GetObjPicture(&pic, obj);
   if (!fListTree->FindChildByName(item, name)) {
      TGListTreeItem *it = fListTree->AddItem(item, name, obj, pic, pic);
      if (pic && (pic != fFileIcon) && (pic != fCachedPic))
         fClient->FreePicture(pic);
      it->SetDNDSource(kTRUE);
      it->SetTipText(FormatToolTip(obj, 32));
   }
   fCnt++;
}

//______________________________________________________________________________
void TGFileBrowser::ApplyFilter(Int_t id)
{
   // Apply filter selected in combo box to the file tree view.

   // Long64_t size;
   // Long_t fid, flags, modtime;

   if (fFilter) delete fFilter;
   fFilter = 0;
   if ((id > 1) && (id < 5))
      fFilter = new TRegexp(filters[id], kTRUE);
   else if ((id < 0) || (id > 4)) {
      TGTextLBEntry *lbe = (TGTextLBEntry *)fFileType->GetSelectedEntry();
      if (lbe) {
         const char *text = lbe->GetTitle();
         fFilter = new TRegexp(text, kTRUE);
      }
   }
   TGListTreeItem *item = fCurrentDir;
   if (!item)
      item = fRootDir;
   if (!item) return;
   fListTree->DeleteChildren(item);
   DoubleClicked(item, 1);
   //fListTree->AdjustPosition(item);
   fListTree->ClearViewPort();
}

//______________________________________________________________________________
void TGFileBrowser::Chdir(TGListTreeItem *item)
{
   // Make object associated with item the current directory.

   if (item) {
      TGListTreeItem *i = item;
      while (i) {
         TObject *obj = (TObject*) i->GetUserData();
         if ((obj) && obj->InheritsFrom("TDirectory")) {
            ((TDirectory *)obj)->cd();
            break;
         }
         i = i->GetParent();
      }
   }
}

//______________________________________________________________________________
void TGFileBrowser::CheckRemote(TGListTreeItem *item)
{
   // Check if the current list tree item points to a remote object.

   if (!item) return;
   TObject *obj = (TObject *) item->GetUserData();
   if (obj) {
      if (obj->InheritsFrom("TApplicationRemote")) {
         if (!gApplication->GetAppRemote()) {
            gROOT->ProcessLine(TString::Format(".R %s", item->GetText()));
            if (gApplication->GetAppRemote()) {
               Getlinem(kInit, TString::Format("\n%s:root [0]",
                        gApplication->GetAppRemote()->ApplicationName()));
            }
         }
      }
      if (item->GetParent() && item->GetParent()->GetUserData() &&
         ((TObject *)item->GetParent()->GetUserData())->InheritsFrom("TApplicationRemote")) {
         // switch to remote session
         if (!gApplication->GetAppRemote()) {
            gROOT->ProcessLine(TString::Format(".R %s", item->GetParent()->GetText()));
            if (gApplication->GetAppRemote()) {
               Getlinem(kInit, TString::Format("\n%s:root [0]",
                        gApplication->GetAppRemote()->ApplicationName()));
            }
         }
         else if (!strcmp(item->GetText(), "ROOT Files")) {
            // update list of files opened in the remote session
            gApplication->SetBit(TApplication::kProcessRemotely);
            gApplication->ProcessLine("((TApplicationServer *)gApplication)->BrowseFile(0);");
         }
      }
      else {
         // check if the listtree item is from a local session or
         // from a remote session, then switch to the session it belongs to
         TGListTreeItem *top = item;
         while (top->GetParent()) {
            top = top->GetParent();
         }
         TObject *topobj = (TObject *) top->GetUserData();
         if (topobj && topobj->InheritsFrom("TApplicationRemote")) {
            // it belongs to a remote session
            if (!gApplication->GetAppRemote()) {
               // switch to remote session if not already in
               gROOT->ProcessLine(TString::Format(".R %s", top->GetText()));
               if (gApplication->GetAppRemote()) {
                  Getlinem(kInit, TString::Format("\n%s:root [0]",
                           gApplication->GetAppRemote()->ApplicationName()));
               }
            }
         }
         else if (gApplication->GetAppRemote()) {
            // switch back to local session if not already in
            gApplication->ProcessLine(".R");
            Getlinem(kInit, "\nroot [0]");
         }
      }
   }
   else if (gApplication->GetAppRemote()) {
      // switch back to local session if not already in
      gApplication->ProcessLine(".R");
      Getlinem(kInit, "\nroot [0]");
   }
}

//______________________________________________________________________________
Bool_t TGFileBrowser::CheckFiltered(TGListTreeItem *item, Bool_t but)
{
   // Check if there is a filter active on the children of the list tree item.
   // If the but argument is true, the "filter" button state is set accordingly,
   // and its tooltip will show the filter used.

   Bool_t found = kFALSE;
   TString filter;
   // if there is no filter (the map is empty) then just return
   if (fFilteredItems.empty())
      return kFALSE;
   mFiltered_i it = fFilteredItems.find(item);
   if  (it != fFilteredItems.end()) {
      // if the item is in the map, take the filter regexp string
      filter = (const char *)(*it).second;
      fFilterStr = filter;
      found = kTRUE;
   }
   if (but) {
      // if the but argument is true, change the button state
      // to reflect the filtering state
      fFilterButton->SetState(found ? kButtonEngaged : kButtonUp);
      if (found) {
         // format the tooltip to display the regexp used as filter
         filter.Prepend("Showing only \'");
         filter += "\'";
         fFilterButton->SetToolTipText(filter.Data());
      }
      else {
         // reset the tooltip text
         fFilterButton->SetToolTipText("Filter Content...");
      }
   }
   return found;
}

//______________________________________________________________________________
Bool_t TGFileBrowser::CheckSorted(TGListTreeItem *item, Bool_t but)
{
   // Check if the list tree item children are alphabetically sorted.
   // If the but argument is true, the "sort" button state is set accordingly.

   Bool_t found = kFALSE;
   TGListTreeItem *i, *itm;
   if (item->GetFirstChild())
      itm = item;
   else
      itm = item->GetParent();
   for (sLTI_i p=fSortedItems.begin(); p!=fSortedItems.end(); ++p) {
      i = (TGListTreeItem *)(*p);
      if (itm == i) {
         found = kTRUE;
         break;
      }
   }
   if (but) fSortButton->SetState(found ? kButtonEngaged : kButtonUp);
   return found;
}

//______________________________________________________________________________
void TGFileBrowser::Clicked(TGListTreeItem *item, Int_t btn, Int_t x, Int_t y)
{
   // Process mouse clicks in TGListTree.

   char path[1024];
   Long64_t size = 0;
   Long_t id = 0, flags = 0, modtime = 0;
   fListLevel = item;
   if (!item) return;
   CheckSorted(item, kTRUE);
   CheckFiltered(item, kTRUE);
   CheckRemote(item);
   TObject *selected = 0;
   TString fullpath = FullPathName(item);
   TObject *obj = (TObject *) item->GetUserData();
   if (obj && (!obj->InheritsFrom("TObjString") ||
       gSystem->AccessPathName(fullpath.Data()))) {
      if (obj->InheritsFrom("TKey") && (obj->IsA() != TClass::Class())) {
         Chdir(item);
         const char *clname = (const char *)gROOT->ProcessLine(TString::Format("((TKey *)0x%lx)->GetClassName();", (ULong_t)obj));
         if (clname && strcmp(clname, "TGeoManager")) {
            TClass *cl = TClass::GetClass(clname);
            TString name = (const char *)gROOT->ProcessLine(TString::Format("((TKey *)0x%lx)->GetName();", (ULong_t)obj));
            name += ";";
            name += (Short_t)gROOT->ProcessLine(TString::Format("((TKey *)0x%lx)->GetCycle();", (ULong_t)obj));
            void *add = gDirectory->FindObjectAny((char *) name.Data());
            if (add && cl->IsTObject()) {
               obj = (TObject*)add;
               // don't change the user data, to avoid deletion of the
               // list tree item by RecursiveRemove()
               // it is better to read the object each time anyway,
               // as it may have changed in the file
               if (obj->InheritsFrom("TDirectory") || obj->InheritsFrom("TList"))
                  item->SetUserData(obj);
            }
         }
      }
      if (obj->InheritsFrom("TLeaf") ||
          obj->InheritsFrom("TBranch")) {
         Chdir(item);
      }
      if (btn == kButton3)
        fContextMenu->Popup(x, y, obj, fBrowser);
      selected = obj;
   }
   else {
      fListTree->GetPathnameFromItem(item, path);
      if (strlen(path) > 3) {
         if (gSystem->GetPathInfo(fullpath.Data(), &id, &size, &flags, &modtime) == 0) {
            if (flags & 2) {
               fCurrentDir = item;
               if (btn == kButton3) {
                  if (fDir) delete fDir;
                  fDir = new TSystemDirectory(item->GetText(), fullpath.Data());
                  fContextMenu->Popup(x, y, fDir, fBrowser);
               }
            }
            else {
               fCurrentDir = item->GetParent();
               if (btn == kButton3) {
                  if (fFile) delete fFile;
                  fFile = new TSystemFile(item->GetText(), fullpath.Data());
                  fContextMenu->Popup(x, y, fFile, fBrowser);
               }
            }
         }
      }
   }
   fListTree->ClearViewPort();
   if (selected && selected->InheritsFrom("TLeaf"))
      selected = (TObject *)gROOT->ProcessLine(TString::Format("((TLeaf *)0x%lx)->GetBranch()->GetTree();", (ULong_t)selected));
   if (selected && selected->InheritsFrom("TBranch"))
      selected = (TObject *)gROOT->ProcessLine(TString::Format("((TBranch *)0x%lx)->GetTree();", (ULong_t)selected));
   if (selected && selected->InheritsFrom("TTree")) {
      // if a tree not attached to any directory (e.g. in a TFolder)
      // then attach it to the current directory (gDirectory)
      TDirectory *tdir = (TDirectory *)gROOT->ProcessLine(TString::Format("((TTree *)0x%lx)->GetDirectory();", (ULong_t)selected));
      if (!tdir) {
         gROOT->ProcessLine(TString::Format("((TTree *)0x%lx)->SetDirectory(gDirectory);", (ULong_t)selected));
      }
   }
   if (selected && gPad && IsObjectEditable(selected->IsA())) {
      TVirtualPadEditor *ved = TVirtualPadEditor::GetPadEditor(kFALSE);
      if (ved) {
         TGedEditor *ged = (TGedEditor *)ved;
         ged->SetModel(gPad, selected, kButton1Down);
      }
   }
}

//______________________________________________________________________________
TString TGFileBrowser::FullPathName(TGListTreeItem* item)
{
   // returns an absolute path

   TGListTreeItem *parent, *itm = item;
   TString dirname = itm->GetText();

   while ((parent=itm->GetParent())) {
      char *s = gSystem->ConcatFileName(parent->GetText(), dirname);
      dirname = s;
      delete [] s;
      itm = parent;
   }
   dirname = gSystem->ExpandPathName(dirname.Data());
#ifdef R__WIN32
   // only handle .lnk files on Windows
   while (dirname.Contains(".lnk")) {
      Ssiz_t idx = dirname.Index(".lnk") + 4;
      TString resolved = dirname;
      resolved.Remove(idx);
      resolved = gSystem->ExpandPathName(resolved.Data());
      dirname = resolved.Append(dirname.Remove(0, idx));
   }
#endif
   return dirname;
}

//______________________________________________________________________________
TString TGFileBrowser::DirName(TGListTreeItem* item)
{
   // returns the directory path

   TString dirname;
   TString fullpath = FullPathName(item);

#ifdef WIN32
   char   winDrive[256];
   char   winDir[256];
   char   winName[256];
   char   winExt[256];
   _splitpath(fullpath.Data(), winDrive, winDir, winName, winExt);
   dirname = TString::Format("%s%s", winDrive, winDir);
#else
   dirname = gSystem->DirName(fullpath);
#endif
   return dirname;
}

//______________________________________________________________________________
static Bool_t IsTextFile(const char *candidate)
{
   // Returns true if given a text file
   // Uses the specification given on p86 of the Camel book
   // - Text files have no NULLs in the first block
   // - and less than 30% of characters with high bit set

   Int_t i;
   Int_t nchars;
   Int_t weirdcount = 0;
   char buffer[512];
   FILE *infile;
   FileStat_t buf;

   if (gSystem->GetPathInfo(candidate, buf) || !(buf.fMode & kS_IFREG))
      return kFALSE;

   infile = fopen(candidate, "r");
   if (infile) {
      // Read a block
      nchars = fread(buffer, 1, 512, infile);
      fclose (infile);
      // Examine the block
      for (i = 0; i < nchars; i++) {
         if (buffer[i] & 128)
            weirdcount++;
         if (buffer[i] == '\0')
            // No NULLs in text files
            return kFALSE;
      }
      if ((nchars > 0) && ((weirdcount * 100 / nchars) > 30))
         return kFALSE;
   } else {
      // Couldn't open it. Not a text file then
      return kFALSE;
   }
   return kTRUE;
}

//______________________________________________________________________________
static const TGPicture *MakeLinkPic(const TGPicture *pic)
{
   // Create a symlink (shortcut on Windows) icon by merging the picture
   // passed as argument and the slink_t.xpm icon (small arrow)

   const TGPicture *merged;
   TImage *img1, *img2;
   if (pic) {
      img1 = TImage::Create();
      if (img1 == 0) return pic;
      img1->SetImage(((const TGPicture *)pic)->GetPicture(),
                     ((const TGPicture *)pic)->GetMask());
      img2 = TImage::Open("slink_t.xpm");
      if (img2) img1->Merge(img2);
      TString lnk_name = ((const TGPicture *)pic)->GetName();
      lnk_name.Prepend("lnk_");
      merged = gClient->GetPicturePool()->GetPicture(lnk_name.Data(),
                                          img1->GetPixmap(), img1->GetMask());
      if (img2) delete img2; delete img1;
      return merged;
   }
   return pic;
}

//______________________________________________________________________________
void TGFileBrowser::DoubleClicked(TGListTreeItem *item, Int_t /*btn*/)
{
   // Process double clicks in TGListTree.

   const TGPicture *pic=0;
   TString dirname = DirName(item);
   TString fullpath = FullPathName(item);
   TGListTreeItem *itm;
   FileStat_t sbuf;
   Long64_t size;
   Long_t id, flags, modtime;
   char action[512];
   TString act;
   Bool_t is_link = kFALSE;
   if (!gSystem->GetPathInfo(item->GetText(), sbuf) && sbuf.fIsLink) {
      is_link = kTRUE;
      fullpath = gSystem->ExpandPathName(item->GetText());
   }

   if (fNewBrowser)
      fNewBrowser->SetActBrowser(this);
   TCursorSwitcher switcher(this, fListTree);
   fListLevel = item;
   CheckSorted(item, kTRUE);
   CheckFiltered(item, kTRUE);
   CheckRemote(item);
   TGListTreeItem *pitem = item->GetParent();
   TObject *obj = (TObject *) item->GetUserData();
   if (obj && !obj->InheritsFrom("TSystemFile")) {
      TString ext = obj->GetName();
      if (obj->InheritsFrom("TDirectory")) {
         if (((TDirectory *)obj)->GetListOfKeys())
            fNKeys = ((TDirectory *)obj)->GetListOfKeys()->GetEntries();
         else
            fNKeys = 0;
      }
      else if (obj->InheritsFrom("TKey") && (obj->IsA() != TClass::Class())) {
         Chdir(item);
         const char *clname = (const char *)gROOT->ProcessLine(TString::Format("((TKey *)0x%lx)->GetClassName();", (ULong_t)obj));
         if (clname) {
            TClass *cl = TClass::GetClass(clname);
            TString name = (const char *)gROOT->ProcessLine(TString::Format("((TKey *)0x%lx)->GetName();", (ULong_t)obj));
            name += ";";
            name += (Short_t)gROOT->ProcessLine(TString::Format("((TKey *)0x%lx)->GetCycle();", (ULong_t)obj));
            void *add = gDirectory->FindObjectAny((char *) name.Data());
            if (add && cl->IsTObject()) {
               obj = (TObject*)add;
               // don't change the user data, to avoid deletion of the
               // list tree item by RecursiveRemove()
               // it is better to read the object each time anyway,
               // as it may have changed in the file
               if (obj->InheritsFrom("TDirectory") || obj->InheritsFrom("TList"))
                  item->SetUserData(obj);
            }
         }
      }
      else if (obj->InheritsFrom("TLeaf") ||
          obj->InheritsFrom("TBranch")) {
         Chdir(item);
      }
      else if (obj->InheritsFrom("TRemoteObject")) {
         // the real object is a TKey
         TRemoteObject *robj = (TRemoteObject *)obj;
         if (!strcmp(robj->GetClassName(), "TKey")) {
            TGListTreeItem *parent = item;
            TRemoteObject *probj = (TRemoteObject *)parent->GetUserData();
            // find the TFile remote object containing the TKey
            while ( probj && strcmp(probj->GetClassName(), "TFile")) {
               parent = parent->GetParent();
               probj = (TRemoteObject *)parent->GetUserData();
            }
            if (probj && !strcmp(probj->GetClassName(), "TFile")) {
               // remotely browse file (remotely call TFile::cd())
               gApplication->SetBit(TApplication::kProcessRemotely);
               gApplication->ProcessLine(
                  TString::Format("((TApplicationServer *)gApplication)->BrowseFile(\"%s\");",
                       probj->GetName()));
               gSystem->Sleep(250);
            }
         }
         if (gClient->GetMimeTypeList()->GetAction(obj->GetName(), action)) {
            act = action;
            act.ReplaceAll("%s", obj->GetName());
            if ((act[0] != '!') && (strcmp(pitem->GetText(), "ROOT Files"))) {
               // special case for remote object: remote process
               gApplication->SetBit(TApplication::kProcessRemotely);
               gApplication->ProcessLine(act.Data());
            }
         }
         if ((ext.EndsWith(".root")) && (strcmp(pitem->GetText(), "ROOT Files"))) {
            gApplication->SetBit(TApplication::kProcessRemotely);
            gApplication->ProcessLine("((TApplicationServer *)gApplication)->BrowseFile(0);");
         }
      }
      if (!obj->InheritsFrom("TObjString") ||
          gSystem->AccessPathName(fullpath.Data())) {
         if (fBrowser) fBrowser->SetDrawOption(GetDrawOption());
         fDblClick = kTRUE;
         if (gClient->GetMimeTypeList()->GetAction(obj->IsA()->GetName(), action)) {
            act = action;
            if (act.Contains("%s")) act.ReplaceAll("%s", obj->GetName());
            else if (fBrowser && act.Contains("->Browse()")) obj->Browse(fBrowser);
            else if (act.Contains("->Draw()")) obj->Draw(GetDrawOption());
            else {
               act.Prepend(obj->GetName());
               gInterpreter->SaveGlobalsContext();
               if (act[0] == '!') {
                  act.Remove(0, 1);
                  gSystem->Exec(act.Data());
               } else {
                  // special case for remote object: remote process
                  if (obj->InheritsFrom("TRemoteObject"))
                     gApplication->SetBit(TApplication::kProcessRemotely);
                  gApplication->ProcessLine(act.Data());
               }
            }
         }
         else if (obj->InheritsFrom("TCanvas") &&
                  fNewBrowser->GetTabRight()->GetTabTab(obj->GetName())) {
            // avoid potential crash when drawing a canvas with the same name
            // than a canvas already embedded in one of the browser's tab
            obj->DrawClone();
         }
         else if (fBrowser && !obj->InheritsFrom("TFormula"))
            obj->Browse(fBrowser);
         fDblClick = kFALSE;
         fNKeys = 0;
         fCnt = 0;
         fListTree->ClearViewPort();
         if (gPad) gPad->Update();
         return;
      }
   }
   flags = id = size = modtime = 0;
   if (gSystem->GetPathInfo(fullpath.Data(), &id, &size, &flags, &modtime) != 0)
      return;
   Int_t isdir = (Int_t)flags & 2;

   TString savdir = gSystem->WorkingDirectory();
   if (isdir) {
      fCurrentDir = item;
      //fListTree->DeleteChildren(item);
      TSystemDirectory dir(item->GetText(),FullPathName(item));
      TList *files = dir.GetListOfFiles();
      if (files) {
         files->Sort();
         TIter next(files);
         TSystemFile *file;
         TString fname, pname;
         // directories first
         //fListTree->DeleteChildren(item);
         while ((file=(TSystemFile*)next())) {
            fname = file->GetName();
            if (file->IsDirectory()) {
               if (!fShowHidden && fname.BeginsWith("."))
                  continue;
               if ((fname!="..") && (fname!=".")) { // skip it
                  if (!fListTree->FindChildByName(item, fname)) {
                     itm = fListTree->AddItem(item, fname);
                     if (!gSystem->GetPathInfo(fname, sbuf) &&
                         sbuf.fIsLink) {
                        // change the pictures if it is a symlink
                        // (shortcut on Windows)
                        const TGPicture *opened = 0, *l_opened = 0;
                        const TGPicture *closed = 0, *l_closed = 0;
                        opened = fClient->GetPicture("ofolder_t.xpm");
                        if (opened) l_opened = MakeLinkPic(opened);
                        closed = fClient->GetPicture("folder_t.xpm");
                        if (closed) l_closed = MakeLinkPic(closed);
                        if (l_opened && l_closed)
                           itm->SetPictures(l_opened, l_closed);
                        if (opened) fClient->FreePicture(opened);
                        if (closed) fClient->FreePicture(closed);
                        if (l_opened) fClient->FreePicture(l_opened);
                        if (l_closed) fClient->FreePicture(l_closed);
                     }
                     // uncomment line below to set directories as
                     // DND targets
                     //itm->SetDNDTarget(kTRUE);
                     itm->SetUserData(0);
                  }
               }
            }
         }
         // then files...
         TIter nextf(files);
         while ((file=(TSystemFile*)nextf())) {
            fname = pname = file->GetName();
            if (!file->IsDirectory() && (fFilter == 0 ||
               (fFilter && fname.Index(*fFilter) != kNPOS))) {
               if (!fShowHidden && fname.BeginsWith("."))
                  continue;
               size = modtime = 0;
               if (gSystem->GetPathInfo(fname, sbuf) == 0) {
                  size    = sbuf.fSize;
                  modtime = sbuf.fMtime;
               }
               if (sbuf.fIsLink && pname.EndsWith(".lnk"))
                  pname.Remove(pname.Length()-4);
               pic = gClient->GetMimeTypeList()->GetIcon(pname, kTRUE);
               if (!pic)
                  pic = fFileIcon;
               if (sbuf.fIsLink)
                  pic = MakeLinkPic(pic);
               if (!fListTree->FindChildByName(item, fname)) {
                  itm = fListTree->AddItem(item, fname, pic, pic);
                  if (pic != fFileIcon)
                     fClient->FreePicture(pic);
                  if (sbuf.fIsLink)
                     itm->SetUserData(new TObjString(TString::Format("file://%s\r\n",
                                      gSystem->ExpandPathName(file->GetName()))), kTRUE);
                  else
                     itm->SetUserData(new TObjString(TString::Format("file://%s/%s\r\n",
                                      gSystem->UnixPathName(file->GetTitle()),
                                      file->GetName())), kTRUE);
                  itm->SetDNDSource(kTRUE);
                  if (size && modtime) {
                     char *tiptext = FormatFileInfo(fname.Data(), size, modtime);
                     itm->SetTipText(tiptext);
                     delete [] tiptext;
                  }
               }
            }
         }
         files->Delete();
         delete files;
      }
   }
   else {
      TString lnkname = item->GetText();
      if (is_link && lnkname.EndsWith(".lnk"))
         lnkname.Remove(lnkname.Length()-4);
      fCurrentDir = item->GetParent();
      TSystemFile f(lnkname.Data(), fullpath.Data());
      TString fname = f.GetName();
      if (fname.EndsWith(".root")) {
         TDirectory *rfile = 0;
         gSystem->ChangeDirectory(dirname.Data());
         rfile = (TDirectory *)gROOT->GetListOfFiles()->FindObject(obj);
         if (!rfile) {
            rfile = (TDirectory *)gROOT->ProcessLine(TString::Format("new TFile(\"%s\")",fname.Data()));
         }
         if (rfile) {
            // replace actual user data (TObjString) by the TDirectory...
            if (item->GetUserData()) {
               // first delete the data to avoid memory leaks
               TObject *obj2 = static_cast<TObject *>(item->GetUserData());
               // only delete TObjString as they are the only objects
               // created who have to be deleted
               TObjString *ostr = dynamic_cast<TObjString *>(obj2);
               if (ostr) delete ostr;
            }
            item->SetUserData(rfile);
            fNKeys = rfile->GetListOfKeys()->GetEntries();
            fCnt = 0;
            if (fBrowser) rfile->Browse(fBrowser);
            fNKeys = 0;
            fCnt = 0;
         }
      }
      else if (fname.EndsWith(".png")) {
         gSystem->ChangeDirectory(dirname.Data());
         XXExecuteDefaultAction(&f);
         gSystem->ChangeDirectory(savdir.Data());
      }
      else if (IsTextFile(fullpath.Data())) {
         gSystem->ChangeDirectory(dirname.Data());
         if (fNewBrowser) {
            TGFrameElement *fe = 0;
            TGTab *tabRight = fNewBrowser->GetTabRight();
            TGCompositeFrame *frame = tabRight->GetCurrentContainer();
            if (frame)
               fe = (TGFrameElement *)frame->GetList()->First();
            if (fe) {
               TGCompositeFrame *embed = (TGCompositeFrame *)fe->fFrame;
               TString fullname = f.GetTitle();
               fullname.ReplaceAll("\\", "\\\\");
               if (embed->InheritsFrom("TGTextEditor")) {
                  gROOT->ProcessLine(TString::Format("((TGTextEditor *)0x%lx)->LoadFile(\"%s\");",
                                     (ULong_t)embed, fullname.Data()));
               }
               else if (embed->InheritsFrom("TGTextEdit")) {
                  gROOT->ProcessLine(TString::Format("((TGTextEdit *)0x%lx)->LoadFile(\"%s\");",
                                     (ULong_t)embed, fullname.Data()));
               }
               else {
                  XXExecuteDefaultAction(&f);
               }
            }
            else {
               XXExecuteDefaultAction(&f);
            }
         }
         gSystem->ChangeDirectory(savdir.Data());
      }
      else {
         gSystem->ChangeDirectory(dirname.Data());
         XXExecuteDefaultAction(&f);
         gSystem->ChangeDirectory(savdir.Data());
      }
   }
   //gSystem->ChangeDirectory(savdir.Data());
   fListTree->ClearViewPort();
}

//____________________________________________________________________________
Long_t TGFileBrowser::XXExecuteDefaultAction(TObject *obj)
{
   // Execute default action for selected object (action is specified
   // in the $HOME/.root.mimes or $ROOTSYS/etc/root.mimes file.

   char action[512];
   TString act;
   TString ext = obj->GetName();
   if (fBrowser) fBrowser->SetDrawOption(GetDrawOption());

   if (gClient->GetMimeTypeList()->GetAction(obj->GetName(), action)) {
      act = action;
      act.ReplaceAll("%s", obj->GetName());
      gInterpreter->SaveGlobalsContext();

      if (act[0] == '!') {
         act.Remove(0, 1);
         gSystem->Exec(act.Data());
         return 0;
      } else {
         // special case for remote object: remote process
         if (obj->InheritsFrom("TRemoteObject"))
            gApplication->SetBit(TApplication::kProcessRemotely);

         const Long_t res = gApplication->ProcessLine(act.Data());
#ifdef R__HAS_COCOA
         if (act.Contains(".x") || act.Contains(".X")) {
            if (gPad) gPad->Update();
         }
#endif
         return res;
      }
   }
   return 0;
}

//______________________________________________________________________________
char *TGFileBrowser::FormatFileInfo(const char *fname, Long64_t size, Long_t modtime)
{
   // Format file information to be displayed in the tooltip.

   Long64_t fsize, bsize;
   TString infos = fname;
   infos += "\n";

   fsize = bsize = size;
   if (fsize > 1024) {
      fsize /= 1024;
      if (fsize > 1024) {
         // 3.7MB is more informative than just 3MB
         infos += TString::Format("Size: %lld.%lldM", fsize/1024, (fsize%1024)/103);
      } else {
         infos += TString::Format("Size: %lld.%lldK", bsize/1024, (bsize%1024)/103);
      }
   } else {
      infos += TString::Format("Size: %lld", bsize);
   }
   struct tm *newtime;
   time_t loctime = (time_t) modtime;
   newtime = localtime(&loctime);
   if (newtime) {
      infos += "\n";
      infos += TString::Format("%d-%02d-%02d %02d:%02d",
                               newtime->tm_year + 1900,
                               newtime->tm_mon+1, newtime->tm_mday,
                               newtime->tm_hour, newtime->tm_min);
   }
   return StrDup(infos.Data());
}

//______________________________________________________________________________
void TGFileBrowser::GetObjPicture(const TGPicture **pic, TObject *obj)
{
   // Retrieve icons associated with class "name". Association is made
   // via the user's ~/.root.mimes file or via $ROOTSYS/etc/root.mimes.

   const char *clname = 0;
   TClass *objClass = 0;
   static TImage *im = 0;
   if (!im) {
      im = TImage::Create();
   }

   if (obj->IsA() == TClass::Class()) {
      objClass = obj->IsA();
      if (objClass)
         clname = objClass->GetName();
   }
   else if (obj->InheritsFrom("TKey")) {
      clname = (char *)gROOT->ProcessLine(TString::Format("((TKey *)0x%lx)->GetClassName();", (ULong_t)obj));
   }
   else if (obj->InheritsFrom("TKeyMapFile")) {
      clname = (char *)gROOT->ProcessLine(TString::Format("((TKeyMapFile *)0x%lx)->GetTitle();", (ULong_t)obj));
   }
   else if (obj->InheritsFrom("TRemoteObject")) {
      // special case for remote object: get real object class
      TRemoteObject *robj = (TRemoteObject *)obj;
      if (!strcmp(robj->GetClassName(), "TKey"))
         clname = robj->GetKeyClassName();
      else
         clname = robj->GetClassName();
   }
   else {
      objClass = obj->IsA();
      if (objClass)
         clname = objClass->GetName();
   }
   if (!clname) {
      clname = "Unknown";
   }
   const char *name = obj->GetIconName() ? obj->GetIconName() : clname;
   TString xpm_magic(name, 3);
   Bool_t xpm = xpm_magic == "/* ";
   const char *iconname = xpm ? obj->GetName() : name;

   if (obj->IsA()->InheritsFrom("TGeoVolume")) {
      iconname = obj->GetIconName() ? obj->GetIconName() : obj->IsA()->GetName();
   }

   if (fCachedPicName == iconname) {
      *pic = fCachedPic;
      return;
   }
   *pic = gClient->GetMimeTypeList()->GetIcon(iconname, kTRUE);
   if (!(*pic) && xpm) {
      if (im && im->SetImageBuffer((char**)&name, TImage::kXpm)) {
         im->Scale(im->GetWidth()/4, im->GetHeight()/4);
         *pic = gClient->GetPicturePool()->GetPicture(iconname, im->GetPixmap(),
                                                      im->GetMask());
      }
      gClient->GetMimeTypeList()->AddType("[thumbnail]", iconname, iconname, iconname, "->Browse()");
      return;
   }
   if (fCachedPic && (fCachedPic != fFileIcon))
      fClient->FreePicture(fCachedPic);
   if (*pic == 0) {
      if (!obj->IsFolder())
         *pic = fFileIcon;
   }
   fCachedPic = *pic;
   fCachedPicName = iconname;
}

//______________________________________________________________________________
void TGFileBrowser::GotoDir(const char *path)
{
   // Go to the directory "path" and open all the parent list tree items.

   TGListTreeItem *item, *itm;
   Bool_t expand = kTRUE;
   TString sPath(gSystem->UnixPathName(path));
   item = fRootDir;
   if (item == 0) return;
   fListTree->OpenItem(item);
   TObjArray *tokens = sPath.Tokenize("/");
   if (tokens->IsEmpty()) {
      fListTree->HighlightItem(item);
      DoubleClicked(item, 1);
      delete tokens;
      fListTree->ClearViewPort();
      fListTree->AdjustPosition(item);
      return;
   }
   TString first = ((TObjString*)tokens->At(0))->GetName();
   if (first == "afs")
      expand = kFALSE;
   if (first.Length() == 2 && first.EndsWith(":")) {
      TList *curvol  = gSystem->GetVolumes("cur");
      if (curvol) {
         TNamed *drive = (TNamed *)curvol->At(0);
         if (first == drive->GetName()) {
            TString infos = drive->GetTitle();
            if (infos.Contains("Network"))
               expand = kFALSE;
         }
         delete curvol;
      }
   }
   for (Int_t i = 0; i < tokens->GetEntriesFast(); ++i) {
      TString token = ((TObjString*)tokens->At(i))->GetName();
      if (token.Length() == 2 && token.EndsWith(":")) {
         token.Append("\\");
         itm = fListTree->FindChildByName(0, token);
         if (itm) {
            item = itm;
            fListTree->OpenItem(item);
            if (expand)
               DoubleClicked(item, 1);
         }
         continue;
      }
      itm = fListTree->FindChildByName(item, token);
      if (itm) {
         item = itm;
         fListTree->OpenItem(item);
         if (expand)
            DoubleClicked(item, 1);
      }
      else {
         itm = fListTree->AddItem(item, token);
         item = itm;
         fListTree->OpenItem(item);
         if (expand)
            DoubleClicked(item, 1);
      }
   }
   fListTree->HighlightItem(item);
   DoubleClicked(item, 1);
   delete tokens;
   fListTree->ClearViewPort();
   fListTree->AdjustPosition(item);
}

//______________________________________________________________________________
void TGFileBrowser::PadModified()
{
   // Slot used to switch to the tab containing the current pad/canvas (gPad)
   // used e.g. when drawing a histogram by double-clicking on its list tree
   // item in a root file.

   if (fDblClick && fNewBrowser) {
      Int_t i;
      TGTab *tabRight = fNewBrowser->GetTabRight();
      for (i=0;i<tabRight->GetNumberOfTabs();++i) {
         TGFrameElement *fe = 0;
         TGCompositeFrame *embed = 0;
         TGCompositeFrame *frame = tabRight->GetTabContainer(i);
         if (frame)
            fe = (TGFrameElement *)frame->GetList()->First();
         if (fe)
            embed = (TGCompositeFrame *)fe->fFrame;
         if (embed && embed->InheritsFrom("TRootCanvas")) {
            ULong_t canvas = gROOT->ProcessLine(TString::Format("((TRootCanvas *)0x%lx)->Canvas();",
                                                (ULong_t)embed));
            if ((canvas) && (canvas == (ULong_t)gPad ||
                canvas == (ULong_t)gPad->GetCanvas())) {
               tabRight->SetTab(i, kTRUE);
               break;
            }
         }
      }
   }
}

//______________________________________________________________________________
void TGFileBrowser::RequestFilter()
{
   // Open a dialog box asking for a string to be used as filter (regexp), and
   // add an entry in the map of filtered entries. Entering "*" or empty string
   // ("") will disable filtering on the current list tree item.

   char filter[1024];
   if (!fListLevel)
      return;
   // initialize with previous (active) filter string
   snprintf(filter, sizeof(filter), "%s", fFilterStr.Data());
   new TGInputDialog(gClient->GetRoot(), this,
                     "Enter filter expression:\n(empty string \"\" or \"*\" to remove filter)",
                      filter, filter);
   // if user pressed cancel, update the status of the current list tree
   // item and return
   if ((filter[0] == 0) && (filter[1] == 0)) {
      CheckFiltered(fListLevel, kTRUE);
      return;
   }
   else if (((filter[0] == 0) && (filter[1] == 1)) || !strcmp(filter, "*")) {
      // if user entered "*" or "", just disable filtering for the current
      // list tree item
      fFilterButton->SetState(kButtonUp);
      fFilteredItems.erase(fListLevel);
   }
   else {
      // if user entered a string different from "*", use it to create an
      // entry in the filter map
      fFilterStr = filter;
      fFilterButton->SetState(kButtonEngaged);
      // if there is already a filter on this item, delete it
      if (CheckFiltered(fListLevel))
         fFilteredItems.erase(fListLevel);
      // insert a new entry for the current list tree item
      fFilteredItems.insert(std::make_pair(fListLevel, StrDup(filter)));
   }
   // finally update the list tree
   fListTree->DeleteChildren(fListLevel);
   DoubleClicked(fListLevel, 1);
   fListTree->ClearViewPort();
   fListTree->AdjustPosition(fListLevel);
}

//______________________________________________________________________________
void TGFileBrowser::Selected(char *)
{
   // A ROOT File has been selected in TGHtmlBrowser.

   TGListTreeItem *itm = fListTree->FindChildByData(0, gROOT->GetListOfFiles());
   if (itm) {
      fListTree->ClearHighlighted();
      fListLevel = itm;
      fListTree->HighlightItem(fListLevel);
      fListTree->OpenItem(fListLevel);
      BrowseObj(gROOT->GetListOfFiles());
      fListTree->ClearViewPort();
      fListTree->AdjustPosition(fListLevel);
   }
}

//______________________________________________________________________________
void TGFileBrowser::ToggleSort()
{
   // Toggle the sort mode and set the "sort button" state accordingly.

   if (!fListLevel) return;
   char *itemname = 0;
   TGListTreeItem *item = fListLevel;
   if (!fListLevel->GetFirstChild()) {
      item = fListLevel->GetParent();
      itemname = StrDup(fListLevel->GetText());
   }
   if (!item) {
      if (itemname)
         delete [] itemname;
      return;
   }
   Bool_t is_sorted = CheckSorted(item);
   if (!is_sorted) {
      //alphabetical sorting
      fListTree->SortChildren(item);
      fSortedItems.push_back(item);
      fSortButton->SetState(kButtonEngaged);
   }
   else {
      fListTree->DeleteChildren(item);
      DoubleClicked(item, 1);
      fSortedItems.remove(item);
      fSortButton->SetState(kButtonUp);
      gClient->NeedRedraw(fListTree, kTRUE);
      gClient->HandleInput();
      if (itemname) {
         TGListTreeItem *itm = fListTree->FindChildByName(item, itemname);
         if (itm) {
            fListTree->ClearHighlighted();
            Clicked(itm, 1, 0, 0);
            itm->SetActive(kTRUE);
            fListTree->SetSelected(itm);
            fListTree->HighlightItem(itm, kTRUE, kTRUE);
         }
      }
   }
   if (itemname)
      delete [] itemname;
   fListTree->ClearViewPort();
   fListTree->AdjustPosition(fListLevel);
}


 TGFileBrowser.cxx:1
 TGFileBrowser.cxx:2
 TGFileBrowser.cxx:3
 TGFileBrowser.cxx:4
 TGFileBrowser.cxx:5
 TGFileBrowser.cxx:6
 TGFileBrowser.cxx:7
 TGFileBrowser.cxx:8
 TGFileBrowser.cxx:9
 TGFileBrowser.cxx:10
 TGFileBrowser.cxx:11
 TGFileBrowser.cxx:12
 TGFileBrowser.cxx:13
 TGFileBrowser.cxx:14
 TGFileBrowser.cxx:15
 TGFileBrowser.cxx:16
 TGFileBrowser.cxx:17
 TGFileBrowser.cxx:18
 TGFileBrowser.cxx:19
 TGFileBrowser.cxx:20
 TGFileBrowser.cxx:21
 TGFileBrowser.cxx:22
 TGFileBrowser.cxx:23
 TGFileBrowser.cxx:24
 TGFileBrowser.cxx:25
 TGFileBrowser.cxx:26
 TGFileBrowser.cxx:27
 TGFileBrowser.cxx:28
 TGFileBrowser.cxx:29
 TGFileBrowser.cxx:30
 TGFileBrowser.cxx:31
 TGFileBrowser.cxx:32
 TGFileBrowser.cxx:33
 TGFileBrowser.cxx:34
 TGFileBrowser.cxx:35
 TGFileBrowser.cxx:36
 TGFileBrowser.cxx:37
 TGFileBrowser.cxx:38
 TGFileBrowser.cxx:39
 TGFileBrowser.cxx:40
 TGFileBrowser.cxx:41
 TGFileBrowser.cxx:42
 TGFileBrowser.cxx:43
 TGFileBrowser.cxx:44
 TGFileBrowser.cxx:45
 TGFileBrowser.cxx:46
 TGFileBrowser.cxx:47
 TGFileBrowser.cxx:48
 TGFileBrowser.cxx:49
 TGFileBrowser.cxx:50
 TGFileBrowser.cxx:51
 TGFileBrowser.cxx:52
 TGFileBrowser.cxx:53
 TGFileBrowser.cxx:54
 TGFileBrowser.cxx:55
 TGFileBrowser.cxx:56
 TGFileBrowser.cxx:57
 TGFileBrowser.cxx:58
 TGFileBrowser.cxx:59
 TGFileBrowser.cxx:60
 TGFileBrowser.cxx:61
 TGFileBrowser.cxx:62
 TGFileBrowser.cxx:63
 TGFileBrowser.cxx:64
 TGFileBrowser.cxx:65
 TGFileBrowser.cxx:66
 TGFileBrowser.cxx:67
 TGFileBrowser.cxx:68
 TGFileBrowser.cxx:69
 TGFileBrowser.cxx:70
 TGFileBrowser.cxx:71
 TGFileBrowser.cxx:72
 TGFileBrowser.cxx:73
 TGFileBrowser.cxx:74
 TGFileBrowser.cxx:75
 TGFileBrowser.cxx:76
 TGFileBrowser.cxx:77
 TGFileBrowser.cxx:78
 TGFileBrowser.cxx:79
 TGFileBrowser.cxx:80
 TGFileBrowser.cxx:81
 TGFileBrowser.cxx:82
 TGFileBrowser.cxx:83
 TGFileBrowser.cxx:84
 TGFileBrowser.cxx:85
 TGFileBrowser.cxx:86
 TGFileBrowser.cxx:87
 TGFileBrowser.cxx:88
 TGFileBrowser.cxx:89
 TGFileBrowser.cxx:90
 TGFileBrowser.cxx:91
 TGFileBrowser.cxx:92
 TGFileBrowser.cxx:93
 TGFileBrowser.cxx:94
 TGFileBrowser.cxx:95
 TGFileBrowser.cxx:96
 TGFileBrowser.cxx:97
 TGFileBrowser.cxx:98
 TGFileBrowser.cxx:99
 TGFileBrowser.cxx:100
 TGFileBrowser.cxx:101
 TGFileBrowser.cxx:102
 TGFileBrowser.cxx:103
 TGFileBrowser.cxx:104
 TGFileBrowser.cxx:105
 TGFileBrowser.cxx:106
 TGFileBrowser.cxx:107
 TGFileBrowser.cxx:108
 TGFileBrowser.cxx:109
 TGFileBrowser.cxx:110
 TGFileBrowser.cxx:111
 TGFileBrowser.cxx:112
 TGFileBrowser.cxx:113
 TGFileBrowser.cxx:114
 TGFileBrowser.cxx:115
 TGFileBrowser.cxx:116
 TGFileBrowser.cxx:117
 TGFileBrowser.cxx:118
 TGFileBrowser.cxx:119
 TGFileBrowser.cxx:120
 TGFileBrowser.cxx:121
 TGFileBrowser.cxx:122
 TGFileBrowser.cxx:123
 TGFileBrowser.cxx:124
 TGFileBrowser.cxx:125
 TGFileBrowser.cxx:126
 TGFileBrowser.cxx:127
 TGFileBrowser.cxx:128
 TGFileBrowser.cxx:129
 TGFileBrowser.cxx:130
 TGFileBrowser.cxx:131
 TGFileBrowser.cxx:132
 TGFileBrowser.cxx:133
 TGFileBrowser.cxx:134
 TGFileBrowser.cxx:135
 TGFileBrowser.cxx:136
 TGFileBrowser.cxx:137
 TGFileBrowser.cxx:138
 TGFileBrowser.cxx:139
 TGFileBrowser.cxx:140
 TGFileBrowser.cxx:141
 TGFileBrowser.cxx:142
 TGFileBrowser.cxx:143
 TGFileBrowser.cxx:144
 TGFileBrowser.cxx:145
 TGFileBrowser.cxx:146
 TGFileBrowser.cxx:147
 TGFileBrowser.cxx:148
 TGFileBrowser.cxx:149
 TGFileBrowser.cxx:150
 TGFileBrowser.cxx:151
 TGFileBrowser.cxx:152
 TGFileBrowser.cxx:153
 TGFileBrowser.cxx:154
 TGFileBrowser.cxx:155
 TGFileBrowser.cxx:156
 TGFileBrowser.cxx:157
 TGFileBrowser.cxx:158
 TGFileBrowser.cxx:159
 TGFileBrowser.cxx:160
 TGFileBrowser.cxx:161
 TGFileBrowser.cxx:162
 TGFileBrowser.cxx:163
 TGFileBrowser.cxx:164
 TGFileBrowser.cxx:165
 TGFileBrowser.cxx:166
 TGFileBrowser.cxx:167
 TGFileBrowser.cxx:168
 TGFileBrowser.cxx:169
 TGFileBrowser.cxx:170
 TGFileBrowser.cxx:171
 TGFileBrowser.cxx:172
 TGFileBrowser.cxx:173
 TGFileBrowser.cxx:174
 TGFileBrowser.cxx:175
 TGFileBrowser.cxx:176
 TGFileBrowser.cxx:177
 TGFileBrowser.cxx:178
 TGFileBrowser.cxx:179
 TGFileBrowser.cxx:180
 TGFileBrowser.cxx:181
 TGFileBrowser.cxx:182
 TGFileBrowser.cxx:183
 TGFileBrowser.cxx:184
 TGFileBrowser.cxx:185
 TGFileBrowser.cxx:186
 TGFileBrowser.cxx:187
 TGFileBrowser.cxx:188
 TGFileBrowser.cxx:189
 TGFileBrowser.cxx:190
 TGFileBrowser.cxx:191
 TGFileBrowser.cxx:192
 TGFileBrowser.cxx:193
 TGFileBrowser.cxx:194
 TGFileBrowser.cxx:195
 TGFileBrowser.cxx:196
 TGFileBrowser.cxx:197
 TGFileBrowser.cxx:198
 TGFileBrowser.cxx:199
 TGFileBrowser.cxx:200
 TGFileBrowser.cxx:201
 TGFileBrowser.cxx:202
 TGFileBrowser.cxx:203
 TGFileBrowser.cxx:204
 TGFileBrowser.cxx:205
 TGFileBrowser.cxx:206
 TGFileBrowser.cxx:207
 TGFileBrowser.cxx:208
 TGFileBrowser.cxx:209
 TGFileBrowser.cxx:210
 TGFileBrowser.cxx:211
 TGFileBrowser.cxx:212
 TGFileBrowser.cxx:213
 TGFileBrowser.cxx:214
 TGFileBrowser.cxx:215
 TGFileBrowser.cxx:216
 TGFileBrowser.cxx:217
 TGFileBrowser.cxx:218
 TGFileBrowser.cxx:219
 TGFileBrowser.cxx:220
 TGFileBrowser.cxx:221
 TGFileBrowser.cxx:222
 TGFileBrowser.cxx:223
 TGFileBrowser.cxx:224
 TGFileBrowser.cxx:225
 TGFileBrowser.cxx:226
 TGFileBrowser.cxx:227
 TGFileBrowser.cxx:228
 TGFileBrowser.cxx:229
 TGFileBrowser.cxx:230
 TGFileBrowser.cxx:231
 TGFileBrowser.cxx:232
 TGFileBrowser.cxx:233
 TGFileBrowser.cxx:234
 TGFileBrowser.cxx:235
 TGFileBrowser.cxx:236
 TGFileBrowser.cxx:237
 TGFileBrowser.cxx:238
 TGFileBrowser.cxx:239
 TGFileBrowser.cxx:240
 TGFileBrowser.cxx:241
 TGFileBrowser.cxx:242
 TGFileBrowser.cxx:243
 TGFileBrowser.cxx:244
 TGFileBrowser.cxx:245
 TGFileBrowser.cxx:246
 TGFileBrowser.cxx:247
 TGFileBrowser.cxx:248
 TGFileBrowser.cxx:249
 TGFileBrowser.cxx:250
 TGFileBrowser.cxx:251
 TGFileBrowser.cxx:252
 TGFileBrowser.cxx:253
 TGFileBrowser.cxx:254
 TGFileBrowser.cxx:255
 TGFileBrowser.cxx:256
 TGFileBrowser.cxx:257
 TGFileBrowser.cxx:258
 TGFileBrowser.cxx:259
 TGFileBrowser.cxx:260
 TGFileBrowser.cxx:261
 TGFileBrowser.cxx:262
 TGFileBrowser.cxx:263
 TGFileBrowser.cxx:264
 TGFileBrowser.cxx:265
 TGFileBrowser.cxx:266
 TGFileBrowser.cxx:267
 TGFileBrowser.cxx:268
 TGFileBrowser.cxx:269
 TGFileBrowser.cxx:270
 TGFileBrowser.cxx:271
 TGFileBrowser.cxx:272
 TGFileBrowser.cxx:273
 TGFileBrowser.cxx:274
 TGFileBrowser.cxx:275
 TGFileBrowser.cxx:276
 TGFileBrowser.cxx:277
 TGFileBrowser.cxx:278
 TGFileBrowser.cxx:279
 TGFileBrowser.cxx:280
 TGFileBrowser.cxx:281
 TGFileBrowser.cxx:282
 TGFileBrowser.cxx:283
 TGFileBrowser.cxx:284
 TGFileBrowser.cxx:285
 TGFileBrowser.cxx:286
 TGFileBrowser.cxx:287
 TGFileBrowser.cxx:288
 TGFileBrowser.cxx:289
 TGFileBrowser.cxx:290
 TGFileBrowser.cxx:291
 TGFileBrowser.cxx:292
 TGFileBrowser.cxx:293
 TGFileBrowser.cxx:294
 TGFileBrowser.cxx:295
 TGFileBrowser.cxx:296
 TGFileBrowser.cxx:297
 TGFileBrowser.cxx:298
 TGFileBrowser.cxx:299
 TGFileBrowser.cxx:300
 TGFileBrowser.cxx:301
 TGFileBrowser.cxx:302
 TGFileBrowser.cxx:303
 TGFileBrowser.cxx:304
 TGFileBrowser.cxx:305
 TGFileBrowser.cxx:306
 TGFileBrowser.cxx:307
 TGFileBrowser.cxx:308
 TGFileBrowser.cxx:309
 TGFileBrowser.cxx:310
 TGFileBrowser.cxx:311
 TGFileBrowser.cxx:312
 TGFileBrowser.cxx:313
 TGFileBrowser.cxx:314
 TGFileBrowser.cxx:315
 TGFileBrowser.cxx:316
 TGFileBrowser.cxx:317
 TGFileBrowser.cxx:318
 TGFileBrowser.cxx:319
 TGFileBrowser.cxx:320
 TGFileBrowser.cxx:321
 TGFileBrowser.cxx:322
 TGFileBrowser.cxx:323
 TGFileBrowser.cxx:324
 TGFileBrowser.cxx:325
 TGFileBrowser.cxx:326
 TGFileBrowser.cxx:327
 TGFileBrowser.cxx:328
 TGFileBrowser.cxx:329
 TGFileBrowser.cxx:330
 TGFileBrowser.cxx:331
 TGFileBrowser.cxx:332
 TGFileBrowser.cxx:333
 TGFileBrowser.cxx:334
 TGFileBrowser.cxx:335
 TGFileBrowser.cxx:336
 TGFileBrowser.cxx:337
 TGFileBrowser.cxx:338
 TGFileBrowser.cxx:339
 TGFileBrowser.cxx:340
 TGFileBrowser.cxx:341
 TGFileBrowser.cxx:342
 TGFileBrowser.cxx:343
 TGFileBrowser.cxx:344
 TGFileBrowser.cxx:345
 TGFileBrowser.cxx:346
 TGFileBrowser.cxx:347
 TGFileBrowser.cxx:348
 TGFileBrowser.cxx:349
 TGFileBrowser.cxx:350
 TGFileBrowser.cxx:351
 TGFileBrowser.cxx:352
 TGFileBrowser.cxx:353
 TGFileBrowser.cxx:354
 TGFileBrowser.cxx:355
 TGFileBrowser.cxx:356
 TGFileBrowser.cxx:357
 TGFileBrowser.cxx:358
 TGFileBrowser.cxx:359
 TGFileBrowser.cxx:360
 TGFileBrowser.cxx:361
 TGFileBrowser.cxx:362
 TGFileBrowser.cxx:363
 TGFileBrowser.cxx:364
 TGFileBrowser.cxx:365
 TGFileBrowser.cxx:366
 TGFileBrowser.cxx:367
 TGFileBrowser.cxx:368
 TGFileBrowser.cxx:369
 TGFileBrowser.cxx:370
 TGFileBrowser.cxx:371
 TGFileBrowser.cxx:372
 TGFileBrowser.cxx:373
 TGFileBrowser.cxx:374
 TGFileBrowser.cxx:375
 TGFileBrowser.cxx:376
 TGFileBrowser.cxx:377
 TGFileBrowser.cxx:378
 TGFileBrowser.cxx:379
 TGFileBrowser.cxx:380
 TGFileBrowser.cxx:381
 TGFileBrowser.cxx:382
 TGFileBrowser.cxx:383
 TGFileBrowser.cxx:384
 TGFileBrowser.cxx:385
 TGFileBrowser.cxx:386
 TGFileBrowser.cxx:387
 TGFileBrowser.cxx:388
 TGFileBrowser.cxx:389
 TGFileBrowser.cxx:390
 TGFileBrowser.cxx:391
 TGFileBrowser.cxx:392
 TGFileBrowser.cxx:393
 TGFileBrowser.cxx:394
 TGFileBrowser.cxx:395
 TGFileBrowser.cxx:396
 TGFileBrowser.cxx:397
 TGFileBrowser.cxx:398
 TGFileBrowser.cxx:399
 TGFileBrowser.cxx:400
 TGFileBrowser.cxx:401
 TGFileBrowser.cxx:402
 TGFileBrowser.cxx:403
 TGFileBrowser.cxx:404
 TGFileBrowser.cxx:405
 TGFileBrowser.cxx:406
 TGFileBrowser.cxx:407
 TGFileBrowser.cxx:408
 TGFileBrowser.cxx:409
 TGFileBrowser.cxx:410
 TGFileBrowser.cxx:411
 TGFileBrowser.cxx:412
 TGFileBrowser.cxx:413
 TGFileBrowser.cxx:414
 TGFileBrowser.cxx:415
 TGFileBrowser.cxx:416
 TGFileBrowser.cxx:417
 TGFileBrowser.cxx:418
 TGFileBrowser.cxx:419
 TGFileBrowser.cxx:420
 TGFileBrowser.cxx:421
 TGFileBrowser.cxx:422
 TGFileBrowser.cxx:423
 TGFileBrowser.cxx:424
 TGFileBrowser.cxx:425
 TGFileBrowser.cxx:426
 TGFileBrowser.cxx:427
 TGFileBrowser.cxx:428
 TGFileBrowser.cxx:429
 TGFileBrowser.cxx:430
 TGFileBrowser.cxx:431
 TGFileBrowser.cxx:432
 TGFileBrowser.cxx:433
 TGFileBrowser.cxx:434
 TGFileBrowser.cxx:435
 TGFileBrowser.cxx:436
 TGFileBrowser.cxx:437
 TGFileBrowser.cxx:438
 TGFileBrowser.cxx:439
 TGFileBrowser.cxx:440
 TGFileBrowser.cxx:441
 TGFileBrowser.cxx:442
 TGFileBrowser.cxx:443
 TGFileBrowser.cxx:444
 TGFileBrowser.cxx:445
 TGFileBrowser.cxx:446
 TGFileBrowser.cxx:447
 TGFileBrowser.cxx:448
 TGFileBrowser.cxx:449
 TGFileBrowser.cxx:450
 TGFileBrowser.cxx:451
 TGFileBrowser.cxx:452
 TGFileBrowser.cxx:453
 TGFileBrowser.cxx:454
 TGFileBrowser.cxx:455
 TGFileBrowser.cxx:456
 TGFileBrowser.cxx:457
 TGFileBrowser.cxx:458
 TGFileBrowser.cxx:459
 TGFileBrowser.cxx:460
 TGFileBrowser.cxx:461
 TGFileBrowser.cxx:462
 TGFileBrowser.cxx:463
 TGFileBrowser.cxx:464
 TGFileBrowser.cxx:465
 TGFileBrowser.cxx:466
 TGFileBrowser.cxx:467
 TGFileBrowser.cxx:468
 TGFileBrowser.cxx:469
 TGFileBrowser.cxx:470
 TGFileBrowser.cxx:471
 TGFileBrowser.cxx:472
 TGFileBrowser.cxx:473
 TGFileBrowser.cxx:474
 TGFileBrowser.cxx:475
 TGFileBrowser.cxx:476
 TGFileBrowser.cxx:477
 TGFileBrowser.cxx:478
 TGFileBrowser.cxx:479
 TGFileBrowser.cxx:480
 TGFileBrowser.cxx:481
 TGFileBrowser.cxx:482
 TGFileBrowser.cxx:483
 TGFileBrowser.cxx:484
 TGFileBrowser.cxx:485
 TGFileBrowser.cxx:486
 TGFileBrowser.cxx:487
 TGFileBrowser.cxx:488
 TGFileBrowser.cxx:489
 TGFileBrowser.cxx:490
 TGFileBrowser.cxx:491
 TGFileBrowser.cxx:492
 TGFileBrowser.cxx:493
 TGFileBrowser.cxx:494
 TGFileBrowser.cxx:495
 TGFileBrowser.cxx:496
 TGFileBrowser.cxx:497
 TGFileBrowser.cxx:498
 TGFileBrowser.cxx:499
 TGFileBrowser.cxx:500
 TGFileBrowser.cxx:501
 TGFileBrowser.cxx:502
 TGFileBrowser.cxx:503
 TGFileBrowser.cxx:504
 TGFileBrowser.cxx:505
 TGFileBrowser.cxx:506
 TGFileBrowser.cxx:507
 TGFileBrowser.cxx:508
 TGFileBrowser.cxx:509
 TGFileBrowser.cxx:510
 TGFileBrowser.cxx:511
 TGFileBrowser.cxx:512
 TGFileBrowser.cxx:513
 TGFileBrowser.cxx:514
 TGFileBrowser.cxx:515
 TGFileBrowser.cxx:516
 TGFileBrowser.cxx:517
 TGFileBrowser.cxx:518
 TGFileBrowser.cxx:519
 TGFileBrowser.cxx:520
 TGFileBrowser.cxx:521
 TGFileBrowser.cxx:522
 TGFileBrowser.cxx:523
 TGFileBrowser.cxx:524
 TGFileBrowser.cxx:525
 TGFileBrowser.cxx:526
 TGFileBrowser.cxx:527
 TGFileBrowser.cxx:528
 TGFileBrowser.cxx:529
 TGFileBrowser.cxx:530
 TGFileBrowser.cxx:531
 TGFileBrowser.cxx:532
 TGFileBrowser.cxx:533
 TGFileBrowser.cxx:534
 TGFileBrowser.cxx:535
 TGFileBrowser.cxx:536
 TGFileBrowser.cxx:537
 TGFileBrowser.cxx:538
 TGFileBrowser.cxx:539
 TGFileBrowser.cxx:540
 TGFileBrowser.cxx:541
 TGFileBrowser.cxx:542
 TGFileBrowser.cxx:543
 TGFileBrowser.cxx:544
 TGFileBrowser.cxx:545
 TGFileBrowser.cxx:546
 TGFileBrowser.cxx:547
 TGFileBrowser.cxx:548
 TGFileBrowser.cxx:549
 TGFileBrowser.cxx:550
 TGFileBrowser.cxx:551
 TGFileBrowser.cxx:552
 TGFileBrowser.cxx:553
 TGFileBrowser.cxx:554
 TGFileBrowser.cxx:555
 TGFileBrowser.cxx:556
 TGFileBrowser.cxx:557
 TGFileBrowser.cxx:558
 TGFileBrowser.cxx:559
 TGFileBrowser.cxx:560
 TGFileBrowser.cxx:561
 TGFileBrowser.cxx:562
 TGFileBrowser.cxx:563
 TGFileBrowser.cxx:564
 TGFileBrowser.cxx:565
 TGFileBrowser.cxx:566
 TGFileBrowser.cxx:567
 TGFileBrowser.cxx:568
 TGFileBrowser.cxx:569
 TGFileBrowser.cxx:570
 TGFileBrowser.cxx:571
 TGFileBrowser.cxx:572
 TGFileBrowser.cxx:573
 TGFileBrowser.cxx:574
 TGFileBrowser.cxx:575
 TGFileBrowser.cxx:576
 TGFileBrowser.cxx:577
 TGFileBrowser.cxx:578
 TGFileBrowser.cxx:579
 TGFileBrowser.cxx:580
 TGFileBrowser.cxx:581
 TGFileBrowser.cxx:582
 TGFileBrowser.cxx:583
 TGFileBrowser.cxx:584
 TGFileBrowser.cxx:585
 TGFileBrowser.cxx:586
 TGFileBrowser.cxx:587
 TGFileBrowser.cxx:588
 TGFileBrowser.cxx:589
 TGFileBrowser.cxx:590
 TGFileBrowser.cxx:591
 TGFileBrowser.cxx:592
 TGFileBrowser.cxx:593
 TGFileBrowser.cxx:594
 TGFileBrowser.cxx:595
 TGFileBrowser.cxx:596
 TGFileBrowser.cxx:597
 TGFileBrowser.cxx:598
 TGFileBrowser.cxx:599
 TGFileBrowser.cxx:600
 TGFileBrowser.cxx:601
 TGFileBrowser.cxx:602
 TGFileBrowser.cxx:603
 TGFileBrowser.cxx:604
 TGFileBrowser.cxx:605
 TGFileBrowser.cxx:606
 TGFileBrowser.cxx:607
 TGFileBrowser.cxx:608
 TGFileBrowser.cxx:609
 TGFileBrowser.cxx:610
 TGFileBrowser.cxx:611
 TGFileBrowser.cxx:612
 TGFileBrowser.cxx:613
 TGFileBrowser.cxx:614
 TGFileBrowser.cxx:615
 TGFileBrowser.cxx:616
 TGFileBrowser.cxx:617
 TGFileBrowser.cxx:618
 TGFileBrowser.cxx:619
 TGFileBrowser.cxx:620
 TGFileBrowser.cxx:621
 TGFileBrowser.cxx:622
 TGFileBrowser.cxx:623
 TGFileBrowser.cxx:624
 TGFileBrowser.cxx:625
 TGFileBrowser.cxx:626
 TGFileBrowser.cxx:627
 TGFileBrowser.cxx:628
 TGFileBrowser.cxx:629
 TGFileBrowser.cxx:630
 TGFileBrowser.cxx:631
 TGFileBrowser.cxx:632
 TGFileBrowser.cxx:633
 TGFileBrowser.cxx:634
 TGFileBrowser.cxx:635
 TGFileBrowser.cxx:636
 TGFileBrowser.cxx:637
 TGFileBrowser.cxx:638
 TGFileBrowser.cxx:639
 TGFileBrowser.cxx:640
 TGFileBrowser.cxx:641
 TGFileBrowser.cxx:642
 TGFileBrowser.cxx:643
 TGFileBrowser.cxx:644
 TGFileBrowser.cxx:645
 TGFileBrowser.cxx:646
 TGFileBrowser.cxx:647
 TGFileBrowser.cxx:648
 TGFileBrowser.cxx:649
 TGFileBrowser.cxx:650
 TGFileBrowser.cxx:651
 TGFileBrowser.cxx:652
 TGFileBrowser.cxx:653
 TGFileBrowser.cxx:654
 TGFileBrowser.cxx:655
 TGFileBrowser.cxx:656
 TGFileBrowser.cxx:657
 TGFileBrowser.cxx:658
 TGFileBrowser.cxx:659
 TGFileBrowser.cxx:660
 TGFileBrowser.cxx:661
 TGFileBrowser.cxx:662
 TGFileBrowser.cxx:663
 TGFileBrowser.cxx:664
 TGFileBrowser.cxx:665
 TGFileBrowser.cxx:666
 TGFileBrowser.cxx:667
 TGFileBrowser.cxx:668
 TGFileBrowser.cxx:669
 TGFileBrowser.cxx:670
 TGFileBrowser.cxx:671
 TGFileBrowser.cxx:672
 TGFileBrowser.cxx:673
 TGFileBrowser.cxx:674
 TGFileBrowser.cxx:675
 TGFileBrowser.cxx:676
 TGFileBrowser.cxx:677
 TGFileBrowser.cxx:678
 TGFileBrowser.cxx:679
 TGFileBrowser.cxx:680
 TGFileBrowser.cxx:681
 TGFileBrowser.cxx:682
 TGFileBrowser.cxx:683
 TGFileBrowser.cxx:684
 TGFileBrowser.cxx:685
 TGFileBrowser.cxx:686
 TGFileBrowser.cxx:687
 TGFileBrowser.cxx:688
 TGFileBrowser.cxx:689
 TGFileBrowser.cxx:690
 TGFileBrowser.cxx:691
 TGFileBrowser.cxx:692
 TGFileBrowser.cxx:693
 TGFileBrowser.cxx:694
 TGFileBrowser.cxx:695
 TGFileBrowser.cxx:696
 TGFileBrowser.cxx:697
 TGFileBrowser.cxx:698
 TGFileBrowser.cxx:699
 TGFileBrowser.cxx:700
 TGFileBrowser.cxx:701
 TGFileBrowser.cxx:702
 TGFileBrowser.cxx:703
 TGFileBrowser.cxx:704
 TGFileBrowser.cxx:705
 TGFileBrowser.cxx:706
 TGFileBrowser.cxx:707
 TGFileBrowser.cxx:708
 TGFileBrowser.cxx:709
 TGFileBrowser.cxx:710
 TGFileBrowser.cxx:711
 TGFileBrowser.cxx:712
 TGFileBrowser.cxx:713
 TGFileBrowser.cxx:714
 TGFileBrowser.cxx:715
 TGFileBrowser.cxx:716
 TGFileBrowser.cxx:717
 TGFileBrowser.cxx:718
 TGFileBrowser.cxx:719
 TGFileBrowser.cxx:720
 TGFileBrowser.cxx:721
 TGFileBrowser.cxx:722
 TGFileBrowser.cxx:723
 TGFileBrowser.cxx:724
 TGFileBrowser.cxx:725
 TGFileBrowser.cxx:726
 TGFileBrowser.cxx:727
 TGFileBrowser.cxx:728
 TGFileBrowser.cxx:729
 TGFileBrowser.cxx:730
 TGFileBrowser.cxx:731
 TGFileBrowser.cxx:732
 TGFileBrowser.cxx:733
 TGFileBrowser.cxx:734
 TGFileBrowser.cxx:735
 TGFileBrowser.cxx:736
 TGFileBrowser.cxx:737
 TGFileBrowser.cxx:738
 TGFileBrowser.cxx:739
 TGFileBrowser.cxx:740
 TGFileBrowser.cxx:741
 TGFileBrowser.cxx:742
 TGFileBrowser.cxx:743
 TGFileBrowser.cxx:744
 TGFileBrowser.cxx:745
 TGFileBrowser.cxx:746
 TGFileBrowser.cxx:747
 TGFileBrowser.cxx:748
 TGFileBrowser.cxx:749
 TGFileBrowser.cxx:750
 TGFileBrowser.cxx:751
 TGFileBrowser.cxx:752
 TGFileBrowser.cxx:753
 TGFileBrowser.cxx:754
 TGFileBrowser.cxx:755
 TGFileBrowser.cxx:756
 TGFileBrowser.cxx:757
 TGFileBrowser.cxx:758
 TGFileBrowser.cxx:759
 TGFileBrowser.cxx:760
 TGFileBrowser.cxx:761
 TGFileBrowser.cxx:762
 TGFileBrowser.cxx:763
 TGFileBrowser.cxx:764
 TGFileBrowser.cxx:765
 TGFileBrowser.cxx:766
 TGFileBrowser.cxx:767
 TGFileBrowser.cxx:768
 TGFileBrowser.cxx:769
 TGFileBrowser.cxx:770
 TGFileBrowser.cxx:771
 TGFileBrowser.cxx:772
 TGFileBrowser.cxx:773
 TGFileBrowser.cxx:774
 TGFileBrowser.cxx:775
 TGFileBrowser.cxx:776
 TGFileBrowser.cxx:777
 TGFileBrowser.cxx:778
 TGFileBrowser.cxx:779
 TGFileBrowser.cxx:780
 TGFileBrowser.cxx:781
 TGFileBrowser.cxx:782
 TGFileBrowser.cxx:783
 TGFileBrowser.cxx:784
 TGFileBrowser.cxx:785
 TGFileBrowser.cxx:786
 TGFileBrowser.cxx:787
 TGFileBrowser.cxx:788
 TGFileBrowser.cxx:789
 TGFileBrowser.cxx:790
 TGFileBrowser.cxx:791
 TGFileBrowser.cxx:792
 TGFileBrowser.cxx:793
 TGFileBrowser.cxx:794
 TGFileBrowser.cxx:795
 TGFileBrowser.cxx:796
 TGFileBrowser.cxx:797
 TGFileBrowser.cxx:798
 TGFileBrowser.cxx:799
 TGFileBrowser.cxx:800
 TGFileBrowser.cxx:801
 TGFileBrowser.cxx:802
 TGFileBrowser.cxx:803
 TGFileBrowser.cxx:804
 TGFileBrowser.cxx:805
 TGFileBrowser.cxx:806
 TGFileBrowser.cxx:807
 TGFileBrowser.cxx:808
 TGFileBrowser.cxx:809
 TGFileBrowser.cxx:810
 TGFileBrowser.cxx:811
 TGFileBrowser.cxx:812
 TGFileBrowser.cxx:813
 TGFileBrowser.cxx:814
 TGFileBrowser.cxx:815
 TGFileBrowser.cxx:816
 TGFileBrowser.cxx:817
 TGFileBrowser.cxx:818
 TGFileBrowser.cxx:819
 TGFileBrowser.cxx:820
 TGFileBrowser.cxx:821
 TGFileBrowser.cxx:822
 TGFileBrowser.cxx:823
 TGFileBrowser.cxx:824
 TGFileBrowser.cxx:825
 TGFileBrowser.cxx:826
 TGFileBrowser.cxx:827
 TGFileBrowser.cxx:828
 TGFileBrowser.cxx:829
 TGFileBrowser.cxx:830
 TGFileBrowser.cxx:831
 TGFileBrowser.cxx:832
 TGFileBrowser.cxx:833
 TGFileBrowser.cxx:834
 TGFileBrowser.cxx:835
 TGFileBrowser.cxx:836
 TGFileBrowser.cxx:837
 TGFileBrowser.cxx:838
 TGFileBrowser.cxx:839
 TGFileBrowser.cxx:840
 TGFileBrowser.cxx:841
 TGFileBrowser.cxx:842
 TGFileBrowser.cxx:843
 TGFileBrowser.cxx:844
 TGFileBrowser.cxx:845
 TGFileBrowser.cxx:846
 TGFileBrowser.cxx:847
 TGFileBrowser.cxx:848
 TGFileBrowser.cxx:849
 TGFileBrowser.cxx:850
 TGFileBrowser.cxx:851
 TGFileBrowser.cxx:852
 TGFileBrowser.cxx:853
 TGFileBrowser.cxx:854
 TGFileBrowser.cxx:855
 TGFileBrowser.cxx:856
 TGFileBrowser.cxx:857
 TGFileBrowser.cxx:858
 TGFileBrowser.cxx:859
 TGFileBrowser.cxx:860
 TGFileBrowser.cxx:861
 TGFileBrowser.cxx:862
 TGFileBrowser.cxx:863
 TGFileBrowser.cxx:864
 TGFileBrowser.cxx:865
 TGFileBrowser.cxx:866
 TGFileBrowser.cxx:867
 TGFileBrowser.cxx:868
 TGFileBrowser.cxx:869
 TGFileBrowser.cxx:870
 TGFileBrowser.cxx:871
 TGFileBrowser.cxx:872
 TGFileBrowser.cxx:873
 TGFileBrowser.cxx:874
 TGFileBrowser.cxx:875
 TGFileBrowser.cxx:876
 TGFileBrowser.cxx:877
 TGFileBrowser.cxx:878
 TGFileBrowser.cxx:879
 TGFileBrowser.cxx:880
 TGFileBrowser.cxx:881
 TGFileBrowser.cxx:882
 TGFileBrowser.cxx:883
 TGFileBrowser.cxx:884
 TGFileBrowser.cxx:885
 TGFileBrowser.cxx:886
 TGFileBrowser.cxx:887
 TGFileBrowser.cxx:888
 TGFileBrowser.cxx:889
 TGFileBrowser.cxx:890
 TGFileBrowser.cxx:891
 TGFileBrowser.cxx:892
 TGFileBrowser.cxx:893
 TGFileBrowser.cxx:894
 TGFileBrowser.cxx:895
 TGFileBrowser.cxx:896
 TGFileBrowser.cxx:897
 TGFileBrowser.cxx:898
 TGFileBrowser.cxx:899
 TGFileBrowser.cxx:900
 TGFileBrowser.cxx:901
 TGFileBrowser.cxx:902
 TGFileBrowser.cxx:903
 TGFileBrowser.cxx:904
 TGFileBrowser.cxx:905
 TGFileBrowser.cxx:906
 TGFileBrowser.cxx:907
 TGFileBrowser.cxx:908
 TGFileBrowser.cxx:909
 TGFileBrowser.cxx:910
 TGFileBrowser.cxx:911
 TGFileBrowser.cxx:912
 TGFileBrowser.cxx:913
 TGFileBrowser.cxx:914
 TGFileBrowser.cxx:915
 TGFileBrowser.cxx:916
 TGFileBrowser.cxx:917
 TGFileBrowser.cxx:918
 TGFileBrowser.cxx:919
 TGFileBrowser.cxx:920
 TGFileBrowser.cxx:921
 TGFileBrowser.cxx:922
 TGFileBrowser.cxx:923
 TGFileBrowser.cxx:924
 TGFileBrowser.cxx:925
 TGFileBrowser.cxx:926
 TGFileBrowser.cxx:927
 TGFileBrowser.cxx:928
 TGFileBrowser.cxx:929
 TGFileBrowser.cxx:930
 TGFileBrowser.cxx:931
 TGFileBrowser.cxx:932
 TGFileBrowser.cxx:933
 TGFileBrowser.cxx:934
 TGFileBrowser.cxx:935
 TGFileBrowser.cxx:936
 TGFileBrowser.cxx:937
 TGFileBrowser.cxx:938
 TGFileBrowser.cxx:939
 TGFileBrowser.cxx:940
 TGFileBrowser.cxx:941
 TGFileBrowser.cxx:942
 TGFileBrowser.cxx:943
 TGFileBrowser.cxx:944
 TGFileBrowser.cxx:945
 TGFileBrowser.cxx:946
 TGFileBrowser.cxx:947
 TGFileBrowser.cxx:948
 TGFileBrowser.cxx:949
 TGFileBrowser.cxx:950
 TGFileBrowser.cxx:951
 TGFileBrowser.cxx:952
 TGFileBrowser.cxx:953
 TGFileBrowser.cxx:954
 TGFileBrowser.cxx:955
 TGFileBrowser.cxx:956
 TGFileBrowser.cxx:957
 TGFileBrowser.cxx:958
 TGFileBrowser.cxx:959
 TGFileBrowser.cxx:960
 TGFileBrowser.cxx:961
 TGFileBrowser.cxx:962
 TGFileBrowser.cxx:963
 TGFileBrowser.cxx:964
 TGFileBrowser.cxx:965
 TGFileBrowser.cxx:966
 TGFileBrowser.cxx:967
 TGFileBrowser.cxx:968
 TGFileBrowser.cxx:969
 TGFileBrowser.cxx:970
 TGFileBrowser.cxx:971
 TGFileBrowser.cxx:972
 TGFileBrowser.cxx:973
 TGFileBrowser.cxx:974
 TGFileBrowser.cxx:975
 TGFileBrowser.cxx:976
 TGFileBrowser.cxx:977
 TGFileBrowser.cxx:978
 TGFileBrowser.cxx:979
 TGFileBrowser.cxx:980
 TGFileBrowser.cxx:981
 TGFileBrowser.cxx:982
 TGFileBrowser.cxx:983
 TGFileBrowser.cxx:984
 TGFileBrowser.cxx:985
 TGFileBrowser.cxx:986
 TGFileBrowser.cxx:987
 TGFileBrowser.cxx:988
 TGFileBrowser.cxx:989
 TGFileBrowser.cxx:990
 TGFileBrowser.cxx:991
 TGFileBrowser.cxx:992
 TGFileBrowser.cxx:993
 TGFileBrowser.cxx:994
 TGFileBrowser.cxx:995
 TGFileBrowser.cxx:996
 TGFileBrowser.cxx:997
 TGFileBrowser.cxx:998
 TGFileBrowser.cxx:999
 TGFileBrowser.cxx:1000
 TGFileBrowser.cxx:1001
 TGFileBrowser.cxx:1002
 TGFileBrowser.cxx:1003
 TGFileBrowser.cxx:1004
 TGFileBrowser.cxx:1005
 TGFileBrowser.cxx:1006
 TGFileBrowser.cxx:1007
 TGFileBrowser.cxx:1008
 TGFileBrowser.cxx:1009
 TGFileBrowser.cxx:1010
 TGFileBrowser.cxx:1011
 TGFileBrowser.cxx:1012
 TGFileBrowser.cxx:1013
 TGFileBrowser.cxx:1014
 TGFileBrowser.cxx:1015
 TGFileBrowser.cxx:1016
 TGFileBrowser.cxx:1017
 TGFileBrowser.cxx:1018
 TGFileBrowser.cxx:1019
 TGFileBrowser.cxx:1020
 TGFileBrowser.cxx:1021
 TGFileBrowser.cxx:1022
 TGFileBrowser.cxx:1023
 TGFileBrowser.cxx:1024
 TGFileBrowser.cxx:1025
 TGFileBrowser.cxx:1026
 TGFileBrowser.cxx:1027
 TGFileBrowser.cxx:1028
 TGFileBrowser.cxx:1029
 TGFileBrowser.cxx:1030
 TGFileBrowser.cxx:1031
 TGFileBrowser.cxx:1032
 TGFileBrowser.cxx:1033
 TGFileBrowser.cxx:1034
 TGFileBrowser.cxx:1035
 TGFileBrowser.cxx:1036
 TGFileBrowser.cxx:1037
 TGFileBrowser.cxx:1038
 TGFileBrowser.cxx:1039
 TGFileBrowser.cxx:1040
 TGFileBrowser.cxx:1041
 TGFileBrowser.cxx:1042
 TGFileBrowser.cxx:1043
 TGFileBrowser.cxx:1044
 TGFileBrowser.cxx:1045
 TGFileBrowser.cxx:1046
 TGFileBrowser.cxx:1047
 TGFileBrowser.cxx:1048
 TGFileBrowser.cxx:1049
 TGFileBrowser.cxx:1050
 TGFileBrowser.cxx:1051
 TGFileBrowser.cxx:1052
 TGFileBrowser.cxx:1053
 TGFileBrowser.cxx:1054
 TGFileBrowser.cxx:1055
 TGFileBrowser.cxx:1056
 TGFileBrowser.cxx:1057
 TGFileBrowser.cxx:1058
 TGFileBrowser.cxx:1059
 TGFileBrowser.cxx:1060
 TGFileBrowser.cxx:1061
 TGFileBrowser.cxx:1062
 TGFileBrowser.cxx:1063
 TGFileBrowser.cxx:1064
 TGFileBrowser.cxx:1065
 TGFileBrowser.cxx:1066
 TGFileBrowser.cxx:1067
 TGFileBrowser.cxx:1068
 TGFileBrowser.cxx:1069
 TGFileBrowser.cxx:1070
 TGFileBrowser.cxx:1071
 TGFileBrowser.cxx:1072
 TGFileBrowser.cxx:1073
 TGFileBrowser.cxx:1074
 TGFileBrowser.cxx:1075
 TGFileBrowser.cxx:1076
 TGFileBrowser.cxx:1077
 TGFileBrowser.cxx:1078
 TGFileBrowser.cxx:1079
 TGFileBrowser.cxx:1080
 TGFileBrowser.cxx:1081
 TGFileBrowser.cxx:1082
 TGFileBrowser.cxx:1083
 TGFileBrowser.cxx:1084
 TGFileBrowser.cxx:1085
 TGFileBrowser.cxx:1086
 TGFileBrowser.cxx:1087
 TGFileBrowser.cxx:1088
 TGFileBrowser.cxx:1089
 TGFileBrowser.cxx:1090
 TGFileBrowser.cxx:1091
 TGFileBrowser.cxx:1092
 TGFileBrowser.cxx:1093
 TGFileBrowser.cxx:1094
 TGFileBrowser.cxx:1095
 TGFileBrowser.cxx:1096
 TGFileBrowser.cxx:1097
 TGFileBrowser.cxx:1098
 TGFileBrowser.cxx:1099
 TGFileBrowser.cxx:1100
 TGFileBrowser.cxx:1101
 TGFileBrowser.cxx:1102
 TGFileBrowser.cxx:1103
 TGFileBrowser.cxx:1104
 TGFileBrowser.cxx:1105
 TGFileBrowser.cxx:1106
 TGFileBrowser.cxx:1107
 TGFileBrowser.cxx:1108
 TGFileBrowser.cxx:1109
 TGFileBrowser.cxx:1110
 TGFileBrowser.cxx:1111
 TGFileBrowser.cxx:1112
 TGFileBrowser.cxx:1113
 TGFileBrowser.cxx:1114
 TGFileBrowser.cxx:1115
 TGFileBrowser.cxx:1116
 TGFileBrowser.cxx:1117
 TGFileBrowser.cxx:1118
 TGFileBrowser.cxx:1119
 TGFileBrowser.cxx:1120
 TGFileBrowser.cxx:1121
 TGFileBrowser.cxx:1122
 TGFileBrowser.cxx:1123
 TGFileBrowser.cxx:1124
 TGFileBrowser.cxx:1125
 TGFileBrowser.cxx:1126
 TGFileBrowser.cxx:1127
 TGFileBrowser.cxx:1128
 TGFileBrowser.cxx:1129
 TGFileBrowser.cxx:1130
 TGFileBrowser.cxx:1131
 TGFileBrowser.cxx:1132
 TGFileBrowser.cxx:1133
 TGFileBrowser.cxx:1134
 TGFileBrowser.cxx:1135
 TGFileBrowser.cxx:1136
 TGFileBrowser.cxx:1137
 TGFileBrowser.cxx:1138
 TGFileBrowser.cxx:1139
 TGFileBrowser.cxx:1140
 TGFileBrowser.cxx:1141
 TGFileBrowser.cxx:1142
 TGFileBrowser.cxx:1143
 TGFileBrowser.cxx:1144
 TGFileBrowser.cxx:1145
 TGFileBrowser.cxx:1146
 TGFileBrowser.cxx:1147
 TGFileBrowser.cxx:1148
 TGFileBrowser.cxx:1149
 TGFileBrowser.cxx:1150
 TGFileBrowser.cxx:1151
 TGFileBrowser.cxx:1152
 TGFileBrowser.cxx:1153
 TGFileBrowser.cxx:1154
 TGFileBrowser.cxx:1155
 TGFileBrowser.cxx:1156
 TGFileBrowser.cxx:1157
 TGFileBrowser.cxx:1158
 TGFileBrowser.cxx:1159
 TGFileBrowser.cxx:1160
 TGFileBrowser.cxx:1161
 TGFileBrowser.cxx:1162
 TGFileBrowser.cxx:1163
 TGFileBrowser.cxx:1164
 TGFileBrowser.cxx:1165
 TGFileBrowser.cxx:1166
 TGFileBrowser.cxx:1167
 TGFileBrowser.cxx:1168
 TGFileBrowser.cxx:1169
 TGFileBrowser.cxx:1170
 TGFileBrowser.cxx:1171
 TGFileBrowser.cxx:1172
 TGFileBrowser.cxx:1173
 TGFileBrowser.cxx:1174
 TGFileBrowser.cxx:1175
 TGFileBrowser.cxx:1176
 TGFileBrowser.cxx:1177
 TGFileBrowser.cxx:1178
 TGFileBrowser.cxx:1179
 TGFileBrowser.cxx:1180
 TGFileBrowser.cxx:1181
 TGFileBrowser.cxx:1182
 TGFileBrowser.cxx:1183
 TGFileBrowser.cxx:1184
 TGFileBrowser.cxx:1185
 TGFileBrowser.cxx:1186
 TGFileBrowser.cxx:1187
 TGFileBrowser.cxx:1188
 TGFileBrowser.cxx:1189
 TGFileBrowser.cxx:1190
 TGFileBrowser.cxx:1191
 TGFileBrowser.cxx:1192
 TGFileBrowser.cxx:1193
 TGFileBrowser.cxx:1194
 TGFileBrowser.cxx:1195
 TGFileBrowser.cxx:1196
 TGFileBrowser.cxx:1197
 TGFileBrowser.cxx:1198
 TGFileBrowser.cxx:1199
 TGFileBrowser.cxx:1200
 TGFileBrowser.cxx:1201
 TGFileBrowser.cxx:1202
 TGFileBrowser.cxx:1203
 TGFileBrowser.cxx:1204
 TGFileBrowser.cxx:1205
 TGFileBrowser.cxx:1206
 TGFileBrowser.cxx:1207
 TGFileBrowser.cxx:1208
 TGFileBrowser.cxx:1209
 TGFileBrowser.cxx:1210
 TGFileBrowser.cxx:1211
 TGFileBrowser.cxx:1212
 TGFileBrowser.cxx:1213
 TGFileBrowser.cxx:1214
 TGFileBrowser.cxx:1215
 TGFileBrowser.cxx:1216
 TGFileBrowser.cxx:1217
 TGFileBrowser.cxx:1218
 TGFileBrowser.cxx:1219
 TGFileBrowser.cxx:1220
 TGFileBrowser.cxx:1221
 TGFileBrowser.cxx:1222
 TGFileBrowser.cxx:1223
 TGFileBrowser.cxx:1224
 TGFileBrowser.cxx:1225
 TGFileBrowser.cxx:1226
 TGFileBrowser.cxx:1227
 TGFileBrowser.cxx:1228
 TGFileBrowser.cxx:1229
 TGFileBrowser.cxx:1230
 TGFileBrowser.cxx:1231
 TGFileBrowser.cxx:1232
 TGFileBrowser.cxx:1233
 TGFileBrowser.cxx:1234
 TGFileBrowser.cxx:1235
 TGFileBrowser.cxx:1236
 TGFileBrowser.cxx:1237
 TGFileBrowser.cxx:1238
 TGFileBrowser.cxx:1239
 TGFileBrowser.cxx:1240
 TGFileBrowser.cxx:1241
 TGFileBrowser.cxx:1242
 TGFileBrowser.cxx:1243
 TGFileBrowser.cxx:1244
 TGFileBrowser.cxx:1245
 TGFileBrowser.cxx:1246
 TGFileBrowser.cxx:1247
 TGFileBrowser.cxx:1248
 TGFileBrowser.cxx:1249
 TGFileBrowser.cxx:1250
 TGFileBrowser.cxx:1251
 TGFileBrowser.cxx:1252
 TGFileBrowser.cxx:1253
 TGFileBrowser.cxx:1254
 TGFileBrowser.cxx:1255
 TGFileBrowser.cxx:1256
 TGFileBrowser.cxx:1257
 TGFileBrowser.cxx:1258
 TGFileBrowser.cxx:1259
 TGFileBrowser.cxx:1260
 TGFileBrowser.cxx:1261
 TGFileBrowser.cxx:1262
 TGFileBrowser.cxx:1263
 TGFileBrowser.cxx:1264
 TGFileBrowser.cxx:1265
 TGFileBrowser.cxx:1266
 TGFileBrowser.cxx:1267
 TGFileBrowser.cxx:1268
 TGFileBrowser.cxx:1269
 TGFileBrowser.cxx:1270
 TGFileBrowser.cxx:1271
 TGFileBrowser.cxx:1272
 TGFileBrowser.cxx:1273
 TGFileBrowser.cxx:1274
 TGFileBrowser.cxx:1275
 TGFileBrowser.cxx:1276
 TGFileBrowser.cxx:1277
 TGFileBrowser.cxx:1278
 TGFileBrowser.cxx:1279
 TGFileBrowser.cxx:1280
 TGFileBrowser.cxx:1281
 TGFileBrowser.cxx:1282
 TGFileBrowser.cxx:1283
 TGFileBrowser.cxx:1284
 TGFileBrowser.cxx:1285
 TGFileBrowser.cxx:1286
 TGFileBrowser.cxx:1287
 TGFileBrowser.cxx:1288
 TGFileBrowser.cxx:1289
 TGFileBrowser.cxx:1290
 TGFileBrowser.cxx:1291
 TGFileBrowser.cxx:1292
 TGFileBrowser.cxx:1293
 TGFileBrowser.cxx:1294
 TGFileBrowser.cxx:1295
 TGFileBrowser.cxx:1296
 TGFileBrowser.cxx:1297
 TGFileBrowser.cxx:1298
 TGFileBrowser.cxx:1299
 TGFileBrowser.cxx:1300
 TGFileBrowser.cxx:1301
 TGFileBrowser.cxx:1302
 TGFileBrowser.cxx:1303
 TGFileBrowser.cxx:1304
 TGFileBrowser.cxx:1305
 TGFileBrowser.cxx:1306
 TGFileBrowser.cxx:1307
 TGFileBrowser.cxx:1308
 TGFileBrowser.cxx:1309
 TGFileBrowser.cxx:1310
 TGFileBrowser.cxx:1311
 TGFileBrowser.cxx:1312
 TGFileBrowser.cxx:1313
 TGFileBrowser.cxx:1314
 TGFileBrowser.cxx:1315
 TGFileBrowser.cxx:1316
 TGFileBrowser.cxx:1317
 TGFileBrowser.cxx:1318
 TGFileBrowser.cxx:1319
 TGFileBrowser.cxx:1320
 TGFileBrowser.cxx:1321
 TGFileBrowser.cxx:1322
 TGFileBrowser.cxx:1323
 TGFileBrowser.cxx:1324
 TGFileBrowser.cxx:1325
 TGFileBrowser.cxx:1326
 TGFileBrowser.cxx:1327
 TGFileBrowser.cxx:1328
 TGFileBrowser.cxx:1329
 TGFileBrowser.cxx:1330
 TGFileBrowser.cxx:1331
 TGFileBrowser.cxx:1332
 TGFileBrowser.cxx:1333
 TGFileBrowser.cxx:1334
 TGFileBrowser.cxx:1335
 TGFileBrowser.cxx:1336
 TGFileBrowser.cxx:1337
 TGFileBrowser.cxx:1338
 TGFileBrowser.cxx:1339
 TGFileBrowser.cxx:1340
 TGFileBrowser.cxx:1341
 TGFileBrowser.cxx:1342
 TGFileBrowser.cxx:1343
 TGFileBrowser.cxx:1344
 TGFileBrowser.cxx:1345
 TGFileBrowser.cxx:1346
 TGFileBrowser.cxx:1347
 TGFileBrowser.cxx:1348
 TGFileBrowser.cxx:1349
 TGFileBrowser.cxx:1350
 TGFileBrowser.cxx:1351
 TGFileBrowser.cxx:1352
 TGFileBrowser.cxx:1353
 TGFileBrowser.cxx:1354
 TGFileBrowser.cxx:1355
 TGFileBrowser.cxx:1356
 TGFileBrowser.cxx:1357
 TGFileBrowser.cxx:1358
 TGFileBrowser.cxx:1359
 TGFileBrowser.cxx:1360
 TGFileBrowser.cxx:1361
 TGFileBrowser.cxx:1362
 TGFileBrowser.cxx:1363
 TGFileBrowser.cxx:1364
 TGFileBrowser.cxx:1365
 TGFileBrowser.cxx:1366
 TGFileBrowser.cxx:1367
 TGFileBrowser.cxx:1368
 TGFileBrowser.cxx:1369
 TGFileBrowser.cxx:1370
 TGFileBrowser.cxx:1371
 TGFileBrowser.cxx:1372
 TGFileBrowser.cxx:1373
 TGFileBrowser.cxx:1374
 TGFileBrowser.cxx:1375
 TGFileBrowser.cxx:1376
 TGFileBrowser.cxx:1377
 TGFileBrowser.cxx:1378
 TGFileBrowser.cxx:1379
 TGFileBrowser.cxx:1380
 TGFileBrowser.cxx:1381
 TGFileBrowser.cxx:1382
 TGFileBrowser.cxx:1383
 TGFileBrowser.cxx:1384
 TGFileBrowser.cxx:1385
 TGFileBrowser.cxx:1386
 TGFileBrowser.cxx:1387
 TGFileBrowser.cxx:1388
 TGFileBrowser.cxx:1389
 TGFileBrowser.cxx:1390
 TGFileBrowser.cxx:1391
 TGFileBrowser.cxx:1392
 TGFileBrowser.cxx:1393
 TGFileBrowser.cxx:1394
 TGFileBrowser.cxx:1395
 TGFileBrowser.cxx:1396
 TGFileBrowser.cxx:1397
 TGFileBrowser.cxx:1398
 TGFileBrowser.cxx:1399
 TGFileBrowser.cxx:1400
 TGFileBrowser.cxx:1401
 TGFileBrowser.cxx:1402
 TGFileBrowser.cxx:1403
 TGFileBrowser.cxx:1404
 TGFileBrowser.cxx:1405
 TGFileBrowser.cxx:1406
 TGFileBrowser.cxx:1407
 TGFileBrowser.cxx:1408
 TGFileBrowser.cxx:1409
 TGFileBrowser.cxx:1410
 TGFileBrowser.cxx:1411
 TGFileBrowser.cxx:1412
 TGFileBrowser.cxx:1413
 TGFileBrowser.cxx:1414
 TGFileBrowser.cxx:1415
 TGFileBrowser.cxx:1416
 TGFileBrowser.cxx:1417
 TGFileBrowser.cxx:1418
 TGFileBrowser.cxx:1419
 TGFileBrowser.cxx:1420
 TGFileBrowser.cxx:1421
 TGFileBrowser.cxx:1422
 TGFileBrowser.cxx:1423
 TGFileBrowser.cxx:1424
 TGFileBrowser.cxx:1425
 TGFileBrowser.cxx:1426
 TGFileBrowser.cxx:1427
 TGFileBrowser.cxx:1428
 TGFileBrowser.cxx:1429
 TGFileBrowser.cxx:1430
 TGFileBrowser.cxx:1431
 TGFileBrowser.cxx:1432
 TGFileBrowser.cxx:1433
 TGFileBrowser.cxx:1434
 TGFileBrowser.cxx:1435
 TGFileBrowser.cxx:1436
 TGFileBrowser.cxx:1437
 TGFileBrowser.cxx:1438
 TGFileBrowser.cxx:1439
 TGFileBrowser.cxx:1440
 TGFileBrowser.cxx:1441
 TGFileBrowser.cxx:1442
 TGFileBrowser.cxx:1443
 TGFileBrowser.cxx:1444
 TGFileBrowser.cxx:1445
 TGFileBrowser.cxx:1446
 TGFileBrowser.cxx:1447
 TGFileBrowser.cxx:1448
 TGFileBrowser.cxx:1449
 TGFileBrowser.cxx:1450
 TGFileBrowser.cxx:1451
 TGFileBrowser.cxx:1452
 TGFileBrowser.cxx:1453
 TGFileBrowser.cxx:1454
 TGFileBrowser.cxx:1455
 TGFileBrowser.cxx:1456
 TGFileBrowser.cxx:1457
 TGFileBrowser.cxx:1458
 TGFileBrowser.cxx:1459
 TGFileBrowser.cxx:1460
 TGFileBrowser.cxx:1461
 TGFileBrowser.cxx:1462
 TGFileBrowser.cxx:1463
 TGFileBrowser.cxx:1464
 TGFileBrowser.cxx:1465
 TGFileBrowser.cxx:1466
 TGFileBrowser.cxx:1467
 TGFileBrowser.cxx:1468
 TGFileBrowser.cxx:1469
 TGFileBrowser.cxx:1470
 TGFileBrowser.cxx:1471
 TGFileBrowser.cxx:1472
 TGFileBrowser.cxx:1473
 TGFileBrowser.cxx:1474
 TGFileBrowser.cxx:1475
 TGFileBrowser.cxx:1476
 TGFileBrowser.cxx:1477
 TGFileBrowser.cxx:1478
 TGFileBrowser.cxx:1479
 TGFileBrowser.cxx:1480
 TGFileBrowser.cxx:1481
 TGFileBrowser.cxx:1482
 TGFileBrowser.cxx:1483
 TGFileBrowser.cxx:1484
 TGFileBrowser.cxx:1485
 TGFileBrowser.cxx:1486
 TGFileBrowser.cxx:1487
 TGFileBrowser.cxx:1488
 TGFileBrowser.cxx:1489
 TGFileBrowser.cxx:1490
 TGFileBrowser.cxx:1491
 TGFileBrowser.cxx:1492
 TGFileBrowser.cxx:1493
 TGFileBrowser.cxx:1494
 TGFileBrowser.cxx:1495
 TGFileBrowser.cxx:1496
 TGFileBrowser.cxx:1497
 TGFileBrowser.cxx:1498
 TGFileBrowser.cxx:1499
 TGFileBrowser.cxx:1500
 TGFileBrowser.cxx:1501
 TGFileBrowser.cxx:1502
 TGFileBrowser.cxx:1503
 TGFileBrowser.cxx:1504
 TGFileBrowser.cxx:1505
 TGFileBrowser.cxx:1506
 TGFileBrowser.cxx:1507
 TGFileBrowser.cxx:1508
 TGFileBrowser.cxx:1509
 TGFileBrowser.cxx:1510
 TGFileBrowser.cxx:1511
 TGFileBrowser.cxx:1512
 TGFileBrowser.cxx:1513
 TGFileBrowser.cxx:1514
 TGFileBrowser.cxx:1515
 TGFileBrowser.cxx:1516
 TGFileBrowser.cxx:1517
 TGFileBrowser.cxx:1518
 TGFileBrowser.cxx:1519
 TGFileBrowser.cxx:1520
 TGFileBrowser.cxx:1521
 TGFileBrowser.cxx:1522
 TGFileBrowser.cxx:1523
 TGFileBrowser.cxx:1524
 TGFileBrowser.cxx:1525
 TGFileBrowser.cxx:1526
 TGFileBrowser.cxx:1527
 TGFileBrowser.cxx:1528
 TGFileBrowser.cxx:1529
 TGFileBrowser.cxx:1530
 TGFileBrowser.cxx:1531
 TGFileBrowser.cxx:1532
 TGFileBrowser.cxx:1533
 TGFileBrowser.cxx:1534
 TGFileBrowser.cxx:1535
 TGFileBrowser.cxx:1536
 TGFileBrowser.cxx:1537
 TGFileBrowser.cxx:1538
 TGFileBrowser.cxx:1539
 TGFileBrowser.cxx:1540
 TGFileBrowser.cxx:1541
 TGFileBrowser.cxx:1542
 TGFileBrowser.cxx:1543
 TGFileBrowser.cxx:1544
 TGFileBrowser.cxx:1545
 TGFileBrowser.cxx:1546
 TGFileBrowser.cxx:1547
 TGFileBrowser.cxx:1548
 TGFileBrowser.cxx:1549
 TGFileBrowser.cxx:1550
 TGFileBrowser.cxx:1551
 TGFileBrowser.cxx:1552
 TGFileBrowser.cxx:1553
 TGFileBrowser.cxx:1554
 TGFileBrowser.cxx:1555
 TGFileBrowser.cxx:1556
 TGFileBrowser.cxx:1557
 TGFileBrowser.cxx:1558
 TGFileBrowser.cxx:1559
 TGFileBrowser.cxx:1560
 TGFileBrowser.cxx:1561
 TGFileBrowser.cxx:1562
 TGFileBrowser.cxx:1563
 TGFileBrowser.cxx:1564
 TGFileBrowser.cxx:1565
 TGFileBrowser.cxx:1566
 TGFileBrowser.cxx:1567
 TGFileBrowser.cxx:1568
 TGFileBrowser.cxx:1569
 TGFileBrowser.cxx:1570
 TGFileBrowser.cxx:1571
 TGFileBrowser.cxx:1572
 TGFileBrowser.cxx:1573
 TGFileBrowser.cxx:1574
 TGFileBrowser.cxx:1575
 TGFileBrowser.cxx:1576
 TGFileBrowser.cxx:1577
 TGFileBrowser.cxx:1578
 TGFileBrowser.cxx:1579
 TGFileBrowser.cxx:1580
 TGFileBrowser.cxx:1581
 TGFileBrowser.cxx:1582
 TGFileBrowser.cxx:1583
 TGFileBrowser.cxx:1584
 TGFileBrowser.cxx:1585
 TGFileBrowser.cxx:1586
 TGFileBrowser.cxx:1587
 TGFileBrowser.cxx:1588
 TGFileBrowser.cxx:1589
 TGFileBrowser.cxx:1590
 TGFileBrowser.cxx:1591
 TGFileBrowser.cxx:1592
 TGFileBrowser.cxx:1593
 TGFileBrowser.cxx:1594
 TGFileBrowser.cxx:1595
 TGFileBrowser.cxx:1596
 TGFileBrowser.cxx:1597
 TGFileBrowser.cxx:1598
 TGFileBrowser.cxx:1599
 TGFileBrowser.cxx:1600
 TGFileBrowser.cxx:1601
 TGFileBrowser.cxx:1602
 TGFileBrowser.cxx:1603
 TGFileBrowser.cxx:1604
 TGFileBrowser.cxx:1605
 TGFileBrowser.cxx:1606
 TGFileBrowser.cxx:1607
 TGFileBrowser.cxx:1608
 TGFileBrowser.cxx:1609
 TGFileBrowser.cxx:1610
 TGFileBrowser.cxx:1611
 TGFileBrowser.cxx:1612
 TGFileBrowser.cxx:1613
 TGFileBrowser.cxx:1614
 TGFileBrowser.cxx:1615
 TGFileBrowser.cxx:1616
 TGFileBrowser.cxx:1617
 TGFileBrowser.cxx:1618
 TGFileBrowser.cxx:1619
 TGFileBrowser.cxx:1620
 TGFileBrowser.cxx:1621
 TGFileBrowser.cxx:1622
 TGFileBrowser.cxx:1623
 TGFileBrowser.cxx:1624
 TGFileBrowser.cxx:1625
 TGFileBrowser.cxx:1626
 TGFileBrowser.cxx:1627
 TGFileBrowser.cxx:1628
 TGFileBrowser.cxx:1629
 TGFileBrowser.cxx:1630
 TGFileBrowser.cxx:1631
 TGFileBrowser.cxx:1632
 TGFileBrowser.cxx:1633
 TGFileBrowser.cxx:1634
 TGFileBrowser.cxx:1635
 TGFileBrowser.cxx:1636
 TGFileBrowser.cxx:1637
 TGFileBrowser.cxx:1638
 TGFileBrowser.cxx:1639
 TGFileBrowser.cxx:1640
 TGFileBrowser.cxx:1641
 TGFileBrowser.cxx:1642
 TGFileBrowser.cxx:1643
 TGFileBrowser.cxx:1644
 TGFileBrowser.cxx:1645
 TGFileBrowser.cxx:1646
 TGFileBrowser.cxx:1647
 TGFileBrowser.cxx:1648
 TGFileBrowser.cxx:1649
 TGFileBrowser.cxx:1650
 TGFileBrowser.cxx:1651
 TGFileBrowser.cxx:1652
 TGFileBrowser.cxx:1653
 TGFileBrowser.cxx:1654
 TGFileBrowser.cxx:1655
 TGFileBrowser.cxx:1656
 TGFileBrowser.cxx:1657
 TGFileBrowser.cxx:1658
 TGFileBrowser.cxx:1659
 TGFileBrowser.cxx:1660
 TGFileBrowser.cxx:1661
 TGFileBrowser.cxx:1662
 TGFileBrowser.cxx:1663
 TGFileBrowser.cxx:1664
 TGFileBrowser.cxx:1665
 TGFileBrowser.cxx:1666
 TGFileBrowser.cxx:1667
 TGFileBrowser.cxx:1668
 TGFileBrowser.cxx:1669
 TGFileBrowser.cxx:1670
 TGFileBrowser.cxx:1671
 TGFileBrowser.cxx:1672
 TGFileBrowser.cxx:1673
 TGFileBrowser.cxx:1674
 TGFileBrowser.cxx:1675
 TGFileBrowser.cxx:1676
 TGFileBrowser.cxx:1677
 TGFileBrowser.cxx:1678
 TGFileBrowser.cxx:1679
 TGFileBrowser.cxx:1680
 TGFileBrowser.cxx:1681
 TGFileBrowser.cxx:1682
 TGFileBrowser.cxx:1683
 TGFileBrowser.cxx:1684
 TGFileBrowser.cxx:1685
 TGFileBrowser.cxx:1686
 TGFileBrowser.cxx:1687
 TGFileBrowser.cxx:1688
 TGFileBrowser.cxx:1689
 TGFileBrowser.cxx:1690
 TGFileBrowser.cxx:1691
 TGFileBrowser.cxx:1692
 TGFileBrowser.cxx:1693
 TGFileBrowser.cxx:1694
 TGFileBrowser.cxx:1695
 TGFileBrowser.cxx:1696
 TGFileBrowser.cxx:1697
 TGFileBrowser.cxx:1698
 TGFileBrowser.cxx:1699
 TGFileBrowser.cxx:1700
 TGFileBrowser.cxx:1701
 TGFileBrowser.cxx:1702
 TGFileBrowser.cxx:1703
 TGFileBrowser.cxx:1704
 TGFileBrowser.cxx:1705
 TGFileBrowser.cxx:1706
 TGFileBrowser.cxx:1707
 TGFileBrowser.cxx:1708
 TGFileBrowser.cxx:1709
 TGFileBrowser.cxx:1710
 TGFileBrowser.cxx:1711
 TGFileBrowser.cxx:1712
 TGFileBrowser.cxx:1713
 TGFileBrowser.cxx:1714
 TGFileBrowser.cxx:1715
 TGFileBrowser.cxx:1716
 TGFileBrowser.cxx:1717
 TGFileBrowser.cxx:1718
 TGFileBrowser.cxx:1719
 TGFileBrowser.cxx:1720
 TGFileBrowser.cxx:1721
 TGFileBrowser.cxx:1722
 TGFileBrowser.cxx:1723
 TGFileBrowser.cxx:1724
 TGFileBrowser.cxx:1725
 TGFileBrowser.cxx:1726
 TGFileBrowser.cxx:1727
 TGFileBrowser.cxx:1728
 TGFileBrowser.cxx:1729
 TGFileBrowser.cxx:1730
 TGFileBrowser.cxx:1731
 TGFileBrowser.cxx:1732
 TGFileBrowser.cxx:1733
 TGFileBrowser.cxx:1734
 TGFileBrowser.cxx:1735
 TGFileBrowser.cxx:1736
 TGFileBrowser.cxx:1737
 TGFileBrowser.cxx:1738
 TGFileBrowser.cxx:1739
 TGFileBrowser.cxx:1740
 TGFileBrowser.cxx:1741
 TGFileBrowser.cxx:1742
 TGFileBrowser.cxx:1743
 TGFileBrowser.cxx:1744
 TGFileBrowser.cxx:1745
 TGFileBrowser.cxx:1746
 TGFileBrowser.cxx:1747
 TGFileBrowser.cxx:1748
 TGFileBrowser.cxx:1749
 TGFileBrowser.cxx:1750
 TGFileBrowser.cxx:1751
 TGFileBrowser.cxx:1752
 TGFileBrowser.cxx:1753
 TGFileBrowser.cxx:1754
 TGFileBrowser.cxx:1755
 TGFileBrowser.cxx:1756
 TGFileBrowser.cxx:1757
 TGFileBrowser.cxx:1758
 TGFileBrowser.cxx:1759
 TGFileBrowser.cxx:1760
 TGFileBrowser.cxx:1761
 TGFileBrowser.cxx:1762
 TGFileBrowser.cxx:1763
 TGFileBrowser.cxx:1764
 TGFileBrowser.cxx:1765
 TGFileBrowser.cxx:1766
 TGFileBrowser.cxx:1767
 TGFileBrowser.cxx:1768
 TGFileBrowser.cxx:1769
 TGFileBrowser.cxx:1770
 TGFileBrowser.cxx:1771
 TGFileBrowser.cxx:1772
 TGFileBrowser.cxx:1773
 TGFileBrowser.cxx:1774
 TGFileBrowser.cxx:1775
 TGFileBrowser.cxx:1776
 TGFileBrowser.cxx:1777
 TGFileBrowser.cxx:1778
 TGFileBrowser.cxx:1779
 TGFileBrowser.cxx:1780
 TGFileBrowser.cxx:1781
 TGFileBrowser.cxx:1782
 TGFileBrowser.cxx:1783
 TGFileBrowser.cxx:1784
 TGFileBrowser.cxx:1785
 TGFileBrowser.cxx:1786
 TGFileBrowser.cxx:1787
 TGFileBrowser.cxx:1788
 TGFileBrowser.cxx:1789
 TGFileBrowser.cxx:1790
 TGFileBrowser.cxx:1791
 TGFileBrowser.cxx:1792
 TGFileBrowser.cxx:1793
 TGFileBrowser.cxx:1794
 TGFileBrowser.cxx:1795
 TGFileBrowser.cxx:1796
 TGFileBrowser.cxx:1797
 TGFileBrowser.cxx:1798
 TGFileBrowser.cxx:1799
 TGFileBrowser.cxx:1800
 TGFileBrowser.cxx:1801
 TGFileBrowser.cxx:1802
 TGFileBrowser.cxx:1803
 TGFileBrowser.cxx:1804
 TGFileBrowser.cxx:1805
 TGFileBrowser.cxx:1806
 TGFileBrowser.cxx:1807
 TGFileBrowser.cxx:1808
 TGFileBrowser.cxx:1809
 TGFileBrowser.cxx:1810
 TGFileBrowser.cxx:1811
 TGFileBrowser.cxx:1812
 TGFileBrowser.cxx:1813
 TGFileBrowser.cxx:1814
 TGFileBrowser.cxx:1815
 TGFileBrowser.cxx:1816
 TGFileBrowser.cxx:1817
 TGFileBrowser.cxx:1818
 TGFileBrowser.cxx:1819
 TGFileBrowser.cxx:1820
 TGFileBrowser.cxx:1821
 TGFileBrowser.cxx:1822
 TGFileBrowser.cxx:1823
 TGFileBrowser.cxx:1824
 TGFileBrowser.cxx:1825
 TGFileBrowser.cxx:1826
 TGFileBrowser.cxx:1827
 TGFileBrowser.cxx:1828
 TGFileBrowser.cxx:1829
 TGFileBrowser.cxx:1830
 TGFileBrowser.cxx:1831
 TGFileBrowser.cxx:1832
 TGFileBrowser.cxx:1833
 TGFileBrowser.cxx:1834
 TGFileBrowser.cxx:1835
 TGFileBrowser.cxx:1836
 TGFileBrowser.cxx:1837
 TGFileBrowser.cxx:1838
 TGFileBrowser.cxx:1839
 TGFileBrowser.cxx:1840
 TGFileBrowser.cxx:1841
 TGFileBrowser.cxx:1842
 TGFileBrowser.cxx:1843
 TGFileBrowser.cxx:1844
 TGFileBrowser.cxx:1845
 TGFileBrowser.cxx:1846
 TGFileBrowser.cxx:1847
 TGFileBrowser.cxx:1848
 TGFileBrowser.cxx:1849
 TGFileBrowser.cxx:1850
 TGFileBrowser.cxx:1851
 TGFileBrowser.cxx:1852
 TGFileBrowser.cxx:1853
 TGFileBrowser.cxx:1854
 TGFileBrowser.cxx:1855
 TGFileBrowser.cxx:1856
 TGFileBrowser.cxx:1857
 TGFileBrowser.cxx:1858
 TGFileBrowser.cxx:1859
 TGFileBrowser.cxx:1860
 TGFileBrowser.cxx:1861
 TGFileBrowser.cxx:1862
 TGFileBrowser.cxx:1863
 TGFileBrowser.cxx:1864