1 /***************************************************************************
2  *                                                                         *
3  *   This program is free software; you can redistribute it and/or modify  *
4  *   it under the terms of the GNU General Public License as published by  *
5  *   the Free Software Foundation; either version 2 of the License, or     *
6  *   (at your option) any later version.                                   *
7  *                                                                         *
8  ***************************************************************************/
9 
10 /*
11 For general Scribus (>=1.3.2) copyright and licensing information please refer
12 to the COPYING file provided with the program. Following this notice may exist
13 a copyright and/or license notice that predates the release of Scribus 1.3.2
14 for which a new license (GPL+exception) is in place.
15 */
16 
17 #ifndef APPMODEHELPER_H
18 #define APPMODEHELPER_H
19 
20 #include <QMap>
21 #include <QObject>
22 #include <QPointer>
23 #include <QString>
24 #include "actionmanager.h"
25 #include "appmodes.h"
26 #include "scraction.h"
27 
28 class PageItem;
29 
30 class AppModeHelper : public QObject
31 {
32 	Q_OBJECT
33 
34 	friend class ActionManager;
35 	friend class ScribusMainWindow;
36 
37 	public:
38 		explicit AppModeHelper(QObject *parent = nullptr);
39 		void setup(ActionManager* am, QMap<QString, QPointer<ScrAction> > *, QMap<QString, QPointer<ScrAction> > *, QMap<QString, QPointer<ScrAction> > *, QMap<QString, QPointer<ScrAction> > *, QMap<QString, QPointer<ScrAction> > *, QMap<QString, QPointer<ScrAction> > *);
40 		void resetApplicationMode(int newMode);
41 		void setApplicationMode(ScribusMainWindow* scmw, ScribusDoc* doc, int newMode);
42 		void enableActionsForSelection(ScribusMainWindow* scmw, ScribusDoc *doc);
43 		void setModeActionsPerMode(int newMode);
44 		void setActionGroupEnabled(QMap<QString, QPointer<ScrAction> > *, bool enabled);
45 		void setTextEditMode(bool b);
46 		void setSpecialEditMode(bool b);
47 		void setFrameEditMode(bool b);
48 		void setSymbolEditMode(bool b, ScribusDoc* doc);
49 		void setInlineEditMode(bool b, ScribusDoc* doc);
50 		void setMasterPageEditMode(bool b, ScribusDoc *doc);
51 		void updateActionPluginsActions(ScribusDoc* doc);
52 		void updateTableMenuActions(ScribusDoc* doc);
53 		void changeLayer(ScribusDoc *doc, bool clipScrapHaveData);
54 		void mainWindowHasNewDoc(ScribusDoc *doc, bool clipScrapHaveData);
55 		void mainWindowSwitchWin(ScribusDoc *doc);
56 		void mainWindowCloseLastDoc();
57 		void setPreviewMode(bool b);
58 		//! \brief enable or disable the unicode actions and their menus
59 		void enableTextActions(bool enabled, const QString& fontName=QString());
60 		void setStartupActionsEnabled(bool enabled);
61 
62 
63 	signals:
64 		void AppModeChanged(int oldMode, int newMode);
65 		void UpdateRequest(int updateFlags);
66 
67 	private:
68 		QMap<QString, QPointer<ScrAction> > *a_scrActions {nullptr};
69 		QMap<QString, QPointer<ScrAction> > *a_scrRecentFileActions {nullptr};
70 		QMap<QString, QPointer<ScrAction> > *a_scrWindowsActions {nullptr};
71 		QMap<QString, QPointer<ScrAction> > *a_scrScrapActions {nullptr};
72 		QMap<QString, QPointer<ScrAction> > *a_scrLayersActions {nullptr};
73 		QMap<QString, QPointer<ScrAction> > *a_scrRecentPasteActions {nullptr};
74 		ActionManager* a_actMgr {nullptr};
75 };
76 
77 #endif // APPMODEHELPER_H
78