41 if (evtsource==
fxSource)
return kTRUE;
79 gROOT->GetListOfCleanups()->
Add(
this);
87 gROOT->GetListOfCleanups()->
Add(
this);
98 gROOT->GetListOfCleanups()->Remove(
this);
113 if (pathname && (*pathname != 0))
119 if (!obj)
return nullptr;
124 if (canrename && (strcmp(obj->GetName(),slot->GetName()) != 0)) {
125 TNamed *n =
dynamic_cast<TNamed*
> (obj);
126 if (n) n->SetName(slot->GetName());
137 AddDir(pathname, TFile::Open(filename), kTRUE, kTRUE);
144 for (
int n = slot->
NumChilds() - 1; n >= 0; n--) {
158 const char *name = (dir->InheritsFrom(TFile::Class())) ?
159 gSystem->BaseName(dir->GetName()) : dir->GetName();
201 TString name(pathname);
202 if (name.Length()>0) name+=
"/root";
206 slot->SetTitle(
"ROOT folders");
228 return !slot ? nullptr : slot->
GetProxy();
234 if (!folder)
return nullptr;
236 return new TGo4Slot(folder, name, title);
242 extraname.Form(
"%s_v%d", name, cycle++);
243 }
while (folder->
FindChild(extraname.Data()));
245 return new TGo4Slot(folder, extraname.Data(), title);
251 if (!source)
return nullptr;
258 for (Int_t indx =
fLinks.GetLast(); indx >= 0; indx--) {
263 TString namesrc, nametgt;
273 if (!source)
return nullptr;
293 return linkcont ? linkcont->
GetLink() :
nullptr;
309 Bool_t docompress = kFALSE;
310 for (Int_t n = 0; n <=
fLinks.GetLast(); n++) {
326 for (Int_t indx =
fLinks.GetLast(); indx >= 0; indx--) {
334 Info(
"RetranslateEvent",
"src = %p %s tgt = %p %s id = %d", source, source->
GetFullName().Data(), target, target->
GetFullName().Data(),
id);
336 target->
Event(source,
id, param);
344 Info(
"Event",
"src %s id %d", source->
GetFullName().Data(),
id);
358 Bool_t usefile = (f !=
nullptr);
360 TDirectory *olddir = gDirectory;
362 TDirectory *curdir = f;
364 if (!startslot) startslot =
this;
368 bool isxml = f && f->InheritsFrom(
"TXMLFile");
370 while (iter.
next()) {
372 if (usefile && !isxml) {
375 while ((levelchange++<0) && curdir) {
376 curdir =
dynamic_cast<TDirectory *
> (curdir->GetMother());
381 curdir = curdir->mkdir(iter.
getname(),
"subdirectory");
391 if (olddir) olddir->cd();
396 Bool_t usefile = (f !=
nullptr);
398 TDirectory *olddir = gDirectory;
400 TDirectory *curdir = f;
404 while (iter.
next()) {
407 while ((levelchange++<0) && curdir)
408 curdir =
dynamic_cast<TDirectory *
> (curdir->GetMother());
411 curdir->GetObject(iter.
getname(), curdir);
420 if (olddir) olddir->cd();
427 obj->SetBit(kMustCleanup);
432 Bool_t compress = kFALSE;
433 for (
int indx =
fCleanups.GetLast(); indx >= 0; indx--) {
435 if (entry->
GetSlot()!=slot)
continue;
436 if (!obj || (entry->
GetObject() == obj)) {
448 if (!obj || (obj ==
this))
return;
450 Bool_t compress = kFALSE;
451 for (
int indx =
fCleanups.GetLast(); indx >= 0; indx--) {
453 if (!entry)
continue;
471 while (iter.
next()) {
472 printf(
"%*c%s\n", (iter.
level()+1)*2,
' ', iter.
getname());
482 while (iter.
next()) cnt++;
489 if (slot)
delete slot;
498 if (!tgtslot)
return 0;
501 if (!proxy)
return 0;
503 TClass *cl = proxy->GetObjectClass();
508 Int_t res = proxy->AssignObjectTo(
this, targetslot);
511 proxy.reset(
nullptr);
515 if ((res==2) && (waittime_millisec>0)) {
517 gSystem->ProcessEvents();
519 while ((tgtslot->
GetAssignFlag()<0) && (waittime_millisec>0)) {
521 waittime_millisec-=10;
522 gSystem->ProcessEvents();
static TFolder * LocateROOTFolder(const char *rootfolder)
Bool_t next(Bool_t goesinto=kTRUE)
TGo4Slot * getslot() const
Int_t levelchange() const
TGo4Slot * GetLink() const
TGo4ObjManCleanup(TObject *obj, TGo4Slot *slot)
TGo4Slot * GetSlot() const
TObject * GetObject() const
Bool_t CheckEventSource(const TGo4Slot *evtsource)
TGo4Slot * GetSource() const
TGo4ObjManLink(TGo4Slot *source, TGo4Slot *target, Bool_t expandchilds)
TGo4Slot * GetTarget() const
Bool_t DoChildsExpand() const
void AddROOTFolder(const char *pathname, const char *foldername)
TGo4Slot * Add(const char *pathname, TObject *obj, Bool_t owner=kFALSE, Bool_t canrename=kFALSE)
void AddFile(const char *pathname, const char *filename)
void UnregisterLink(TGo4Slot *target)
void AddDir(const char *pathname, TDirectory *dir, Bool_t owner=kFALSE, Bool_t readright=kFALSE)
void RegisterObjectWith(TObject *obj, TGo4Slot *slot)
void Event(TGo4Slot *source, Int_t id, void *param=nullptr) override
void AddProxy(const char *pathname, TGo4Proxy *cont, const char *name, const char *title="title")
void CloseFiles(const char *pathname)
void ReadDataFromFile(TFile *f)
void RetranslateEvent(TGo4Slot *source, Int_t id, void *param=nullptr)
void AddFolder(const char *pathname, TFolder *folder, Bool_t owner=kFALSE)
virtual Bool_t AssignObject(const char *path, TObject *obj, Bool_t ownership)
TGo4Slot * MakeObjSlot(const char *foldername, const char *name=nullptr, const char *title=nullptr)
void UnregisterObject(TObject *obj, TGo4Slot *slot)
void AddTree(const char *pathname, TTree *tree, Bool_t owner=kFALSE)
void ProduceFullName(TString &name, TGo4Slot *toparent=nullptr) override
TGo4ObjectManager * GetOM() const override
void AddROOTFolders(const char *pathname, Bool_t selected=kTRUE)
void RemoveFromLinks(const TGo4Slot *slot)
void SaveDataToFile(TFile *f, Bool_t onlyobjs=kFALSE, TGo4Slot *startslot=nullptr)
TObjArray fCleanups
list of links between slots
void RegisterLink(TGo4Slot *source, TGo4Slot *target, Bool_t exapndchilds=kFALSE)
Int_t RequestObject(const char *source, const char *targetslot, Int_t waittime_millisec=0)
TGo4Slot * AddLink(TGo4Slot *source, const char *pathname, const char *linkname, const char *linktitle)
TGo4Slot * GetLinked(TGo4Slot *link)
void RecursiveRemove(TObject *obj) override
void DeleteSlot(const char *pathname)
virtual ~TGo4ObjectManager()
void MakeFolder(const char *pathname)
TString GetFullName(TGo4Slot *toparent=nullptr)
Bool_t IsParent(const TGo4Slot *slot) const
TGo4Proxy * GetProxy() const
void SetProxy(TGo4Proxy *cont)
TGo4Slot * GetSlot(const char *name, Bool_t force=kFALSE)
void SaveData(TDirectory *dir, Bool_t onlyobjs=kFALSE)
TGo4Slot * FindChild(const char *name) const
void ForwardEvent(TGo4Slot *source, Int_t id, void *param=nullptr)
void RecursiveRemove(TObject *obj) override
std::unique_ptr< TGo4Access > ProvideSlotAccess(const char *name)
virtual void ProduceFullName(TString &name, TGo4Slot *toparent=nullptr)
Bool_t AssignObject(TObject *obj, Bool_t owner)
void DeleteChilds(const char *startedwith=nullptr)
void ReadData(TDirectory *dir)
TGo4Slot * GetChild(Int_t n) const
virtual void Event(TGo4Slot *source, Int_t id, void *param=nullptr)
Int_t GetAssignFlag() const