#include "RConfigure.h"
#include "TRootBrowserLite.h"
#include "TRootApplication.h"
#include "TGCanvas.h"
#include "TGMenu.h"
#include "TGFileDialog.h"
#include "TGStatusBar.h"
#include "TGFSComboBox.h"
#include "TGLabel.h"
#include "TGButton.h"
#include "TGListView.h"
#include "TGListTree.h"
#include "TGToolBar.h"
#include "TGSplitter.h"
#include "TG3DLine.h"
#include "TGFSContainer.h"
#include "TGMimeTypes.h"
#include "TRootHelpDialog.h"
#include "TGTextEntry.h"
#include "TGTextEdit.h"
#include "TGTextEditDialogs.h"
#include "TROOT.h"
#include "TEnv.h"
#include "TBrowser.h"
#include "TApplication.h"
#include "TFile.h"
#include "TKey.h"
#include "TKeyMapFile.h"
#include "TClass.h"
#include "TContextMenu.h"
#include "TSystem.h"
#include "TSystemDirectory.h"
#include "TSystemFile.h"
#include "TRemoteObject.h"
#include "TInterpreter.h"
#include "TGuiBuilder.h"
#include "TImage.h"
#include "TVirtualPad.h"
#include "KeySymbols.h"
#include "THashTable.h"
#include "TMethod.h"
#include "TColor.h"
#include "TObjString.h"
#include "TGDNDManager.h"
#include "TBufferFile.h"
#include "TFolder.h"
#include "Getline.h"
#include "HelpText.h"
#ifdef WIN32
#include "TWin32SplashThread.h"
#endif
enum ERootBrowserCommands {
kFileNewBrowser,
kFileNewCanvas,
kFileNewBuilder,
kFileOpen,
kFileSave,
kFileSaveAs,
kFilePrint,
kFileCloseBrowser,
kFileQuit,
kViewToolBar,
kViewStatusBar,
kViewLargeIcons,
kViewSmallIcons,
kViewList,
kViewDetails,
kViewLineUp,
kViewHidden,
kViewRefresh,
kViewFind,
kViewExec,
kViewInterrupt,
kViewSave,
kViewArrangeByName,
kViewArrangeByType,
kViewArrangeBySize,
kViewArrangeByDate,
kViewArrangeAuto,
kViewGroupLV,
kHistoryBack,
kHistoryForw,
kOptionShowCycles,
kOptionAutoThumbnail,
kOneLevelUp,
kFSComboBox,
kHelpAbout,
kHelpOnBrowser,
kHelpOnCanvas,
kHelpOnMenus,
kHelpOnGraphicsEd,
kHelpOnObjects,
kHelpOnPS,
kHelpOnRemote
};
struct DefaultIcon_t {
const char *fPicnamePrefix;
const TGPicture *fIcon[2];
};
#if 0
static DefaultIcon_t gDefaultIcon[] = {
{ "folder", { 0, 0 } },
{ "app", { 0, 0 } },
{ "doc", { 0, 0 } },
{ "slink", { 0, 0 } },
{ "histo", { 0, 0 } },
{ "object", { 0, 0 } }
};
#endif
static ToolBarData_t gToolBarData[] = {
{ "tb_uplevel.xpm", "Up One Level", kFALSE, kOneLevelUp, 0 },
{ "", "", kFALSE, -1, 0 },
{ "tb_bigicons.xpm", "Large Icons", kTRUE, kViewLargeIcons, 0 },
{ "tb_smicons.xpm", "Small Icons", kTRUE, kViewSmallIcons, 0 },
{ "tb_list.xpm", "List", kTRUE, kViewList, 0 },
{ "tb_details.xpm", "Details", kTRUE, kViewDetails, 0 },
{ "", "", kFALSE, -1, 0 },
{ "tb_back.xpm", "Back", kFALSE, kHistoryBack, 0 },
{ "tb_forw.xpm", "Forward", kFALSE, kHistoryForw, 0 },
{ "tb_refresh.xpm", "Refresh (F5)", kFALSE, kViewRefresh, 0 },
{ "", "", kFALSE, -1, 0 },
{ "tb_find.xpm", "Find (Ctrl-F)", kFALSE, kViewFind, 0 },
{ "", "", kFALSE, -1, 0 },
{ "macro_t.xpm", "Execute Macro", kFALSE, kViewExec, 0 },
{ "interrupt.xpm", "Interrupt Macro",kFALSE, kViewInterrupt, 0 },
{ "filesaveas.xpm", "Save Macro", kFALSE, kViewSave, 0 },
{ 0, 0, kFALSE, 0, 0 }
};
static const char *gOpenTypes[] = { "ROOT files", "*.root",
"All files", "*",
0, 0 };
class TRootBrowserHistoryCursor : public TObject {
public:
TGListTreeItem *fItem;
TRootBrowserHistoryCursor(TGListTreeItem *item) : fItem(item) {}
void Print(Option_t *) const { if (fItem) printf("%s\n", fItem->GetText()); }
};
class TRootBrowserHistory : public TList {
public:
void RecursiveRemove(TObject *obj) {
TRootBrowserHistoryCursor *cur;
TIter next(this);
while ((cur = (TRootBrowserHistoryCursor*)next())) {
if (cur->fItem->GetUserData() == obj) {
Remove(cur);
delete cur;
}
}
}
void DeleteItem(TGListTreeItem *item) {
TRootBrowserHistoryCursor *cur;
TIter next(this);
while ((cur = (TRootBrowserHistoryCursor*)next())) {
if (cur->fItem == item) {
Remove(cur);
delete cur;
}
}
}
};
class TRootBrowserCursorSwitcher {
private:
TGWindow *fW1;
TGWindow *fW2;
public:
TRootBrowserCursorSwitcher(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));
}
~TRootBrowserCursorSwitcher() {
if (fW1) gVirtualX->SetCursor(fW1->GetId(), gVirtualX->CreateCursor(kPointer));
if (fW2) gVirtualX->SetCursor(fW2->GetId(), gVirtualX->CreateCursor(kPointer));
}
};
class TIconBoxThumb : public TObject {
public:
TString fName;
const TGPicture *fSmall;
const TGPicture *fLarge;
TIconBoxThumb(const char *name, const TGPicture *spic, const TGPicture *pic) {
fName = name;
fSmall = spic;
fLarge = pic;
}
ULong_t Hash() const { return fName.Hash(); }
const char *GetName() const { return fName.Data(); }
};
class TRootObjItem : public TGFileItem {
public:
TRootObjItem(const TGWindow *p, const TGPicture *bpic,
const TGPicture *spic, TGString *name,
TObject *obj, TClass *cl, EListViewMode viewMode = kLVSmallIcons);
virtual TDNDData *GetDNDData(Atom_t) {
TObject *object = 0;
if (fObj->IsA() == TKey::Class())
object = ((TKey *)fObj)->ReadObj();
else
object = fObj;
if (object) {
if (!fBuf) fBuf = new TBufferFile(TBuffer::kWrite);
fBuf->WriteObject(object);
fDNDData.fData = fBuf->Buffer();
fDNDData.fDataLength = fBuf->Length();
}
fDNDData.fDataType = gVirtualX->InternAtom("application/root", kFALSE);
return &fDNDData;
}
virtual Bool_t HandleDNDFinished() {
if (GetParent())
return ((TGFrame *)GetParent())->HandleDNDFinished();
return kFALSE;
}
protected:
TObject *fObj;
TDNDData fDNDData;
};
TRootObjItem::TRootObjItem(const TGWindow *p, const TGPicture *bpic,
const TGPicture *spic, TGString *name,
TObject *obj, TClass *, EListViewMode viewMode) :
TGFileItem(p, bpic, 0, spic, 0, name, 0, 0, 0, 0, 0, viewMode)
{
fObj = obj;
fDNDData.fData = 0;
fDNDData.fDataLength = 0;
if (fSubnames) {
for (Int_t i = 0; fSubnames[i] != 0; ++i) delete fSubnames[i];
}
delete [] fSubnames;
fSubnames = new TGString* [2];
fSubnames[0] = new TGString(obj->GetTitle());
fSubnames[1] = 0;
if (obj->IsA()->HasDefaultConstructor()) {
SetDNDSource(kTRUE);
}
if ((obj->IsA() == TFolder::Class()) ||
(obj->IsA() == TClass::Class())) {
SetDNDSource(kFALSE);
}
int i;
for (i = 0; fSubnames[i] != 0; ++i)
;
fCtw = new int[i];
for (i = 0; fSubnames[i] != 0; ++i)
fCtw[i] = gVirtualX->TextWidth(fFontStruct, fSubnames[i]->GetString(),
fSubnames[i]->GetLength());
}
class TRootIconBox;
class TRootIconList : public TList {
private:
TRootIconBox *fIconBox;
const TGPicture *fPic;
public:
TRootIconList(TRootIconBox* box = 0);
virtual ~TRootIconList();
void UpdateName();
const char *GetTitle() const { return "ListView Container"; }
Bool_t IsFolder() const { return kFALSE; }
void Browse(TBrowser *b);
const TGPicture *GetPicture() const { return fPic; }
};
TRootIconList::TRootIconList(TRootIconBox* box)
{
fPic = gClient->GetPicture("listview.xpm");
fIconBox = box;
fName = "empty";
}
TRootIconList::~TRootIconList()
{
gClient->FreePicture(fPic);
}
void TRootIconList::UpdateName()
{
if (!First()) return;
if (fSize==1) {
fName = First()->GetName();
return;
}
fName = First()->GetName();
fName += "-";
fName += Last()->GetName();
}
class TRootIconBox : public TGFileContainer {
friend class TRootIconList;
friend class TRootBrowserLite;
private:
Bool_t fCheckHeaders;
TRootIconList *fCurrentList;
TRootObjItem *fCurrentItem;
Bool_t fGrouped;
TString fCachedPicName;
TList *fGarbage;
Int_t fGroupSize;
TGString *fCurrentName;
const TGPicture *fLargeCachedPic;
const TGPicture *fSmallCachedPic;
Bool_t fWasGrouped;
TObject *fActiveObject;
Bool_t fIsEmpty;
THashTable *fThumbnails;
Bool_t fAutoThumbnail;
TRootBrowserLite *fBrowser;
void *FindItem(const TString& name,
Bool_t direction = kTRUE,
Bool_t caseSensitive = kTRUE,
Bool_t beginWith = kFALSE);
void RemoveGarbage();
public:
TRootIconBox(TRootBrowserLite *browser, TGListView *lv,
UInt_t options = kSunkenFrame,
ULong_t back = GetDefaultFrameBackground());
virtual ~TRootIconBox();
void AddObjItem(const char *name, TObject *obj, TClass *cl);
void GetObjPictures(const TGPicture **pic, const TGPicture **spic,
TObject *obj, const char *name);
void SetObjHeaders();
void Refresh();
void RemoveAll();
void SetGroupSize(Int_t siz) { fGroupSize = siz; }
Int_t GetGroupSize() const { return fGroupSize; }
TGFrameElement *FindFrame(Int_t x, Int_t y, Bool_t exclude=kTRUE) { return TGContainer::FindFrame(x,y,exclude); }
Bool_t WasGrouped() const { return fWasGrouped; }
};
TRootIconBox::TRootIconBox(TRootBrowserLite *browser, TGListView *lv, UInt_t options,
ULong_t back) : TGFileContainer(lv, options, back)
{
fListView = lv;
fBrowser = browser;
fCheckHeaders = kTRUE;
fTotal = 0;
fGarbage = new TList();
fCurrentList = 0;
fCurrentItem = 0;
fGrouped = kFALSE;
fGroupSize = 1000;
fCurrentName = 0;
fWasGrouped = kFALSE;
fActiveObject = 0;
fIsEmpty = kTRUE;
StopRefreshTimer();
fRefresh = 0;
fThumbnails = new THashTable(50);
fAutoThumbnail = kTRUE;
}
TRootIconBox::~TRootIconBox()
{
RemoveAll();
RemoveGarbage();
delete fGarbage;
delete fThumbnails;
}
void TRootIconBox::GetObjPictures(const TGPicture **pic, const TGPicture **spic,
TObject *obj, const char *name)
{
static TImage *im = 0;
if (!im) {
im = TImage::Create();
}
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 = fLargeCachedPic;
*spic = fSmallCachedPic;
return;
}
*pic = fClient->GetMimeTypeList()->GetIcon(iconname, kFALSE);
if (!(*pic) && xpm) {
if (im && im->SetImageBuffer((char**)&name, TImage::kXpm)) {
*pic = fClient->GetPicturePool()->GetPicture(iconname, im->GetPixmap(),
im->GetMask());
im->Scale(im->GetWidth()/2, im->GetHeight()/2);
*spic = fClient->GetPicturePool()->GetPicture(iconname, im->GetPixmap(),
im->GetMask());
}
fClient->GetMimeTypeList()->AddType("[thumbnail]", iconname, iconname, iconname, "->Browse()");
return;
}
if (*pic == 0) {
if (obj->IsFolder()) {
*pic = fFolder_s;
} else {
*pic = fDoc_s;
}
}
fLargeCachedPic = *pic;
*spic = fClient->GetMimeTypeList()->GetIcon(iconname, kTRUE);
if (*spic == 0) {
if (obj->IsFolder())
*spic = fFolder_t;
else
*spic = fDoc_t;
}
fSmallCachedPic = *spic;
fCachedPicName = iconname;
}
void TRootIconBox::RemoveGarbage()
{
TIter next(fGarbage);
TList *li;
while ((li=(TList *)next())) {
li->Clear("nodelete");
}
fGarbage->Delete();
}
void TRootIconBox::AddObjItem(const char *name, TObject *obj, TClass *cl)
{
if (!cl) return;
Bool_t isSystemFile = kFALSE;
TGFileItem *fi;
fWasGrouped = kFALSE;
const TGPicture *pic = 0;
const TGPicture *spic = 0;
if (obj->InheritsFrom("TRemoteObject")) {
TRemoteObject *robj = (TRemoteObject *)obj;
if ((TString(robj->GetClassName()) == "TSystemFile") ||
(TString(robj->GetClassName()) == "TSystemDirectory"))
isSystemFile = kTRUE;
}
if (isSystemFile || obj->IsA() == TSystemFile::Class() ||
obj->IsA() == TSystemDirectory::Class()) {
if (fCheckHeaders) {
if (strcmp(fListView->GetHeader(1), "Attributes")) {
fListView->SetDefaultHeaders();
TGTextButton** buttons = fListView->GetHeaderButtons();
if (buttons) {
buttons[0]->Connect("Clicked()", "TRootBrowserLite", fBrowser,
TString::Format("SetSortMode(=%d)", kViewArrangeByName));
buttons[1]->Connect("Clicked()", "TRootBrowserLite", fBrowser,
TString::Format("SetSortMode(=%d)", kViewArrangeByType));
buttons[2]->Connect("Clicked()", "TRootBrowserLite", fBrowser,
TString::Format("SetSortMode(=%d)", kViewArrangeBySize));
buttons[5]->Connect("Clicked()", "TRootBrowserLite", fBrowser,
TString::Format("SetSortMode(=%d)", kViewArrangeByDate));
}
}
fCheckHeaders = kFALSE;
}
TIconBoxThumb *thumb = 0;
char *thumbname = gSystem->ConcatFileName(gSystem->WorkingDirectory(), name);
thumb = (TIconBoxThumb *)fThumbnails->FindObject(gSystem->IsAbsoluteFileName(name) ? name :
thumbname);
delete []thumbname;
if (thumb) {
spic = thumb->fSmall;
pic = thumb->fLarge;
}
if (obj->InheritsFrom("TRemoteObject"))
fi = AddRemoteFile(obj, spic, pic);
else
fi = AddFile(name, spic, pic);
if (fi) {
fi->SetUserData(obj);
if (obj->IsA() == TSystemFile::Class()) {
TString str;
TDNDData data;
str = TString::Format("file://%s/%s\r\n",
gSystem->UnixPathName(obj->GetTitle()),
obj->GetName());
data.fData = (void *)strdup(str.Data());
data.fDataLength = str.Length()+1;
data.fDataType = gVirtualX->InternAtom("text/uri-list", kFALSE);
fi->SetDNDData(&data);
fi->SetDNDSource(kTRUE);
}
}
fIsEmpty = kFALSE;
return;
}
if (!fCurrentList) {
fCurrentList = new TRootIconList(this);
fGarbage->Add(fCurrentList);
}
fCurrentList->Add(obj);
fCurrentList->UpdateName();
fIsEmpty = kFALSE;
TGFrameElement *el;
TIter next(fList);
while ((el = (TGFrameElement *) next())) {
TGLVEntry *f = (TGLVEntry *) el->fFrame;
if (f->GetUserData() == obj) {
return;
}
}
if (fGrouped && fCurrentItem && (fCurrentList->GetSize()>1)) {
fCurrentName->SetString(fCurrentList->GetName());
}
EListViewMode view = fListView->GetViewMode();
if ((fCurrentList->GetSize() < fGroupSize) && !fGrouped) {
GetObjPictures(&pic, &spic, obj, obj->GetIconName() ?
obj->GetIconName() : cl->GetName());
if (fCheckHeaders) {
if (strcmp(fListView->GetHeader(1), "Title")) {
SetObjHeaders();
}
fCheckHeaders = kFALSE;
}
fi = new TRootObjItem(this, pic, spic, new TGString(name), obj, cl, view);
fi->SetUserData(obj);
AddItem(fi);
fTotal++;
return;
}
if (fGrouped && (fCurrentList->GetSize()==1)) {
fCurrentName = new TGString(fCurrentList->GetName());
fCurrentItem = new TRootObjItem(this, fCurrentList->GetPicture(), fCurrentList->GetPicture(),
fCurrentName,fCurrentList, TList::Class(), view);
fCurrentItem->SetUserData(fCurrentList);
AddItem(fCurrentItem);
fTotal = fList->GetSize();
return;
}
if ((fCurrentList->GetSize()==fGroupSize) && !fGrouped) {
fGrouped = kTRUE;
TGFrameElement *el2;
TIter nextl(fList);
while ((el2 = (TGFrameElement *) nextl())) {
el2->fFrame->DestroyWindow();
delete el2->fFrame;
fList->Remove(el2);
delete el2;
}
fCurrentName = new TGString(fCurrentList->GetName());
fi = new TRootObjItem(this, fCurrentList->GetPicture(), fCurrentList->GetPicture(),
fCurrentName, fCurrentList, TList::Class(), view);
fi->SetUserData(fCurrentList);
AddItem(fi);
fCurrentList = new TRootIconList(this);
fGarbage->Add(fCurrentList);
fTotal = 1;
return;
}
if ((fCurrentList->GetSize()==fGroupSize) && fGrouped) {
fCurrentList = new TRootIconList(this);
fGarbage->Add(fCurrentList);
return;
}
}
void TRootIconList::Browse(TBrowser *)
{
if (!fIconBox) return;
TObject *obj;
TGFileItem *fi;
const TGPicture *pic = 0;
const TGPicture *spic = 0;
TClass *cl;
TString name;
TKey *key = 0;
fIconBox->RemoveAll();
TObjLink *lnk = FirstLink();
while (lnk) {
obj = lnk->GetObject();
lnk = lnk->Next();
if (obj->IsA() == TKey::Class()) {
cl = TClass::GetClass(((TKey *)obj)->GetClassName());
key = (TKey *)obj;
} else if (obj->IsA() == TKeyMapFile::Class()) {
cl = TClass::GetClass(((TKeyMapFile *)obj)->GetTitle());
} else if (obj->InheritsFrom("TRemoteObject")) {
TRemoteObject *robj = (TRemoteObject *)obj;
cl = TClass::GetClass(robj->GetClassName());
} else {
cl = obj->IsA();
}
name = obj->GetName();
if (obj->IsA() == TKey::Class()) {
name += ";";
name += key->GetCycle();
}
fIconBox->GetObjPictures(&pic, &spic, obj, obj->GetIconName() ?
obj->GetIconName() : cl->GetName());
fi = new TRootObjItem((const TGWindow*)fIconBox, pic, spic, new TGString(name.Data()),
obj, cl, (EListViewMode)fIconBox->GetViewMode());
fi->SetUserData(obj);
fIconBox->AddItem(fi);
fIconBox->fTotal++;
if (obj==fIconBox->fActiveObject) {
fIconBox->ActivateItem((TGFrameElement*)fIconBox->fList->Last());
}
}
fIconBox->fGarbage->Remove(this);
fIconBox->RemoveGarbage();
fIconBox->fGarbage->Add(this);
fIconBox->Refresh();
fIconBox->AdjustPosition();
fIconBox->fWasGrouped = kTRUE;
}
void *TRootIconBox::FindItem(const TString& name, Bool_t direction,
Bool_t caseSensitive,Bool_t beginWith)
{
if (!fGrouped) {
return TGContainer::FindItem(name, direction, caseSensitive, beginWith);
}
if (name.IsNull()) return 0;
int idx = kNPOS;
TGFrameElement* el = 0;
TString str;
TString::ECaseCompare cmp = caseSensitive ? TString::kExact : TString::kIgnoreCase;
fLastDir = direction;
fLastCase = caseSensitive;
fLastName = name;
if (fLastActiveEl) {
el = fLastActiveEl;
if (direction) {
el = (TGFrameElement *)fList->After(el);
} else {
el = (TGFrameElement *)fList->Before(el);
}
} else {
if (direction) el = (TGFrameElement *)fList->First();
else el = (TGFrameElement *)fList->Last();
}
TGLVEntry* lv = 0;
TObject* obj = 0;
TList* li = 0;
while (el) {
lv = (TGLVEntry*)el->fFrame;
li = (TList*)lv->GetUserData();
TIter next(li);
while ((obj=next())) {
str = obj->GetName();
idx = str.Index(name,0,cmp);
if (idx!=kNPOS) {
if (beginWith) {
if (idx==0) {
fActiveObject = obj;
return el;
}
} else {
fActiveObject = obj;
return el;
}
}
}
if (direction) {
el = (TGFrameElement *)fList->After(el);
} else {
el = (TGFrameElement *)fList->Before(el);
}
}
fActiveObject = 0;
return 0;
}
void TRootIconBox::SetObjHeaders()
{
fListView->SetHeaders(2);
fListView->SetHeader("Name", kTextLeft, kTextLeft, 0);
fListView->SetHeader("Title", kTextLeft, kTextLeft, 1);
}
void TRootIconBox::Refresh()
{
Sort(fSortType);
SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_SELCHANGED), fTotal, fSelected);
MapSubwindows();
fListView->AdjustHeaders();
}
void TRootIconBox::RemoveAll()
{
if (fIsEmpty) return;
fCheckHeaders = kTRUE;
TGFileContainer::RemoveAll();
fGrouped = kFALSE;
fCurrentItem = 0;
fCurrentList = 0;
fIsEmpty = kTRUE;
}
ClassImp(TRootBrowserLite)
TRootBrowserLite::TRootBrowserLite(TBrowser *b, const char *name, UInt_t width, UInt_t height)
: TGMainFrame(gClient->GetDefaultRoot(), width, height), TBrowserImp(b)
{
CreateBrowser(name);
Resize(width, height);
if (b) Show();
}
TRootBrowserLite::TRootBrowserLite(TBrowser *b, const char *name, Int_t x, Int_t y,
UInt_t width, UInt_t height)
: TGMainFrame(gClient->GetDefaultRoot(), width, height), TBrowserImp(b)
{
CreateBrowser(name);
MoveResize(x, y, width, height);
SetWMPosition(x, y);
if (b) Show();
}
TRootBrowserLite::~TRootBrowserLite()
{
if (fIconPic) gClient->FreePicture(fIconPic);
delete fToolBarSep;
fToolBar->Cleanup();
delete fToolBar;
delete fStatusBar;
delete fV1;
delete fV2;
delete fLbl1;
delete fLbl2;
delete fHf;
delete fTreeHdr;
delete fListHdr;
delete fIconBox;
delete fListView;
delete fLt;
delete fTreeView;
delete fMenuBar;
delete fFileMenu;
delete fViewMenu;
delete fOptionMenu;
delete fHelpMenu;
delete fSortMenu;
delete fMenuBarLayout;
delete fMenuBarItemLayout;
delete fMenuBarHelpLayout;
delete fBarLayout;
delete fTextEdit;
if (fWidgets) fWidgets->Delete();
delete fWidgets;
fHistory->Delete();
delete fHistory;
}
void TRootBrowserLite::CreateBrowser(const char *name)
{
fWidgets = new TList;
fHistory = new TRootBrowserHistory;
fHistoryCursor = 0;
fBrowseTextFile = kFALSE;
fFileMenu = new TGPopupMenu(fClient->GetDefaultRoot());
fFileMenu->AddEntry("&New Browser", kFileNewBrowser);
fFileMenu->AddEntry("New Canvas", kFileNewCanvas);
fFileMenu->AddEntry("Gui &Builder", kFileNewBuilder);
fFileMenu->AddEntry("&Open...", kFileOpen);
fFileMenu->AddSeparator();
fFileMenu->AddEntry("&Save", kFileSave);
fFileMenu->AddEntry("Save As...", kFileSaveAs);
fFileMenu->AddSeparator();
fFileMenu->AddEntry("&Print...", kFilePrint);
fFileMenu->AddSeparator();
fFileMenu->AddEntry("&Close Browser", kFileCloseBrowser);
fFileMenu->AddSeparator();
fFileMenu->AddEntry("&Quit ROOT", kFileQuit);
fFileMenu->DisableEntry(kFileSave);
fFileMenu->DisableEntry(kFileSaveAs);
fFileMenu->DisableEntry(kFilePrint);
fSortMenu = new TGPopupMenu(fClient->GetDefaultRoot());
fSortMenu->AddEntry("By &Name", kViewArrangeByName);
fSortMenu->AddEntry("By &Type", kViewArrangeByType);
fSortMenu->AddEntry("By &Size", kViewArrangeBySize);
fSortMenu->AddEntry("By &Date", kViewArrangeByDate);
fSortMenu->AddSeparator();
fSortMenu->AddEntry("&Auto Arrange", kViewArrangeAuto);
fSortMenu->CheckEntry(kViewArrangeAuto);
fViewMenu = new TGPopupMenu(fClient->GetDefaultRoot());
fViewMenu->AddEntry("&Toolbar", kViewToolBar);
fViewMenu->AddEntry("Status &Bar", kViewStatusBar);
fViewMenu->AddSeparator();
fViewMenu->AddEntry("Lar&ge Icons", kViewLargeIcons);
fViewMenu->AddEntry("S&mall Icons", kViewSmallIcons);
fViewMenu->AddEntry("&List", kViewList);
fViewMenu->AddEntry("&Details", kViewDetails);
fViewMenu->AddSeparator();
fViewMenu->AddEntry("Show &Hidden", kViewHidden);
fViewMenu->AddPopup("Arrange &Icons", fSortMenu);
fViewMenu->AddEntry("Lin&e up Icons", kViewLineUp);
fViewMenu->AddEntry("&Group Icons", kViewGroupLV);
fViewMenu->AddSeparator();
fViewMenu->AddEntry("&Refresh (F5)", kViewRefresh);
fViewMenu->CheckEntry(kViewToolBar);
fViewMenu->CheckEntry(kViewStatusBar);
if (fBrowser) {
if (gEnv->GetValue("Browser.ShowHidden", 0)) {
fViewMenu->CheckEntry(kViewHidden);
fBrowser->SetBit(TBrowser::kNoHidden, kFALSE);
} else {
fViewMenu->UnCheckEntry(kViewHidden);
fBrowser->SetBit(TBrowser::kNoHidden, kTRUE);
}
}
fOptionMenu = new TGPopupMenu(fClient->GetDefaultRoot());
fOptionMenu->AddEntry("&Show Cycles", kOptionShowCycles);
fOptionMenu->AddEntry("&AutoThumbnail", kOptionAutoThumbnail);
fHelpMenu = new TGPopupMenu(fClient->GetDefaultRoot());
fHelpMenu->AddEntry("&About ROOT...", kHelpAbout);
fHelpMenu->AddSeparator();
fHelpMenu->AddEntry("Help On Browser...", kHelpOnBrowser);
fHelpMenu->AddEntry("Help On Canvas...", kHelpOnCanvas);
fHelpMenu->AddEntry("Help On Menus...", kHelpOnMenus);
fHelpMenu->AddEntry("Help On Graphics Editor...", kHelpOnGraphicsEd);
fHelpMenu->AddEntry("Help On Objects...", kHelpOnObjects);
fHelpMenu->AddEntry("Help On PostScript...", kHelpOnPS);
fHelpMenu->AddEntry("Help On Remote Session...", kHelpOnRemote);
fFileMenu->Associate(this);
fViewMenu->Associate(this);
fSortMenu->Associate(this);
fOptionMenu->Associate(this);
fHelpMenu->Associate(this);
fMenuBarLayout = new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 0, 0, 1, 1);
fMenuBarItemLayout = new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0);
fMenuBarHelpLayout = new TGLayoutHints(kLHintsTop | kLHintsRight);
fMenuBar = new TGMenuBar(this, 1, 1, kHorizontalFrame);
fMenuBar->AddPopup("&File", fFileMenu, fMenuBarItemLayout);
fMenuBar->AddPopup("&View", fViewMenu, fMenuBarItemLayout);
fMenuBar->AddPopup("&Options", fOptionMenu, fMenuBarItemLayout);
fMenuBar->AddPopup("&Help", fHelpMenu, fMenuBarHelpLayout);
AddFrame(fMenuBar, fMenuBarLayout);
fToolBarSep = new TGHorizontal3DLine(this);
fToolBar = new TGToolBar(this, 60, 20, kHorizontalFrame);
fFSComboBox = new TGFSComboBox(fToolBar, kFSComboBox);
fComboLayout = new TGLayoutHints(kLHintsLeft | kLHintsExpandY, 0, 0, 2, 2);
fToolBar->AddFrame(fFSComboBox, fComboLayout);
fFSComboBox->Resize(190, fFSComboBox->GetDefaultHeight());
fFSComboBox->Associate(this);
int spacing = 8;
for (int i = 0; gToolBarData[i].fPixmap; i++) {
if (strlen(gToolBarData[i].fPixmap) == 0) {
spacing = 8;
continue;
}
fToolBar->AddButton(this, &gToolBarData[i], spacing);
spacing = 0;
}
fDrawOption = new TGComboBox(fToolBar, "");
TGTextEntry *dropt_entry = fDrawOption->GetTextEntry();
dropt_entry->SetToolTipText("Object Draw Option", 300);
fDrawOption->Resize(80, 10);
TGListBox *lb = fDrawOption->GetListBox();
lb->Resize(lb->GetWidth(), 120);
Int_t dropt = 1;
fDrawOption->AddEntry("", dropt++);
fDrawOption->AddEntry("same", dropt++);
fDrawOption->AddEntry("box", dropt++);
fDrawOption->AddEntry("lego", dropt++);
fDrawOption->AddEntry("colz", dropt++);
fDrawOption->AddEntry("alp", dropt++);
fDrawOption->AddEntry("text", dropt++);
fToolBar->AddFrame(fDrawOption, new TGLayoutHints(kLHintsCenterY | kLHintsRight | kLHintsExpandY,2,2,2,0));
fToolBar->AddFrame(new TGLabel(fToolBar,"Option"),
new TGLayoutHints(kLHintsCenterY | kLHintsRight, 2,2,2,0));
fBarLayout = new TGLayoutHints(kLHintsTop | kLHintsExpandX);
AddFrame(fToolBarSep, fBarLayout);
AddFrame(fToolBar, fBarLayout);
fHf = new TGHorizontalFrame(this, 10, 10);
fV1 = new TGVerticalFrame(fHf, 10, 10, kFixedWidth);
fV2 = new TGVerticalFrame(fHf, 10, 10);
fTreeHdr = new TGCompositeFrame(fV1, 10, 10, kSunkenFrame);
fListHdr = new TGCompositeFrame(fV2, 10, 10, kSunkenFrame);
fLbl1 = new TGLabel(fTreeHdr, "All Folders");
fLbl2 = new TGLabel(fListHdr, "Contents of \".\"");
TGLayoutHints *lo;
lo = new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 3, 0, 0, 0);
fWidgets->Add(lo);
fTreeHdr->AddFrame(fLbl1, lo);
fListHdr->AddFrame(fLbl2, lo);
lo = new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0, 0, 1, 2);
fWidgets->Add(lo);
fV1->AddFrame(fTreeHdr, lo);
fV2->AddFrame(fListHdr, lo);
fV1->Resize(fTreeHdr->GetDefaultWidth()+100, fV1->GetDefaultHeight());
lo = new TGLayoutHints(kLHintsLeft | kLHintsExpandY);
fWidgets->Add(lo);
fHf->AddFrame(fV1, lo);
TGVSplitter *splitter = new TGVSplitter(fHf);
splitter->SetFrame(fV1, kTRUE);
lo = new TGLayoutHints(kLHintsLeft | kLHintsExpandY);
fWidgets->Add(splitter);
fWidgets->Add(lo);
fHf->AddFrame(splitter, lo);
lo = new TGLayoutHints(kLHintsRight | kLHintsExpandX | kLHintsExpandY);
fWidgets->Add(lo);
fHf->AddFrame(fV2, lo);
fTreeView = new TGCanvas(fV1, 10, 10, kSunkenFrame | kDoubleBorder);
fLt = new TGListTree(fTreeView, kHorizontalFrame,fgWhitePixel);
fLt->Associate(this);
fLt->SetAutoTips();
fExpandLayout = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY);
fWidgets->Add(fExpandLayout);
fV1->AddFrame(fTreeView, fExpandLayout);
fListView = new TGListView(fV2, 520, 250);
fIconBox = new TRootIconBox(this, fListView, kHorizontalFrame, fgWhitePixel);
fIconBox->Associate(this);
fListView->SetIncrements(1, 19);
fViewMode = fListView->GetViewMode();
TString str = gEnv->GetValue("Browser.AutoThumbnail", "yes");
str.ToLower();
fIconBox->fAutoThumbnail = (str == "yes") || atoi(str.Data());
fIconBox->fAutoThumbnail ? fOptionMenu->CheckEntry(kOptionAutoThumbnail) :
fOptionMenu->UnCheckEntry(kOptionAutoThumbnail);
str = gEnv->GetValue("Browser.GroupView", "10000");
Int_t igv = atoi(str.Data());
if (igv>10) {
fViewMenu->CheckEntry(kViewGroupLV);
fIconBox->SetGroupSize(igv);
}
fV2->AddFrame(fListView, fExpandLayout);
AddFrame(fHf, lo);
int parts[] = { 26, 74 };
fStatusBar = new TGStatusBar(this, 60, 10);
fStatusBar->SetParts(parts, 2);
lo = new TGLayoutHints(kLHintsBottom | kLHintsExpandX, 0, 0, 3, 0);
AddFrame(fStatusBar, lo);
fTextEdit = 0;
SetWindowName(name);
SetIconName(name);
fIconPic = SetIconPixmap("rootdb_s.xpm");
SetClassHints("Browser", "Browser");
SetWMSizeHints(600, 350, 10000, 10000, 2, 2);
SetIconName("ROOT Browser");
fListLevel = 0;
fTreeLock = kFALSE;
gVirtualX->GrabKey(fId, gVirtualX->KeysymToKeycode(kKey_Escape), 0, kTRUE);
gVirtualX->GrabKey(fId, gVirtualX->KeysymToKeycode(kKey_F5), 0, kTRUE);
gVirtualX->GrabKey(fId, gVirtualX->KeysymToKeycode(kKey_Right), kKeyMod1Mask, kTRUE);
gVirtualX->GrabKey(fId, gVirtualX->KeysymToKeycode(kKey_Left), kKeyMod1Mask, kTRUE);
ClearHistory();
SetEditDisabled(kEditDisable);
gVirtualX->SetDNDAware(fId, fDNDTypeList);
MapSubwindows();
SetDefaults();
Resize();
ShowMacroButtons(kFALSE);
Connect(fLt, "Checked(TObject*, Bool_t)", "TRootBrowserLite",
this, "Checked(TObject *,Bool_t)");
}
Bool_t TRootBrowserLite::HandleKey(Event_t *event)
{
if (event->fType == kGKeyPress) {
UInt_t keysym;
char input[10];
gVirtualX->LookupString(event, input, sizeof(input), keysym);
if (!event->fState && (EKeySym)keysym == kKey_F5) {
Refresh(kTRUE);
return kTRUE;
}
if (!event->fState && (EKeySym)keysym == kKey_Escape) {
if (gDNDManager->IsDragging()) gDNDManager->EndDrag();
}
if (event->fState & kKeyMod1Mask) {
switch ((EKeySym)keysym & ~0x20) {
case kKey_Right:
HistoryForward();
return kTRUE;
case kKey_Left:
HistoryBackward();
return kTRUE;
default:
break;
}
}
}
return TGMainFrame::HandleKey(event);
}
void TRootBrowserLite::Add(TObject *obj, const char *name, Int_t check)
{
if (!obj)
return;
if (obj->InheritsFrom("TObjectSpy"))
return;
if (!name) name = obj->GetName();
AddToBox(obj, name);
if (check > -1) {
TGFrameElement *el;
TIter next(fIconBox->fList);
if (!obj->IsFolder()) {
while ((el = (TGFrameElement *) next())) {
TGLVEntry *f = (TGLVEntry *) el->fFrame;
if (f->GetUserData() == obj) {
f->SetCheckedEntry(check);
}
}
}
}
if (name[0] == '.' && ((name[1] == '\0') || (name[1] == '.' && name[2] == '\0')))
return;
if (obj->IsFolder())
AddToTree(obj, name, check);
}
void TRootBrowserLite::AddCheckBox(TObject *obj, Bool_t check)
{
if (obj) {
TGListTreeItem *item = fLt->FindItemByObj(fLt->GetFirstItem(), obj);
while (item) {
fLt->SetCheckBox(item, kTRUE);
fLt->CheckItem(item, check);
item = fLt->FindItemByObj(item->GetNextSibling(), obj);
}
TGFrameElement *el;
TIter next(fIconBox->fList);
while ((el = (TGFrameElement *) next())) {
TGLVEntry *f = (TGLVEntry *) el->fFrame;
if (f->GetUserData() == obj) {
f->SetCheckedEntry(check);
}
}
}
}
void TRootBrowserLite::CheckObjectItem(TObject *obj, Bool_t check)
{
if (obj) {
TGListTreeItem *item = fLt->FindItemByObj(fLt->GetFirstItem(), obj);
while (item) {
fLt->CheckItem(item, check);
item = fLt->FindItemByObj(item->GetNextSibling(), obj);
TGFrameElement *el;
TIter next(fIconBox->fList);
if (!obj->IsFolder()) {
while ((el = (TGFrameElement *) next())) {
TGLVEntry *f = (TGLVEntry *) el->fFrame;
if (f->GetUserData() == obj) {
f->SetCheckedEntry(check);
}
}
}
}
}
}
void TRootBrowserLite::RemoveCheckBox(TObject *obj)
{
if (obj) {
TGListTreeItem *item = fLt->FindItemByObj(fLt->GetFirstItem(), obj);
while (item) {
fLt->SetCheckBox(item, kFALSE);
item = fLt->FindItemByObj(item->GetNextSibling(), obj);
TGFrameElement *el;
TIter next(fIconBox->fList);
if (!obj->IsFolder()) {
while ((el = (TGFrameElement *) next())) {
TGLVEntry *f = (TGLVEntry *) el->fFrame;
if (f->GetUserData() == obj) {
f->SetCheckedEntry(kFALSE);
}
}
}
}
}
}
void TRootBrowserLite::AddToBox(TObject *obj, const char *name)
{
if (obj) {
if (!name) name = obj->GetName() ? obj->GetName() : "NoName";
TClass *objClass = 0;
if (obj->IsA() == TKey::Class())
objClass = TClass::GetClass(((TKey *)obj)->GetClassName());
else if (obj->IsA() == TKeyMapFile::Class())
objClass = TClass::GetClass(((TKeyMapFile *)obj)->GetTitle());
else if (obj->InheritsFrom("TRemoteObject")) {
TRemoteObject *robj = (TRemoteObject *)obj;
if (!strcmp(robj->GetClassName(), "TKey"))
objClass = TClass::GetClass(robj->GetKeyClassName());
else
objClass = TClass::GetClass(robj->GetClassName());
}
else
objClass = obj->IsA();
fIconBox->AddObjItem(name, obj, objClass);
}
}
void TRootBrowserLite::AddToTree(TObject *obj, const char *name, Int_t check)
{
if (obj->InheritsFrom("TApplication"))
fListLevel = 0;
if (obj && !fTreeLock) {
if (!name) name = obj->GetName();
if (name[0] == '.' && name[1] == '.')
Info("AddToTree", "up one level %s", name);
if(check > -1) {
TGListTreeItem *item = fLt->AddItem(fListLevel, name, obj, 0, 0, kTRUE);
fLt->CheckItem(item, (Bool_t)check);
TString tip(obj->ClassName());
if (obj->GetTitle()) {
tip += " ";
tip += obj->GetTitle();
}
fLt->SetToolTipItem(item, tip.Data());
} else {
Bool_t isRemote = kFALSE;
if (obj->InheritsFrom("TRemoteObject"))
isRemote = kTRUE;
else if (fListLevel) {
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 ((!fLt->FindChildByName(fListLevel, name)) &&
(!fLt->FindChildByData(fListLevel, obj))) {
fLt->AddItem(fListLevel, name, obj);
}
}
}
}
void TRootBrowserLite::BrowseObj(TObject *obj)
{
TGPosition pos = fIconBox->GetPagePosition();
Emit("BrowseObj(TObject*)", (Long_t)obj);
if (obj->IsFolder()) fIconBox->RemoveAll();
obj->Browse(fBrowser);
if ((fListLevel && obj->IsFolder()) || (!fListLevel && (obj == gROOT))) {
fIconBox->Refresh();
}
if (fBrowser) {
fBrowser->SetRefreshFlag(kFALSE);
}
UpdateDrawOption();
fIconBox->SetHsbPosition(pos.fX);
fIconBox->SetVsbPosition(pos.fY);
}
void TRootBrowserLite::UpdateDrawOption()
{
TString opt = GetDrawOption();
TGListBox *lb = fDrawOption->GetListBox();
TGLBContainer *lbc = (TGLBContainer *)lb->GetContainer();
TIter next(lbc->GetList());
TGFrameElement *el;
while ((el = (TGFrameElement *)next())) {
TGTextLBEntry *lbe = (TGTextLBEntry *)el->fFrame;
if (lbe->GetText()->GetString() == opt) {
return;
}
}
Int_t nn = fDrawOption->GetNumberOfEntries() + 1;
fDrawOption->AddEntry(opt.Data(), nn);
fDrawOption->Select(nn);
}
TGFileContainer *TRootBrowserLite::GetIconBox() const
{
return (TGFileContainer*)fIconBox;
}
void TRootBrowserLite::ReallyDelete()
{
gInterpreter->DeleteGlobal(fBrowser);
delete fBrowser;
}
void TRootBrowserLite::CloseWindow()
{
DeleteWindow();
}
void TRootBrowserLite::DisplayTotal(Int_t total, Int_t selected)
{
char tmp[64];
const char *fmt;
if (selected)
fmt = "%d Object%s, %d selected.";
else
fmt = "%d Object%s.";
sprintf(tmp, fmt, total, (total == 1) ? "" : "s", selected);
fStatusBar->SetText(tmp, 0);
}
void TRootBrowserLite::DisplayDirectory()
{
char *p, path[1024];
fLt->GetPathnameFromItem(fListLevel, path, 12);
p = path;
while (*p && *(p+1) == '/') ++p;
if (strlen(p) == 0)
fLbl2->SetText(new TGString("Contents of \".\""));
else
fLbl2->SetText(new TGString(Form("Contents of \"%s\"", p)));
fListHdr->Layout();
fLt->GetPathnameFromItem(fListLevel, path);
p = path;
while (*p && *(p+1) == '/') ++p;
fFSComboBox->Update(p);
if (fListLevel) {
TGButton *btn = fToolBar->GetButton(kOneLevelUp);
const char *dirname = gSystem->DirName(p);
Bool_t disableUp;
TObject *obj = (TObject*)fListLevel->GetUserData();
disableUp = (strlen(dirname) == 1) && (*dirname == '/');
if (disableUp && (obj->IsA() == TSystemDirectory::Class())) {
disableUp = strlen(p) == 1;
}
btn->SetState(disableUp ? kButtonDisabled : kButtonUp);
AddToHistory(fListLevel);
}
}
void TRootBrowserLite::ExecuteDefaultAction(TObject *obj)
{
TRootBrowserCursorSwitcher cursorSwitcher(fIconBox, fLt);
char action[512];
fBrowser->SetDrawOption(GetDrawOption());
TVirtualPad *wasp = gPad ? (TVirtualPad*)gPad->GetCanvas() : 0;
TFile *wasf = gFile;
if (obj->IsA() == TSystemFile::Class() ||
obj->InheritsFrom("TRemoteObject")) {
TString act;
TString ext = obj->GetName();
if (fClient->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());
} else {
if (obj->InheritsFrom("TRemoteObject"))
gApplication->SetBit(TApplication::kProcessRemotely);
gApplication->ProcessLine(act.Data());
}
Emit("ExecuteDefaultAction(TObject*)", (Long_t)obj);
}
if (obj->InheritsFrom("TRemoteObject") && ext.EndsWith(".root")) {
TRootBrowserCursorSwitcher cursorSwitcher2(fIconBox, fLt);
gApplication->SetBit(TApplication::kProcessRemotely);
gApplication->ProcessLine("((TApplicationServer *)gApplication)->BrowseFile(0);");
Refresh();
}
if (gFile && (wasf != gFile) && ext.EndsWith(".root")) {
TGListTreeItem *itm = fLt->FindChildByData(0, gROOT->GetListOfFiles());
if (itm) {
fLt->ClearHighlighted();
fListLevel = itm;
ListTreeHighlight(fListLevel);
fLt->OpenItem(fListLevel);
itm = fLt->AddItem(fListLevel, gFile->GetName());
itm->SetUserData(gFile);
fClient->NeedRedraw(fLt, kTRUE);
return;
}
}
if (!obj->InheritsFrom("TRemoteObject"))
BrowseTextFile(obj->GetName());
TVirtualPad *nowp = gPad ? (TVirtualPad*)gPad->GetCanvas() : 0;
if (fIconBox->fAutoThumbnail && nowp && (nowp != wasp)) {
TSystemFile *sf = (TSystemFile*)obj;
const TGPicture *pic, *spic;
TIconBoxThumb *thumb = 0;
TString path = gSystem->IsAbsoluteFileName(sf->GetName()) ? sf->GetName() :
gSystem->ConcatFileName(gSystem->WorkingDirectory(), sf->GetName());
thumb = (TIconBoxThumb*)fIconBox->fThumbnails->FindObject(path);
if (thumb) {
spic = thumb->fSmall;
pic = thumb->fLarge;
} else {
TImage *img = TImage::Create();
nowp->Modified();
nowp->Update();
img->FromPad(nowp);
if (!img->IsValid()) {
return;
}
static const UInt_t sz = 72;
UInt_t w = sz;
UInt_t h = sz;
if (img->GetWidth() > img->GetHeight()) {
h = (img->GetHeight()*sz)/img->GetWidth();
} else {
w = (img->GetWidth()*sz)/img->GetHeight();
}
w = w < 54 ? 54 : w;
h = h < 54 ? 54 : h;
img->Scale(w, h);
img->Merge(img, "tint");
img->DrawBox(0, 0, w, h, "#ffff00", 1);
pic = fClient->GetPicturePool()->GetPicture(path.Data(), img->GetPixmap(), 0);
img->Scale(w/3, h/3);
spic = fClient->GetPicturePool()->GetPicture(path.Data(), img->GetPixmap(), 0);
thumb = new TIconBoxThumb(path.Data(), spic, pic);
fIconBox->fThumbnails->Add(thumb);
delete img;
}
}
return;
}
}
Bool_t TRootBrowserLite::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
{
TRootHelpDialog *hd;
TRootBrowserCursorSwitcher *cursorSwitcher = 0;
if (GET_SUBMSG(msg) != kCT_SELCHANGED) {
cursorSwitcher = new TRootBrowserCursorSwitcher(fIconBox, fLt);
}
TObject *obj;
TGListTreeItem *item = 0;
gVirtualX->Update();
switch (GET_MSG(msg)) {
case kC_COMMAND:
switch (GET_SUBMSG(msg)) {
case kCM_BUTTON:
case kCM_MENU:
switch (parm1) {
case kFileNewBrowser:
new TBrowser("Browser", "ROOT Object Browser");
break;
case kFileNewCanvas:
gROOT->MakeDefCanvas();
break;
case kFileNewBuilder:
TGuiBuilder::Instance();
break;
case kFileOpen:
{
static TString dir(".");
TGFileInfo fi;
fi.fFileTypes = gOpenTypes;
fi.fIniDir = StrDup(dir);
new TGFileDialog(fClient->GetDefaultRoot(), this,
kFDOpen,&fi);
dir = fi.fIniDir;
if (fi.fMultipleSelection && fi.fFileNamesList) {
TObjString *el;
TIter next(fi.fFileNamesList);
while ((el = (TObjString *) next())) {
new TFile(el->GetString(), "update");
}
}
else if (fi.fFilename) {
new TFile(fi.fFilename, "update");
}
}
break;
case kFileSave:
case kFileSaveAs:
break;
case kFilePrint:
break;
case kFileCloseBrowser:
SendCloseMessage();
break;
case kFileQuit:
gApplication->Terminate(0);
break;
case kViewToolBar:
if (fViewMenu->IsEntryChecked(kViewToolBar))
ShowToolBar(kFALSE);
else
ShowToolBar();
break;
case kViewStatusBar:
if (fViewMenu->IsEntryChecked(kViewStatusBar))
ShowStatusBar(kFALSE);
else
ShowStatusBar();
break;
case kViewLargeIcons:
case kViewSmallIcons:
case kViewList:
case kViewDetails:
SetViewMode((Int_t)parm1);
break;
case kViewHidden:
if (fBrowser->TestBit(TBrowser::kNoHidden)) {
fViewMenu->CheckEntry(kViewHidden);
fBrowser->SetBit(TBrowser::kNoHidden, kFALSE);
} else {
fViewMenu->UnCheckEntry(kViewHidden);
fBrowser->SetBit(TBrowser::kNoHidden, kTRUE);
}
Refresh(kTRUE);
break;
case kViewArrangeByName:
case kViewArrangeByType:
case kViewArrangeBySize:
case kViewArrangeByDate:
SetSortMode((Int_t)parm1);
break;
case kViewLineUp:
break;
case kViewRefresh:
Refresh(kTRUE);
break;
case kViewGroupLV:
if (!fViewMenu->IsEntryChecked(kViewGroupLV)) {
fViewMenu->CheckEntry(kViewGroupLV);
TString gv = gEnv->GetValue("Browser.GroupView", "10000");
Int_t igv = atoi(gv.Data());
if (igv > 10) {
fIconBox->SetGroupSize(igv);
}
} else {
fViewMenu->UnCheckEntry(kViewGroupLV);
fIconBox->SetGroupSize(10000000);
}
break;
case kOptionShowCycles:
printf("Currently the browser always shows all cycles\n");
break;
case kOptionAutoThumbnail:
if (fOptionMenu->IsEntryChecked(kOptionAutoThumbnail)) {
fOptionMenu->UnCheckEntry(kOptionAutoThumbnail);
fIconBox->fThumbnails->Delete();
fIconBox->fAutoThumbnail = kFALSE;
Refresh(kTRUE);
} else {
fOptionMenu->CheckEntry(kOptionAutoThumbnail);
fIconBox->fAutoThumbnail = kTRUE;
}
break;
case kOneLevelUp:
{
if (fBrowseTextFile) {
HideTextEdit();
break;
}
if (!fListLevel || !fListLevel->IsActive()) break;
if (fListLevel && fIconBox->WasGrouped()) {
if (fListLevel) {
item = fListLevel->GetParent();
if (item) fListLevel = item;
obj = (TObject *) fListLevel->GetUserData();
HighlightListLevel();
if (obj) BrowseObj(obj);
}
fClient->NeedRedraw(fLt, kTRUE);
break;
}
if (fListLevel) item = fListLevel->GetParent();
if (item) {
fListLevel = item;
obj = (TObject *)fListLevel->GetUserData();
HighlightListLevel();
DisplayDirectory();
if (obj) BrowseObj(obj);
fClient->NeedRedraw(fLt, kTRUE);
} else {
obj = (TObject *)fListLevel->GetUserData();
if (obj) ToSystemDirectory(gSystem->DirName(obj->GetTitle()));
}
break;
}
case kHistoryBack:
HistoryBackward();
break;
case kHistoryForw:
HistoryForward();
break;
case kViewFind:
Search();
break;
case kHelpAbout:
{
#ifdef R__UNIX
TString rootx;
# ifdef ROOTBINDIR
rootx = ROOTBINDIR;
# else
rootx = gSystem->Getenv("ROOTSYS");
if (!rootx.IsNull()) rootx += "/bin";
# endif
rootx += "/root -a &";
gSystem->Exec(rootx);
#else
#ifdef WIN32
new TWin32SplashThread(kTRUE);
#else
char str[32];
sprintf(str, "About ROOT %s...", gROOT->GetVersion());
hd = new TRootHelpDialog(this, str, 600, 400);
hd->SetText(gHelpAbout);
hd->Popup();
#endif
#endif
}
break;
case kHelpOnCanvas:
hd = new TRootHelpDialog(this, "Help on Canvas...", 600, 400);
hd->SetText(gHelpCanvas);
hd->Popup();
break;
case kHelpOnMenus:
hd = new TRootHelpDialog(this, "Help on Menus...", 600, 400);
hd->SetText(gHelpPullDownMenus);
hd->Popup();
break;
case kHelpOnGraphicsEd:
hd = new TRootHelpDialog(this, "Help on Graphics Editor...", 600, 400);
hd->SetText(gHelpGraphicsEditor);
hd->Popup();
break;
case kHelpOnBrowser:
hd = new TRootHelpDialog(this, "Help on Browser...", 600, 400);
hd->SetText(gHelpBrowserLite);
hd->Popup();
break;
case kHelpOnObjects:
hd = new TRootHelpDialog(this, "Help on Objects...", 600, 400);
hd->SetText(gHelpObjects);
hd->Popup();
break;
case kHelpOnPS:
hd = new TRootHelpDialog(this, "Help on PostScript...", 600, 400);
hd->SetText(gHelpPostscript);
hd->Popup();
break;
case kHelpOnRemote:
hd = new TRootHelpDialog(this, "Help on Browser...", 600, 400);
hd->SetText(gHelpRemote);
hd->Popup();
break;
}
case kCM_COMBOBOX:
if (parm1 == kFSComboBox) {
TGTreeLBEntry *e = (TGTreeLBEntry *) fFSComboBox->GetSelectedEntry();
if (e) {
const char *dirname = e->GetPath()->GetString();
item = fLt->FindItemByPathname(dirname);
if (item) {
fListLevel = item;
HighlightListLevel();
DisplayDirectory();
fClient->NeedRedraw(fLt, kTRUE);
} else {
ToSystemDirectory(dirname);
}
}
}
break;
default:
break;
}
break;
case kC_LISTTREE:
switch (GET_SUBMSG(msg)) {
case kCT_ITEMCLICK:
if (parm1 == kButton1 || parm1 == kButton3) {
HideTextEdit();
TGListTreeItem *item2;
TObject *obj2 = 0;
if ((item2 = fLt->GetSelected()) != 0 ) {
ListTreeHighlight(item2);
fStatusBar->SetText("", 1);
}
if (item2 && parm1 == kButton3) {
Int_t x = (Int_t)(parm2 & 0xffff);
Int_t y = (Int_t)((parm2 >> 16) & 0xffff);
obj2 = (TObject *) item2->GetUserData();
if (obj2) fBrowser->GetContextMenu()->Popup(x, y, obj2, fBrowser);
}
fClient->NeedRedraw(fLt);
fListView->LayoutHeader(0);
fListView->Layout();
}
break;
case kCT_ITEMDBLCLICK:
if (parm1 == kButton1) {
if (fBrowseTextFile) {
HideTextEdit();
}
if (fListLevel && fIconBox->WasGrouped()) {
TObject *obj2;
TGListTreeItem *item2;
if (fListLevel) {
item2 = fListLevel->GetParent();
if (item2) fListLevel = item2;
obj2 = (TObject *) fListLevel->GetUserData();
HighlightListLevel();
if (obj2) {
BrowseObj(obj2);
}
}
break;
}
}
default:
break;
}
break;
case kC_CONTAINER:
switch (GET_SUBMSG(msg)) {
case kCT_ITEMCLICK:
if (fIconBox->NumSelected() == 1) {
TGFileItem *item2;
void *p = 0;
if ((item2 = (TGFileItem *)fIconBox->GetNextSelected(&p)) != 0) {
TObject *obj2 = (TObject *)item2->GetUserData();
TGListTreeItem *itm = 0;
if (!fListLevel) itm = fLt->GetFirstItem();
else itm = fListLevel->GetFirstChild();
while (itm) {
if (itm->GetUserData() == obj2) break;
itm = itm->GetNextSibling();
}
if (itm) {
if ((fListLevel && fListLevel->IsOpen()) || !fListLevel) {
fLt->ClearHighlighted();
fLt->HighlightItem(itm);
fClient->NeedRedraw(fLt, kTRUE);
}
}
if (obj2) fStatusBar->SetText(obj2->GetName(), 1);
}
}
if (parm1 == kButton3) {
if (fIconBox->NumSelected() == 1) {
void *p = 0;
TGFileItem *item2;
if ((item2 = (TGFileItem *) fIconBox->GetNextSelected(&p)) != 0) {
Int_t x = (Int_t)(parm2 & 0xffff);
Int_t y = (Int_t)((parm2 >> 16) & 0xffff);
TObject *obj2 = (TObject *)item2->GetUserData();
if (obj2) {
if (obj2->IsA() == TKey::Class()) {
TKey *key = (TKey*)obj2;
TClass *cl = TClass::GetClass(key->GetClassName());
void *add = gROOT->FindObject((char *) key->GetName());
if (cl->IsTObject()) {
obj2 = (TObject*)add;
} else {
Error("ProcessMessage","do not support non TObject (like %s) yet",
cl->GetName());
break;
}
}
if (obj2) fBrowser->GetContextMenu()->Popup(x, y, obj2, fBrowser);
}
}
}
}
break;
case kCT_ITEMDBLCLICK:
if (parm1 == kButton1) {
if (fIconBox->NumSelected() == 1) {
void *p = 0;
TGFileItem *item2;
if ((item2 = (TGFileItem *) fIconBox->GetNextSelected(&p)) != 0) {
TObject *obj2 = (TObject *)item2->GetUserData();
if (obj2) {
DoubleClicked(obj2);
IconBoxAction(obj2);
}
return kTRUE;
}
}
}
break;
case kCT_SELCHANGED:
DisplayTotal((Int_t)parm1, (Int_t)parm2);
break;
default:
break;
}
break;
default:
break;
}
delete cursorSwitcher;
fClient->NeedRedraw(fIconBox);
return kTRUE;
}
void TRootBrowserLite::Chdir(TGListTreeItem *item)
{
if (item) {
TGListTreeItem *i = item;
TString dir;
while (i) {
TObject *obj = (TObject*) i->GetUserData();
if (obj) {
if (obj->IsA() == TDirectoryFile::Class()) {
dir = "/" + dir;
dir = obj->GetName() + dir;
}
if (obj->IsA() == TFile::Class()) {
dir = ":/" + dir;
dir = obj->GetName() + dir;
}
if (obj->IsA() == TKey::Class()) {
if (strcmp(((TKey*)obj)->GetClassName(), "TDirectoryFile") == 0) {
dir = "/" + dir;
dir = obj->GetName() + dir;
}
}
}
i = i->GetParent();
}
if (gDirectory && dir.Length()) gDirectory->cd(dir.Data());
}
}
void TRootBrowserLite::HighlightListLevel()
{
if (!fListLevel) return;
fLt->ClearHighlighted();
fLt->HighlightItem(fListLevel);
}
void TRootBrowserLite::AddToHistory(TGListTreeItem *item)
{
TGButton *btn = fToolBar->GetButton(kHistoryBack);
if (!item || (fHistoryCursor &&
(item == ((TRootBrowserHistoryCursor*)fHistoryCursor)->fItem))) return;
TRootBrowserHistoryCursor *cur = (TRootBrowserHistoryCursor*)fHistoryCursor;
while ((cur = (TRootBrowserHistoryCursor*)fHistory->After(fHistoryCursor))) {
fHistory->Remove(cur);
delete cur;
}
cur = new TRootBrowserHistoryCursor(item);
fHistory->Add(cur);
fHistoryCursor = cur;
btn->SetState(kButtonUp);
}
void TRootBrowserLite::ClearHistory()
{
fHistory->Delete();
TGButton *btn = fToolBar->GetButton(kHistoryBack);
TGButton *btn2 = fToolBar->GetButton(kHistoryForw);
btn->SetState(kButtonDisabled);
btn2->SetState(kButtonDisabled);
}
Bool_t TRootBrowserLite::HistoryBackward()
{
if (fBrowseTextFile) {
HideTextEdit();
return kFALSE;
}
TRootBrowserHistoryCursor *cur = (TRootBrowserHistoryCursor*)fHistory->Before(fHistoryCursor);
TGButton *btn = fToolBar->GetButton(kHistoryBack);
TGButton *btn2 = fToolBar->GetButton(kHistoryForw);
if (!cur) {
btn->SetState(kButtonDisabled);
return kFALSE;
}
fLt->ClearHighlighted();
fHistoryCursor = cur;
fListLevel = cur->fItem;
ListTreeHighlight(fListLevel);
fLt->AdjustPosition();
fClient->NeedRedraw(fLt, kTRUE);
btn2->SetState(kButtonUp);
cur = (TRootBrowserHistoryCursor*)fHistory->Before(fHistoryCursor);
if (!cur) {
btn->SetState(kButtonDisabled);
return kFALSE;
}
return kTRUE;
}
Bool_t TRootBrowserLite::HistoryForward()
{
if (fBrowseTextFile) {
HideTextEdit();
return kFALSE;
}
TRootBrowserHistoryCursor *cur = (TRootBrowserHistoryCursor*)fHistory->After(fHistoryCursor);
TGButton *btn = fToolBar->GetButton(kHistoryForw);
TGButton *btn2 = fToolBar->GetButton(kHistoryBack);
if (!cur) {
btn->SetState(kButtonDisabled);
return kFALSE;
}
fLt->ClearHighlighted();
fHistoryCursor = cur;
fListLevel = cur->fItem;
ListTreeHighlight(fListLevel);
fLt->AdjustPosition();
fClient->NeedRedraw(fLt, kTRUE);
btn2->SetState(kButtonUp);
cur = (TRootBrowserHistoryCursor*)fHistory->After(fHistoryCursor);
if (!cur) {
btn->SetState(kButtonDisabled);
return kFALSE;
}
return kTRUE;
}
void TRootBrowserLite::DeleteListTreeItem(TGListTreeItem *item)
{
((TRootBrowserHistory*)fHistory)->DeleteItem(item);
fLt->DeleteItem(item);
}
void TRootBrowserLite::ListTreeHighlight(TGListTreeItem *item)
{
if (item) {
TObject *obj = (TObject *) item->GetUserData();
if (obj) {
if (obj->IsA() == TKey::Class()) {
TKey *key = (TKey *)obj;
TString name = obj->GetName();
name += ";";
name += key->GetCycle();
Chdir(item->GetParent());
TObject *k_obj = gROOT->FindObject(name);
if (k_obj) {
item->SetUserData(k_obj);
obj = k_obj;
}
} else if (obj->InheritsFrom(TDirectoryFile::Class())) {
Chdir(item->GetParent());
}
else if (obj->InheritsFrom("TApplicationRemote")) {
if (!gApplication->GetAppRemote()) {
gROOT->ProcessLine(Form(".R %s", item->GetText()));
if (gApplication->GetAppRemote()) {
Getlinem(kInit, TString::Format("\n%s:root [0]",
gApplication->GetAppRemote()->ApplicationName()));
}
}
}
else if (obj->InheritsFrom("TRemoteObject")) {
TRemoteObject *robj = (TRemoteObject *)obj;
if (!strcmp(robj->GetClassName(), "TKey")) {
TGListTreeItem *parent = item;
TRemoteObject *probj = (TRemoteObject *)parent->GetUserData();
while ( probj && strcmp(probj->GetClassName(), "TFile")) {
parent = parent->GetParent();
probj = (TRemoteObject *)parent->GetUserData();
}
if (probj) {
gApplication->SetBit(TApplication::kProcessRemotely);
gApplication->ProcessLine(
TString::Format("((TApplicationServer *)gApplication)->BrowseFile(\"%s\");",
probj->GetName()));
}
}
}
if (item->GetParent() && item->GetParent()->GetUserData() &&
((TObject *)item->GetParent()->GetUserData())->InheritsFrom("TApplicationRemote")) {
if (!gApplication->GetAppRemote()) {
gROOT->ProcessLine(Form(".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")) {
gApplication->SetBit(TApplication::kProcessRemotely);
gApplication->ProcessLine("((TApplicationServer *)gApplication)->BrowseFile(0);");
}
}
else {
TGListTreeItem *top = item;
while (top->GetParent()) {
top = top->GetParent();
}
TObject *topobj = (TObject *) top->GetUserData();
if (topobj->InheritsFrom("TApplicationRemote")) {
if (!gApplication->GetAppRemote()) {
gROOT->ProcessLine(Form(".R %s", top->GetText()));
if (gApplication->GetAppRemote()) {
Getlinem(kInit, TString::Format("\n%s:root [0]",
gApplication->GetAppRemote()->ApplicationName()));
}
}
}
else if (gApplication->GetAppRemote()) {
gApplication->ProcessLine(".R");
Getlinem(kInit, "\nroot [0]");
}
}
if (!fListLevel || !fListLevel->IsActive()) {
fListLevel = item;
BrowseObj(obj);
fLt->HighlightItem(fListLevel);
}
}
DisplayDirectory();
}
}
void TRootBrowserLite::ToSystemDirectory(const char *dirname)
{
TString dir = dirname;
if (fListLevel) {
TObject* obj = (TObject*)fListLevel->GetUserData();
if (obj && (obj->IsA() == TSystemDirectory::Class())) {
TObject* old = obj;
fListLevel->Rename(dir.Data());
obj = new TSystemDirectory(dir.Data(), dir.Data());
while (fListLevel->GetFirstChild())
fLt->RecursiveDeleteItem(fListLevel->GetFirstChild(),
fListLevel->GetFirstChild()->GetUserData());
fListLevel->SetUserData(obj);
gROOT->GetListOfBrowsables()->Remove(old);
delete old;
gROOT->GetListOfBrowsables()->Add(obj);
fTreeLock = kTRUE;
BrowseObj(obj);
fTreeLock = kFALSE;
fClient->NeedRedraw(fLt, kTRUE);
fClient->NeedRedraw(fIconBox);
DisplayDirectory();
fStatusBar->SetText(dir.Data(), 1);
ClearHistory();
}
}
return;
}
void TRootBrowserLite::SetDrawOption(Option_t *option)
{
fDrawOption->GetTextEntry()->SetText(option);
}
Option_t *TRootBrowserLite::GetDrawOption() const
{
return fDrawOption->GetTextEntry()->GetText();
}
void TRootBrowserLite::DoubleClicked(TObject *obj)
{
Emit("DoubleClicked(TObject*)", (Long_t)obj);
}
void TRootBrowserLite::Checked(TObject *obj, Bool_t checked)
{
Long_t args[2];
args[0] = (Long_t)obj;
args[1] = checked;
Emit("Checked(TObject*,Bool_t)", args);
}
void TRootBrowserLite::IconBoxAction(TObject *obj)
{
Bool_t browsable = kFALSE;
const char *dirname = 0;
if (obj) {
TRootBrowserCursorSwitcher cursorSwitcher(fIconBox, fLt);
Bool_t useLock = kTRUE;
if (obj->IsA()->GetMethodWithPrototype("Browse", "TBrowser*"))
browsable = kTRUE;
if (obj->InheritsFrom("TLeaf")) {
TObject *dir = (TObject *)gROOT->ProcessLine(Form("((%s *)0x%lx)->GetBranch()->GetDirectory();",
obj->ClassName(), obj));
if (!dir) {
browsable = kFALSE;
}
}
if (obj->InheritsFrom("TBranchElement")) {
TObject *dir = (TObject *)gROOT->ProcessLine(Form("((%s *)0x%lx)->GetDirectory();",
obj->ClassName(), obj));
if (!dir) {
browsable = kFALSE;
}
}
if (obj->InheritsFrom("TKey")) {
TKey *key = dynamic_cast<TKey*>(obj);
if (key->GetClassName() && (!strcmp(key->GetClassName(), "TFormula")))
browsable = kFALSE;
}
if (obj->IsA() == TSystemDirectory::Class()) {
useLock = kFALSE;
TString t(obj->GetName());
if (t == ".") goto out;
if (t == "..") {
if (fListLevel && fListLevel->GetParent()) {
fListLevel = fListLevel->GetParent();
obj = (TObject*)fListLevel->GetUserData();
if (fListLevel->GetParent()) {
fListLevel = fListLevel->GetParent();
} else {
obj = (TObject*)fListLevel->GetUserData();
fListLevel = 0;
}
} else {
dirname = gSystem->DirName(gSystem->pwd());
ToSystemDirectory(dirname);
return;
}
}
}
if (obj->IsFolder()) {
fIconBox->RemoveAll();
TGListTreeItem *itm = 0;
if (fListLevel) {
fLt->OpenItem(fListLevel);
itm = fListLevel->GetFirstChild();
} else {
itm = fLt->GetFirstItem();
}
while (itm && (itm->GetUserData() != obj)) {
itm = itm->GetNextSibling();
}
if (!itm && fListLevel) {
Bool_t isRemote = kFALSE;
if (obj->InheritsFrom("TRemoteObject"))
isRemote = kTRUE;
else if (fListLevel) {
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) {
if ((!fLt->FindChildByName(fListLevel, obj->GetName())) &&
(!fLt->FindChildByData(fListLevel, obj))) {
itm = fLt->AddItem(fListLevel, obj->GetName());
if (itm) itm->SetUserData(obj);
}
else {
itm = fLt->FindChildByData(fListLevel, obj) ?
fLt->FindChildByData(fListLevel, obj) :
fLt->FindChildByName(fListLevel, obj->GetName());
}
}
else {
itm = fLt->AddItem(fListLevel, obj->GetName());
if (itm) itm->SetUserData(obj);
}
}
if (itm) {
fListLevel = itm;
DisplayDirectory();
TObject *kobj = (TObject *)itm->GetUserData();
if (kobj->IsA() == TKey::Class()) {
Chdir(fListLevel->GetParent());
kobj = gROOT->FindObject(kobj->GetName());
if (kobj) {
TGListTreeItem *parent = fListLevel->GetParent();
DeleteListTreeItem(fListLevel);
TGListTreeItem *kitem = fLt->AddItem(parent, kobj->GetName(), kobj);
if (kitem) {
obj = kobj;
useLock = kFALSE;
kitem->SetUserData(kobj);
fListLevel = kitem;
} else
fListLevel = parent;
}
}
HighlightListLevel();
}
}
if (browsable) {
if (useLock) fTreeLock = kTRUE;
Emit("BrowseObj(TObject*)", (Long_t)obj);
obj->Browse(fBrowser);
if (useLock) fTreeLock = kFALSE;
}
out:
if (obj->IsA() != TSystemFile::Class()) {
if (obj && obj->IsFolder()) {
fIconBox->Refresh();
}
if (fBrowser) {
fBrowser->SetRefreshFlag(kFALSE);
}
fClient->NeedRedraw(fIconBox);
fClient->NeedRedraw(fLt, kTRUE);
}
}
}
void TRootBrowserLite::RecursiveRemove(TObject *obj)
{
TGListTreeItem *item = fLt->FindItemByObj(fLt->GetFirstItem(), obj);
if (item == 0)
return;
if (fListLevel && (item == fListLevel)) {
TGListTreeItem *parent = item->GetParent();
if (parent) {
fListLevel = parent;
fLt->ClearHighlighted();
fLt->HighlightItem(fListLevel);
fLt->OpenItem(fListLevel);
}
else
fListLevel = 0;
}
DeleteListTreeItem(item);
}
void TRootBrowserLite::Refresh(Bool_t force)
{
Bool_t refresh = fBrowser && fBrowser->GetRefreshFlag();
if (fTextEdit && !gROOT->IsExecutingMacro() && force) {
fTextEdit->LoadFile(fTextFileName.Data());
fClient->NeedRedraw(fTextEdit);
return;
}
if ( (refresh || force) && !fIconBox->WasGrouped()
&& fIconBox->NumItems()<fIconBox->GetGroupSize() ) {
TRootBrowserCursorSwitcher cursorSwitcher(fIconBox, fLt);
static UInt_t prev = 0;
UInt_t curr = gROOT->GetListOfBrowsables()->GetSize();
if (!prev) prev = curr;
if (prev != curr) {
TGListTreeItem *sav = fListLevel;
fListLevel = 0;
BrowseObj(gROOT);
fListLevel = sav;
prev = curr;
}
if (fListLevel) {
TObject *obj = (TObject *)fListLevel->GetUserData();
if (obj) {
fTreeLock = kTRUE;
BrowseObj(obj);
fTreeLock = kFALSE;
}
}
}
fClient->NeedRedraw(fLt, kTRUE);
}
void TRootBrowserLite::ShowToolBar(Bool_t show)
{
if (show) {
ShowFrame(fToolBar);
ShowFrame(fToolBarSep);
fViewMenu->CheckEntry(kViewToolBar);
} else {
HideFrame(fToolBar);
HideFrame(fToolBarSep);
fViewMenu->UnCheckEntry(kViewToolBar);
}
}
void TRootBrowserLite::ShowStatusBar(Bool_t show)
{
if (show) {
ShowFrame(fStatusBar);
fViewMenu->CheckEntry(kViewStatusBar);
} else {
HideFrame(fStatusBar);
fViewMenu->UnCheckEntry(kViewStatusBar);
}
}
void TRootBrowserLite::SetDefaults(const char *iconStyle, const char *sortBy)
{
const char *opt;
if (iconStyle)
opt = iconStyle;
else
opt = gEnv->GetValue("Browser.IconStyle", "small");
if (!strcasecmp(opt, "big"))
SetViewMode(kViewLargeIcons, kTRUE);
else if (!strcasecmp(opt, "small"))
SetViewMode(kViewSmallIcons, kTRUE);
else if (!strcasecmp(opt, "list"))
SetViewMode(kViewList, kTRUE);
else if (!strcasecmp(opt, "details"))
SetViewMode(kViewDetails, kTRUE);
else
SetViewMode(kViewSmallIcons, kTRUE);
if (sortBy)
opt = sortBy;
else
opt = gEnv->GetValue("Browser.SortBy", "name");
if (!strcasecmp(opt, "name"))
SetSortMode(kViewArrangeByName);
else if (!strcasecmp(opt, "type"))
SetSortMode(kViewArrangeByType);
else if (!strcasecmp(opt, "size"))
SetSortMode(kViewArrangeBySize);
else if (!strcasecmp(opt, "date"))
SetSortMode(kViewArrangeByDate);
else
SetSortMode(kViewArrangeByName);
fIconBox->Refresh();
}
void TRootBrowserLite::SetViewMode(Int_t new_mode, Bool_t force)
{
int i, bnum;
EListViewMode lv;
if (force || (fViewMode != new_mode)) {
switch (new_mode) {
default:
if (!force)
return;
else
new_mode = kViewLargeIcons;
case kViewLargeIcons:
bnum = 2;
lv = kLVLargeIcons;
break;
case kViewSmallIcons:
bnum = 3;
lv = kLVSmallIcons;
break;
case kViewList:
bnum = 4;
lv = kLVList;
break;
case kViewDetails:
bnum = 5;
lv = kLVDetails;
break;
}
fViewMode = new_mode;
fViewMenu->RCheckEntry(fViewMode, kViewLargeIcons, kViewDetails);
for (i = 2; i <= 5; ++i)
gToolBarData[i].fButton->SetState((i == bnum) ? kButtonEngaged : kButtonUp);
fListView->SetViewMode(lv);
TGTextButton** buttons = fListView->GetHeaderButtons();
if ((lv == kLVDetails) && (buttons)) {
if (!strcmp(fListView->GetHeader(1), "Attributes")) {
buttons[0]->Connect("Clicked()", "TRootBrowserLite", this,
TString::Format("SetSortMode(=%d)", kViewArrangeByName));
buttons[1]->Connect("Clicked()", "TRootBrowserLite", this,
TString::Format("SetSortMode(=%d)", kViewArrangeByType));
buttons[2]->Connect("Clicked()", "TRootBrowserLite", this,
TString::Format("SetSortMode(=%d)", kViewArrangeBySize));
buttons[5]->Connect("Clicked()", "TRootBrowserLite", this,
TString::Format("SetSortMode(=%d)", kViewArrangeByDate));
}
}
fIconBox->AdjustPosition();
}
}
void TRootBrowserLite::SetSortMode(Int_t new_mode)
{
EFSSortMode smode;
switch (new_mode) {
default:
new_mode = kViewArrangeByName;
case kViewArrangeByName:
smode = kSortByName;
break;
case kViewArrangeByType:
smode = kSortByType;
break;
case kViewArrangeBySize:
smode = kSortBySize;
break;
case kViewArrangeByDate:
smode = kSortByDate;
break;
}
fSortMode = new_mode;
fSortMenu->RCheckEntry(fSortMode, kViewArrangeByName, kViewArrangeByDate);
fIconBox->Sort(smode);
}
void TRootBrowserLite::Search()
{
if (!fTextEdit) {
fIconBox->Search(kFALSE);
} else {
fTextEdit->Search(kFALSE);
}
}
static Bool_t isBinary(const char *str, int len)
{
for (int i = 0; i < len; i++) {
char c = str[i];
if (((c < 32) || (c > 126)) && (c != '\t') && (c != '\r') && (c != '\n')) {
return kTRUE;
}
}
return kFALSE;
}
void TRootBrowserLite::HideTextEdit()
{
if (!fTextEdit) return;
ShowMacroButtons(kFALSE);
fTextEdit->UnmapWindow();
fV2->RemoveFrame(fTextEdit);
fV2->AddFrame(fListView, fExpandLayout);
TGButton *savbtn = fToolBar->GetButton(kViewSave);
savbtn->Disconnect();
fTextEdit->DestroyWindow();
delete fTextEdit;
fTextEdit = 0;
fListView->Resize(fV2->GetWidth(), fV2->GetHeight());
fV2->MapSubwindows();
fV2->Layout();
fBrowseTextFile = kFALSE;
fTextFileName = "";
}
void TRootBrowserLite::BrowseTextFile(const char *file)
{
Bool_t loaded = (fTextEdit != 0);
if (gSystem->AccessPathName(file, kReadPermission)) {
if (loaded) {
HistoryBackward();
}
return;
}
const int bufferSize = 1024;
char buffer[bufferSize];
FILE *fd = fopen(file, "rb");
int sz = fread(buffer, 1, bufferSize, fd);
fclose(fd);
if (isBinary(buffer, sz)) {
if (loaded) {
HistoryBackward();
}
return;
}
if (!fTextEdit) {
fTextEdit = new TGTextEdit(fV2, fV2->GetWidth(), fV2->GetHeight(),
kSunkenFrame | kDoubleBorder);
TColor *col = gROOT->GetColor(19);
fTextEdit->SetBackgroundColor(col->GetPixel());
if (TGSearchDialog::SearchDialog()) {
TGSearchDialog::SearchDialog()->Connect("TextEntered(char *)", "TGTextEdit",
fTextEdit, "Search(char *,Bool_t,Bool_t)");
}
fV2->AddFrame(fTextEdit, fExpandLayout);
TGButton *savbtn = fToolBar->GetButton(kViewSave);
savbtn->Connect("Released()", "TGTextEdit", fTextEdit, "SaveFile(=0,kTRUE)");
}
fTextFileName = file;
fTextEdit->LoadFile(file);
if (loaded) return;
if (fTextFileName.EndsWith(".C")) {
ShowMacroButtons();
} else {
fTextEdit->SetReadOnly();
}
fListView->UnmapWindow();
fV2->RemoveFrame(fListView);
fTextEdit->MapWindow();
fV2->MapSubwindows();
fV2->Layout();
fBrowseTextFile = kTRUE;
if (fListLevel) {
AddToHistory(fListLevel);
}
TGButton *btn = fToolBar->GetButton(kHistoryForw);
if (btn) {
btn->SetState(kButtonDisabled);
}
TGButton *btn2 = fToolBar->GetButton(kHistoryBack);
if (btn2) {
btn2->SetState(kButtonUp);
}
}
void TRootBrowserLite::ExecMacro()
{
char *tmpfile = gSystem->ConcatFileName(gSystem->TempDirectory(),
fTextFileName.Data());
gROOT->SetExecutingMacro(kTRUE);
fTextEdit->SaveFile(tmpfile, kFALSE);
gROOT->Macro(tmpfile);
gSystem->Unlink(tmpfile);
delete tmpfile;
gROOT->SetExecutingMacro(kFALSE);
}
void TRootBrowserLite::InterruptMacro()
{
gROOT->SetInterrupt(kTRUE);
}
void TRootBrowserLite::ShowMacroButtons(Bool_t show)
{
TGButton *bt1 = fToolBar->GetButton(kViewExec);
TGButton *bt2 = fToolBar->GetButton(kViewInterrupt);
TGButton *bt3 = fToolBar->GetButton(kViewSave);
static Bool_t connected = kFALSE;
if (!show) {
bt1->UnmapWindow();
bt2->UnmapWindow();
bt3->UnmapWindow();
} else {
bt1->MapWindow();
bt2->MapWindow();
bt3->MapWindow();
if (!connected && fTextEdit) {
bt1->Connect("Pressed()", "TRootBrowserLite", this, "ExecMacro()");
bt2->Connect("Pressed()", "TRootBrowserLite", this, "InterruptMacro()");
connected = kTRUE;
}
}
}
void TRootBrowserLite::SetStatusText(const char *txt, Int_t col)
{
ShowStatusBar(kTRUE);
TGStatusBar* status = GetStatusBar();
if (status!=0) {
status->SetText(txt, col);
}
}
TBrowserImp *TRootBrowserLite::NewBrowser(TBrowser *b, const char *title,
UInt_t width, UInt_t height,
Option_t * )
{
TRootBrowserLite *browser = new TRootBrowserLite(b, title, width, height);
return (TBrowserImp *)browser;
}
TBrowserImp *TRootBrowserLite::NewBrowser(TBrowser *b, const char *title, Int_t x,
Int_t y, UInt_t width, UInt_t height,
Option_t * )
{
TRootBrowserLite *browser = new TRootBrowserLite(b, title, x, y, width, height);
return (TBrowserImp *)browser;
}
TRootBrowserLite.cxx:1000 TRootBrowserLite.cxx:1001 TRootBrowserLite.cxx:1002 TRootBrowserLite.cxx:1003 TRootBrowserLite.cxx:1004 TRootBrowserLite.cxx:1005 TRootBrowserLite.cxx:1006 TRootBrowserLite.cxx:1007 TRootBrowserLite.cxx:1008 TRootBrowserLite.cxx:1009 TRootBrowserLite.cxx:1010 TRootBrowserLite.cxx:1011 TRootBrowserLite.cxx:1012 TRootBrowserLite.cxx:1013 TRootBrowserLite.cxx:1014 TRootBrowserLite.cxx:1015 TRootBrowserLite.cxx:1016 TRootBrowserLite.cxx:1017 TRootBrowserLite.cxx:1018 TRootBrowserLite.cxx:1019 TRootBrowserLite.cxx:1020 TRootBrowserLite.cxx:1021 TRootBrowserLite.cxx:1022 TRootBrowserLite.cxx:1023 TRootBrowserLite.cxx:1024 TRootBrowserLite.cxx:1025 TRootBrowserLite.cxx:1026 TRootBrowserLite.cxx:1027 TRootBrowserLite.cxx:1028 TRootBrowserLite.cxx:1029 TRootBrowserLite.cxx:1030 TRootBrowserLite.cxx:1031 TRootBrowserLite.cxx:1032 TRootBrowserLite.cxx:1033 TRootBrowserLite.cxx:1034 TRootBrowserLite.cxx:1035 TRootBrowserLite.cxx:1036 TRootBrowserLite.cxx:1037 TRootBrowserLite.cxx:1038 TRootBrowserLite.cxx:1039 TRootBrowserLite.cxx:1040 TRootBrowserLite.cxx:1041 TRootBrowserLite.cxx:1042 TRootBrowserLite.cxx:1043 TRootBrowserLite.cxx:1044 TRootBrowserLite.cxx:1045 TRootBrowserLite.cxx:1046 TRootBrowserLite.cxx:1047 TRootBrowserLite.cxx:1048 TRootBrowserLite.cxx:1049 TRootBrowserLite.cxx:1050 TRootBrowserLite.cxx:1051 TRootBrowserLite.cxx:1052 TRootBrowserLite.cxx:1053 TRootBrowserLite.cxx:1054 TRootBrowserLite.cxx:1055 TRootBrowserLite.cxx:1056 TRootBrowserLite.cxx:1057 TRootBrowserLite.cxx:1058 TRootBrowserLite.cxx:1059 TRootBrowserLite.cxx:1060 TRootBrowserLite.cxx:1061 TRootBrowserLite.cxx:1062 TRootBrowserLite.cxx:1063 TRootBrowserLite.cxx:1064 TRootBrowserLite.cxx:1065 TRootBrowserLite.cxx:1066 TRootBrowserLite.cxx:1067 TRootBrowserLite.cxx:1068 TRootBrowserLite.cxx:1069 TRootBrowserLite.cxx:1070 TRootBrowserLite.cxx:1071 TRootBrowserLite.cxx:1072 TRootBrowserLite.cxx:1073 TRootBrowserLite.cxx:1074 TRootBrowserLite.cxx:1075 TRootBrowserLite.cxx:1076 TRootBrowserLite.cxx:1077 TRootBrowserLite.cxx:1078 TRootBrowserLite.cxx:1079 TRootBrowserLite.cxx:1080 TRootBrowserLite.cxx:1081 TRootBrowserLite.cxx:1082 TRootBrowserLite.cxx:1083 TRootBrowserLite.cxx:1084 TRootBrowserLite.cxx:1085 TRootBrowserLite.cxx:1086 TRootBrowserLite.cxx:1087 TRootBrowserLite.cxx:1088 TRootBrowserLite.cxx:1089 TRootBrowserLite.cxx:1090 TRootBrowserLite.cxx:1091 TRootBrowserLite.cxx:1092 TRootBrowserLite.cxx:1093 TRootBrowserLite.cxx:1094 TRootBrowserLite.cxx:1095 TRootBrowserLite.cxx:1096 TRootBrowserLite.cxx:1097 TRootBrowserLite.cxx:1098 TRootBrowserLite.cxx:1099 TRootBrowserLite.cxx:1100 TRootBrowserLite.cxx:1101 TRootBrowserLite.cxx:1102 TRootBrowserLite.cxx:1103 TRootBrowserLite.cxx:1104 TRootBrowserLite.cxx:1105 TRootBrowserLite.cxx:1106 TRootBrowserLite.cxx:1107 TRootBrowserLite.cxx:1108 TRootBrowserLite.cxx:1109 TRootBrowserLite.cxx:1110 TRootBrowserLite.cxx:1111 TRootBrowserLite.cxx:1112 TRootBrowserLite.cxx:1113 TRootBrowserLite.cxx:1114 TRootBrowserLite.cxx:1115 TRootBrowserLite.cxx:1116 TRootBrowserLite.cxx:1117 TRootBrowserLite.cxx:1118 TRootBrowserLite.cxx:1119 TRootBrowserLite.cxx:1120 TRootBrowserLite.cxx:1121 TRootBrowserLite.cxx:1122 TRootBrowserLite.cxx:1123 TRootBrowserLite.cxx:1124 TRootBrowserLite.cxx:1125 TRootBrowserLite.cxx:1126 TRootBrowserLite.cxx:1127 TRootBrowserLite.cxx:1128 TRootBrowserLite.cxx:1129 TRootBrowserLite.cxx:1130 TRootBrowserLite.cxx:1131 TRootBrowserLite.cxx:1132 TRootBrowserLite.cxx:1133 TRootBrowserLite.cxx:1134 TRootBrowserLite.cxx:1135 TRootBrowserLite.cxx:1136 TRootBrowserLite.cxx:1137 TRootBrowserLite.cxx:1138 TRootBrowserLite.cxx:1139 TRootBrowserLite.cxx:1140 TRootBrowserLite.cxx:1141 TRootBrowserLite.cxx:1142 TRootBrowserLite.cxx:1143 TRootBrowserLite.cxx:1144 TRootBrowserLite.cxx:1145 TRootBrowserLite.cxx:1146 TRootBrowserLite.cxx:1147 TRootBrowserLite.cxx:1148 TRootBrowserLite.cxx:1149 TRootBrowserLite.cxx:1150 TRootBrowserLite.cxx:1151 TRootBrowserLite.cxx:1152 TRootBrowserLite.cxx:1153 TRootBrowserLite.cxx:1154 TRootBrowserLite.cxx:1155 TRootBrowserLite.cxx:1156 TRootBrowserLite.cxx:1157 TRootBrowserLite.cxx:1158 TRootBrowserLite.cxx:1159 TRootBrowserLite.cxx:1160 TRootBrowserLite.cxx:1161 TRootBrowserLite.cxx:1162 TRootBrowserLite.cxx:1163 TRootBrowserLite.cxx:1164 TRootBrowserLite.cxx:1165 TRootBrowserLite.cxx:1166 TRootBrowserLite.cxx:1167 TRootBrowserLite.cxx:1168 TRootBrowserLite.cxx:1169 TRootBrowserLite.cxx:1170 TRootBrowserLite.cxx:1171 TRootBrowserLite.cxx:1172 TRootBrowserLite.cxx:1173 TRootBrowserLite.cxx:1174 TRootBrowserLite.cxx:1175 TRootBrowserLite.cxx:1176 TRootBrowserLite.cxx:1177 TRootBrowserLite.cxx:1178 TRootBrowserLite.cxx:1179 TRootBrowserLite.cxx:1180 TRootBrowserLite.cxx:1181 TRootBrowserLite.cxx:1182 TRootBrowserLite.cxx:1183 TRootBrowserLite.cxx:1184 TRootBrowserLite.cxx:1185 TRootBrowserLite.cxx:1186 TRootBrowserLite.cxx:1187 TRootBrowserLite.cxx:1188 TRootBrowserLite.cxx:1189 TRootBrowserLite.cxx:1190 TRootBrowserLite.cxx:1191 TRootBrowserLite.cxx:1192 TRootBrowserLite.cxx:1193 TRootBrowserLite.cxx:1194 TRootBrowserLite.cxx:1195 TRootBrowserLite.cxx:1196 TRootBrowserLite.cxx:1197 TRootBrowserLite.cxx:1198 TRootBrowserLite.cxx:1199 TRootBrowserLite.cxx:1200 TRootBrowserLite.cxx:1201 TRootBrowserLite.cxx:1202 TRootBrowserLite.cxx:1203 TRootBrowserLite.cxx:1204 TRootBrowserLite.cxx:1205 TRootBrowserLite.cxx:1206 TRootBrowserLite.cxx:1207 TRootBrowserLite.cxx:1208 TRootBrowserLite.cxx:1209 TRootBrowserLite.cxx:1210 TRootBrowserLite.cxx:1211 TRootBrowserLite.cxx:1212 TRootBrowserLite.cxx:1213 TRootBrowserLite.cxx:1214 TRootBrowserLite.cxx:1215 TRootBrowserLite.cxx:1216 TRootBrowserLite.cxx:1217 TRootBrowserLite.cxx:1218 TRootBrowserLite.cxx:1219 TRootBrowserLite.cxx:1220 TRootBrowserLite.cxx:1221 TRootBrowserLite.cxx:1222 TRootBrowserLite.cxx:1223 TRootBrowserLite.cxx:1224 TRootBrowserLite.cxx:1225 TRootBrowserLite.cxx:1226 TRootBrowserLite.cxx:1227 TRootBrowserLite.cxx:1228 TRootBrowserLite.cxx:1229 TRootBrowserLite.cxx:1230 TRootBrowserLite.cxx:1231 TRootBrowserLite.cxx:1232 TRootBrowserLite.cxx:1233 TRootBrowserLite.cxx:1234 TRootBrowserLite.cxx:1235 TRootBrowserLite.cxx:1236 TRootBrowserLite.cxx:1237 TRootBrowserLite.cxx:1238 TRootBrowserLite.cxx:1239 TRootBrowserLite.cxx:1240 TRootBrowserLite.cxx:1241 TRootBrowserLite.cxx:1242 TRootBrowserLite.cxx:1243 TRootBrowserLite.cxx:1244 TRootBrowserLite.cxx:1245 TRootBrowserLite.cxx:1246 TRootBrowserLite.cxx:1247 TRootBrowserLite.cxx:1248 TRootBrowserLite.cxx:1249 TRootBrowserLite.cxx:1250 TRootBrowserLite.cxx:1251 TRootBrowserLite.cxx:1252 TRootBrowserLite.cxx:1253 TRootBrowserLite.cxx:1254 TRootBrowserLite.cxx:1255 TRootBrowserLite.cxx:1256 TRootBrowserLite.cxx:1257 TRootBrowserLite.cxx:1258 TRootBrowserLite.cxx:1259 TRootBrowserLite.cxx:1260 TRootBrowserLite.cxx:1261 TRootBrowserLite.cxx:1262 TRootBrowserLite.cxx:1263 TRootBrowserLite.cxx:1264 TRootBrowserLite.cxx:1265 TRootBrowserLite.cxx:1266 TRootBrowserLite.cxx:1267 TRootBrowserLite.cxx:1268 TRootBrowserLite.cxx:1269 TRootBrowserLite.cxx:1270 TRootBrowserLite.cxx:1271 TRootBrowserLite.cxx:1272 TRootBrowserLite.cxx:1273 TRootBrowserLite.cxx:1274 TRootBrowserLite.cxx:1275 TRootBrowserLite.cxx:1276 TRootBrowserLite.cxx:1277 TRootBrowserLite.cxx:1278 TRootBrowserLite.cxx:1279 TRootBrowserLite.cxx:1280 TRootBrowserLite.cxx:1281 TRootBrowserLite.cxx:1282 TRootBrowserLite.cxx:1283 TRootBrowserLite.cxx:1284 TRootBrowserLite.cxx:1285 TRootBrowserLite.cxx:1286 TRootBrowserLite.cxx:1287 TRootBrowserLite.cxx:1288 TRootBrowserLite.cxx:1289 TRootBrowserLite.cxx:1290 TRootBrowserLite.cxx:1291 TRootBrowserLite.cxx:1292 TRootBrowserLite.cxx:1293 TRootBrowserLite.cxx:1294 TRootBrowserLite.cxx:1295 TRootBrowserLite.cxx:1296 TRootBrowserLite.cxx:1297 TRootBrowserLite.cxx:1298 TRootBrowserLite.cxx:1299 TRootBrowserLite.cxx:1300 TRootBrowserLite.cxx:1301 TRootBrowserLite.cxx:1302 TRootBrowserLite.cxx:1303 TRootBrowserLite.cxx:1304 TRootBrowserLite.cxx:1305 TRootBrowserLite.cxx:1306 TRootBrowserLite.cxx:1307 TRootBrowserLite.cxx:1308 TRootBrowserLite.cxx:1309 TRootBrowserLite.cxx:1310 TRootBrowserLite.cxx:1311 TRootBrowserLite.cxx:1312 TRootBrowserLite.cxx:1313 TRootBrowserLite.cxx:1314 TRootBrowserLite.cxx:1315 TRootBrowserLite.cxx:1316 TRootBrowserLite.cxx:1317 TRootBrowserLite.cxx:1318 TRootBrowserLite.cxx:1319 TRootBrowserLite.cxx:1320 TRootBrowserLite.cxx:1321 TRootBrowserLite.cxx:1322 TRootBrowserLite.cxx:1323 TRootBrowserLite.cxx:1324 TRootBrowserLite.cxx:1325 TRootBrowserLite.cxx:1326 TRootBrowserLite.cxx:1327 TRootBrowserLite.cxx:1328 TRootBrowserLite.cxx:1329 TRootBrowserLite.cxx:1330 TRootBrowserLite.cxx:1331 TRootBrowserLite.cxx:1332 TRootBrowserLite.cxx:1333 TRootBrowserLite.cxx:1334 TRootBrowserLite.cxx:1335 TRootBrowserLite.cxx:1336 TRootBrowserLite.cxx:1337 TRootBrowserLite.cxx:1338 TRootBrowserLite.cxx:1339 TRootBrowserLite.cxx:1340 TRootBrowserLite.cxx:1341 TRootBrowserLite.cxx:1342 TRootBrowserLite.cxx:1343 TRootBrowserLite.cxx:1344 TRootBrowserLite.cxx:1345 TRootBrowserLite.cxx:1346 TRootBrowserLite.cxx:1347 TRootBrowserLite.cxx:1348 TRootBrowserLite.cxx:1349 TRootBrowserLite.cxx:1350 TRootBrowserLite.cxx:1351 TRootBrowserLite.cxx:1352 TRootBrowserLite.cxx:1353 TRootBrowserLite.cxx:1354 TRootBrowserLite.cxx:1355 TRootBrowserLite.cxx:1356 TRootBrowserLite.cxx:1357 TRootBrowserLite.cxx:1358 TRootBrowserLite.cxx:1359 TRootBrowserLite.cxx:1360 TRootBrowserLite.cxx:1361 TRootBrowserLite.cxx:1362 TRootBrowserLite.cxx:1363 TRootBrowserLite.cxx:1364 TRootBrowserLite.cxx:1365 TRootBrowserLite.cxx:1366 TRootBrowserLite.cxx:1367 TRootBrowserLite.cxx:1368 TRootBrowserLite.cxx:1369 TRootBrowserLite.cxx:1370 TRootBrowserLite.cxx:1371 TRootBrowserLite.cxx:1372 TRootBrowserLite.cxx:1373 TRootBrowserLite.cxx:1374 TRootBrowserLite.cxx:1375 TRootBrowserLite.cxx:1376 TRootBrowserLite.cxx:1377 TRootBrowserLite.cxx:1378 TRootBrowserLite.cxx:1379 TRootBrowserLite.cxx:1380 TRootBrowserLite.cxx:1381 TRootBrowserLite.cxx:1382 TRootBrowserLite.cxx:1383 TRootBrowserLite.cxx:1384 TRootBrowserLite.cxx:1385 TRootBrowserLite.cxx:1386 TRootBrowserLite.cxx:1387 TRootBrowserLite.cxx:1388 TRootBrowserLite.cxx:1389 TRootBrowserLite.cxx:1390 TRootBrowserLite.cxx:1391 TRootBrowserLite.cxx:1392 TRootBrowserLite.cxx:1393 TRootBrowserLite.cxx:1394 TRootBrowserLite.cxx:1395 TRootBrowserLite.cxx:1396 TRootBrowserLite.cxx:1397 TRootBrowserLite.cxx:1398 TRootBrowserLite.cxx:1399 TRootBrowserLite.cxx:1400 TRootBrowserLite.cxx:1401 TRootBrowserLite.cxx:1402 TRootBrowserLite.cxx:1403 TRootBrowserLite.cxx:1404 TRootBrowserLite.cxx:1405 TRootBrowserLite.cxx:1406 TRootBrowserLite.cxx:1407 TRootBrowserLite.cxx:1408 TRootBrowserLite.cxx:1409 TRootBrowserLite.cxx:1410 TRootBrowserLite.cxx:1411 TRootBrowserLite.cxx:1412 TRootBrowserLite.cxx:1413 TRootBrowserLite.cxx:1414 TRootBrowserLite.cxx:1415 TRootBrowserLite.cxx:1416 TRootBrowserLite.cxx:1417 TRootBrowserLite.cxx:1418 TRootBrowserLite.cxx:1419 TRootBrowserLite.cxx:1420 TRootBrowserLite.cxx:1421 TRootBrowserLite.cxx:1422 TRootBrowserLite.cxx:1423 TRootBrowserLite.cxx:1424 TRootBrowserLite.cxx:1425 TRootBrowserLite.cxx:1426 TRootBrowserLite.cxx:1427 TRootBrowserLite.cxx:1428 TRootBrowserLite.cxx:1429 TRootBrowserLite.cxx:1430 TRootBrowserLite.cxx:1431 TRootBrowserLite.cxx:1432 TRootBrowserLite.cxx:1433 TRootBrowserLite.cxx:1434 TRootBrowserLite.cxx:1435 TRootBrowserLite.cxx:1436 TRootBrowserLite.cxx:1437 TRootBrowserLite.cxx:1438 TRootBrowserLite.cxx:1439 TRootBrowserLite.cxx:1440 TRootBrowserLite.cxx:1441 TRootBrowserLite.cxx:1442 TRootBrowserLite.cxx:1443 TRootBrowserLite.cxx:1444 TRootBrowserLite.cxx:1445 TRootBrowserLite.cxx:1446 TRootBrowserLite.cxx:1447 TRootBrowserLite.cxx:1448 TRootBrowserLite.cxx:1449 TRootBrowserLite.cxx:1450 TRootBrowserLite.cxx:1451 TRootBrowserLite.cxx:1452 TRootBrowserLite.cxx:1453 TRootBrowserLite.cxx:1454 TRootBrowserLite.cxx:1455 TRootBrowserLite.cxx:1456 TRootBrowserLite.cxx:1457 TRootBrowserLite.cxx:1458 TRootBrowserLite.cxx:1459 TRootBrowserLite.cxx:1460 TRootBrowserLite.cxx:1461 TRootBrowserLite.cxx:1462 TRootBrowserLite.cxx:1463 TRootBrowserLite.cxx:1464 TRootBrowserLite.cxx:1465 TRootBrowserLite.cxx:1466 TRootBrowserLite.cxx:1467 TRootBrowserLite.cxx:1468 TRootBrowserLite.cxx:1469 TRootBrowserLite.cxx:1470 TRootBrowserLite.cxx:1471 TRootBrowserLite.cxx:1472 TRootBrowserLite.cxx:1473 TRootBrowserLite.cxx:1474 TRootBrowserLite.cxx:1475 TRootBrowserLite.cxx:1476 TRootBrowserLite.cxx:1477 TRootBrowserLite.cxx:1478 TRootBrowserLite.cxx:1479 TRootBrowserLite.cxx:1480 TRootBrowserLite.cxx:1481 TRootBrowserLite.cxx:1482 TRootBrowserLite.cxx:1483 TRootBrowserLite.cxx:1484 TRootBrowserLite.cxx:1485 TRootBrowserLite.cxx:1486 TRootBrowserLite.cxx:1487 TRootBrowserLite.cxx:1488 TRootBrowserLite.cxx:1489 TRootBrowserLite.cxx:1490 TRootBrowserLite.cxx:1491 TRootBrowserLite.cxx:1492 TRootBrowserLite.cxx:1493 TRootBrowserLite.cxx:1494 TRootBrowserLite.cxx:1495 TRootBrowserLite.cxx:1496 TRootBrowserLite.cxx:1497 TRootBrowserLite.cxx:1498 TRootBrowserLite.cxx:1499 TRootBrowserLite.cxx:1500 TRootBrowserLite.cxx:1501 TRootBrowserLite.cxx:1502 TRootBrowserLite.cxx:1503 TRootBrowserLite.cxx:1504 TRootBrowserLite.cxx:1505 TRootBrowserLite.cxx:1506 TRootBrowserLite.cxx:1507 TRootBrowserLite.cxx:1508 TRootBrowserLite.cxx:1509 TRootBrowserLite.cxx:1510 TRootBrowserLite.cxx:1511 TRootBrowserLite.cxx:1512 TRootBrowserLite.cxx:1513 TRootBrowserLite.cxx:1514 TRootBrowserLite.cxx:1515 TRootBrowserLite.cxx:1516 TRootBrowserLite.cxx:1517 TRootBrowserLite.cxx:1518 TRootBrowserLite.cxx:1519 TRootBrowserLite.cxx:1520 TRootBrowserLite.cxx:1521 TRootBrowserLite.cxx:1522 TRootBrowserLite.cxx:1523 TRootBrowserLite.cxx:1524 TRootBrowserLite.cxx:1525 TRootBrowserLite.cxx:1526 TRootBrowserLite.cxx:1527 TRootBrowserLite.cxx:1528 TRootBrowserLite.cxx:1529 TRootBrowserLite.cxx:1530 TRootBrowserLite.cxx:1531 TRootBrowserLite.cxx:1532 TRootBrowserLite.cxx:1533 TRootBrowserLite.cxx:1534 TRootBrowserLite.cxx:1535 TRootBrowserLite.cxx:1536 TRootBrowserLite.cxx:1537 TRootBrowserLite.cxx:1538 TRootBrowserLite.cxx:1539 TRootBrowserLite.cxx:1540 TRootBrowserLite.cxx:1541 TRootBrowserLite.cxx:1542 TRootBrowserLite.cxx:1543 TRootBrowserLite.cxx:1544 TRootBrowserLite.cxx:1545 TRootBrowserLite.cxx:1546 TRootBrowserLite.cxx:1547 TRootBrowserLite.cxx:1548 TRootBrowserLite.cxx:1549 TRootBrowserLite.cxx:1550 TRootBrowserLite.cxx:1551 TRootBrowserLite.cxx:1552 TRootBrowserLite.cxx:1553 TRootBrowserLite.cxx:1554 TRootBrowserLite.cxx:1555 TRootBrowserLite.cxx:1556 TRootBrowserLite.cxx:1557 TRootBrowserLite.cxx:1558 TRootBrowserLite.cxx:1559 TRootBrowserLite.cxx:1560 TRootBrowserLite.cxx:1561 TRootBrowserLite.cxx:1562 TRootBrowserLite.cxx:1563 TRootBrowserLite.cxx:1564 TRootBrowserLite.cxx:1565 TRootBrowserLite.cxx:1566 TRootBrowserLite.cxx:1567 TRootBrowserLite.cxx:1568 TRootBrowserLite.cxx:1569 TRootBrowserLite.cxx:1570 TRootBrowserLite.cxx:1571 TRootBrowserLite.cxx:1572 TRootBrowserLite.cxx:1573 TRootBrowserLite.cxx:1574 TRootBrowserLite.cxx:1575 TRootBrowserLite.cxx:1576 TRootBrowserLite.cxx:1577 TRootBrowserLite.cxx:1578 TRootBrowserLite.cxx:1579 TRootBrowserLite.cxx:1580 TRootBrowserLite.cxx:1581 TRootBrowserLite.cxx:1582 TRootBrowserLite.cxx:1583 TRootBrowserLite.cxx:1584 TRootBrowserLite.cxx:1585 TRootBrowserLite.cxx:1586 TRootBrowserLite.cxx:1587 TRootBrowserLite.cxx:1588 TRootBrowserLite.cxx:1589 TRootBrowserLite.cxx:1590 TRootBrowserLite.cxx:1591 TRootBrowserLite.cxx:1592 TRootBrowserLite.cxx:1593 TRootBrowserLite.cxx:1594 TRootBrowserLite.cxx:1595 TRootBrowserLite.cxx:1596 TRootBrowserLite.cxx:1597 TRootBrowserLite.cxx:1598 TRootBrowserLite.cxx:1599 TRootBrowserLite.cxx:1600 TRootBrowserLite.cxx:1601 TRootBrowserLite.cxx:1602 TRootBrowserLite.cxx:1603 TRootBrowserLite.cxx:1604 TRootBrowserLite.cxx:1605 TRootBrowserLite.cxx:1606 TRootBrowserLite.cxx:1607 TRootBrowserLite.cxx:1608 TRootBrowserLite.cxx:1609 TRootBrowserLite.cxx:1610 TRootBrowserLite.cxx:1611 TRootBrowserLite.cxx:1612 TRootBrowserLite.cxx:1613 TRootBrowserLite.cxx:1614 TRootBrowserLite.cxx:1615 TRootBrowserLite.cxx:1616 TRootBrowserLite.cxx:1617 TRootBrowserLite.cxx:1618 TRootBrowserLite.cxx:1619 TRootBrowserLite.cxx:1620 TRootBrowserLite.cxx:1621 TRootBrowserLite.cxx:1622 TRootBrowserLite.cxx:1623 TRootBrowserLite.cxx:1624 TRootBrowserLite.cxx:1625 TRootBrowserLite.cxx:1626 TRootBrowserLite.cxx:1627 TRootBrowserLite.cxx:1628 TRootBrowserLite.cxx:1629 TRootBrowserLite.cxx:1630 TRootBrowserLite.cxx:1631 TRootBrowserLite.cxx:1632 TRootBrowserLite.cxx:1633 TRootBrowserLite.cxx:1634 TRootBrowserLite.cxx:1635 TRootBrowserLite.cxx:1636 TRootBrowserLite.cxx:1637 TRootBrowserLite.cxx:1638 TRootBrowserLite.cxx:1639 TRootBrowserLite.cxx:1640 TRootBrowserLite.cxx:1641 TRootBrowserLite.cxx:1642 TRootBrowserLite.cxx:1643 TRootBrowserLite.cxx:1644 TRootBrowserLite.cxx:1645 TRootBrowserLite.cxx:1646 TRootBrowserLite.cxx:1647 TRootBrowserLite.cxx:1648 TRootBrowserLite.cxx:1649 TRootBrowserLite.cxx:1650 TRootBrowserLite.cxx:1651 TRootBrowserLite.cxx:1652 TRootBrowserLite.cxx:1653 TRootBrowserLite.cxx:1654 TRootBrowserLite.cxx:1655 TRootBrowserLite.cxx:1656 TRootBrowserLite.cxx:1657 TRootBrowserLite.cxx:1658 TRootBrowserLite.cxx:1659 TRootBrowserLite.cxx:1660 TRootBrowserLite.cxx:1661 TRootBrowserLite.cxx:1662 TRootBrowserLite.cxx:1663 TRootBrowserLite.cxx:1664 TRootBrowserLite.cxx:1665 TRootBrowserLite.cxx:1666 TRootBrowserLite.cxx:1667 TRootBrowserLite.cxx:1668 TRootBrowserLite.cxx:1669 TRootBrowserLite.cxx:1670 TRootBrowserLite.cxx:1671 TRootBrowserLite.cxx:1672 TRootBrowserLite.cxx:1673 TRootBrowserLite.cxx:1674 TRootBrowserLite.cxx:1675 TRootBrowserLite.cxx:1676 TRootBrowserLite.cxx:1677 TRootBrowserLite.cxx:1678 TRootBrowserLite.cxx:1679 TRootBrowserLite.cxx:1680 TRootBrowserLite.cxx:1681 TRootBrowserLite.cxx:1682 TRootBrowserLite.cxx:1683 TRootBrowserLite.cxx:1684 TRootBrowserLite.cxx:1685 TRootBrowserLite.cxx:1686 TRootBrowserLite.cxx:1687 TRootBrowserLite.cxx:1688 TRootBrowserLite.cxx:1689 TRootBrowserLite.cxx:1690 TRootBrowserLite.cxx:1691 TRootBrowserLite.cxx:1692 TRootBrowserLite.cxx:1693 TRootBrowserLite.cxx:1694 TRootBrowserLite.cxx:1695 TRootBrowserLite.cxx:1696 TRootBrowserLite.cxx:1697 TRootBrowserLite.cxx:1698 TRootBrowserLite.cxx:1699 TRootBrowserLite.cxx:1700 TRootBrowserLite.cxx:1701 TRootBrowserLite.cxx:1702 TRootBrowserLite.cxx:1703 TRootBrowserLite.cxx:1704 TRootBrowserLite.cxx:1705 TRootBrowserLite.cxx:1706 TRootBrowserLite.cxx:1707 TRootBrowserLite.cxx:1708 TRootBrowserLite.cxx:1709 TRootBrowserLite.cxx:1710 TRootBrowserLite.cxx:1711 TRootBrowserLite.cxx:1712 TRootBrowserLite.cxx:1713 TRootBrowserLite.cxx:1714 TRootBrowserLite.cxx:1715 TRootBrowserLite.cxx:1716 TRootBrowserLite.cxx:1717 TRootBrowserLite.cxx:1718 TRootBrowserLite.cxx:1719 TRootBrowserLite.cxx:1720 TRootBrowserLite.cxx:1721 TRootBrowserLite.cxx:1722 TRootBrowserLite.cxx:1723 TRootBrowserLite.cxx:1724 TRootBrowserLite.cxx:1725 TRootBrowserLite.cxx:1726 TRootBrowserLite.cxx:1727 TRootBrowserLite.cxx:1728 TRootBrowserLite.cxx:1729 TRootBrowserLite.cxx:1730 TRootBrowserLite.cxx:1731 TRootBrowserLite.cxx:1732 TRootBrowserLite.cxx:1733 TRootBrowserLite.cxx:1734 TRootBrowserLite.cxx:1735 TRootBrowserLite.cxx:1736 TRootBrowserLite.cxx:1737 TRootBrowserLite.cxx:1738 TRootBrowserLite.cxx:1739 TRootBrowserLite.cxx:1740 TRootBrowserLite.cxx:1741 TRootBrowserLite.cxx:1742 TRootBrowserLite.cxx:1743 TRootBrowserLite.cxx:1744 TRootBrowserLite.cxx:1745 TRootBrowserLite.cxx:1746 TRootBrowserLite.cxx:1747 TRootBrowserLite.cxx:1748 TRootBrowserLite.cxx:1749 TRootBrowserLite.cxx:1750 TRootBrowserLite.cxx:1751 TRootBrowserLite.cxx:1752 TRootBrowserLite.cxx:1753 TRootBrowserLite.cxx:1754 TRootBrowserLite.cxx:1755 TRootBrowserLite.cxx:1756 TRootBrowserLite.cxx:1757 TRootBrowserLite.cxx:1758 TRootBrowserLite.cxx:1759 TRootBrowserLite.cxx:1760 TRootBrowserLite.cxx:1761 TRootBrowserLite.cxx:1762 TRootBrowserLite.cxx:1763 TRootBrowserLite.cxx:1764 TRootBrowserLite.cxx:1765 TRootBrowserLite.cxx:1766 TRootBrowserLite.cxx:1767 TRootBrowserLite.cxx:1768 TRootBrowserLite.cxx:1769 TRootBrowserLite.cxx:1770 TRootBrowserLite.cxx:1771 TRootBrowserLite.cxx:1772 TRootBrowserLite.cxx:1773 TRootBrowserLite.cxx:1774 TRootBrowserLite.cxx:1775 TRootBrowserLite.cxx:1776 TRootBrowserLite.cxx:1777 TRootBrowserLite.cxx:1778 TRootBrowserLite.cxx:1779 TRootBrowserLite.cxx:1780 TRootBrowserLite.cxx:1781 TRootBrowserLite.cxx:1782 TRootBrowserLite.cxx:1783 TRootBrowserLite.cxx:1784 TRootBrowserLite.cxx:1785 TRootBrowserLite.cxx:1786 TRootBrowserLite.cxx:1787 TRootBrowserLite.cxx:1788 TRootBrowserLite.cxx:1789 TRootBrowserLite.cxx:1790 TRootBrowserLite.cxx:1791 TRootBrowserLite.cxx:1792 TRootBrowserLite.cxx:1793 TRootBrowserLite.cxx:1794 TRootBrowserLite.cxx:1795 TRootBrowserLite.cxx:1796 TRootBrowserLite.cxx:1797 TRootBrowserLite.cxx:1798 TRootBrowserLite.cxx:1799 TRootBrowserLite.cxx:1800 TRootBrowserLite.cxx:1801 TRootBrowserLite.cxx:1802 TRootBrowserLite.cxx:1803 TRootBrowserLite.cxx:1804 TRootBrowserLite.cxx:1805 TRootBrowserLite.cxx:1806 TRootBrowserLite.cxx:1807 TRootBrowserLite.cxx:1808 TRootBrowserLite.cxx:1809 TRootBrowserLite.cxx:1810 TRootBrowserLite.cxx:1811 TRootBrowserLite.cxx:1812 TRootBrowserLite.cxx:1813 TRootBrowserLite.cxx:1814 TRootBrowserLite.cxx:1815 TRootBrowserLite.cxx:1816 TRootBrowserLite.cxx:1817 TRootBrowserLite.cxx:1818 TRootBrowserLite.cxx:1819 TRootBrowserLite.cxx:1820 TRootBrowserLite.cxx:1821 TRootBrowserLite.cxx:1822 TRootBrowserLite.cxx:1823 TRootBrowserLite.cxx:1824 TRootBrowserLite.cxx:1825 TRootBrowserLite.cxx:1826 TRootBrowserLite.cxx:1827 TRootBrowserLite.cxx:1828 TRootBrowserLite.cxx:1829 TRootBrowserLite.cxx:1830 TRootBrowserLite.cxx:1831 TRootBrowserLite.cxx:1832 TRootBrowserLite.cxx:1833 TRootBrowserLite.cxx:1834 TRootBrowserLite.cxx:1835 TRootBrowserLite.cxx:1836 TRootBrowserLite.cxx:1837 TRootBrowserLite.cxx:1838 TRootBrowserLite.cxx:1839 TRootBrowserLite.cxx:1840 TRootBrowserLite.cxx:1841 TRootBrowserLite.cxx:1842 TRootBrowserLite.cxx:1843 TRootBrowserLite.cxx:1844 TRootBrowserLite.cxx:1845 TRootBrowserLite.cxx:1846 TRootBrowserLite.cxx:1847 TRootBrowserLite.cxx:1848 TRootBrowserLite.cxx:1849 TRootBrowserLite.cxx:1850 TRootBrowserLite.cxx:1851 TRootBrowserLite.cxx:1852 TRootBrowserLite.cxx:1853 TRootBrowserLite.cxx:1854 TRootBrowserLite.cxx:1855 TRootBrowserLite.cxx:1856 TRootBrowserLite.cxx:1857 TRootBrowserLite.cxx:1858 TRootBrowserLite.cxx:1859 TRootBrowserLite.cxx:1860 TRootBrowserLite.cxx:1861 TRootBrowserLite.cxx:1862 TRootBrowserLite.cxx:1863 TRootBrowserLite.cxx:1864 TRootBrowserLite.cxx:1865 TRootBrowserLite.cxx:1866 TRootBrowserLite.cxx:1867 TRootBrowserLite.cxx:1868 TRootBrowserLite.cxx:1869 TRootBrowserLite.cxx:1870 TRootBrowserLite.cxx:1871 TRootBrowserLite.cxx:1872 TRootBrowserLite.cxx:1873 TRootBrowserLite.cxx:1874 TRootBrowserLite.cxx:1875 TRootBrowserLite.cxx:1876 TRootBrowserLite.cxx:1877 TRootBrowserLite.cxx:1878 TRootBrowserLite.cxx:1879 TRootBrowserLite.cxx:1880 TRootBrowserLite.cxx:1881 TRootBrowserLite.cxx:1882 TRootBrowserLite.cxx:1883 TRootBrowserLite.cxx:1884 TRootBrowserLite.cxx:1885 TRootBrowserLite.cxx:1886 TRootBrowserLite.cxx:1887 TRootBrowserLite.cxx:1888 TRootBrowserLite.cxx:1889 TRootBrowserLite.cxx:1890 TRootBrowserLite.cxx:1891 TRootBrowserLite.cxx:1892 TRootBrowserLite.cxx:1893 TRootBrowserLite.cxx:1894 TRootBrowserLite.cxx:1895 TRootBrowserLite.cxx:1896 TRootBrowserLite.cxx:1897 TRootBrowserLite.cxx:1898 TRootBrowserLite.cxx:1899 TRootBrowserLite.cxx:1900 TRootBrowserLite.cxx:1901 TRootBrowserLite.cxx:1902 TRootBrowserLite.cxx:1903 TRootBrowserLite.cxx:1904 TRootBrowserLite.cxx:1905 TRootBrowserLite.cxx:1906 TRootBrowserLite.cxx:1907 TRootBrowserLite.cxx:1908 TRootBrowserLite.cxx:1909 TRootBrowserLite.cxx:1910 TRootBrowserLite.cxx:1911 TRootBrowserLite.cxx:1912 TRootBrowserLite.cxx:1913 TRootBrowserLite.cxx:1914 TRootBrowserLite.cxx:1915 TRootBrowserLite.cxx:1916 TRootBrowserLite.cxx:1917 TRootBrowserLite.cxx:1918 TRootBrowserLite.cxx:1919 TRootBrowserLite.cxx:1920 TRootBrowserLite.cxx:1921 TRootBrowserLite.cxx:1922 TRootBrowserLite.cxx:1923 TRootBrowserLite.cxx:1924 TRootBrowserLite.cxx:1925 TRootBrowserLite.cxx:1926 TRootBrowserLite.cxx:1927 TRootBrowserLite.cxx:1928 TRootBrowserLite.cxx:1929 TRootBrowserLite.cxx:1930 TRootBrowserLite.cxx:1931 TRootBrowserLite.cxx:1932 TRootBrowserLite.cxx:1933 TRootBrowserLite.cxx:1934 TRootBrowserLite.cxx:1935 TRootBrowserLite.cxx:1936 TRootBrowserLite.cxx:1937 TRootBrowserLite.cxx:1938 TRootBrowserLite.cxx:1939 TRootBrowserLite.cxx:1940 TRootBrowserLite.cxx:1941 TRootBrowserLite.cxx:1942 TRootBrowserLite.cxx:1943 TRootBrowserLite.cxx:1944 TRootBrowserLite.cxx:1945 TRootBrowserLite.cxx:1946 TRootBrowserLite.cxx:1947 TRootBrowserLite.cxx:1948 TRootBrowserLite.cxx:1949 TRootBrowserLite.cxx:1950 TRootBrowserLite.cxx:1951 TRootBrowserLite.cxx:1952 TRootBrowserLite.cxx:1953 TRootBrowserLite.cxx:1954 TRootBrowserLite.cxx:1955 TRootBrowserLite.cxx:1956 TRootBrowserLite.cxx:1957 TRootBrowserLite.cxx:1958 TRootBrowserLite.cxx:1959 TRootBrowserLite.cxx:1960 TRootBrowserLite.cxx:1961 TRootBrowserLite.cxx:1962 TRootBrowserLite.cxx:1963 TRootBrowserLite.cxx:1964 TRootBrowserLite.cxx:1965 TRootBrowserLite.cxx:1966 TRootBrowserLite.cxx:1967 TRootBrowserLite.cxx:1968 TRootBrowserLite.cxx:1969 TRootBrowserLite.cxx:1970 TRootBrowserLite.cxx:1971 TRootBrowserLite.cxx:1972 TRootBrowserLite.cxx:1973 TRootBrowserLite.cxx:1974 TRootBrowserLite.cxx:1975 TRootBrowserLite.cxx:1976 TRootBrowserLite.cxx:1977 TRootBrowserLite.cxx:1978 TRootBrowserLite.cxx:1979 TRootBrowserLite.cxx:1980 TRootBrowserLite.cxx:1981 TRootBrowserLite.cxx:1982 TRootBrowserLite.cxx:1983 TRootBrowserLite.cxx:1984 TRootBrowserLite.cxx:1985 TRootBrowserLite.cxx:1986 TRootBrowserLite.cxx:1987 TRootBrowserLite.cxx:1988 TRootBrowserLite.cxx:1989 TRootBrowserLite.cxx:1990 TRootBrowserLite.cxx:1991 TRootBrowserLite.cxx:1992 TRootBrowserLite.cxx:1993 TRootBrowserLite.cxx:1994 TRootBrowserLite.cxx:1995 TRootBrowserLite.cxx:1996 TRootBrowserLite.cxx:1997 TRootBrowserLite.cxx:1998 TRootBrowserLite.cxx:1999 TRootBrowserLite.cxx:2000 TRootBrowserLite.cxx:2001 TRootBrowserLite.cxx:2002 TRootBrowserLite.cxx:2003 TRootBrowserLite.cxx:2004 TRootBrowserLite.cxx:2005 TRootBrowserLite.cxx:2006 TRootBrowserLite.cxx:2007 TRootBrowserLite.cxx:2008 TRootBrowserLite.cxx:2009 TRootBrowserLite.cxx:2010 TRootBrowserLite.cxx:2011 TRootBrowserLite.cxx:2012 TRootBrowserLite.cxx:2013 TRootBrowserLite.cxx:2014 TRootBrowserLite.cxx:2015 TRootBrowserLite.cxx:2016 TRootBrowserLite.cxx:2017 TRootBrowserLite.cxx:2018 TRootBrowserLite.cxx:2019 TRootBrowserLite.cxx:2020 TRootBrowserLite.cxx:2021 TRootBrowserLite.cxx:2022 TRootBrowserLite.cxx:2023 TRootBrowserLite.cxx:2024 TRootBrowserLite.cxx:2025 TRootBrowserLite.cxx:2026 TRootBrowserLite.cxx:2027 TRootBrowserLite.cxx:2028 TRootBrowserLite.cxx:2029 TRootBrowserLite.cxx:2030 TRootBrowserLite.cxx:2031 TRootBrowserLite.cxx:2032 TRootBrowserLite.cxx:2033 TRootBrowserLite.cxx:2034 TRootBrowserLite.cxx:2035 TRootBrowserLite.cxx:2036 TRootBrowserLite.cxx:2037 TRootBrowserLite.cxx:2038 TRootBrowserLite.cxx:2039 TRootBrowserLite.cxx:2040 TRootBrowserLite.cxx:2041 TRootBrowserLite.cxx:2042 TRootBrowserLite.cxx:2043 TRootBrowserLite.cxx:2044 TRootBrowserLite.cxx:2045 TRootBrowserLite.cxx:2046 TRootBrowserLite.cxx:2047 TRootBrowserLite.cxx:2048 TRootBrowserLite.cxx:2049 TRootBrowserLite.cxx:2050 TRootBrowserLite.cxx:2051 TRootBrowserLite.cxx:2052 TRootBrowserLite.cxx:2053 TRootBrowserLite.cxx:2054 TRootBrowserLite.cxx:2055 TRootBrowserLite.cxx:2056 TRootBrowserLite.cxx:2057 TRootBrowserLite.cxx:2058 TRootBrowserLite.cxx:2059 TRootBrowserLite.cxx:2060 TRootBrowserLite.cxx:2061 TRootBrowserLite.cxx:2062 TRootBrowserLite.cxx:2063 TRootBrowserLite.cxx:2064 TRootBrowserLite.cxx:2065 TRootBrowserLite.cxx:2066 TRootBrowserLite.cxx:2067 TRootBrowserLite.cxx:2068 TRootBrowserLite.cxx:2069 TRootBrowserLite.cxx:2070 TRootBrowserLite.cxx:2071 TRootBrowserLite.cxx:2072 TRootBrowserLite.cxx:2073 TRootBrowserLite.cxx:2074 TRootBrowserLite.cxx:2075 TRootBrowserLite.cxx:2076 TRootBrowserLite.cxx:2077 TRootBrowserLite.cxx:2078 TRootBrowserLite.cxx:2079 TRootBrowserLite.cxx:2080 TRootBrowserLite.cxx:2081 TRootBrowserLite.cxx:2082 TRootBrowserLite.cxx:2083 TRootBrowserLite.cxx:2084 TRootBrowserLite.cxx:2085 TRootBrowserLite.cxx:2086 TRootBrowserLite.cxx:2087 TRootBrowserLite.cxx:2088 TRootBrowserLite.cxx:2089 TRootBrowserLite.cxx:2090 TRootBrowserLite.cxx:2091 TRootBrowserLite.cxx:2092 TRootBrowserLite.cxx:2093 TRootBrowserLite.cxx:2094 TRootBrowserLite.cxx:2095 TRootBrowserLite.cxx:2096 TRootBrowserLite.cxx:2097 TRootBrowserLite.cxx:2098 TRootBrowserLite.cxx:2099 TRootBrowserLite.cxx:2100 TRootBrowserLite.cxx:2101 TRootBrowserLite.cxx:2102 TRootBrowserLite.cxx:2103 TRootBrowserLite.cxx:2104 TRootBrowserLite.cxx:2105 TRootBrowserLite.cxx:2106 TRootBrowserLite.cxx:2107 TRootBrowserLite.cxx:2108 TRootBrowserLite.cxx:2109 TRootBrowserLite.cxx:2110 TRootBrowserLite.cxx:2111 TRootBrowserLite.cxx:2112 TRootBrowserLite.cxx:2113 TRootBrowserLite.cxx:2114 TRootBrowserLite.cxx:2115 TRootBrowserLite.cxx:2116 TRootBrowserLite.cxx:2117 TRootBrowserLite.cxx:2118 TRootBrowserLite.cxx:2119 TRootBrowserLite.cxx:2120 TRootBrowserLite.cxx:2121 TRootBrowserLite.cxx:2122 TRootBrowserLite.cxx:2123 TRootBrowserLite.cxx:2124 TRootBrowserLite.cxx:2125 TRootBrowserLite.cxx:2126 TRootBrowserLite.cxx:2127 TRootBrowserLite.cxx:2128 TRootBrowserLite.cxx:2129 TRootBrowserLite.cxx:2130 TRootBrowserLite.cxx:2131 TRootBrowserLite.cxx:2132 TRootBrowserLite.cxx:2133 TRootBrowserLite.cxx:2134 TRootBrowserLite.cxx:2135 TRootBrowserLite.cxx:2136 TRootBrowserLite.cxx:2137 TRootBrowserLite.cxx:2138 TRootBrowserLite.cxx:2139 TRootBrowserLite.cxx:2140 TRootBrowserLite.cxx:2141 TRootBrowserLite.cxx:2142 TRootBrowserLite.cxx:2143 TRootBrowserLite.cxx:2144 TRootBrowserLite.cxx:2145 TRootBrowserLite.cxx:2146 TRootBrowserLite.cxx:2147 TRootBrowserLite.cxx:2148 TRootBrowserLite.cxx:2149 TRootBrowserLite.cxx:2150 TRootBrowserLite.cxx:2151 TRootBrowserLite.cxx:2152 TRootBrowserLite.cxx:2153 TRootBrowserLite.cxx:2154 TRootBrowserLite.cxx:2155 TRootBrowserLite.cxx:2156 TRootBrowserLite.cxx:2157 TRootBrowserLite.cxx:2158 TRootBrowserLite.cxx:2159 TRootBrowserLite.cxx:2160 TRootBrowserLite.cxx:2161 TRootBrowserLite.cxx:2162 TRootBrowserLite.cxx:2163 TRootBrowserLite.cxx:2164 TRootBrowserLite.cxx:2165 TRootBrowserLite.cxx:2166 TRootBrowserLite.cxx:2167 TRootBrowserLite.cxx:2168 TRootBrowserLite.cxx:2169 TRootBrowserLite.cxx:2170 TRootBrowserLite.cxx:2171 TRootBrowserLite.cxx:2172 TRootBrowserLite.cxx:2173 TRootBrowserLite.cxx:2174 TRootBrowserLite.cxx:2175 TRootBrowserLite.cxx:2176 TRootBrowserLite.cxx:2177 TRootBrowserLite.cxx:2178 TRootBrowserLite.cxx:2179 TRootBrowserLite.cxx:2180 TRootBrowserLite.cxx:2181 TRootBrowserLite.cxx:2182 TRootBrowserLite.cxx:2183 TRootBrowserLite.cxx:2184 TRootBrowserLite.cxx:2185 TRootBrowserLite.cxx:2186 TRootBrowserLite.cxx:2187 TRootBrowserLite.cxx:2188 TRootBrowserLite.cxx:2189 TRootBrowserLite.cxx:2190 TRootBrowserLite.cxx:2191 TRootBrowserLite.cxx:2192 TRootBrowserLite.cxx:2193 TRootBrowserLite.cxx:2194 TRootBrowserLite.cxx:2195 TRootBrowserLite.cxx:2196 TRootBrowserLite.cxx:2197 TRootBrowserLite.cxx:2198 TRootBrowserLite.cxx:2199 TRootBrowserLite.cxx:2200 TRootBrowserLite.cxx:2201 TRootBrowserLite.cxx:2202 TRootBrowserLite.cxx:2203 TRootBrowserLite.cxx:2204 TRootBrowserLite.cxx:2205 TRootBrowserLite.cxx:2206 TRootBrowserLite.cxx:2207 TRootBrowserLite.cxx:2208 TRootBrowserLite.cxx:2209 TRootBrowserLite.cxx:2210 TRootBrowserLite.cxx:2211 TRootBrowserLite.cxx:2212 TRootBrowserLite.cxx:2213 TRootBrowserLite.cxx:2214 TRootBrowserLite.cxx:2215 TRootBrowserLite.cxx:2216 TRootBrowserLite.cxx:2217 TRootBrowserLite.cxx:2218 TRootBrowserLite.cxx:2219 TRootBrowserLite.cxx:2220 TRootBrowserLite.cxx:2221 TRootBrowserLite.cxx:2222 TRootBrowserLite.cxx:2223 TRootBrowserLite.cxx:2224 TRootBrowserLite.cxx:2225 TRootBrowserLite.cxx:2226 TRootBrowserLite.cxx:2227 TRootBrowserLite.cxx:2228 TRootBrowserLite.cxx:2229 TRootBrowserLite.cxx:2230 TRootBrowserLite.cxx:2231 TRootBrowserLite.cxx:2232 TRootBrowserLite.cxx:2233 TRootBrowserLite.cxx:2234 TRootBrowserLite.cxx:2235 TRootBrowserLite.cxx:2236 TRootBrowserLite.cxx:2237 TRootBrowserLite.cxx:2238 TRootBrowserLite.cxx:2239 TRootBrowserLite.cxx:2240 TRootBrowserLite.cxx:2241 TRootBrowserLite.cxx:2242 TRootBrowserLite.cxx:2243 TRootBrowserLite.cxx:2244 TRootBrowserLite.cxx:2245 TRootBrowserLite.cxx:2246 TRootBrowserLite.cxx:2247 TRootBrowserLite.cxx:2248 TRootBrowserLite.cxx:2249 TRootBrowserLite.cxx:2250 TRootBrowserLite.cxx:2251 TRootBrowserLite.cxx:2252 TRootBrowserLite.cxx:2253 TRootBrowserLite.cxx:2254 TRootBrowserLite.cxx:2255 TRootBrowserLite.cxx:2256 TRootBrowserLite.cxx:2257 TRootBrowserLite.cxx:2258 TRootBrowserLite.cxx:2259 TRootBrowserLite.cxx:2260 TRootBrowserLite.cxx:2261 TRootBrowserLite.cxx:2262 TRootBrowserLite.cxx:2263 TRootBrowserLite.cxx:2264 TRootBrowserLite.cxx:2265 TRootBrowserLite.cxx:2266 TRootBrowserLite.cxx:2267 TRootBrowserLite.cxx:2268 TRootBrowserLite.cxx:2269 TRootBrowserLite.cxx:2270 TRootBrowserLite.cxx:2271 TRootBrowserLite.cxx:2272 TRootBrowserLite.cxx:2273 TRootBrowserLite.cxx:2274 TRootBrowserLite.cxx:2275 TRootBrowserLite.cxx:2276 TRootBrowserLite.cxx:2277 TRootBrowserLite.cxx:2278 TRootBrowserLite.cxx:2279 TRootBrowserLite.cxx:2280 TRootBrowserLite.cxx:2281 TRootBrowserLite.cxx:2282 TRootBrowserLite.cxx:2283 TRootBrowserLite.cxx:2284 TRootBrowserLite.cxx:2285 TRootBrowserLite.cxx:2286 TRootBrowserLite.cxx:2287 TRootBrowserLite.cxx:2288 TRootBrowserLite.cxx:2289 TRootBrowserLite.cxx:2290 TRootBrowserLite.cxx:2291 TRootBrowserLite.cxx:2292 TRootBrowserLite.cxx:2293 TRootBrowserLite.cxx:2294 TRootBrowserLite.cxx:2295 TRootBrowserLite.cxx:2296 TRootBrowserLite.cxx:2297 TRootBrowserLite.cxx:2298 TRootBrowserLite.cxx:2299 TRootBrowserLite.cxx:2300 TRootBrowserLite.cxx:2301 TRootBrowserLite.cxx:2302 TRootBrowserLite.cxx:2303 TRootBrowserLite.cxx:2304 TRootBrowserLite.cxx:2305 TRootBrowserLite.cxx:2306 TRootBrowserLite.cxx:2307 TRootBrowserLite.cxx:2308 TRootBrowserLite.cxx:2309 TRootBrowserLite.cxx:2310 TRootBrowserLite.cxx:2311 TRootBrowserLite.cxx:2312 TRootBrowserLite.cxx:2313 TRootBrowserLite.cxx:2314 TRootBrowserLite.cxx:2315 TRootBrowserLite.cxx:2316 TRootBrowserLite.cxx:2317 TRootBrowserLite.cxx:2318 TRootBrowserLite.cxx:2319 TRootBrowserLite.cxx:2320 TRootBrowserLite.cxx:2321 TRootBrowserLite.cxx:2322 TRootBrowserLite.cxx:2323 TRootBrowserLite.cxx:2324 TRootBrowserLite.cxx:2325 TRootBrowserLite.cxx:2326 TRootBrowserLite.cxx:2327 TRootBrowserLite.cxx:2328 TRootBrowserLite.cxx:2329 TRootBrowserLite.cxx:2330 TRootBrowserLite.cxx:2331 TRootBrowserLite.cxx:2332 TRootBrowserLite.cxx:2333 TRootBrowserLite.cxx:2334 TRootBrowserLite.cxx:2335 TRootBrowserLite.cxx:2336 TRootBrowserLite.cxx:2337 TRootBrowserLite.cxx:2338 TRootBrowserLite.cxx:2339 TRootBrowserLite.cxx:2340 TRootBrowserLite.cxx:2341 TRootBrowserLite.cxx:2342 TRootBrowserLite.cxx:2343 TRootBrowserLite.cxx:2344 TRootBrowserLite.cxx:2345 TRootBrowserLite.cxx:2346 TRootBrowserLite.cxx:2347 TRootBrowserLite.cxx:2348 TRootBrowserLite.cxx:2349 TRootBrowserLite.cxx:2350 TRootBrowserLite.cxx:2351 TRootBrowserLite.cxx:2352 TRootBrowserLite.cxx:2353 TRootBrowserLite.cxx:2354 TRootBrowserLite.cxx:2355 TRootBrowserLite.cxx:2356 TRootBrowserLite.cxx:2357 TRootBrowserLite.cxx:2358 TRootBrowserLite.cxx:2359 TRootBrowserLite.cxx:2360 TRootBrowserLite.cxx:2361 TRootBrowserLite.cxx:2362 TRootBrowserLite.cxx:2363 TRootBrowserLite.cxx:2364 TRootBrowserLite.cxx:2365 TRootBrowserLite.cxx:2366 TRootBrowserLite.cxx:2367 TRootBrowserLite.cxx:2368 TRootBrowserLite.cxx:2369 TRootBrowserLite.cxx:2370 TRootBrowserLite.cxx:2371 TRootBrowserLite.cxx:2372 TRootBrowserLite.cxx:2373 TRootBrowserLite.cxx:2374 TRootBrowserLite.cxx:2375 TRootBrowserLite.cxx:2376 TRootBrowserLite.cxx:2377 TRootBrowserLite.cxx:2378 TRootBrowserLite.cxx:2379 TRootBrowserLite.cxx:2380 TRootBrowserLite.cxx:2381 TRootBrowserLite.cxx:2382 TRootBrowserLite.cxx:2383 TRootBrowserLite.cxx:2384 TRootBrowserLite.cxx:2385 TRootBrowserLite.cxx:2386 TRootBrowserLite.cxx:2387 TRootBrowserLite.cxx:2388 TRootBrowserLite.cxx:2389 TRootBrowserLite.cxx:2390 TRootBrowserLite.cxx:2391 TRootBrowserLite.cxx:2392 TRootBrowserLite.cxx:2393 TRootBrowserLite.cxx:2394 TRootBrowserLite.cxx:2395 TRootBrowserLite.cxx:2396 TRootBrowserLite.cxx:2397 TRootBrowserLite.cxx:2398 TRootBrowserLite.cxx:2399 TRootBrowserLite.cxx:2400 TRootBrowserLite.cxx:2401 TRootBrowserLite.cxx:2402 TRootBrowserLite.cxx:2403 TRootBrowserLite.cxx:2404 TRootBrowserLite.cxx:2405 TRootBrowserLite.cxx:2406 TRootBrowserLite.cxx:2407 TRootBrowserLite.cxx:2408 TRootBrowserLite.cxx:2409 TRootBrowserLite.cxx:2410 TRootBrowserLite.cxx:2411 TRootBrowserLite.cxx:2412 TRootBrowserLite.cxx:2413 TRootBrowserLite.cxx:2414 TRootBrowserLite.cxx:2415 TRootBrowserLite.cxx:2416 TRootBrowserLite.cxx:2417 TRootBrowserLite.cxx:2418 TRootBrowserLite.cxx:2419 TRootBrowserLite.cxx:2420 TRootBrowserLite.cxx:2421 TRootBrowserLite.cxx:2422 TRootBrowserLite.cxx:2423 TRootBrowserLite.cxx:2424 TRootBrowserLite.cxx:2425 TRootBrowserLite.cxx:2426 TRootBrowserLite.cxx:2427 TRootBrowserLite.cxx:2428 TRootBrowserLite.cxx:2429 TRootBrowserLite.cxx:2430 TRootBrowserLite.cxx:2431 TRootBrowserLite.cxx:2432 TRootBrowserLite.cxx:2433 TRootBrowserLite.cxx:2434 TRootBrowserLite.cxx:2435 TRootBrowserLite.cxx:2436 TRootBrowserLite.cxx:2437 TRootBrowserLite.cxx:2438 TRootBrowserLite.cxx:2439 TRootBrowserLite.cxx:2440 TRootBrowserLite.cxx:2441 TRootBrowserLite.cxx:2442 TRootBrowserLite.cxx:2443 TRootBrowserLite.cxx:2444 TRootBrowserLite.cxx:2445 TRootBrowserLite.cxx:2446 TRootBrowserLite.cxx:2447 TRootBrowserLite.cxx:2448 TRootBrowserLite.cxx:2449 TRootBrowserLite.cxx:2450 TRootBrowserLite.cxx:2451 TRootBrowserLite.cxx:2452 TRootBrowserLite.cxx:2453 TRootBrowserLite.cxx:2454 TRootBrowserLite.cxx:2455 TRootBrowserLite.cxx:2456 TRootBrowserLite.cxx:2457 TRootBrowserLite.cxx:2458 TRootBrowserLite.cxx:2459 TRootBrowserLite.cxx:2460 TRootBrowserLite.cxx:2461 TRootBrowserLite.cxx:2462 TRootBrowserLite.cxx:2463 TRootBrowserLite.cxx:2464 TRootBrowserLite.cxx:2465 TRootBrowserLite.cxx:2466 TRootBrowserLite.cxx:2467 TRootBrowserLite.cxx:2468 TRootBrowserLite.cxx:2469 TRootBrowserLite.cxx:2470 TRootBrowserLite.cxx:2471 TRootBrowserLite.cxx:2472 TRootBrowserLite.cxx:2473 TRootBrowserLite.cxx:2474 TRootBrowserLite.cxx:2475 TRootBrowserLite.cxx:2476 TRootBrowserLite.cxx:2477 TRootBrowserLite.cxx:2478 TRootBrowserLite.cxx:2479 TRootBrowserLite.cxx:2480 TRootBrowserLite.cxx:2481 TRootBrowserLite.cxx:2482 TRootBrowserLite.cxx:2483 TRootBrowserLite.cxx:2484 TRootBrowserLite.cxx:2485 TRootBrowserLite.cxx:2486 TRootBrowserLite.cxx:2487 TRootBrowserLite.cxx:2488 TRootBrowserLite.cxx:2489 TRootBrowserLite.cxx:2490 TRootBrowserLite.cxx:2491 TRootBrowserLite.cxx:2492 TRootBrowserLite.cxx:2493 TRootBrowserLite.cxx:2494 TRootBrowserLite.cxx:2495 TRootBrowserLite.cxx:2496 TRootBrowserLite.cxx:2497 TRootBrowserLite.cxx:2498 TRootBrowserLite.cxx:2499 TRootBrowserLite.cxx:2500 TRootBrowserLite.cxx:2501 TRootBrowserLite.cxx:2502 TRootBrowserLite.cxx:2503 TRootBrowserLite.cxx:2504 TRootBrowserLite.cxx:2505 TRootBrowserLite.cxx:2506 TRootBrowserLite.cxx:2507 TRootBrowserLite.cxx:2508 TRootBrowserLite.cxx:2509 TRootBrowserLite.cxx:2510 TRootBrowserLite.cxx:2511 TRootBrowserLite.cxx:2512 TRootBrowserLite.cxx:2513 TRootBrowserLite.cxx:2514 TRootBrowserLite.cxx:2515 TRootBrowserLite.cxx:2516 TRootBrowserLite.cxx:2517 TRootBrowserLite.cxx:2518 TRootBrowserLite.cxx:2519 TRootBrowserLite.cxx:2520 TRootBrowserLite.cxx:2521 TRootBrowserLite.cxx:2522 TRootBrowserLite.cxx:2523 TRootBrowserLite.cxx:2524 TRootBrowserLite.cxx:2525 TRootBrowserLite.cxx:2526 TRootBrowserLite.cxx:2527 TRootBrowserLite.cxx:2528 TRootBrowserLite.cxx:2529 TRootBrowserLite.cxx:2530 TRootBrowserLite.cxx:2531 TRootBrowserLite.cxx:2532 TRootBrowserLite.cxx:2533 TRootBrowserLite.cxx:2534 TRootBrowserLite.cxx:2535 TRootBrowserLite.cxx:2536 TRootBrowserLite.cxx:2537 TRootBrowserLite.cxx:2538 TRootBrowserLite.cxx:2539 TRootBrowserLite.cxx:2540 TRootBrowserLite.cxx:2541 TRootBrowserLite.cxx:2542 TRootBrowserLite.cxx:2543 TRootBrowserLite.cxx:2544 TRootBrowserLite.cxx:2545 TRootBrowserLite.cxx:2546 TRootBrowserLite.cxx:2547 TRootBrowserLite.cxx:2548 TRootBrowserLite.cxx:2549 TRootBrowserLite.cxx:2550 TRootBrowserLite.cxx:2551 TRootBrowserLite.cxx:2552 TRootBrowserLite.cxx:2553 TRootBrowserLite.cxx:2554 TRootBrowserLite.cxx:2555 TRootBrowserLite.cxx:2556 TRootBrowserLite.cxx:2557 TRootBrowserLite.cxx:2558 TRootBrowserLite.cxx:2559 TRootBrowserLite.cxx:2560 TRootBrowserLite.cxx:2561 TRootBrowserLite.cxx:2562 TRootBrowserLite.cxx:2563 TRootBrowserLite.cxx:2564 TRootBrowserLite.cxx:2565 TRootBrowserLite.cxx:2566 TRootBrowserLite.cxx:2567 TRootBrowserLite.cxx:2568 TRootBrowserLite.cxx:2569 TRootBrowserLite.cxx:2570 TRootBrowserLite.cxx:2571 TRootBrowserLite.cxx:2572 TRootBrowserLite.cxx:2573 TRootBrowserLite.cxx:2574 TRootBrowserLite.cxx:2575 TRootBrowserLite.cxx:2576 TRootBrowserLite.cxx:2577 TRootBrowserLite.cxx:2578 TRootBrowserLite.cxx:2579 TRootBrowserLite.cxx:2580 TRootBrowserLite.cxx:2581 TRootBrowserLite.cxx:2582 TRootBrowserLite.cxx:2583 TRootBrowserLite.cxx:2584 TRootBrowserLite.cxx:2585 TRootBrowserLite.cxx:2586 TRootBrowserLite.cxx:2587 TRootBrowserLite.cxx:2588 TRootBrowserLite.cxx:2589 TRootBrowserLite.cxx:2590 TRootBrowserLite.cxx:2591 TRootBrowserLite.cxx:2592 TRootBrowserLite.cxx:2593 TRootBrowserLite.cxx:2594 TRootBrowserLite.cxx:2595 TRootBrowserLite.cxx:2596 TRootBrowserLite.cxx:2597 TRootBrowserLite.cxx:2598 TRootBrowserLite.cxx:2599 TRootBrowserLite.cxx:2600 TRootBrowserLite.cxx:2601 TRootBrowserLite.cxx:2602 TRootBrowserLite.cxx:2603 TRootBrowserLite.cxx:2604 TRootBrowserLite.cxx:2605 TRootBrowserLite.cxx:2606 TRootBrowserLite.cxx:2607 TRootBrowserLite.cxx:2608 TRootBrowserLite.cxx:2609 TRootBrowserLite.cxx:2610 TRootBrowserLite.cxx:2611 TRootBrowserLite.cxx:2612 TRootBrowserLite.cxx:2613 TRootBrowserLite.cxx:2614 TRootBrowserLite.cxx:2615 TRootBrowserLite.cxx:2616 TRootBrowserLite.cxx:2617 TRootBrowserLite.cxx:2618 TRootBrowserLite.cxx:2619 TRootBrowserLite.cxx:2620 TRootBrowserLite.cxx:2621 TRootBrowserLite.cxx:2622 TRootBrowserLite.cxx:2623 TRootBrowserLite.cxx:2624 TRootBrowserLite.cxx:2625 TRootBrowserLite.cxx:2626 TRootBrowserLite.cxx:2627 TRootBrowserLite.cxx:2628 TRootBrowserLite.cxx:2629 TRootBrowserLite.cxx:2630 TRootBrowserLite.cxx:2631 TRootBrowserLite.cxx:2632 TRootBrowserLite.cxx:2633 TRootBrowserLite.cxx:2634 TRootBrowserLite.cxx:2635 TRootBrowserLite.cxx:2636 TRootBrowserLite.cxx:2637 TRootBrowserLite.cxx:2638 TRootBrowserLite.cxx:2639 TRootBrowserLite.cxx:2640 TRootBrowserLite.cxx:2641 TRootBrowserLite.cxx:2642 TRootBrowserLite.cxx:2643 TRootBrowserLite.cxx:2644 TRootBrowserLite.cxx:2645 TRootBrowserLite.cxx:2646 TRootBrowserLite.cxx:2647 TRootBrowserLite.cxx:2648 TRootBrowserLite.cxx:2649 TRootBrowserLite.cxx:2650 TRootBrowserLite.cxx:2651 TRootBrowserLite.cxx:2652 TRootBrowserLite.cxx:2653 TRootBrowserLite.cxx:2654 TRootBrowserLite.cxx:2655 TRootBrowserLite.cxx:2656 TRootBrowserLite.cxx:2657 TRootBrowserLite.cxx:2658 TRootBrowserLite.cxx:2659 TRootBrowserLite.cxx:2660 TRootBrowserLite.cxx:2661 TRootBrowserLite.cxx:2662 TRootBrowserLite.cxx:2663 TRootBrowserLite.cxx:2664 TRootBrowserLite.cxx:2665 TRootBrowserLite.cxx:2666 TRootBrowserLite.cxx:2667 TRootBrowserLite.cxx:2668 TRootBrowserLite.cxx:2669 TRootBrowserLite.cxx:2670 TRootBrowserLite.cxx:2671 TRootBrowserLite.cxx:2672 TRootBrowserLite.cxx:2673 TRootBrowserLite.cxx:2674 TRootBrowserLite.cxx:2675 TRootBrowserLite.cxx:2676 TRootBrowserLite.cxx:2677 TRootBrowserLite.cxx:2678 TRootBrowserLite.cxx:2679 TRootBrowserLite.cxx:2680 TRootBrowserLite.cxx:2681 TRootBrowserLite.cxx:2682 TRootBrowserLite.cxx:2683 TRootBrowserLite.cxx:2684 TRootBrowserLite.cxx:2685 TRootBrowserLite.cxx:2686 TRootBrowserLite.cxx:2687 TRootBrowserLite.cxx:2688 TRootBrowserLite.cxx:2689 TRootBrowserLite.cxx:2690 TRootBrowserLite.cxx:2691 TRootBrowserLite.cxx:2692 TRootBrowserLite.cxx:2693 TRootBrowserLite.cxx:2694 TRootBrowserLite.cxx:2695 TRootBrowserLite.cxx:2696 TRootBrowserLite.cxx:2697 TRootBrowserLite.cxx:2698 TRootBrowserLite.cxx:2699 TRootBrowserLite.cxx:2700 TRootBrowserLite.cxx:2701 TRootBrowserLite.cxx:2702 TRootBrowserLite.cxx:2703 TRootBrowserLite.cxx:2704 TRootBrowserLite.cxx:2705 TRootBrowserLite.cxx:2706 TRootBrowserLite.cxx:2707 TRootBrowserLite.cxx:2708 TRootBrowserLite.cxx:2709 TRootBrowserLite.cxx:2710 TRootBrowserLite.cxx:2711 TRootBrowserLite.cxx:2712 TRootBrowserLite.cxx:2713 TRootBrowserLite.cxx:2714 TRootBrowserLite.cxx:2715 TRootBrowserLite.cxx:2716 TRootBrowserLite.cxx:2717 TRootBrowserLite.cxx:2718 TRootBrowserLite.cxx:2719 TRootBrowserLite.cxx:2720 TRootBrowserLite.cxx:2721 TRootBrowserLite.cxx:2722 TRootBrowserLite.cxx:2723 TRootBrowserLite.cxx:2724 TRootBrowserLite.cxx:2725 TRootBrowserLite.cxx:2726 TRootBrowserLite.cxx:2727 TRootBrowserLite.cxx:2728 TRootBrowserLite.cxx:2729 TRootBrowserLite.cxx:2730 TRootBrowserLite.cxx:2731 TRootBrowserLite.cxx:2732 TRootBrowserLite.cxx:2733 TRootBrowserLite.cxx:2734 TRootBrowserLite.cxx:2735 TRootBrowserLite.cxx:2736 TRootBrowserLite.cxx:2737 TRootBrowserLite.cxx:2738 TRootBrowserLite.cxx:2739 TRootBrowserLite.cxx:2740 TRootBrowserLite.cxx:2741 TRootBrowserLite.cxx:2742 TRootBrowserLite.cxx:2743 TRootBrowserLite.cxx:2744 TRootBrowserLite.cxx:2745 TRootBrowserLite.cxx:2746 TRootBrowserLite.cxx:2747 TRootBrowserLite.cxx:2748 TRootBrowserLite.cxx:2749 TRootBrowserLite.cxx:2750 TRootBrowserLite.cxx:2751 TRootBrowserLite.cxx:2752 TRootBrowserLite.cxx:2753 TRootBrowserLite.cxx:2754 TRootBrowserLite.cxx:2755 TRootBrowserLite.cxx:2756 TRootBrowserLite.cxx:2757 TRootBrowserLite.cxx:2758 TRootBrowserLite.cxx:2759 TRootBrowserLite.cxx:2760 TRootBrowserLite.cxx:2761 TRootBrowserLite.cxx:2762 TRootBrowserLite.cxx:2763 TRootBrowserLite.cxx:2764 TRootBrowserLite.cxx:2765 TRootBrowserLite.cxx:2766 TRootBrowserLite.cxx:2767 TRootBrowserLite.cxx:2768 TRootBrowserLite.cxx:2769 TRootBrowserLite.cxx:2770 TRootBrowserLite.cxx:2771 TRootBrowserLite.cxx:2772 TRootBrowserLite.cxx:2773 TRootBrowserLite.cxx:2774 TRootBrowserLite.cxx:2775 TRootBrowserLite.cxx:2776 TRootBrowserLite.cxx:2777 TRootBrowserLite.cxx:2778 TRootBrowserLite.cxx:2779 TRootBrowserLite.cxx:2780 TRootBrowserLite.cxx:2781 TRootBrowserLite.cxx:2782 TRootBrowserLite.cxx:2783 TRootBrowserLite.cxx:2784 TRootBrowserLite.cxx:2785 TRootBrowserLite.cxx:2786 TRootBrowserLite.cxx:2787 TRootBrowserLite.cxx:2788 TRootBrowserLite.cxx:2789 TRootBrowserLite.cxx:2790 TRootBrowserLite.cxx:2791 TRootBrowserLite.cxx:2792 TRootBrowserLite.cxx:2793 TRootBrowserLite.cxx:2794 TRootBrowserLite.cxx:2795 TRootBrowserLite.cxx:2796 TRootBrowserLite.cxx:2797 TRootBrowserLite.cxx:2798 TRootBrowserLite.cxx:2799 TRootBrowserLite.cxx:2800 TRootBrowserLite.cxx:2801 TRootBrowserLite.cxx:2802 TRootBrowserLite.cxx:2803 TRootBrowserLite.cxx:2804 TRootBrowserLite.cxx:2805 TRootBrowserLite.cxx:2806 TRootBrowserLite.cxx:2807 TRootBrowserLite.cxx:2808 TRootBrowserLite.cxx:2809 TRootBrowserLite.cxx:2810 TRootBrowserLite.cxx:2811 TRootBrowserLite.cxx:2812 TRootBrowserLite.cxx:2813 TRootBrowserLite.cxx:2814 TRootBrowserLite.cxx:2815 TRootBrowserLite.cxx:2816 TRootBrowserLite.cxx:2817 TRootBrowserLite.cxx:2818 TRootBrowserLite.cxx:2819 TRootBrowserLite.cxx:2820 TRootBrowserLite.cxx:2821 TRootBrowserLite.cxx:2822 TRootBrowserLite.cxx:2823 TRootBrowserLite.cxx:2824 TRootBrowserLite.cxx:2825 TRootBrowserLite.cxx:2826 TRootBrowserLite.cxx:2827 TRootBrowserLite.cxx:2828 TRootBrowserLite.cxx:2829 TRootBrowserLite.cxx:2830 TRootBrowserLite.cxx:2831 TRootBrowserLite.cxx:2832 TRootBrowserLite.cxx:2833 TRootBrowserLite.cxx:2834 TRootBrowserLite.cxx:2835 TRootBrowserLite.cxx:2836 TRootBrowserLite.cxx:2837 TRootBrowserLite.cxx:2838 TRootBrowserLite.cxx:2839 TRootBrowserLite.cxx:2840 TRootBrowserLite.cxx:2841 TRootBrowserLite.cxx:2842 TRootBrowserLite.cxx:2843 TRootBrowserLite.cxx:2844 TRootBrowserLite.cxx:2845 TRootBrowserLite.cxx:2846 TRootBrowserLite.cxx:2847 TRootBrowserLite.cxx:2848 TRootBrowserLite.cxx:2849 TRootBrowserLite.cxx:2850 TRootBrowserLite.cxx:2851 TRootBrowserLite.cxx:2852 TRootBrowserLite.cxx:2853 TRootBrowserLite.cxx:2854 TRootBrowserLite.cxx:2855 TRootBrowserLite.cxx:2856 TRootBrowserLite.cxx:2857 TRootBrowserLite.cxx:2858 TRootBrowserLite.cxx:2859 TRootBrowserLite.cxx:2860 TRootBrowserLite.cxx:2861 TRootBrowserLite.cxx:2862 TRootBrowserLite.cxx:2863 TRootBrowserLite.cxx:2864 TRootBrowserLite.cxx:2865 TRootBrowserLite.cxx:2866 TRootBrowserLite.cxx:2867 TRootBrowserLite.cxx:2868 TRootBrowserLite.cxx:2869 TRootBrowserLite.cxx:2870 TRootBrowserLite.cxx:2871 TRootBrowserLite.cxx:2872 TRootBrowserLite.cxx:2873 TRootBrowserLite.cxx:2874 TRootBrowserLite.cxx:2875 TRootBrowserLite.cxx:2876 TRootBrowserLite.cxx:2877 TRootBrowserLite.cxx:2878 TRootBrowserLite.cxx:2879 TRootBrowserLite.cxx:2880 TRootBrowserLite.cxx:2881 TRootBrowserLite.cxx:2882 TRootBrowserLite.cxx:2883 TRootBrowserLite.cxx:2884 TRootBrowserLite.cxx:2885 TRootBrowserLite.cxx:2886 TRootBrowserLite.cxx:2887 TRootBrowserLite.cxx:2888 TRootBrowserLite.cxx:2889 TRootBrowserLite.cxx:2890 TRootBrowserLite.cxx:2891 TRootBrowserLite.cxx:2892 TRootBrowserLite.cxx:2893 TRootBrowserLite.cxx:2894 TRootBrowserLite.cxx:2895 TRootBrowserLite.cxx:2896 TRootBrowserLite.cxx:2897 TRootBrowserLite.cxx:2898 TRootBrowserLite.cxx:2899 TRootBrowserLite.cxx:2900 TRootBrowserLite.cxx:2901 TRootBrowserLite.cxx:2902 TRootBrowserLite.cxx:2903 TRootBrowserLite.cxx:2904 TRootBrowserLite.cxx:2905 TRootBrowserLite.cxx:2906 TRootBrowserLite.cxx:2907 TRootBrowserLite.cxx:2908 TRootBrowserLite.cxx:2909 TRootBrowserLite.cxx:2910 TRootBrowserLite.cxx:2911 TRootBrowserLite.cxx:2912 TRootBrowserLite.cxx:2913 TRootBrowserLite.cxx:2914 TRootBrowserLite.cxx:2915 TRootBrowserLite.cxx:2916 TRootBrowserLite.cxx:2917 TRootBrowserLite.cxx:2918 TRootBrowserLite.cxx:2919 TRootBrowserLite.cxx:2920 TRootBrowserLite.cxx:2921 TRootBrowserLite.cxx:2922 TRootBrowserLite.cxx:2923 TRootBrowserLite.cxx:2924 TRootBrowserLite.cxx:2925 TRootBrowserLite.cxx:2926 TRootBrowserLite.cxx:2927 TRootBrowserLite.cxx:2928 TRootBrowserLite.cxx:2929 TRootBrowserLite.cxx:2930 TRootBrowserLite.cxx:2931 TRootBrowserLite.cxx:2932 TRootBrowserLite.cxx:2933 TRootBrowserLite.cxx:2934 TRootBrowserLite.cxx:2935 TRootBrowserLite.cxx:2936 TRootBrowserLite.cxx:2937 TRootBrowserLite.cxx:2938 TRootBrowserLite.cxx:2939 TRootBrowserLite.cxx:2940 TRootBrowserLite.cxx:2941 TRootBrowserLite.cxx:2942 TRootBrowserLite.cxx:2943 TRootBrowserLite.cxx:2944 TRootBrowserLite.cxx:2945 TRootBrowserLite.cxx:2946 TRootBrowserLite.cxx:2947 TRootBrowserLite.cxx:2948 TRootBrowserLite.cxx:2949 TRootBrowserLite.cxx:2950 TRootBrowserLite.cxx:2951 TRootBrowserLite.cxx:2952 TRootBrowserLite.cxx:2953 TRootBrowserLite.cxx:2954 TRootBrowserLite.cxx:2955 TRootBrowserLite.cxx:2956 TRootBrowserLite.cxx:2957 TRootBrowserLite.cxx:2958 TRootBrowserLite.cxx:2959 TRootBrowserLite.cxx:2960 TRootBrowserLite.cxx:2961 TRootBrowserLite.cxx:2962 TRootBrowserLite.cxx:2963 TRootBrowserLite.cxx:2964 TRootBrowserLite.cxx:2965 TRootBrowserLite.cxx:2966 TRootBrowserLite.cxx:2967 TRootBrowserLite.cxx:2968 TRootBrowserLite.cxx:2969 TRootBrowserLite.cxx:2970 TRootBrowserLite.cxx:2971 TRootBrowserLite.cxx:2972 TRootBrowserLite.cxx:2973 TRootBrowserLite.cxx:2974 TRootBrowserLite.cxx:2975 TRootBrowserLite.cxx:2976 TRootBrowserLite.cxx:2977 TRootBrowserLite.cxx:2978 TRootBrowserLite.cxx:2979 TRootBrowserLite.cxx:2980 TRootBrowserLite.cxx:2981 TRootBrowserLite.cxx:2982 TRootBrowserLite.cxx:2983 TRootBrowserLite.cxx:2984 TRootBrowserLite.cxx:2985 TRootBrowserLite.cxx:2986 TRootBrowserLite.cxx:2987 TRootBrowserLite.cxx:2988 TRootBrowserLite.cxx:2989 TRootBrowserLite.cxx:2990 TRootBrowserLite.cxx:2991 TRootBrowserLite.cxx:2992 TRootBrowserLite.cxx:2993 TRootBrowserLite.cxx:2994 TRootBrowserLite.cxx:2995 TRootBrowserLite.cxx:2996 TRootBrowserLite.cxx:2997 TRootBrowserLite.cxx:2998 TRootBrowserLite.cxx:2999 TRootBrowserLite.cxx:3000 TRootBrowserLite.cxx:3001 TRootBrowserLite.cxx:3002 TRootBrowserLite.cxx:3003 TRootBrowserLite.cxx:3004 TRootBrowserLite.cxx:3005 TRootBrowserLite.cxx:3006 TRootBrowserLite.cxx:3007 TRootBrowserLite.cxx:3008 TRootBrowserLite.cxx:3009 TRootBrowserLite.cxx:3010 TRootBrowserLite.cxx:3011 TRootBrowserLite.cxx:3012 TRootBrowserLite.cxx:3013 TRootBrowserLite.cxx:3014 TRootBrowserLite.cxx:3015 TRootBrowserLite.cxx:3016 TRootBrowserLite.cxx:3017 TRootBrowserLite.cxx:3018 TRootBrowserLite.cxx:3019 TRootBrowserLite.cxx:3020 TRootBrowserLite.cxx:3021 TRootBrowserLite.cxx:3022 TRootBrowserLite.cxx:3023 TRootBrowserLite.cxx:3024 TRootBrowserLite.cxx:3025 TRootBrowserLite.cxx:3026 TRootBrowserLite.cxx:3027 TRootBrowserLite.cxx:3028 TRootBrowserLite.cxx:3029 TRootBrowserLite.cxx:3030 TRootBrowserLite.cxx:3031 TRootBrowserLite.cxx:3032 TRootBrowserLite.cxx:3033 TRootBrowserLite.cxx:3034 TRootBrowserLite.cxx:3035 TRootBrowserLite.cxx:3036 TRootBrowserLite.cxx:3037 TRootBrowserLite.cxx:3038 TRootBrowserLite.cxx:3039 TRootBrowserLite.cxx:3040 TRootBrowserLite.cxx:3041 TRootBrowserLite.cxx:3042 TRootBrowserLite.cxx:3043 TRootBrowserLite.cxx:3044 TRootBrowserLite.cxx:3045 TRootBrowserLite.cxx:3046 TRootBrowserLite.cxx:3047 TRootBrowserLite.cxx:3048 TRootBrowserLite.cxx:3049 TRootBrowserLite.cxx:3050 TRootBrowserLite.cxx:3051 TRootBrowserLite.cxx:3052 TRootBrowserLite.cxx:3053 TRootBrowserLite.cxx:3054 TRootBrowserLite.cxx:3055 TRootBrowserLite.cxx:3056 TRootBrowserLite.cxx:3057 TRootBrowserLite.cxx:3058 TRootBrowserLite.cxx:3059 TRootBrowserLite.cxx:3060 TRootBrowserLite.cxx:3061 TRootBrowserLite.cxx:3062 TRootBrowserLite.cxx:3063 TRootBrowserLite.cxx:3064 TRootBrowserLite.cxx:3065 TRootBrowserLite.cxx:3066 TRootBrowserLite.cxx:3067 TRootBrowserLite.cxx:3068