GSI Object Oriented Online Offline (Go4) GO4-6.4.0
Loading...
Searching...
No Matches
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"
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
34TGo4BrowserItem::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
66
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
101void 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
118void 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
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{
202 TGo4ServerProxy *anal = fBrowser->FindServer();
203 if (anal)
204 anal->StartAnalysis();
205}
206
208{
209 TGo4ServerProxy *anal = fBrowser->FindServer();
210 if (anal)
211 anal->StopAnalysis();
212}
213
214
215void TGo4BrowserItem::Delete(Option_t *option)
216{
217 DeleteItem();
218}
219
220void TGo4BrowserItem::SetName(const char *name)
221{
222 TFolder::SetName(name);
223}
224
225void TGo4BrowserItem::SetTitle(const char *title)
226{
227 TFolder::SetTitle(title);
228}
229
230void TGo4BrowserItem::ls(Option_t *option) const
231{
232 TFolder::ls(option);
233}
234
235void TGo4BrowserItem::SaveAs(const char *filename, Option_t *option) const
236{
237 TFolder::SaveAs(filename, option);
238}
239
241{
242 TFolder::DrawClass();
243}
244
245TObject *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
260void TGo4BrowserItem::SetDrawOption(Option_t *option)
261{
262 TFolder::SetDrawOption(option);
263}
static void DeleteInstance()
Delete instance of interface class.
void Dump() const override
Bool_t IsFolder() const override
void Browse(TBrowser *b) override
void Inspect() const override
TGo4BrowserItem * nextChild()
void SetTitle(const char *title="") override
virtual void SetMonitorOff()
virtual void SetMonitorOn()
void SetBrowser(TGo4BrowserProxy *br, TGo4RootBrowserProxy *br2)
void ProduceFullName(TString &fullname)
void SetMonitorFlag(Bool_t on)
void Delete(Option_t *option="") override
virtual void CopyToWorkspace()
TIterator * fIter
void deleteChild(TGo4BrowserItem *item)
TGo4BrowserItem * fParent
virtual void DrawItem()
void ls(Option_t *option="*") const override
virtual void StartAnalysis()
virtual void ToggleMonitoring(Int_t sec)
TGo4BrowserItem * GetParent() const
void SaveAs(const char *filename="", Option_t *option="") const override
virtual void StopAnalysis()
virtual void DeleteItem()
void SetDrawOption(Option_t *option="") override
TGo4BrowserProxy * fBrowser
TObject * DrawClone(Option_t *option="") const override
virtual ~TGo4BrowserItem()
void SetName(const char *name) override
TGo4RootBrowserProxy * fRootBrowser
TGo4BrowserItem * firstChild()
void DrawClass() const override
Bool_t next(Bool_t goesinto=kTRUE)
Definition TGo4Iter.cxx:44
TGo4Slot * getslot() const
Definition TGo4Iter.cxx:166
special base class for remote data servers like DABC, HTTP, hist server
virtual void StartAnalysis()
virtual void StopAnalysis()
Bool_t IsParent(const TGo4Slot *slot) const
Definition TGo4Slot.cxx:178