OpendTect  6.3
uiaction.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: Nanne Hemstra
8  Date: May 2007
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "uibasemod.h"
14 
15 #include "separstr.h"
16 #include "uistring.h"
17 #include "uibaseobject.h"
18 
19 
20 class i_ActionMessenger;
21 class uiActionContainer;
22 class uiIcon;
23 class uiMenu;
24 class uiPixmap;
25 class MenuItem;
26 
27 mFDQtclass(QAction)
28 mFDQtclass(QMenu)
29 
30 
34 mExpClass(uiBase) uiAction : public CallBacker
35 {
36 friend class i_ActionMessenger;
37 public:
38  uiAction(const uiString&);
39  uiAction(const uiString&,const CallBack&);
40  uiAction(const uiString&,const CallBack&,
41  const uiIcon&);
42  uiAction(const uiString&,const CallBack&,
43  const char* icon_identifier);
44  uiAction(const uiString&,const char* icon_identifier);
45  uiAction(const MenuItem&);
46  uiAction(mQtclass(QAction*));
47  ~uiAction();
48 
49  void setText(const uiString&);
50  const uiString& text() const;
52  void setIconText(const uiString&);
53  const uiString& iconText() const;
55  void setToolTip(const uiString&);
56  const uiString& toolTip() const;
59  static void updateToolTips();
60  void setMenu(uiMenu*);
62 
63  uiMenu* getMenu() { return menu_; }
64  const uiMenu* getMenu() const { return menu_; }
65 
66  void setShortcut(const char*);
67 
68  void setIcon(const char* identifier);
69  void setIcon(const uiIcon&);
70  const char* getIconName() const { return iconfile_; }
71  void setPixmap(const uiPixmap&);
72 
73  void setCheckable(bool);
74  bool isCheckable() const;
75  void setChecked(bool);
76  bool isChecked() const;
77  void setEnabled(bool);
78  bool isEnabled() const;
79  void setVisible(bool);
80  bool isVisible() const;
81 
82  void setSeparator(bool);
83  bool isSeparator() const;
84 
85  void setParentContainer(const uiActionContainer*);
86  int getID() const;
89  mQtclass(QAction*) qaction() { return qaction_; }
90  const mQtclass(QAction*) qaction() const { return qaction_; }
91 
94 
95  void reloadIcon();
96 
97 protected:
98 
99  virtual void trigger(bool checked);
100  void translateCB(CallBacker*);
101 
102  void updateToolTip(CallBacker* = 0);
103  uiString tooltip_;
104  uiString text_;
105  uiString icontext_;
106 
107  void updateEnabled(CallBacker* = 0);
108  void updateCheckable(CallBacker* = 0);
109  void updateChecked(CallBacker* = 0);
110  void updateVisible(CallBacker* = 0);
111  bool enabled_;
112  bool checkable_;
113  bool ischecked_;
114  bool visible_;
115 
116 private:
117 
118  uiMenu* menu_;
119 
120  BufferString iconfile_;
121  const uiActionContainer* parentcontainer_;
122  i_ActionMessenger* msgr_;
123  mQtclass(QAction*) qaction_;
124 
125  bool checked_;
126 
127  int cmdrecrefnr_;
128 
129  void init(const uiString&);
130 
131 public:
133  static void addCmdRecorder(const CallBack&);
134  static void removeCmdRecorder(const CallBack&);
135  int /* refnr */ beginCmdRecEvent(const char* msg=0);
136  void endCmdRecEvent(int refnr,const char* msg=0);
137 };
138 
143 {
144 public:
145  uiActionSeparString(const char* str=0) : SeparString(str,'`') {}
146 };
147 
148 
149 /*Generalization of a menubar, a menu or a toolbar that can contain actions. */
151 {
152 public:
153  virtual ~uiActionContainer();
154 
155  int nrActions() const;
156  const ObjectSet<uiAction>& actions() const;
157  bool isEmpty() const;
158 
159  uiAction* findAction(const uiActionSeparString&);
160  uiAction* findAction(const char* itmtxt);
161  uiAction* findAction(const uiString& itmtxt);
163  uiAction* findAction(int id);
164  uiAction* findAction(const uiMenu*);
166  { return findAction(fs.str()); }
167  int getID(const uiAction*) const;
168  int getID(const mQtclass(QAction)*) const;
169 
170  int insertAction(uiAction*,int id=-1,
171  const uiAction* before = 0);
176  int insertAction(const MenuItem&);
177 
178  uiMenu* addMenu(uiMenu*,const uiMenu* before = 0);
181  uiAction* insertSeparator();
182 
183  void removeAction(uiAction*);
184  void removeAction(int id);
185  void removeAllActions();
186  void reloadIcons();
187 
188 protected:
189  uiActionContainer();
190 
191  int getFreeID() const;
192 
193  virtual void doInsertSeparator(mQtclass(QAction)* before) = 0;
194  virtual void doInsertMenu(mQtclass(QMenu)*,
195  mQtclass(QAction)* before ) = 0;
196  virtual void doInsertAction(mQtclass(QAction)*,
197  mQtclass(QAction)* before ) = 0;
198  virtual void doClear() = 0;
199  virtual void doRemoveAction(mQtclass(QAction)*) = 0;
200 
203 
204 public:
205 
206  int insertItem(uiAction* a,int id=-1,
207  const uiAction* before = 0)
208  { return insertAction( a, id, before ); }
210  int insertItem(uiMenu* mnu);
212  void removeItem(uiAction* a) { removeAction(a); }
214  void removeItem(int id) { removeAction(id); }
216 };
#define mExpClass(module)
Definition: commondefs.h:157
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
const char * str() const
Definition: odstring.h:46
#define mQtclass(cls)
Definition: commondefs.h:232
TypeSet< int > ids_
Definition: uiaction.h:202
OD::String that holds an existing text string.
Definition: fixedstring.h:27
bool init()
void toggled(bool checked)
Definition: i_qaction.h:48
List encoded in a string.
Definition: separstr.h:32
Definition: uistring.h:88
Class to help setup a callback handling.
Definition: notify.h:121
Definition: menuhandler.h:74
void triggered(bool checked)
Definition: i_qaction.h:54
uiActionSeparString(const char *str=0)
Definition: uiaction.h:145
Definition: uiaction.h:142
ObjectSet< uiAction > actions_
Definition: uiaction.h:201
#define mFDQtclass(cls)
Definition: commondefs.h:231
Definition: uimenu.h:64
Off-screen pixel-based paint device.
Definition: uipixmap.h:33
void removeItem(int id)
Legacy.
Definition: uiaction.h:214
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
bool isEmpty(const char *)
void removeItem(uiAction *a)
Legacy.
Definition: uiaction.h:212
uiAction * findAction(const FixedString &fs)
Definition: uiaction.h:165
Helper class for uiAction to relay Qt&#39;s messages.
Definition: i_qaction.h:24
int insertItem(uiAction *a, int id=-1, const uiAction *before=0)
Legacy.
Definition: uiaction.h:206
CallBacks object-oriented (object + method).
Definition: callback.h:62
friend class uiAction
Definition: i_qaction.h:27
Definition: uiaction.h:150

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017