GSI Object Oriented Online Offline (Go4) GO4-6.4.0
Loading...
Searching...
No Matches
TGo4EditDynEntry.cpp
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 "TGo4EditDynEntry.h"
15
16#include <QMessageBox>
17#include <QToolTip>
18
19#include "TClass.h"
20#include "TH1.h"
21#include "TTree.h"
22
24#include "TGo4HistogramEntry.h"
25#include "TGo4Condition.h"
26#include "TGo4Slot.h"
27#include "TGo4BrowserProxy.h"
28#include "TGo4AnalysisProxy.h"
29
30TGo4EditDynEntry::TGo4EditDynEntry(QWidget *parent, const char *name)
31 : QGo4Widget(parent, name)
32{
33 setupUi(this);
34
35 QObject::connect(ApplyButton, &QPushButton::clicked, this, &TGo4EditDynEntry::ApplyClicked);
36 QObject::connect(ClearButton, &QPushButton::clicked, this, &TGo4EditDynEntry::ClearHistogramClicked);
37 QObject::connect(PrintListButton, &QPushButton::clicked, this, &TGo4EditDynEntry::PrintDynList);
38 QObject::connect(RefreshButton, &QPushButton::clicked, this, &TGo4EditDynEntry::RefreshClicked);
39 QObject::connect(SaveEntry, &QPushButton::clicked, this, &TGo4EditDynEntry::SaveEntrySlot);
40 QObject::connect(CancelButton, &QPushButton::clicked, this, &TGo4EditDynEntry::CloseMDIParentSlot);
41 QObject::connect(EvXnameEdit, &QGo4LineEdit::textDropped, this, &TGo4EditDynEntry::EvXnameEdit_dropped);
42 QObject::connect(EvYnameEdit, &QGo4LineEdit::textDropped, this, &TGo4EditDynEntry::EvYnameEdit_dropped);
43 QObject::connect(EvZnameEdit, &QGo4LineEdit::textDropped, this, &TGo4EditDynEntry::EvZnameEdit_dropped);
44 QObject::connect(ConXnameEdit, &QGo4LineEdit::textDropped, this, &TGo4EditDynEntry::ConXnameEdit_dropped);
45 QObject::connect(ConYnameEdit, &QGo4LineEdit::textDropped, this, &TGo4EditDynEntry::ConYnameEdit_dropped);
46 QObject::connect(DrawExprEdit, &QGo4LineEdit::textDropped, this, &TGo4EditDynEntry::DrawExprEdit_dropped);
47 QObject::connect(CutExprEdit, &QGo4LineEdit::textDropped, this, &TGo4EditDynEntry::CutExprEdit_dropped);
48 QObject::connect(HisCreateButton, &QPushButton::clicked, this, &TGo4EditDynEntry::HisCreateButton_clicked);
49 QObject::connect(HisInfoButton, &QPushButton::clicked, this, &TGo4EditDynEntry::HisInfoButton_clicked);
50 QObject::connect(ConNewButton, &QPushButton::clicked, this, &TGo4EditDynEntry::ConNewButton_clicked);
51 QObject::connect(ConInfoButton, &QPushButton::clicked, this, &TGo4EditDynEntry::ConInfoButton_clicked);
52 QObject::connect(EntryEnabledButton, &QCheckBox::toggled, this, &TGo4EditDynEntry::EntryEnabledButton_toggled);
53 QObject::connect(EvXnameEdit, &QGo4LineEdit::textChanged, this, &TGo4EditDynEntry::EvXnameEdit_textChanged);
54 QObject::connect(EvYnameEdit, &QGo4LineEdit::textChanged, this, &TGo4EditDynEntry::EvYnameEdit_textChanged);
55 QObject::connect(EvZnameEdit, &QGo4LineEdit::textChanged, this, &TGo4EditDynEntry::EvZnameEdit_textChanged);
56 QObject::connect(ConXnameEdit, &QGo4LineEdit::textChanged, this, &TGo4EditDynEntry::ConXnameEdit_textChanged);
57 QObject::connect(ConYnameEdit, &QGo4LineEdit::textChanged, this, &TGo4EditDynEntry::ConYnameEdit_textChanged);
58 QObject::connect(DrawExprEdit, &QGo4LineEdit::textChanged, this, &TGo4EditDynEntry::DrawExprEdit_textChanged);
59 QObject::connect(CutExprEdit, &QGo4LineEdit::textChanged, this, &TGo4EditDynEntry::CutExprEdit_textChanged);
60 QObject::connect(DynIntervalSpin, QOverload<int>::of(&QSpinBox::valueChanged), this, &TGo4EditDynEntry::DynIntervalSpin_valueChanged);
61 QObject::connect(DrawButton, &QPushButton::clicked, this, &TGo4EditDynEntry::DrawButton_clicked);
62 QObject::connect(ConRemoveButton, &QPushButton::clicked, this, &TGo4EditDynEntry::ConRemoveButton_clicked);
63
64 fbTypingMode = true;
67}
68
69bool TGo4EditDynEntry::IsAcceptDrag(const char *itemname, TClass *cl, int kind)
70{
71 if (!cl) return false;
72
73 return cl->InheritsFrom(TGo4DynamicEntry::Class()) ||
74 cl->InheritsFrom(TH1::Class()) ||
75 cl->InheritsFrom(TTree::Class()) ||
76 cl->InheritsFrom(TGo4Condition::Class());
77}
78
79void TGo4EditDynEntry::DropItem(const char *itemname, TClass *cl, int kind)
80{
81 if (!cl) return;
82
83 if (cl->InheritsFrom(TGo4DynamicEntry::Class()))
84 WorkWithEntry(itemname);
85 else if (cl->InheritsFrom(TH1::Class()))
86 DropHistogram(itemname);
87 else if (cl->InheritsFrom(TGo4Condition::Class()))
88 DropCondition(itemname);
89 else if (cl->InheritsFrom(TTree::Class()))
90 DropTree(itemname);
91}
92
93void TGo4EditDynEntry::linkedObjectUpdated(const char *linkname, TObject *obj)
94{
95 if (strcmp(linkname, "Entry") == 0)
96 SetPleaseUpdate(false);
97
99}
100
102{
103 auto entry = GetLinkedCast<TGo4DynamicEntry>("Entry");
104
106
107 if (!entry || !br) return;
108
110
111 fbTypingMode = false;
112
113 EntryBox->setTitle(QString("Entry: ") + entry->ClassName());
114 EntryEnabledButton->setChecked(entry->IsEnabledProcessing());
115
116 EntryBox->setEnabled(true);
117 HistogramBox->setEnabled(true);
118 EntryTabs->setEnabled(true);
119
120 TGo4HistogramEntry* hentry = dynamic_cast<TGo4HistogramEntry*> (entry);
121 TGo4TreeHistogramEntry* tentry = dynamic_cast<TGo4TreeHistogramEntry*> (entry);
122
123 const char *entryitem = GetLinkedName("Entry");
124
125 if (hentry) {
127
128 EntryTabs->setTabEnabled(EntryTabs->indexOf(EventTab), true);
129 EntryTabs->setTabEnabled(EntryTabs->indexOf(ConditionTab), true);
130 EntryTabs->setTabEnabled(EntryTabs->indexOf(TreeTab), false);
131 EntryTabs->setCurrentIndex(EntryTabs->indexOf(EventTab));
132
133 TString hitemname;
134 if (!br->DefineRelatedObject(entryitem,
135 hentry->GetHistogramName(), hitemname))
136 hitemname = hentry->GetHistogramName();
137 HistoNameLbl->setText(hitemname.Data());
138 DrawButton->setVisible(hitemname.Length()>0);
139 ClearButton->setVisible(hitemname.Length()>0);
140
141 QString fname = hentry->GetHistEventName(0);
142 if (fname.length()>0) fname += "/";
143 fname += hentry->GetHistVarName(0);
144 EvXnameEdit->setText(fname);
145
146 fname = hentry->GetHistEventName(1);
147 if (fname.length()>0) fname += "/";
148 fname += hentry->GetHistVarName(1);
149 EvYnameEdit->setText(fname);
150
151 fname = hentry->GetHistEventName(2);
152 if (fname.length()>0) fname += "/";
153 fname += hentry->GetHistVarName(2);
154 EvZnameEdit->setText(fname);
155
156 TString citemname;
157 if (!br->DefineRelatedObject(entryitem,
158 hentry->GetConditionName(), citemname))
159 citemname = hentry->GetConditionName();
160 CondNameLbl->setText(citemname.Data());
161
162 fname = hentry->GetConEventName(0);
163 if (fname.length()>0) fname += "/";
164 fname += hentry->GetConVarName(0);
165 ConXnameEdit->setText(fname);
166
167 fname = hentry->GetConEventName(1);
168 if (fname.length()>0) fname += "/";
169 fname += hentry->GetConVarName(1);
170 ConYnameEdit->setText(fname);
171
172 } else if (tentry) {
173
175
176 EntryTabs->setTabEnabled(EntryTabs->indexOf(EventTab), false);
177 EntryTabs->setTabEnabled(EntryTabs->indexOf(ConditionTab), false);
178 EntryTabs->setTabEnabled(EntryTabs->indexOf(TreeTab), true);
179 EntryTabs->setCurrentIndex(EntryTabs->indexOf(TreeTab));
180
181 TString hitemname;
182 if (!br->DefineRelatedObject(entryitem,
183 tentry->GetHistogramName(), hitemname))
184 hitemname = tentry->GetHistogramName();
185 HistoNameLbl->setText(hitemname.Data());
186 DrawButton->setVisible(hitemname.Length()>0);
187 ClearButton->setVisible(hitemname.Length()>0);
188
189 TString titemname;
190 if (!br->DefineRelatedObject(entryitem,
191 tentry->GetTreeName(), titemname))
192 titemname = tentry->GetTreeName();
193 TreeNameLbl->setText(titemname.Data());
194
195 DrawExprEdit->setText(tentry->GetVarExp());
196 CutExprEdit->setText(tentry->GetCutExp());
197 DynIntervalSpin->setValue(tentry->GetDynListInterval());
198 }
199
200 fbTypingMode = true;
201}
202
203QString TGo4EditDynEntry::GetEventName(const QString& itemname)
204{
205 TString folder, name;
206 TGo4Slot::ProduceFolderAndName(itemname.toLatin1().constData(), folder, name);
207// SL 2.12.2011 Disable this code while it was used to remove parent class names from event name
208// now parent class names could remain while in case of composite event it may be important information
209// int pos = folder.Index("/");
210// if (pos>0) folder.Resize(pos);
211 return QString(folder.Data());
212}
213
214QString TGo4EditDynEntry::GetEventMember(const QString& itemname)
215{
216 TString folder, name;
217 TGo4Slot::ProduceFolderAndName(itemname.toLatin1().constData(), folder, name);
218 return QString(name.Data());
219}
220
221void TGo4EditDynEntry::WorkWithEntry(const char *itemname)
222{
223 auto entry = GetLinkedCast<TGo4DynamicEntry>("Entry");
224
225 const char *oldname = GetLinkedName("Entry");
226
227 if (entry && oldname && PleaseUpdateLabel->isVisible()) {
228
229 QMessageBox msgBox(QMessageBox::Question, "Dynamic list entry editor",
230 QString("Current entry %1 is modified!\nNew entry %2 is selected.").arg(oldname).arg(itemname));
231
232 auto btnContinue = msgBox.addButton("Continue with current", QMessageBox::ActionRole);
233 /* auto btnNew = */ msgBox.addButton("Start with new", QMessageBox::ActionRole);
234 msgBox.setDefaultButton(btnContinue);
235
236 msgBox.exec();
237 if (msgBox.clickedButton() == btnContinue)
238 return;
239 }
240
241 ResetWidget();
242
243 AddLink(itemname, "Entry");
244
245 EntryNameLbl->setText(itemname);
246
247 QString iconname = ":/icons/right.png";
248 QString tooltip = "Refresh dynamic entry from analysis";
249 if (!BrowserItemRemote(itemname)) {
250 iconname = ":/icons/refresh.png";
251 tooltip = "Refresh dynamic entry from source";
252 }
253 RefreshButton->setIcon( QIcon(iconname) );
254 RefreshButton->setToolTip(tooltip);
255
256 GetLinked("Entry", 2);
258
259 SetPleaseUpdate(false);
260 parentWidget()->adjustSize();
261 parentWidget()->setFocus();
262}
263
264void TGo4EditDynEntry::DropHistogram(const char *itemname)
265{
266 if (!itemname) return;
267
269
270 HistoNameLbl->setText(itemname);
271 DrawButton->setVisible(true);
272 ClearButton->setVisible(true);
273
274 auto entry = GetLinkedCast<TGo4DynamicEntry>("Entry");
275 TGo4HistogramEntry* hentry = dynamic_cast<TGo4HistogramEntry*> (entry);
276 TGo4TreeHistogramEntry* tentry = dynamic_cast<TGo4TreeHistogramEntry*> (entry);
277 if (hentry)
278 hentry->SetHistogramName(itemname);
279 if (tentry)
280 tentry->SetHistogramName(itemname);
281}
282
283void TGo4EditDynEntry::DropCondition(const char *itemname)
284{
285 if (fiSelectedType != entry_Histogram) return;
286
288
289 CondNameLbl->setText(itemname);
290
291 EntryTabs->setCurrentIndex(EntryTabs->indexOf(ConditionTab));
292 auto hentry = GetLinkedCast<TGo4HistogramEntry>("Entry");
293 if (hentry)
294 hentry->SetConditionName(itemname);
295}
296
297void TGo4EditDynEntry::DropTree(const char *itemname)
298{
299 if (fiSelectedType != entry_Tree) return;
300
302
303 TreeNameLbl->setText(itemname);
304
305 auto tentry = GetLinkedCast<TGo4TreeHistogramEntry>("Entry");
306 if (tentry)
307 tentry->SetTreeName(itemname);
308}
309
311{
313
315
316 EntryNameLbl->setText("");
317 EntryBox->setTitle(QString("Entry: "));
318
319 EntryBox->setEnabled(false);
320 HistogramBox->setEnabled(false);
321 EntryTabs->setEnabled(false);
322
323 DrawButton->setVisible(false);
324
325 RefreshButton->setIcon( QIcon(":/icons/right.png" ) );
326
327 SetPleaseUpdate(false);
328}
329
331{
332 GetLinked("Entry", 2);
334}
335
337{
338 if (!PrepareEntryForAnalysis()) return;
339
340 if (UpdateItemInAnalysis(GetLinkedName("Entry"))) {
341 SetPleaseUpdate(false);
343 }
344}
345
347{
348 PleaseUpdateLabel->setVisible(on);
349 ensurePolished();
350 update();
351 show();
352}
353
355{
356 if(!PleaseUpdateLabel->isVisible())
357 SetPleaseUpdate(true);
358}
359
361{
362 if (!PrepareEntryForAnalysis()) return;
363
364 if (SaveItemToFile(GetLinkedName("Entry"), "DynamicLists"))
365 SetPleaseUpdate(false);
366}
367
372
377
382
387
392
397
402
404{
405 if (!edt || !Browser()) return;
406
407 QString value = edt->text();
408
410
411 Int_t kind = Browser()->ItemKind(value.toLatin1().constData());
412 if (kind!=TGo4Access::kndDataMember) {
413 edt->setText("");
414 return;
415 }
416
417 QString serachfor("EventObjects/Events/");
418 int pos = value.indexOf(serachfor);
419 if (pos < 0) {
420 edt->setText("");
421 return;
422 }
423
424 value.remove(0, pos+serachfor.length());
425
426 edt->setText(value);
427}
428
430{
431 if (!edt || !Browser()) return;
432
433 QString value = edt->text();
434
436
438
439 int kind = br->ItemKind(value.toLatin1().constData());
440 if (kind!=TGo4Access::kndTreeLeaf) {
441 edt->setText("");
442 return;
443 }
444
445 TString treename;
446 if (br->DefineTreeName(value.toLatin1().constData(), treename))
447 DropTree(treename.Data());
448
449 TString lfolder, lname;
450 TGo4Slot::ProduceFolderAndName(value.toLatin1().constData(), lfolder, lname);
451 edt->setText(lname.Data());
452}
453
454
459
460
462{
463 ShowItemInfo(HistoNameLbl->text());
464}
465
467{
468 AskToCreateObject(TGo4Condition::Class(), 1);
469}
470
472{
473 EditItem(CondNameLbl->text());
474}
475
476void TGo4EditDynEntry::requestedObjectCreated(const char *itemname, TClass *cl)
477{
478 if (!cl || (fiSelectedType==entry_None)) return;
479 if (cl->InheritsFrom(TH1::Class()))
480 DropHistogram(itemname);
481 else
482 if (cl->InheritsFrom(TGo4Condition::Class()))
483 DropCondition(itemname);
484}
485
487{
488 auto entry = GetLinkedCast<TGo4DynamicEntry>("Entry");
489
490 if (!entry) return false;
491
492 TGo4HistogramEntry* hentry = dynamic_cast<TGo4HistogramEntry*> (entry);
493 TGo4TreeHistogramEntry* tentry = dynamic_cast<TGo4TreeHistogramEntry*> (entry);
494
495 if (hentry) {
496 TString folder, name;
497
498 TGo4Slot::ProduceFolderAndName(hentry->GetHistogramName(), folder, name);
499 hentry->SetHistogramName(name.Data());
500
501 TGo4Slot::ProduceFolderAndName(hentry->GetConditionName(), folder, name);
502 hentry->SetConditionName(name.Data());
503
504 return true;
505 }
506
507 if (tentry) {
508 TString folder, name;
509
510 TGo4Slot::ProduceFolderAndName(tentry->GetHistogramName(), folder, name);
511 tentry->SetHistogramName(name.Data());
512
513 TGo4Slot::ProduceFolderAndName(tentry->GetTreeName(), folder, name);
514 tentry->SetTreeName(name.Data());
515 return true;
516 }
517
518 return false;
519}
520
521
523{
524 auto entry = GetLinkedCast<TGo4DynamicEntry>("Entry");
525 if (!entry || !fbTypingMode) return;
526 entry->EnableProcessing(on);
528}
529
531{
532 auto hentry = GetLinkedCast<TGo4HistogramEntry>("Entry");
533 if (!hentry || !fbTypingMode) return;
534
535 hentry->SetHisEventName(0, GetEventName(xname).toLatin1().constData());
536 hentry->SetHisVarName(0, GetEventMember(xname).toLatin1().constData());
537}
538
539
541{
542 auto hentry = GetLinkedCast<TGo4HistogramEntry>("Entry");
543 if (!hentry || !fbTypingMode) return;
544
545 hentry->SetHisEventName(1, GetEventName(yname).toLatin1().constData());
546 hentry->SetHisVarName(1, GetEventMember(yname).toLatin1().constData());
547}
548
549
551{
552 auto hentry = GetLinkedCast<TGo4HistogramEntry>("Entry");
553 if (!hentry || !fbTypingMode) return;
554
555 hentry->SetHisEventName(2, GetEventName(zname).toLatin1().constData());
556 hentry->SetHisVarName(2, GetEventMember(zname).toLatin1().constData());
557}
558
559
561{
562 auto hentry = GetLinkedCast<TGo4HistogramEntry>("Entry");
563 if (!hentry || !fbTypingMode) return;
564
565 hentry->SetConEventName(0, GetEventName(xname).toLatin1().constData());
566 hentry->SetConVarName(0, GetEventMember(xname).toLatin1().constData());
567}
568
569
571{
572 auto hentry = GetLinkedCast<TGo4HistogramEntry>("Entry");
573 if (!hentry || !fbTypingMode) return;
574
575 hentry->SetConEventName(1, GetEventName(yname).toLatin1().constData());
576 hentry->SetConVarName(1, GetEventMember(yname).toLatin1().constData());
577}
578
579
581{
582 auto tentry = GetLinkedCast<TGo4TreeHistogramEntry>("Entry");
583 if (!tentry || !fbTypingMode) return;
584 tentry->SetVarExp(value.toLatin1().constData());
585}
586
588{
589 auto tentry = GetLinkedCast<TGo4TreeHistogramEntry>("Entry");
590 if (!tentry || !fbTypingMode) return;
591 tentry->SetCutExp(value.toLatin1().constData());
592}
593
595{
596 auto tentry = GetLinkedCast<TGo4TreeHistogramEntry>("Entry");
597 if (!tentry || !fbTypingMode) return;
598 tentry->SetDynListInterval(value);
599}
600
601
603{
604 DrawItem(HistoNameLbl->text());
605}
606
608{
609 TString objname;
610 TGo4ServerProxy *an = Browser()->DefineAnalysisObject(HistoNameLbl->text().toLatin1().constData(), objname);
611 if (an) {
612 an->ClearAnalysisObject(objname.Data());
614 an->ExecuteLine("@ResetBackStores();");
615 Browser()->GetBrowserObject(HistoNameLbl->text().toLatin1().constData(), 2);
616 }
617}
618
620{
621 TString objname;
622 TGo4ServerProxy *an = Browser()->DefineAnalysisObject(GetLinkedName("Entry"), objname);
623
624 if (an)
625 an->PrintDynListEntry(objname.Data());
626}
627
void textDropped()
T * GetLinkedCast(const char *linkname, int updatelevel=0)
Definition QGo4Widget.h:157
void ShowItemInfo(const QString &itemname)
bool SaveItemToFile(const char *itemname, const char *subfolder=nullptr)
TObject * GetLinked(const char *linkname, int updatelevel=0)
const char * GetLinkedName(const char *linkname)
returns name of item, which was linked with linkname
virtual void ResetWidget()
TGo4ViewPanel * DrawItem(const QString &itemname, TGo4ViewPanel *panel=nullptr, TPad *pad=nullptr, bool activate=true, int updatelevel=-1)
QGo4Widget(QWidget *parent=nullptr, const char *name=nullptr, Qt::WindowFlags f=Qt::Widget)
void AskToCreateObject(TClass *cl, int isremote)
Function call dialog to create object of appropriate class isremote == 0 - object should be created l...
void AddLink(const char *itemname, const char *linkname)
create link for item with name linkname
bool UpdateItemInAnalysis(const char *itemname, TObject *obj=nullptr)
void CloseMDIParentSlot()
bool BrowserItemRemote(const char *itemname)
TGo4BrowserProxy * Browser()
void EditItem(const QString &itemname)
@ kndDataMember
Definition TGo4Proxy.h:40
Bool_t DefineTreeName(const char *itemname, TString &treename)
TGo4ServerProxy * DefineAnalysisObject(const char *itemname, TString &analysisname)
TObject * GetBrowserObject(const char *name, Int_t update=0)
Int_t ItemKind(const char *name)
Bool_t DefineRelatedObject(const char *itemname, const char *objectname, TString &objectitem, Int_t mask=3)
virtual void CutExprEdit_dropped()
bool IsAcceptDrag(const char *itemname, TClass *cl, int kind) override
virtual void DrawExprEdit_textChanged(const QString &value)
virtual void ConNewButton_clicked()
virtual QString GetEventMember(const QString &itemname)
virtual void DrawButton_clicked()
virtual void ConYnameEdit_dropped()
virtual void DropCondition(const char *itemname)
virtual void ApplyClicked()
virtual void RefreshClicked()
void DropItem(const char *itemname, TClass *cl, int kind) override
virtual void ConYnameEdit_textChanged(const QString &yname)
virtual void EvYnameEdit_dropped()
virtual void ClearHistogramClicked()
virtual void EvZnameEdit_dropped()
virtual void HisInfoButton_clicked()
void requestedObjectCreated(const char *itemname, TClass *cl) override
virtual void ProcessDropEvent(QGo4LineEdit *edt)
virtual void HisCreateButton_clicked()
void linkedObjectUpdated(const char *linkname, TObject *obj) override
virtual void EvYnameEdit_textChanged(const QString &yname)
virtual void EvZnameEdit_textChanged(const QString &zname)
TGo4EditDynEntry(QWidget *parent=nullptr, const char *name=nullptr)
virtual void RefreshWidget()
virtual void EntryEnabledButton_toggled(bool on)
virtual void EvXnameEdit_textChanged(const QString &xname)
virtual void CutExprEdit_textChanged(const QString &value)
virtual void ConXnameEdit_dropped()
virtual void DropTree(const char *itemname)
virtual void DynIntervalSpin_valueChanged(int value)
virtual void DrawExprEdit_dropped()
void ResetWidget() override
virtual void EntryChangedSlot()
virtual void DropHistogram(const char *itemname)
virtual void ProcessTreeDropEvent(QGo4LineEdit *edt)
virtual void EvXnameEdit_dropped()
virtual void SaveEntrySlot()
virtual void PrintDynList()
virtual void WorkWithEntry(const char *itemname)
virtual void SetPleaseUpdate(bool on)
virtual void ConXnameEdit_textChanged(const QString &xname)
virtual void ConRemoveButton_clicked()
virtual void ConInfoButton_clicked()
virtual bool PrepareEntryForAnalysis()
virtual QString GetEventName(const QString &itemname)
Entry for the dynamic list, specialized for histogram like objects.
const char * GetConVarName(Int_t ix) const
void SetHistogramName(const char *name)
Set name of the external histogram to be filled.
const char * GetHistogramName() const
Get name of the external histogram to be filled.
const char * GetHistEventName(Int_t ix) const
void SetConditionName(const char *name)
Set name of the external condition to be referenced.
const char * GetConEventName(Int_t ix) const
const char * GetConditionName() const
const char * GetHistVarName(Int_t ix) const
special base class for remote data servers like DABC, HTTP, hist server
virtual void PrintDynListEntry(const char *fullpath)
virtual void ExecuteLine(const char *line)
virtual void ClearAnalysisObject(const char *fullpath)
static void ProduceFolderAndName(const char *fullname, TString &foldername, TString &objectname)
Definition TGo4Slot.cxx:646
Dynamic list entry which links a histogram to a certain tree.
const char * GetTreeName() const
const char * GetHistogramName() const
Get name of the external histogram to be filled.
const char * GetVarExp() const
void SetTreeName(const char *name)
const char * GetCutExp() const
void SetHistogramName(const char *name)
Set name of the external histogram to be filled.