Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / editors / sc-ide / core / settings / manager.hpp
blob85a972be7a9c2a702f9476c90243b4e60acef682
1 /*
2 SuperCollider Qt IDE
3 Copyright (c) 2012 Jakob Leben & Tim Blechmann
4 http://www.audiosynth.com
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 #ifndef SCIDE_CORE_SETTINGS_MANAGER_HPP_INCLUDED
22 #define SCIDE_CORE_SETTINGS_MANAGER_HPP_INCLUDED
24 #include "serialization.hpp" // to forward meta type declarations
26 #include <QObject>
27 #include <QKeySequence>
28 #include <QList>
29 #include <QAction>
31 namespace ScIDE { namespace Settings {
33 class Manager : public QObject
35 Q_OBJECT
37 public:
38 Manager( const QString & filename, QObject * parent = 0 );
40 // forwarded
42 void beginGroup ( const QString & prefix ) { mSettings->beginGroup(prefix); }
44 void endGroup () { mSettings->endGroup(); }
46 QString group() const { return mSettings->group(); }
48 QStringList childGroups () const { return mSettings->childGroups(); }
50 QStringList childKeys () const { return mSettings->childKeys(); }
52 QStringList allKeys() const { return mSettings->allKeys(); }
54 void sync() { mSettings->sync(); }
56 void remove ( const QString &key ) { mSettings->remove(key); }
58 // extended
60 bool contains ( const QString & key ) const;
62 bool isOverridden( const QString & key ) const
64 return mSettings->contains( key );
67 QVariant value ( const QString & key ) const;
69 QVariant defaultValue ( const QString & key ) const
71 return mDefaults.value(resolvedKey(key));
74 void setValue ( const QString & key, const QVariant & value );
76 QKeySequence shortcut( const QString & key );
78 const QList<QAction*> & actions() { return mActions; }
79 void addAction ( QAction *action );
80 QString keyForAction ( QAction *action );
82 QFont codeFont();
84 private:
85 void setDefault ( const QString & key, const QVariant & value )
87 mDefaults.insert(resolvedKey(key), value);
90 typedef QSettings::SettingsMap SettingsMap;
92 QString resolvedKey( const QString & key ) const
94 QString fullKey = mSettings->group();
95 if(!fullKey.isEmpty()) fullKey.append("/");
96 fullKey.append(key);
97 return fullKey;
100 void initDefaults();
101 void initHighlightingDefaults();
103 QSettings *mSettings;
104 SettingsMap mDefaults;
105 QList<QAction*> mActions;
108 }} // namespace ScIDE::Settings
110 #endif