GSI Object Oriented Online Offline (Go4) GO4-6.4.5
Loading...
Searching...
No Matches
QGo4Widget.h
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#ifndef QGO4WIDGET_H
15#define QGO4WIDGET_H
16
17#include <QWidget>
18#include <QIcon>
19
20class TObject;
21class TClass;
22class TPad;
23class TGo4Slot;
24class TGo4ViewPanel;
26class TGo4ServerProxy;
27class QMenu;
28class QAction;
29class 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
38class GO4_QWIDGET_EXPORT QGo4Widget : public QWidget {
39
40 Q_OBJECT
41
42 friend class TGo4MainWindow;
43
44private:
45 bool fWaitsForObjectCreation{false};
46 bool fCanDestroyWidget{false};
47 bool fResetWidgetShooted{false};
48 bool fBlockUpdate{false};
49
50 TGo4BrowserProxy *fBrowserProxy{nullptr};
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 = nullptr, const char *name = nullptr, 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* CreateChkAction(QMenu* menu, const QString& text, bool checked, bool enabled = true);
115
116 static QAction* SetIdAction(QSignalMapper* map, int id, int enabled = -1, int checked = -1);
117
118 signals:
119 void widgetService(QGo4Widget* editor, int serviceid, const char *str, void *par);
120
121 public slots:
123
124 protected:
125 void closeEvent(QCloseEvent* e) override;
126 void dragEnterEvent(QDragEnterEvent *e) override;
127 void dragMoveEvent(QDragMoveEvent* e) override;
128 void dropEvent(QDropEvent* e) override;
129
131 void AddLink(const char *itemname, const char *linkname);
132
134 void AddLink(TGo4Slot *slot, const char *linkname);
135
137 TGo4Slot *AddLink(const char *itemname, TGo4Slot *parent);
138
140 TGo4Slot *GetTopSlot(bool force = false);
141
143 TGo4Slot *AddSlot(const char *slotname);
144
146 void SetLinkedName(TGo4Slot *slot, const char *itemname);
147
149 const char *GetLinkedName(const char *linkname);
150
152 const char *GetLinkedName(TGo4Slot *slot);
153
154 TObject *GetLinked(const char *linkname, int updatelevel = 0);
155
156 template<class T>
157 T* GetLinkedCast(const char *linkname, int updatelevel = 0) { return dynamic_cast<T *>(GetLinked(linkname, updatelevel)); }
158
159 void RemoveLink(const char *linkname, bool blockreset = true);
160 void RemoveAllLinks(bool blockreset = true);
161 void RemoveLinksMasked(const char *startedwith = nullptr, bool blockreset = true);
162
163 bool BrowserItemRemote(const char *itemname);
165
166 void StatusMessage(const QString& message);
167
172 void AskToCreateObject(TClass *cl, int isremote);
173 void ShowItemInfo(const QString& itemname);
175 TGo4ViewPanel *DrawItem(const QString& itemname, TGo4ViewPanel *panel = nullptr, TPad *pad = nullptr, bool activate = true, int updatelevel = -1);
176 TGo4ViewPanel *WhereItemDrawn(const char *itemname);
177 void HelpWindow(const char *filename, const char *msg = nullptr);
178 void UndrawItem(const char *itemname);
180 void EditItem(const QString& itemname);
182 QString SaveObjectInMemory(const char *foldername, TObject *obj);
183 bool SaveItemToFile(const char *itemname, const char *subfolder = nullptr);
184 bool UpdateItemInAnalysis(const char *itemname, TObject *obj = nullptr);
185 void InformThatObjectCreated(const char *itemname, TClass *cl);
186 TGo4ServerProxy *GetAnalysis(const char *itemname = nullptr);
187 void StartHotstart(const char *filename);
188
190 void ConnectPad(TPad *pad);
191
192 void CallServiceFunc(int id, const char *str = nullptr, void *par = nullptr);
193 void ServiceCall(const char *name, void *par = nullptr);
194
195 virtual void requestedObjectCreated(const char *itemname, TClass *cl);
196 virtual void linkedObjectUpdated(const char *linkname, TObject *obj);
197 virtual void linkedObjectRemoved(const char *linkname);
198 virtual void linkedUpdated(TGo4Slot *slot, TObject *obj);
199 virtual void linkedRemoved(TGo4Slot *slot, TObject *obj);
200
201 void setCanDestroyWidget(bool on = true) { fCanDestroyWidget = on; }
202
203 void CallPanelFunc(int id, TPad *pad = nullptr);
204
206 void ShootCloseWidget(bool closeparent = false);
207
208 bool IsUpdateBlocked() const { return fBlockUpdate; }
209};
210
211#endif
TGo4Slot * AddLink(const char *itemname, TGo4Slot *parent)
create link for item in dedicated slot parent
void ShootResetWidget()
void StartHotstart(const char *filename)
T * GetLinkedCast(const char *linkname, int updatelevel=0)
Definition QGo4Widget.h:157
TGo4Slot * GetTopSlot(bool force=false)
return top slot of structure, corresponding to this widget
bool fBlockUpdate
indicates that reset widget timer is shoot
Definition QGo4Widget.h:48
void ShowItemInfo(const QString &itemname)
bool SaveItemToFile(const char *itemname, const char *subfolder=nullptr)
void widgetService(QGo4Widget *editor, int serviceid, const char *str, void *par)
void EditObjectInSlot(TGo4Slot *slot)
void setCanDestroyWidget(bool on=true)
Definition QGo4Widget.h:201
TObject * GetLinked(const char *linkname, int updatelevel=0)
void closeEvent(QCloseEvent *e) override
void ShootCloseWidget(bool closeparent=false)
void dragEnterEvent(QDragEnterEvent *e) override
const char * GetLinkedName(const char *linkname)
returns name of item, which was linked with linkname
bool IsUpdateBlocked() const
Definition QGo4Widget.h:208
virtual void linkedObjectUpdated(const char *linkname, TObject *obj)
TGo4ViewPanel * DrawItem(const QString &itemname, TGo4ViewPanel *panel=nullptr, TPad *pad=nullptr, bool activate=true, int updatelevel=-1)
TGo4Slot * AddSlot(const char *slotname)
add slot with specific name to widget top folder
void dragMoveEvent(QDragMoveEvent *e) override
static QAction * SetIdAction(QSignalMapper *map, int id, int enabled=-1, int checked=-1)
static QAction * AddIdAction(QMenu *menu, QSignalMapper *map, const QIcon &icon, const QString &text, int id, int enabled=-1, int checked=-1)
virtual void DropItem(const char *itemname, TClass *cl, int kind)
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 dropEvent(QDropEvent *e) override
const char * GetLinkedName(TGo4Slot *slot)
returns name of item, which was linked in that slot
virtual ~QGo4Widget()
void RemoveLinksMasked(const char *startedwith=nullptr, bool blockreset=true)
void AddLink(TGo4Slot *slot, const char *linkname)
create link for object in slot with name linkname
void AddLink(const char *itemname, const char *linkname)
create link for item with name linkname
void ProcessSignal(const char *linkname, bool assigned, TObject *obj, TGo4Slot *slot)
bool fCanDestroyWidget
Definition QGo4Widget.h:46
virtual void linkedUpdated(TGo4Slot *slot, TObject *obj)
bool UpdateItemInAnalysis(const char *itemname, TObject *obj=nullptr)
static QAction * AddIdAction(QMenu *menu, QSignalMapper *map, const QString &text, int id, int enabled=-1, int checked=-1)
virtual void linkedRemoved(TGo4Slot *slot, TObject *obj)
void CloseMDIParentSlot()
void StatusMessage(const QString &message)
void SetLinkedName(TGo4Slot *slot, const char *itemname)
set name of item, which was linked by this slot
void CallServiceFunc(int id, const char *str=nullptr, void *par=nullptr)
void HelpWindow(const char *filename, const char *msg=nullptr)
TGo4ServerProxy * GetAnalysis(const char *itemname=nullptr)
bool BrowserItemRemote(const char *itemname)
TGo4ViewPanel * WhereItemDrawn(const char *itemname)
void ServiceCall(const char *name, void *par=nullptr)
void ObjectCreatedByWidget(const char *itemname, TClass *cl)
virtual bool IsAcceptDrag(const char *itemname, TClass *cl, int kind)
virtual void ResetWidget()
TGo4BrowserProxy * Browser()
TGo4ViewPanel * LastActivePanel()
void InformThatObjectCreated(const char *itemname, TClass *cl)
void RemoveAllLinks(bool blockreset=true)
void CallPanelFunc(int id, TPad *pad=nullptr)
void UndrawItem(const char *itemname)
QString SaveObjectInMemory(const char *foldername, TObject *obj)
void EditItem(const QString &itemname)
TGo4ViewPanel * CreateViewPanel(int ndiv=0)
virtual void linkedObjectRemoved(const char *linkname)
void RemoveLink(const char *linkname, bool blockreset=true)
virtual void requestedObjectCreated(const char *itemname, TClass *cl)
static QAction * CreateChkAction(QMenu *menu, const QString &text, bool checked, bool enabled=true)
void ConnectPad(TPad *pad)
connect pad axis change signals to react on such signals
This is the Go4 Main Window.
special base class for remote data servers like DABC, HTTP, hist server
#define GO4_QWIDGET_EXPORT
Definition QGo4Widget.h:35