QCAD Application Framework
CAD Application Development and Automation.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RGuiAction.h
Go to the documentation of this file.
1 #ifndef RGUIACTION_H
2 #define RGUIACTION_H
3 
4 #include <QMap>
5 #include <QMetaType>
6 #include <QString>
7 #include <QStringList>
8 #include <QList>
9 #include <QAction>
10 
11 #include "RTransactionListener.h"
12 #include "RFocusListener.h"
13 #include "RSelectionListener.h"
14 
15 class QToolBar;
16 
17 class RDocument;
18 class RDocumentInterface;
19 
38 class RGuiAction:
39  public QAction,
40  public RFocusListener,
41  public RTransactionListener,
42  public RSelectionListener {
43 
44 Q_OBJECT
45 
46 public:
47  typedef void (*FactoryFunction)();
48 
49 public:
50  RGuiAction(const QString& text, QObject* parent = 0);
51  virtual ~RGuiAction();
52 
57  virtual void initTexts();
58 
59  static QString formatToolTip(const QString& text, const QString& shortcut);
60  QString getToolTip(const QString& text, const QString& shortcut);
61 
64 
70  void setShortcut(const QKeySequence& shortcut);
71  void setDefaultShortcut(const QKeySequence& shortcut);
72  void setShortcuts(const QList<QKeySequence>& shortcuts);
73  void setDefaultShortcuts(const QList<QKeySequence>& shortcuts);
74  QList<QKeySequence> getDefaultShortcuts();
75  void setShortcutText(const QString& text);
76  QString getShortcutText();
77  void setSortOrder(int sortOrder);
78  int getSortOrder();
79 
80  void addToMenu(QMenu* menu);
81  void addToToolBar(QToolBar* tb);
82  void addToWidget(QWidget* w);
83 
87  virtual void setIcon(const QString& iconFile);
88 
89  void disableIcon();
90  bool isIconDisabled();
91 
96  virtual void setToolTip(const QString& tip);
97 
102  virtual void setStatusTip(const QString& tip);
103 
107  virtual void setEnabled(bool on);
108 
112  virtual void setEnabledOverride(bool on, int override);
113 
117  virtual void setChecked(bool on);
118 
119  static void triggerGroupDefault(const QString& group);
120  static void triggerGroupDefaults();
121 
125  virtual bool isChecked();
126 
131  void setRequiresDocument(bool on) {
132  requiresDocument = on;
133  }
134 
140  return requiresDocument;
141  }
142 
147  void setRequiresSelection(bool on) {
148  requiresSelection = on;
149  }
150 
156  return requiresSelection;
157  }
158 
161  }
162 
165  }
166 
169  }
170 
173  }
174 
175  void setOverride() {
176  override = true;
177  }
178 
179  bool isOverride() {
180  return override;
181  }
182 
183  void setNoState(bool checkable = false) {
184  noState = true;
185  setCheckable(checkable);
186  }
187 
188  bool hasNoState() {
189  return noState;
190  }
191 
192  void setUniqueGroup(const QString& ug) {
193  uniqueGroup = ug;
194  }
195 
196  QString getUniqueGroup() {
197  return uniqueGroup;
198  }
199 
205  QString getMainCommand() {
206  return mainCommand;
207  }
208 
212  QStringList getCommands() {
213  return commandList;
214  }
215 
216  QStringList getDefaultCommands() {
217  return defaultCommandList;
218  }
219 
220  void setDefaultCommands(const QStringList& cmds);
221  void setCommands(const QStringList& cmds);
222 
226  void setFactory(FactoryFunction f);
227 
232  void setScriptFile(const QString& sf, bool isSecondary = false);
233 
237  QString getScriptFile() {
238  return scriptFile;
239  }
240 
241  virtual void setGroup(const QString& title);
242  QString getGroup();
243 
244  void setGroupDefault(bool on);
245  bool isGroupDefault();
246 
250  static QList<RGuiAction*> getActions() {
251  return actions;
252  }
253 
254  static bool triggerByCommand(const QString& cmd);
255  static RGuiAction* getByScriptFile(const QString& scriptFile);
256  static bool triggerByScriptFile(const QString& scriptFile);
257 
258  static QStringList getAvailableCommands(bool primaryOnly=false);
259  static QStringList getAvailableCommands(const QString& start, bool primaryOnly=false);
260 
261  static void clear();
262 
263  virtual void updateTransactionListener(const RDocument* document);
266 
267  void addArgument(const QString& arg);
268  QStringList getArguments();
269 
270 public slots:
274  bool slotTrigger(const QString& command = QString::null);
275 
276 signals:
277  void postTriggered();
278 
279 protected:
280  static QMap<QString, RGuiAction*> actionsByCommand;
281  static QMap<QString, RGuiAction*> actionsByPrimaryCommand;
282  static QMap<QString, RGuiAction*> actionsByScriptFile;
283  static QMultiMap<QString, RGuiAction*> actionsByGroup;
284  static QList<RGuiAction*> actions;
285 
287  QString scriptFile;
288  QString mainCommand;
289  QStringList commandList;
290  QStringList defaultCommandList;
291  QString group;
293 
298  bool override;
299  bool noState;
300  QString uniqueGroup;
301  QStringList arguments;
302 
303  QList<QKeySequence> defaultShortcuts;
304  QString shortcutText;
305  QString toolTip;
310 };
311 
314 
315 #endif