GSI Object Oriented Online Offline (Go4)  GO4-6.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
QGo4Widget.h
Go to the documentation of this file.
1 // $Id: QGo4Widget.h 2882 2020-06-09 08:58:34Z linev $
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 #ifndef QGO4WIDGET_H
15 #define QGO4WIDGET_H
16 
17 #include <QWidget>
18 #include <QIcon>
19 
20 class TObject;
21 class TClass;
22 class TPad;
23 class TGo4Slot;
24 class TGo4ViewPanel;
25 class TGo4BrowserProxy;
26 class TGo4ServerProxy;
27 class QMenu;
28 class QAction;
29 class QSignalMapper;
30 
31 #ifdef __GO4DESIGNER__
32 #include <QtDesigner/QDesignerExportWidget>
33 #define GO4_QWIDGET_EXPORT QDESIGNER_WIDGET_EXPORT
34 #else
35 #define GO4_QWIDGET_EXPORT
36 #endif
37 
38 class GO4_QWIDGET_EXPORT QGo4Widget : public QWidget {
39 
40  Q_OBJECT
41 
42  friend class TGo4MainWindow;
43 
44 private:
48  bool fBlockUpdate;
49 
51 
52  public:
53  enum { service_DragEnter = 1,
54  service_DropEvent = 2,
55  service_CreateItem = 3,
56  service_DrawItem = 4,
57  service_EditItem = 5,
58  service_ShowInfo = 6,
59  service_EditInSlot = 7,
60  service_SaveItem = 8,
61  service_UpdateAnalysisItem = 9,
62  service_StatusMessage = 15,
63  service_CreateViewPanel = 17,
64  service_BrowserItemRemote = 18,
65  service_Browser = 19,
66  service_SaveToMemory = 20,
67  service_GetAnalysis = 21,
68  service_AddEditorLink = 22,
69  service_AddDirectLink = 23,
70  service_AddLinkInSlot = 24,
71  service_GetTopSlot = 25,
72  service_AddEditorSlot = 26,
73  service_SetLinkedName = 27,
74  service_GetLinkedName = 28,
75  service_GetLinkedName2 = 29,
76  service_GetLinked0 = 30,
77  service_GetLinked1 = 31,
78  service_GetLinked2 = 32,
79  service_RemoveLink = 33,
80  service_RemoveAllLinks = 34,
81  service_ObjectCreated = 35,
82  service_ConnectPad = 36,
83  service_LastActivePanel = 37,
84  service_WhereItemDrawn = 38,
85  service_UndrawItem = 39,
86  service_General = 40,
87  service_PanelTimer = 41,
88  service_HelpWindow = 42,
89  service_HotStart = 43,
90  panel_Activated = 101,
91  panel_Modified = 102,
92  panel_Updated = 103,
93  panel_ActiveUpdated = 104,
94  panel_PadDeleted = 105,
95  panel_Deleted = 106 };
96 
97  QGo4Widget(QWidget * parent = 0, const char * name = 0, Qt::WindowFlags f = Qt::Widget );
98  virtual ~QGo4Widget();
99 
100  virtual bool IsAcceptDrag(const char* itemname, TClass* cl, int kind);
101  virtual void DropItem(const char* itemname, TClass* cl, int kind);
102  virtual void ResetWidget();
103 
104  void ObjectCreatedByWidget(const char* itemname, TClass* cl);
105 
106  void ProcessSignal(const char* linkname, bool assigned, TObject* obj, TGo4Slot* slot);
107 
108  static QAction* AddIdAction(QMenu* menu, QSignalMapper* map,
109  const QString& text, int id, int enabled = -1, int checked = -1);
110 
111  static QAction* AddIdAction(QMenu* menu, QSignalMapper* map,
112  const QIcon& icon, const QString& text, int id, int enabled = -1, int checked = -1);
113 
114  static QAction* AddChkAction(QMenu* menu,
115  const QString& text, bool checked,
116  QObject* recv, const char* member);
117 
118  static QAction* SetIdAction(QSignalMapper* map, int id, int enabled = -1, int checked = -1);
119 
120  signals:
121  void widgetService(QGo4Widget* editor, int serviceid, const char* str, void* par);
122 
123  public slots:
124  void ResetWidgetSlot();
125  void CloseMDIParentSlot();
126 
127  protected:
128  virtual void closeEvent(QCloseEvent* e);
129  virtual void dragEnterEvent(QDragEnterEvent *e);
130  virtual void dragMoveEvent(QDragMoveEvent* e);
131  virtual void dropEvent(QDropEvent* e);
132 
134  void AddLink(const char* itemname, const char* linkname);
135 
137  void AddLink(TGo4Slot* slot, const char* linkname);
138 
140  TGo4Slot* AddLink(const char* itemname, TGo4Slot* parent);
141 
143  TGo4Slot* GetTopSlot(bool force = false);
144 
146  TGo4Slot* AddSlot(const char* slotname);
147 
149  void SetLinkedName(TGo4Slot* slot, const char* itemname);
150 
152  const char* GetLinkedName(const char* linkname);
153 
155  const char* GetLinkedName(TGo4Slot* slot);
156 
157  TObject* GetLinked(const char* linkname, int updatelevel);
158  void RemoveLink(const char* linkname, bool blockreset = true);
159  void RemoveAllLinks(bool blockreset = true);
160  void RemoveLinksMasked(const char* startedwith = 0, bool blockreset = true);
161 
162  bool BrowserItemRemote(const char* itemname);
164 
165  void StatusMessage(const QString& message);
166 
171  void AskToCreateObject(TClass* cl, int isremote);
172  void ShowItemInfo(const QString& itemname);
173  TGo4ViewPanel* CreateViewPanel(int ndiv = 0);
174  TGo4ViewPanel* DrawItem(const QString& itemname, TGo4ViewPanel* panel = 0, TPad* pad = 0, bool activate = true, int updatelevel = -1);
175  TGo4ViewPanel* WhereItemDrawn(const char* itemname);
176  void HelpWindow(const char* filename, const char* msg = 0);
177  void UndrawItem(const char* itemname);
178  TGo4ViewPanel* LastActivePanel();
179  void EditItem(const QString& itemname);
180  void EditObjectInSlot(TGo4Slot* slot);
181  QString SaveObjectInMemory(const char* foldername, TObject* obj);
182  bool SaveItemToFile(const char* itemname, const char* subfolder = 0);
183  bool UpdateItemInAnalysis(const char* itemname, TObject* obj = 0);
184  void InformThatObjectCreated(const char* itemname, TClass* cl);
185  TGo4ServerProxy* GetAnalysis(const char* itemname = 0);
186  void StartHotstart(const char* filename);
187 
189  void ConnectPad(TPad* pad);
190 
191  void CallServiceFunc(int id, const char* str = 0, void* par = 0);
192  void ServiceCall(const char* name, void* par = 0);
193 
194  virtual void requestedObjectCreated(const char* itemname, TClass* cl);
195  virtual void linkedObjectUpdated(const char* linkname, TObject* obj);
196  virtual void linkedObjectRemoved(const char* linkname);
197  virtual void linkedUpdated(TGo4Slot* slot, TObject* obj);
198  virtual void linkedRemoved(TGo4Slot* slot, TObject* obj);
199 
200  void setCanDestroyWidget(bool on = true) { fCanDestroyWidget = on; }
201 
202  void CallPanelFunc(int id, TPad* pad = 0);
203 
204  void ShootResetWidget();
205  void ShootCloseWidget(bool closeparent = false);
206 
207  bool IsUpdateBlocked() const { return fBlockUpdate; }
208 
209 };
210 
211 #endif
#define GO4_QWIDGET_EXPORT
Definition: QGo4Widget.h:35
void StatusMessage(const QString &mess)
bool fBlockUpdate
indicates that reset widget timer is shoot
Definition: QGo4Widget.h:48
void HelpWindow(const char *filename, const char *msg=0)
void setCanDestroyWidget(bool on=true)
Definition: QGo4Widget.h:200
TGo4BrowserProxy * Browser()
bool fResetWidgetShooted
indicate that widget can be destroyed
Definition: QGo4Widget.h:47
bool fCanDestroyWidget
Definition: QGo4Widget.h:46
bool fWaitsForObjectCreation
Definition: QGo4Widget.h:45
TGo4BrowserProxy * fBrowserProxy
set when automatic reset must be blocked
Definition: QGo4Widget.h:50
virtual void closeEvent(QCloseEvent *ce)
bool IsUpdateBlocked() const
Definition: QGo4Widget.h:207
string msg
Definition: go4init.py:11