/* For general Scribus (>=1.3.2) copyright and licensing information please refer to the COPYING file provided with the program. Following this notice may exist a copyright and/or license notice that predates the release of Scribus 1.3.2 for which a new license (GPL+exception) is in place. */ /*************************************************************************** begin : Jan 2005 copyright : (C) 2005 by Craig Bradney email : cbradney@zip.com.au ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef ACTIONMANAGER_H #define ACTIONMANAGER_H #include #include #include #include #include #include #include #include #include #include #include class QEvent; #include "scribusapi.h" #include "scraction.h" class ScribusDoc; class ScribusMainWindow; class ScribusQApp; class ScribusView; class UndoManager; /** @author Craig Bradney */ class SCRIBUS_API ActionManager : public QObject { Q_OBJECT friend class StoryEditor; public: ActionManager ( QObject * parent ); ~ActionManager(); virtual void changeEvent(QEvent *e); void init(ScribusMainWindow *); static void createDefaultShortcuts(); static QMap* defaultShortcuts() {return &defKeys;}; static void createDefaultMenus(); static void createDefaultMenuNames(); static void createDefaultNonMenuActions(); static void createDefaultNonMenuNames(); static QVector< QPair >* defaultMenuNames() {return &defMenuNames;}; static QVector< QPair >* defaultNonMenuNames() {return &defNonMenuNames;}; static QString defaultMenuNameEntryTranslated(const QString& index); static QVector< QPair >* defaultMenus() {return &defMenus;}; static QVector< QPair >* defaultNonMenuActions() {return &defNonMenuActions;}; void createActions(); void disconnectModeActions(); void connectModeActions(); void disconnectNewViewActions(); void connectNewViewActions(ScribusView *); void disconnectNewDocActions(); void connectNewDocActions(ScribusDoc *); void disconnectNewSelectionActions(); void connectNewSelectionActions(ScribusView *,ScribusDoc *); void saveActionShortcutsPreEditMode(); void restoreActionShortcutsPostEditMode(); void enableActionStringList(QMap > *actionMap, QStringList *list, bool enabled, bool checkingUnicode=false, const QString& fontName=QString::null); void enableUnicodeActions(QMap > *actionMap, bool enabled, const QString& fontName=QString::null); void setPDFActions(ScribusView *); public slots: void languageChange(); void handleMultipleSelections(bool isMultiple); protected: void initFileMenuActions(); void initEditMenuActions(); void initStyleMenuActions(); void initItemMenuActions(); void initInsertMenuActions(); void initPageMenuActions(); void initViewMenuActions(); void initToolsMenuActions(); void initExtrasMenuActions(); void initWindowsMenuActions(); void initScriptMenuActions(); void initHelpMenuActions(); static void initUnicodeActions(QMap > *actionMap, QWidget *actionParent, QStringList *actionNamesList); void initSpecialActions(); static void languageChangeUnicodeActions(QMap > *actionMap); void languageChangeActions(); static QKeySequence defaultKey(const QString &actionName); QPixmap noIcon; ScribusMainWindow *mainWindow; ScribusQApp *ScQApp; UndoManager *undoManager; QMap > *scrActions; QMultiHash *scrActionGroups; QStringList *modeActionNames; QStringList *nonEditActionNames; QStringList *unicodeCharActionNames; static QMap defKeys; static QVector< QPair > defMenuNames; static QVector< QPair > defMenus; static QVector< QPair > defNonMenuNames; static QVector< QPair > defNonMenuActions; }; #endif