Skip to content
Snippets Groups Projects
Commit 82a91d24 authored by Fons Rademakers's avatar Fons Rademakers
Browse files

From Andreas:

support browsing of AliEn files in TBrowser.


git-svn-id: http://root.cern.ch/svn/root/trunk@24510 27541ba8-7e3a-0410-8455-c3a389f83636
parent c0d7160f
No related branches found
No related tags found
No related merge requests found
......@@ -386,3 +386,12 @@ pattern = TMacro
icon = tmacro_s.xpm tmacro_t.xpm
action =
[alien/file]
pattern = TAlienDirectoryEntry
icon = rootdb_s.xpm rootdb_t.xpm
action = ->Browse()
[alien/file]
pattern = TAlienFile
icon = rootdb_s.xpm rootdb_t.xpm
action = ->Browse()
......@@ -390,3 +390,13 @@ action =
pattern = *.root.lnk
icon = rootdblnk_s.xpm rootdblnk_t.xpm
action = TFile *ftmp = new TFile("%s")
[alien/file]
pattern = TAlienDirectoryEntry
icon = rootdb_s.xpm rootdb_t.xpm
action = ->Browse()
[alien/file]
pattern = TAlienFile
icon = rootdb_s.xpm rootdb_t.xpm
action = ->Browse()
......@@ -29,12 +29,16 @@
#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
#ifndef ROOT_TMap
#include "TMap.h"
#endif
class TAlienDirectoryEntry : public TNamed {
private:
TString fLfn; // logical file name
TString fLfn; // logical file name
TMap fBrowserObjects; // objects shown in browser
public:
TAlienDirectoryEntry(const char *lfn, const char *name) : TNamed(name,name) { fLfn = lfn; }
......@@ -49,12 +53,13 @@ public:
class TAlienDirectory : public TNamed {
private:
TList fEntries; // directory entries
TList fEntries; // directory entries
TMap fBrowserObjects; // objects shown in browser
public:
TAlienDirectory(const char *ldn, const char *name=0);
virtual ~TAlienDirectory();
void Fill();
Bool_t IsFolder() const { return kTRUE; }
void Browse(TBrowser *b);
......
......@@ -24,6 +24,7 @@
#include "TAlienFile.h"
#include "TSystem.h"
#include "TFile.h"
#include "TObjString.h"
ClassImp(TAlienDirectoryEntry)
......@@ -31,10 +32,17 @@ ClassImp(TAlienDirectoryEntry)
//______________________________________________________________________________
void TAlienDirectoryEntry::Browse(TBrowser* b)
{
//browse an Alien directory
// Browse an Alien directory.
if (b) {
TAlienFile* newfile = new TAlienFile(fLfn);
b->Add(newfile);
TString alienname = "alien://";
alienname += fLfn;
TObject *bobj;
if (!(bobj = fBrowserObjects.FindObject(alienname.Data()))) {
TFile *newfile = TFile::Open(alienname.Data());
b->Add(newfile);
fBrowserObjects.Add(new TObjString(alienname.Data()), (TObject*) newfile);
}
}
}
......@@ -44,7 +52,8 @@ ClassImp(TAlienDirectory)
//______________________________________________________________________________
TAlienDirectory::TAlienDirectory(const char *ldn, const char *name)
{
//constructor
// Constructor.
if (!gGrid->Cd(ldn)) {
MakeZombie();
return;
......@@ -57,8 +66,20 @@ TAlienDirectory::TAlienDirectory(const char *ldn, const char *name)
}
SetTitle(ldn);
};
//______________________________________________________________________________
void TAlienDirectory::Fill()
{
// Fill directory entry list.
if (!gGrid->Cd(GetTitle())) {
MakeZombie();
return;
}
TGridResult *dirlist = gGrid->Ls(ldn, "-la");
fEntries.Clear();
TGridResult *dirlist = gGrid->Ls(GetTitle(), "-la");
if (dirlist) {
dirlist->Sort();
Int_t i = 0;
......@@ -89,10 +110,17 @@ void TAlienDirectory::Browse(TBrowser *b)
// Browser interface to ob status.
if (b) {
Fill();
TIter next(&fEntries);
TObject *obj = 0;
TObject *bobj = 0;
while ((obj = next())) {
b->Add(obj);
if (!(bobj = fBrowserObjects.FindObject(obj->GetName()))) {
b->Add(obj, obj->GetName());
fBrowserObjects.Add(new TObjString(obj->GetName()), (TObject*) obj);
} else {
b->Add(bobj, bobj->GetName());
}
}
}
}
......@@ -100,6 +128,7 @@ void TAlienDirectory::Browse(TBrowser *b)
//______________________________________________________________________________
TAlienDirectory::~TAlienDirectory()
{
//destructor
// Destructor.
fEntries.Clear();
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment