GSI Object Oriented Online Offline (Go4)  GO4-6.3.0
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 
23 #include "TGo4TreeHistogramEntry.h"
24 #include "TGo4HistogramEntry.h"
25 #include "TGo4Condition.h"
26 #include "TGo4Slot.h"
27 #include "TGo4BrowserProxy.h"
28 #include "TGo4AnalysisProxy.h"
29 
30 TGo4EditDynEntry::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;
66  ResetWidget();
67 }
68 
69 bool 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 
79 void 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 
93 void TGo4EditDynEntry::linkedObjectUpdated(const char *linkname, TObject *obj)
94 {
95  if (strcmp(linkname, "Entry") == 0)
96  SetPleaseUpdate(false);
97 
98  RefreshWidget();
99 }
100 
102 {
103  auto entry = GetLinkedCast<TGo4DynamicEntry>("Entry");
104 
105  TGo4BrowserProxy *br = Browser();
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 
203 QString 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 
214 QString 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 
221 void 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);
257  RefreshWidget();
258 
259  SetPleaseUpdate(false);
260  parentWidget()->adjustSize();
261  parentWidget()->setFocus();
262 }
263 
264 void 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 
283 void 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 
297 void 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);
333  RefreshWidget();
334 }
335 
337 {
338  if (!PrepareEntryForAnalysis()) return;
339 
340  if (UpdateItemInAnalysis(GetLinkedName("Entry"))) {
341  SetPleaseUpdate(false);
342  RefreshWidget();
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 
369 {
370  ProcessDropEvent(EvXnameEdit);
371 }
372 
374 {
375  ProcessDropEvent(EvYnameEdit);
376 }
377 
379 {
380  ProcessDropEvent(EvZnameEdit);
381 }
382 
384 {
385  ProcessDropEvent(ConXnameEdit);
386 }
387 
389 {
390  ProcessDropEvent(ConYnameEdit);
391 }
392 
394 {
395  ProcessTreeDropEvent(DrawExprEdit);
396 }
397 
399 {
400  ProcessTreeDropEvent(CutExprEdit);
401 }
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 
435  TGo4BrowserProxy *br = Browser();
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 
456 {
457  AskToCreateObject(TH1::Class(), 1);
458 }
459 
460 
462 {
463  ShowItemInfo(HistoNameLbl->text());
464 }
465 
467 {
468  AskToCreateObject(TGo4Condition::Class(), 1);
469 }
470 
472 {
473  EditItem(CondNameLbl->text());
474 }
475 
476 void 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 
530 void TGo4EditDynEntry::EvXnameEdit_textChanged( const QString & xname)
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 
540 void TGo4EditDynEntry::EvYnameEdit_textChanged( const QString & yname)
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 
550 void TGo4EditDynEntry::EvZnameEdit_textChanged( const QString & zname)
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 
560 void TGo4EditDynEntry::ConXnameEdit_textChanged( const QString & xname)
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 
570 void TGo4EditDynEntry::ConYnameEdit_textChanged( const QString & yname)
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 
580 void TGo4EditDynEntry::DrawExprEdit_textChanged( const QString & value)
581 {
582  auto tentry = GetLinkedCast<TGo4TreeHistogramEntry>("Entry");
583  if (!tentry || !fbTypingMode) return;
584  tentry->SetVarExp(value.toLatin1().constData());
585 }
586 
587 void TGo4EditDynEntry::CutExprEdit_textChanged( const QString & value)
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());
613  if (GetLinkedCast<TGo4TreeHistogramEntry>("Entry"))
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 
629 {
630  DropCondition("");
631 }
virtual void ResetWidget()
Definition: QGo4Widget.cpp:52
bool IsAcceptDrag(const char *itemname, TClass *cl, int kind) override
virtual void EvXnameEdit_textChanged(const QString &xname)
virtual QString GetEventName(const QString &itemname)
virtual void PrintDynList()
const char * GetConEventName(Int_t ix) const
virtual void WorkWithEntry(const char *itemname)
const char * GetTreeName() const
virtual void ConInfoButton_clicked()
TObject * GetBrowserObject(const char *name, Int_t update=0)
virtual void EvZnameEdit_textChanged(const QString &zname)
Int_t ItemKind(const char *name)
bool SaveItemToFile(const char *itemname, const char *subfolder=nullptr)
Definition: QGo4Widget.cpp:368
const char * GetHistEventName(Int_t ix) const
bool UpdateItemInAnalysis(const char *itemname, TObject *obj=nullptr)
Definition: QGo4Widget.cpp:379
const char * GetConVarName(Int_t ix) const
void SetConditionName(const char *name)
virtual void DynIntervalSpin_valueChanged(int value)
void SetTreeName(const char *name)
virtual void EvZnameEdit_dropped()
void linkedObjectUpdated(const char *linkname, TObject *obj) override
virtual bool PrepareEntryForAnalysis()
void SetHistogramName(const char *name)
const char * GetLinkedName(const char *linkname)
Definition: QGo4Widget.cpp:153
TGo4ViewPanel * DrawItem(const QString &itemname, TGo4ViewPanel *panel=nullptr, TPad *pad=nullptr, bool activate=true, int updatelevel=-1)
Definition: QGo4Widget.cpp:305
virtual void DrawExprEdit_textChanged(const QString &value)
virtual void ProcessTreeDropEvent(QGo4LineEdit *edt)
const char * GetHistogramName() const
TGo4BrowserProxy * Browser()
Definition: QGo4Widget.cpp:219
void EditItem(const QString &itemname)
Definition: QGo4Widget.cpp:345
virtual void CutExprEdit_dropped()
virtual void ClearAnalysisObject(const char *fullpath)
TObject * GetLinked(const char *linkname, int updatelevel=0)
Definition: QGo4Widget.cpp:172
TGo4EditDynEntry(QWidget *parent=nullptr, const char *name=nullptr)
void ResetWidget() override
virtual void RefreshClicked()
virtual void SetPleaseUpdate(bool on)
virtual void ApplyClicked()
bool BrowserItemRemote(const char *itemname)
Definition: QGo4Widget.cpp:212
virtual void EvXnameEdit_dropped()
virtual void PrintDynListEntry(const char *fullpath)
void ShowItemInfo(const QString &itemname)
Definition: QGo4Widget.cpp:292
virtual void ExecuteLine(const char *line)
virtual void DropTree(const char *itemname)
virtual void HisCreateButton_clicked()
void requestedObjectCreated(const char *itemname, TClass *cl) override
virtual void ConYnameEdit_textChanged(const QString &yname)
virtual void EvYnameEdit_textChanged(const QString &yname)
virtual void SaveEntrySlot()
virtual void DropHistogram(const char *itemname)
void textDropped()
void SetHistogramName(const char *name)
virtual void DropCondition(const char *itemname)
virtual void ProcessDropEvent(QGo4LineEdit *edt)
virtual void EntryEnabledButton_toggled(bool on)
virtual void ConRemoveButton_clicked()
Bool_t DefineTreeName(const char *itemname, TString &treename)
virtual void ConNewButton_clicked()
virtual void ConXnameEdit_dropped()
static void ProduceFolderAndName(const char *fullname, TString &foldername, TString &objectname)
Definition: TGo4Slot.cxx:646
void AskToCreateObject(TClass *cl, int isremote)
Definition: QGo4Widget.cpp:275
virtual void ClearHistogramClicked()
void DropItem(const char *itemname, TClass *cl, int kind) override
virtual void RefreshWidget()
virtual void EvYnameEdit_dropped()
virtual QString GetEventMember(const QString &itemname)
const char * GetConditionName() const
const char * GetCutExp() const
TGo4ServerProxy * DefineAnalysisObject(const char *itemname, TString &analysisname)
void AddLink(const char *itemname, const char *linkname)
Definition: QGo4Widget.cpp:117
virtual void DrawButton_clicked()
const char * GetVarExp() const
virtual void HisInfoButton_clicked()
virtual void DrawExprEdit_dropped()
virtual void ConXnameEdit_textChanged(const QString &xname)
virtual void ConYnameEdit_dropped()
virtual void CutExprEdit_textChanged(const QString &value)
const char * GetHistVarName(Int_t ix) const
const char * GetHistogramName() const
void CloseMDIParentSlot()
Definition: QGo4Widget.cpp:79
virtual void EntryChangedSlot()