/* 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. */ /*************************************************************************** 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 PREFSMANAGER_H #define PREFSMANAGER_H #include #include #include #include #include "prefsstructs.h" #include "scribusapi.h" class PrefsFile; class ScribusMainWindow; /** * @author Craig Bradney * @brief Manage Scribus preferences here, and here alone * Start to move the preferences out of scribus.cpp and provide some * more features and hide some of the data within this class * TODO Move prefsFile in here from scribus.cpp and stop passing it in for convertOldPreferences * TODO Lots more :) */ class SCRIBUS_API PrefsManager : public QObject { Q_OBJECT public: PrefsManager(QObject *parent = 0); ~PrefsManager(); /** * @brief Returns a pointer to the PrefsManager instance * @return A pointer to the PrefsManager instance */ static PrefsManager* instance(); /** * @brief Deletes the PrefsManager Instance * Must be called when PrefsManager is no longer needed. */ static void deleteInstance(); void setup(); /*! \brief Initialise the defaults for prefs in this class Only set the GUI font stuff up if we have a GUI!!! Must be run after: PrefsManager::GetAllFonts() */ void initDefaults(); void initDefaultGUIFont(const QFont&); void initDefaultCheckerPrefs(CheckerPrefsList* cp); void initDefaultActionKeys(); void applyLoadedShortCuts(); void initArrowStyles(); /*! \author Craig Bradney \date Thu 18 Nov 2004 \brief Set the user's preference file location. Rename any existing old preferences files \retval QString Location of the user's preferences */ QString setupPreferencesLocation(); /*! \author Craig Bradney \date Sun 09 Jan 2005 \brief Copy 1.2 prefs XML before loading, and copy rc files we don't yet convert \retval bool true if prefs were imported */ bool copyOldPreferences(); /*! \author Craig Ringer \date Sun 26 June 2005 \brief Move and convert 1.2 style preferences to new XML format \retval None */ void convert12Preferences(); /*! \brief Get the prefs location property \retval QString Location of the user's preferences */ const QString preferencesLocation(); /*! \brief Read the preferences. \param fname optional filename with preferences. If is not given, the defualt is used. */ void ReadPrefs(const QString & fname=QString::null); void ReadPrefsXML(); /*! \brief Save the preferences. \param fname optional filename with preferences. If is not given, the defualt is used. */ void SavePrefs(const QString & fname=QString::null); void SavePrefsXML(); /*! \brief Writes the preferences physically to the file. Here is the XML file created itself. \param ho a file name to write \retval bool true on success, false on write error */ bool WritePref(QString ho); /*! \brief Reads the preferences physically from the file. Here is the XML file parsed itself. Returns false on error. It's the caller's job to make sure the prefs file actually exists. \param ho a file name to write \retval bool true on success, false on write error */ bool ReadPref(QString ho); //! \brief Set up the main window with prefs values, recent files list, main window size etc void setupMainWindow(ScribusMainWindow* mw); void setGhostscriptExecutable(const QString&); void setImageEditorExecutable(const QString&); void setExtBrowserExecutable(const QString&); void setLatexConfigs(const QStringList&); void setLatexCommands(const QMap& commands) { appPrefs.latexCommands=commands; } void setLatexEditorExecutable(const QString&); QString ghostscriptExecutable() const {return appPrefs.gs_exe;}; QString imageEditorExecutable() const {return appPrefs.imageEditorExecutable;}; QString extBrowserExecutable() const {return appPrefs.extBrowserExecutable;}; QStringList latexConfigs() const {return appPrefs.latexConfigs;} QMap latexCommands() const {return appPrefs.latexCommands;} QString latexEditorExecutable() const {return appPrefs.latexEditorExecutable;} bool latexStartWithEmptyFrames() const {return appPrefs.latexStartWithEmptyFrames;} //! \brief Get the users preferred preview resolution int gsResolution(); int latexResolution() const {return appPrefs.latexResolution;} bool latexForceDpi() const {return appPrefs.latexForceDpi;} //! \brief Get the users preferred document directory const QString documentDir(); void setDocumentDir(const QString& dirname); int mouseWheelValue() const; //! \brief Get the user set display scale double displayScale() const; //! \brief Get the GUI language from preferences const QString& guiLanguage() const; //! \brief Get the GUI style from preferences const QString& guiStyle() const; const QString& guiSystemStyle() const; //! \brief Get the GUI style from preferences const int& guiFontSize() const; const int& paletteFontSize() const; void setKeyEntry(const QString&, const QString&, const QKeySequence&, const int&); void setShowStartupDialog(const bool); bool showPageShadow() const; //! \brief Sets the preferences' color set void setColorSet(const ColorList&); //! \brief Sets the preferences' color set name void setColorSetName(const QString&); //! \brief Returns the preferences' color set const ColorList& colorSet(); //! \brief Returns a pointer to the preferences' color set. Needed for now until colors are better defined ColorList* colorSetPtr(); //! \brief Returns the preferences' color set name const QString& colorSetName(); /*! \brief Return if a color belongs to tools prefs colors */ bool isToolColor(const QString& name); static bool isToolColor(const struct toolPrefs& settings, const QString& name); /*! \brief Return the list of used colors in tool prefs */ QStringList toolColorNames(); static QStringList toolColorNames(const struct toolPrefs& settings); /*! \brief Replace used colors in tool prefs */ void replaceToolColors(const QMap replaceMap); static void replaceToolColors(struct toolPrefs& settings, const QMap replaceMap); /*! \brief Finds the fonts on the system Must be run after: PrefsManager::setup() Must be run before: PrefsManager::initDefaults() \param showFontInfo flag to get extended fotn info \retval bool true on finding 1 or more fonts */ bool GetAllFonts(bool showFontInfo); ApplicationPrefs* applicationPrefs(); PrefsFile* applicationPrefsFile(); bool importingFrom12x(); //! \brief Return the last error reported by a PrefsManager method const QString & lastError() const; /*! \brief Display a GUI alert informing the user that saving prefs failed. This might want to move to another class later, perhaps being triggered by a signal emitted here. */ void alertSavePrefsFailed() const; void alertLoadPrefsFailed() const; //! \brief Temporarily public while this class takes shape so progress can happen and cvs can build struct ApplicationPrefs appPrefs; PrefsFile* prefsFile; public slots: void languageChange(); private: /** * @brief The only instance of PrefsManager available. * * PrefsManager is singleton and the instance can be queried with the method * instance(). */ static PrefsManager* _instance; QString prefsLocation; bool importingFrom12; bool firstTimeIgnoreOldPrefs; /*! \brief The last error message generated by a method of this class. Do not write "success" messages to this. */ QString m_lastError; signals: void prefsChanged(); }; #endif