QCAD
Open Source 2D CAD
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RGuiAction.h
Go to the documentation of this file.
1 
20 #ifndef RGUIACTION_H
21 #define RGUIACTION_H
22 
23 #include "core_global.h"
24 
25 #include <QMap>
26 #include <QMetaType>
27 #include <QString>
28 #include <QStringList>
29 #include <QList>
30 #include <QAction>
31 
32 #include "RTransactionListener.h"
33 #include "RFocusListener.h"
34 #include "RSelectionListener.h"
35 
36 class QToolBar;
37 
38 class RDocument;
39 class RDocumentInterface;
40 
60  public QAction,
61  public RFocusListener,
62  public RTransactionListener,
63  public RSelectionListener {
64 
65 Q_OBJECT
66 
67 public:
68  typedef void (*FactoryFunction)();
69 
70 public:
71  RGuiAction(const QString& text, QObject* parent = 0);
72  virtual ~RGuiAction();
73 
78  virtual void initTexts();
79 
80  static QString formatToolTip(const QString& text, const QString& shortcut);
81  QString getToolTip(const QString& text, const QString& shortcut);
82 
83  void setDocumentInterface(RDocumentInterface* di);
84  RDocumentInterface* getDocumentInterface();
85 
91  void setShortcut(const QKeySequence& shortcut);
92  void setDefaultShortcut(const QKeySequence& shortcut);
93  void setShortcuts(const QList<QKeySequence>& shortcuts);
94  void setDefaultShortcuts(const QList<QKeySequence>& shortcuts);
95  QList<QKeySequence> getDefaultShortcuts();
96  void setShortcutText(const QString& text);
97  QString getShortcutText();
98 
99  void setSortOrder(int sortOrder);
100  int getSortOrder();
101 
102  void addToMenu(QMenu* menu);
103  void addToToolBar(QToolBar* tb);
104  void addToWidget(QWidget* w);
105 
109  virtual void setIcon(const QString& iconFile);
110 
111  void disableIcon();
112  bool isIconDisabled();
113 
118  virtual void setToolTip(const QString& tip);
119 
124  virtual void setStatusTip(const QString& tip);
125 
129  virtual void setEnabled(bool on);
130 
134  virtual void setEnabledOverride(bool on, int override);
135 
139  virtual void setChecked(bool on);
140 
141  static void triggerGroupDefault(const QString& group);
142  static void triggerGroupDefaults();
143 
147  virtual bool isChecked();
148 
153  void setRequiresDocument(bool on) {
154  requiresDocument = on;
155  }
156 
162  return requiresDocument;
163  }
164 
169  void setRequiresSelection(bool on) {
170  requiresSelection = on;
171  }
172 
178  return requiresSelection;
179  }
180 
182  requiresUndoableTransaction = on;
183  }
184 
186  return requiresUndoableTransaction;
187  }
188 
190  requiresRedoableTransaction = on;
191  }
192 
194  return requiresRedoableTransaction;
195  }
196 
197  void setOverride() {
198  override = true;
199  }
200 
201  bool isOverride() {
202  return override;
203  }
204 
205  void setNoState(bool checkable = false) {
206  noState = true;
207  setCheckable(checkable);
208  }
209 
210  bool hasNoState() {
211  return noState;
212  }
213 
214  void setUniqueGroup(const QString& ug) {
215  uniqueGroup = ug;
216  }
217 
218  QString getUniqueGroup() {
219  return uniqueGroup;
220  }
221 
227  QString getMainCommand() {
228  return mainCommand;
229  }
230 
234  QStringList getCommands() {
235  return commandList;
236  }
237 
238  QStringList getDefaultCommands() {
239  return defaultCommandList;
240  }
241 
242  void setDefaultCommands(const QStringList& cmds);
243  void setCommands(const QStringList& cmds);
244 
248  void setFactory(FactoryFunction f);
249 
254  void setScriptFile(const QString& sf, bool isSecondary = false);
255 
259  QString getScriptFile() {
260  return scriptFile;
261  }
262 
263  virtual void setGroup(const QString& title);
264  QString getGroup();
265 
266  void setGroupDefault(bool on);
267  bool isGroupDefault();
268 
272  static QList<RGuiAction*> getActions() {
273  return actions;
274  }
275 
276  static bool triggerByCommand(const QString& cmd);
277  static RGuiAction* getByScriptFile(const QString& scriptFile);
278  static RGuiAction* getByClassName(const QString& className);
279  static bool triggerByScriptFile(const QString& scriptFile);
280 
281  static QStringList getAvailableCommands(bool primaryOnly=false);
282  static QStringList getAvailableCommands(const QString& start, bool primaryOnly=false);
283 
284  static void clear();
285 
286  virtual void updateTransactionListener(RDocument* document, RTransaction* transaction = NULL);
287  virtual void updateSelectionListener(RDocumentInterface* documentInterface);
288  virtual void updateFocus(RDocumentInterface* documentInterface);
289 
290  void addArgument(const QString& arg);
291  QStringList getArguments();
292  void clearArguments();
293 
294 public slots:
298  bool slotTrigger(const QString& command = QString::null);
299 
300 signals:
301  void postTriggered();
302 
303 protected:
304  static QMap<QString, RGuiAction*> actionsByCommand;
305  static QMap<QString, RGuiAction*> actionsByPrimaryCommand;
306  static QMap<QString, RGuiAction*> actionsByScriptFile;
307  static QMultiMap<QString, RGuiAction*> actionsByGroup;
308  static QList<RGuiAction*> actions;
309 
310  FactoryFunction factory;
311  QString scriptFile;
312  QString mainCommand;
313  QStringList commandList;
314  QStringList defaultCommandList;
315  QString group;
317 
322  bool override;
323  bool noState;
324  QString uniqueGroup;
325  QStringList arguments;
326 
327  QList<QKeySequence> defaultShortcuts;
328  QString shortcutText;
329  QString toolTip;
333 };
334 
337 
338 #endif