GSI Object Oriented Online Offline (Go4)  GO4-6.3.0
TGo4BrowserItem.cxx
Go to the documentation of this file.
1 // $Id$
2 //-----------------------------------------------------------------------
3 // The GSI Online Offline Object Oriented (Go4) Project
4 // Experiment Data Processing at EE department, GSI
5 //-----------------------------------------------------------------------
6 // Copyright (C) 2000- GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
7 // Planckstr. 1, 64291 Darmstadt, Germany
8 // Contact: http://go4.gsi.de
9 //-----------------------------------------------------------------------
10 // This software can be used under the license agreements as stated
11 // in Go4License.txt file which is part of the distribution.
12 //-----------------------------------------------------------------------
13 
14 #include "TGo4BrowserItem.h"
15 
16 #include "TGo4BrowserProxy.h"
17 #include "TGo4RootBrowserProxy.h"
18 #include "TGo4Iter.h"
19 #include "TGo4Slot.h"
20 #include "TGo4ServerProxy.h"
21 
22 #include "TGo4Interface.h"
23 
25  TFolder(),
26  fParent(nullptr),
27  fIter(nullptr),
28  fItemClass(),
29  fIsFolder(kFALSE),
30  fBrowser(nullptr)
31 {
32 }
33 
34 TGo4BrowserItem::TGo4BrowserItem(const char *name, const char *title) :
35  TFolder(name, title),
36  fParent(nullptr),
37  fIter(nullptr),
38  fItemClass(),
39  fIsFolder(kTRUE),
40  fBrowser(nullptr)
41 {
42  SetOwner(kTRUE);
43 }
44 
46  const char *name, const char *title) :
47  TFolder(name, title),
48  fParent(parent),
49  fIter(nullptr),
50  fItemClass(),
51  fIsFolder(kTRUE),
52  fBrowser(nullptr)
53 {
54  SetOwner(kTRUE);
55  if (parent) {
56  TList *list = (TList *) parent->GetListOfFolders();
57  if (!previtem) list->AddFirst(this);
58  else list->AddAfter(previtem, this);
59  }
60 }
61 
63 {
64  if (fIter) delete fIter;
65 }
66 
68 {
69  fBrowser = br;
70  fRootBrowser = br2;
71 }
72 
74 {
75  if (fIter) delete fIter;
76  fIter = GetListOfFolders()->MakeIterator();
77  return (TGo4BrowserItem *) fIter->Next();
78 }
79 
81 {
82  if (!fIter) return nullptr;
83  TGo4BrowserItem *res = dynamic_cast<TGo4BrowserItem *> (fIter->Next());
84  if (!res) { delete fIter; fIter = nullptr; }
85  return res;
86 }
87 
89 {
90  if (!item) return;
91  Remove(item);
92  delete item;
93 }
94 
96 {
97  if (fIter) { delete fIter; fIter = nullptr; }
98  GetListOfFolders()->Delete();
99 }
100 
101 void TGo4BrowserItem::ProduceFullName(TString &fullname)
102 {
103  if (GetParent()) {
104  GetParent()->ProduceFullName(fullname);
105  if (fullname.Length()>0) fullname+="/";
106  fullname += GetName();
107  } else
108  fullname = "";
109 }
110 
112 {
113  TString res;
114  ProduceFullName(res);
115  return res;
116 }
117 
118 void TGo4BrowserItem::Browse(TBrowser *b)
119 {
120  if (IsFolder()) TFolder::Browse(b);
121 
122  DrawItem();
123 }
124 
126 {
127  TString itemname;
128 
129  ProduceFullName(itemname);
130 
131  fRootBrowser->DrawItem(itemname.Data());
132 }
133 
135 {
136  TString itemname;
137  ProduceFullName(itemname);
138  if (itemname.IsNull() || !fBrowser) return;
139 
140  fBrowser->ProduceExplicitCopy(itemname.Data(), nullptr, kTRUE);
141 }
142 
144 {
145  if (!GetParent()) {
147  return;
148  }
149 
150  TString itemname;
151  ProduceFullName(itemname);
152  if (itemname.IsNull() || !fBrowser) return;
153 
154  TGo4Slot *itemslot = fBrowser->ItemSlot(itemname.Data());
155  if (!itemslot) return;
156 
157  TGo4Slot *memslot = fBrowser->BrowserMemorySlot();
158 
159  if (fBrowser->IsCanDelete(itemslot) || itemslot->IsParent(memslot))
160  fBrowser->DeleteDataSource(itemslot);
161 }
162 
164 {
165  SetMonitorFlag(kTRUE);
166 }
167 
169 {
170  SetMonitorFlag(kFALSE);
171 }
172 
174 {
175  TString itemname;
176  ProduceFullName(itemname);
177  if (itemname.IsNull() || !fBrowser) return;
178 
179  TGo4Slot *itemslot = fBrowser->ItemSlot(itemname.Data());
180  if (!itemslot) return;
181  int kind = fBrowser->ItemKind(itemslot);
182 
183  if (kind==TGo4Access::kndFolder) {
184  TGo4Iter iter(itemslot, kTRUE);
185  while (iter.next()) {
186  TGo4Slot *subslot = iter.getslot();
187  if (fBrowser->ItemKind(subslot)==TGo4Access::kndObject)
188  fBrowser->SetItemMonitored(subslot, on);
189  }
190  } else
191  fBrowser->SetItemMonitored(itemslot, on);
192 }
193 
195 {
196  if (fBrowser)
197  fBrowser->ToggleMonitoring(sec*1000);
198 }
199 
201 {
203  if (anal)
204  anal->StartAnalysis();
205 }
206 
208 {
210  if (anal)
211  anal->StopAnalysis();
212 }
213 
214 
215 void TGo4BrowserItem::Delete(Option_t *option)
216 {
217  DeleteItem();
218 }
219 
220 void TGo4BrowserItem::SetName(const char *name)
221 {
222  TFolder::SetName(name);
223 }
224 
225 void TGo4BrowserItem::SetTitle(const char *title)
226 {
227  TFolder::SetTitle(title);
228 }
229 
230 void TGo4BrowserItem::ls(Option_t *option) const
231 {
232  TFolder::ls(option);
233 }
234 
235 void TGo4BrowserItem::SaveAs(const char *filename, Option_t *option) const
236 {
237  TFolder::SaveAs(filename, option);
238 }
239 
241 {
242  TFolder::DrawClass();
243 }
244 
245 TObject *TGo4BrowserItem::DrawClone(Option_t *option) const
246 {
247  return TFolder::DrawClone(option);
248 }
249 
251 {
252  TFolder::Dump();
253 }
254 
256 {
257  TFolder::Inspect();
258 }
259 
260 void TGo4BrowserItem::SetDrawOption(Option_t *option)
261 {
262  TFolder::SetDrawOption(option);
263 }
void DrawClass() const override
void Delete(Option_t *option="") override
void deleteChild(TGo4BrowserItem *item)
Bool_t IsFolder() const override
virtual void DrawItem()
void Inspect() const override
void SetDrawOption(Option_t *option="") override
Bool_t IsParent(const TGo4Slot *slot) const
Definition: TGo4Slot.cxx:178
TIterator * fIter
void SaveAs(const char *filename="", Option_t *option="") const override
virtual ~TGo4BrowserItem()
Int_t ItemKind(const char *name)
TGo4BrowserProxy * fBrowser
TGo4RootBrowserProxy * fRootBrowser
Bool_t DeleteDataSource(TGo4Slot *itemslot)
TGo4Slot * getslot() const
Definition: TGo4Iter.cxx:166
virtual void StartAnalysis()
virtual void StartAnalysis()
virtual void ToggleMonitoring(Int_t sec)
void ls(Option_t *option="*") const override
void SetMonitorFlag(Bool_t on)
virtual void StopAnalysis()
TGo4BrowserItem * fParent
TGo4BrowserItem * GetParent() const
Bool_t IsCanDelete(TGo4Slot *slot) const
virtual void SetMonitorOff()
void SetItemMonitored(TGo4Slot *slot, Bool_t on=kTRUE)
TGo4Slot * BrowserMemorySlot()
TGo4BrowserItem * nextChild()
void Dump() const override
void DrawItem(const char *itemname)
void SetTitle(const char *title="") override
virtual void SetMonitorOn()
void Browse(TBrowser *b) override
virtual void StopAnalysis()
virtual void CopyToWorkspace()
Bool_t ProduceExplicitCopy(const char *itemname, const char *tgtpath=nullptr, Bool_t forcerequest=kFALSE)
void SetBrowser(TGo4BrowserProxy *br, TGo4RootBrowserProxy *br2)
virtual void DeleteItem()
TObject * DrawClone(Option_t *option="") const override
TGo4ServerProxy * FindServer(const char *itemname=nullptr, Bool_t asanalysis=kTRUE)
TGo4Slot * ItemSlot(const char *itemname)
void ProduceFullName(TString &fullname)
void SetName(const char *name) override
void ToggleMonitoring(Int_t period)
Bool_t next(Bool_t goesinto=kTRUE)
Definition: TGo4Iter.cxx:44
TGo4BrowserItem * firstChild()