Scribus
Open source desktop publishing at your fingertips
actionmanager.h
1 /*
2 For general Scribus (>=1.3.2) copyright and licensing information please refer
3 to the COPYING file provided with the program. Following this notice may exist
4 a copyright and/or license notice that predates the release of Scribus 1.3.2
5 for which a new license (GPL+exception) is in place.
6 */
7 /***************************************************************************
8  begin : Jan 2005
9  copyright : (C) 2005 by Craig Bradney
10  email : cbradney@zip.com.au
11  ***************************************************************************/
12 
13 /***************************************************************************
14  * *
15  * This program is free software; you can redistribute it and/or modify *
16  * it under the terms of the GNU General Public License as published by *
17  * the Free Software Foundation; either version 2 of the License, or *
18  * (at your option) any later version. *
19  * *
20  ***************************************************************************/
21 #ifndef ACTIONMANAGER_H
22 #define ACTIONMANAGER_H
23 
24 #include <QKeySequence>
25 #include <QObject>
26 #include <QString>
27 #include <QStringList>
28 #include <QMap>
29 #include <QPair>
30 #include <QVector>
31 #include <QPointer>
32 #include <QMultiHash>
33 #include <QPixmap>
34 #include <QActionGroup>
35 
36 class QEvent;
37 
38 #include "scribusapi.h"
39 #include "scraction.h"
40 
41 class IconManager;
42 class ScribusDoc;
43 class ScribusMainWindow;
44 class ScribusQApp;
45 class ScribusView;
46 class UndoManager;
50 class SCRIBUS_API ActionManager : public QObject
51 {
52  Q_OBJECT
53 
54  friend class StoryEditor;
55  public:
56  ActionManager ( QObject * parent );
57  ~ActionManager();
58 
59  virtual void changeEvent(QEvent *e);
60 
61  void init(ScribusMainWindow *);
62  bool compareKeySeqToShortcut(QKeySequence ks, QString actionName);
63  bool compareKeySeqToShortcut(int k, Qt::KeyboardModifiers km, QString actionName);
64  static void createDefaultShortcuts();
65  static QMap<QString, QKeySequence>* defaultShortcuts() {return &defKeys;};
66  static void createDefaultMenus();
67  static void createDefaultMenuNames();
68  static void createDefaultNonMenuActions();
69  static void createDefaultNonMenuNames();
70  static QVector< QPair<QString, QStringList> >* defaultMenuNames() {return &defMenuNames;};
71  static QVector< QPair<QString, QStringList> >* defaultNonMenuNames() {return &defNonMenuNames;};
72  static QString defaultMenuNameEntryTranslated(const QString& index);
73  static QVector< QPair<QString, QStringList> >* defaultMenus() {return &defMenus;};
74  static QVector< QPair<QString, QStringList> >* defaultNonMenuActions() {return &defNonMenuActions;};
75  void createActions();
76  void disconnectModeActions();
77  void connectModeActions();
78  void disconnectNewViewActions();
79  void connectNewViewActions(ScribusView *);
80  void disconnectNewDocActions();
81  void connectNewDocActions(ScribusDoc *);
82  void disconnectNewSelectionActions();
83  void connectNewSelectionActions(ScribusView *,ScribusDoc *);
84  void saveActionShortcutsPreEditMode();
85  void restoreActionShortcutsPostEditMode();
86  void enableActionStringList(QMap<QString, QPointer<ScrAction> > *actionMap, QStringList *list, bool enabled, bool checkingUnicode=false, const QString& fontName=QString::null);
87  void enableUnicodeActions(QMap<QString, QPointer<ScrAction> > *actionMap, bool enabled, const QString& fontName=QString::null);
88  void setPDFActions(ScribusView *);
89 
90  public slots:
91  void languageChange();
92  void handleMultipleSelections(bool isMultiple);
93 
94  protected:
95  void initFileMenuActions();
96  void initEditMenuActions();
97  void initStyleMenuActions();
98  void initItemMenuActions();
99  void initInsertMenuActions();
100  void initPageMenuActions();
101  void initViewMenuActions();
102  void initToolsMenuActions();
103  void initExtrasMenuActions();
104  void initWindowsMenuActions();
105  void initScriptMenuActions();
106  void initHelpMenuActions();
107  static void initUnicodeActions(QMap<QString, QPointer<ScrAction> > *actionMap, QWidget *actionParent, QStringList *actionNamesList);
108  void initSpecialActions();
109  static void setActionTooltips(QMap<QString, QPointer<ScrAction> > *actionMap);
110  static void languageChangeUnicodeActions(QMap<QString, QPointer<ScrAction> > *actionMap);
111  void languageChangeActions();
112  static QKeySequence defaultKey(const QString &actionName);
113 
114  QPixmap noIcon;
115  ScribusMainWindow *mainWindow;
116  ScribusQApp *ScQApp;
117  UndoManager *undoManager;
118  IconManager* im;
119  QMap<QString, QPointer<ScrAction> > *scrActions;
120  QMultiHash<QString, QActionGroup*> *scrActionGroups;
121  QStringList *modeActionNames;
122  QStringList *nonEditActionNames;
123  QStringList *unicodeCharActionNames;
124  static QMap<QString, QKeySequence> defKeys;
125  static QVector< QPair<QString, QStringList> > defMenuNames;
126  static QVector< QPair<QString, QStringList> > defMenus;
127  static QVector< QPair<QString, QStringList> > defNonMenuNames;
128  static QVector< QPair<QString, QStringList> > defNonMenuActions;
129 };
130 
131 #endif
Manage Scribus icons here, and here alone.
Definition: iconmanager.h:34
This Class is the base class for your application. It sets up the main window and providing a menubar...
Definition: scribus.h:123
Definition: storyeditor.h:377
the Document Class
Definition: scribusdoc.h:90
Definition: scribusapp.h:34
UndoManager handles the undo stack.
Definition: undomanager.h:81
Definition: scribusview.h:87
Definition: actionmanager.h:50