File indexing completed on 2024-05-12 16:01:41
0001 /* 0002 * SPDX-FileCopyrightText: 2010 Boudewijn Rempt <boud@valdyas.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KIS_PREFERENCE_SET_REGISTRY_H_ 0008 #define KIS_PREFERENCE_SET_REGISTRY_H_ 0009 0010 #include <QObject> 0011 #include <QWidget> 0012 #include <QString> 0013 0014 #include "KoGenericRegistry.h" 0015 0016 #include "kis_types.h" 0017 0018 #include <kritaui_export.h> 0019 0020 class QIcon; 0021 0022 /** 0023 * Implement this abstract class to provide a preferences pane for the preferences dialog. 0024 */ 0025 class KRITAUI_EXPORT KisPreferenceSet : public QWidget { 0026 Q_OBJECT 0027 public: 0028 KisPreferenceSet(QWidget* parent=0) : QWidget(parent) 0029 {} 0030 virtual QString id() = 0; 0031 virtual QString name() = 0; 0032 virtual QString header() = 0; 0033 virtual QIcon icon() = 0; 0034 public Q_SLOTS: 0035 virtual void savePreferences() const = 0; 0036 virtual void loadPreferences() = 0; 0037 virtual void loadDefaultPreferences() = 0; 0038 }; 0039 0040 class KRITAUI_EXPORT KisAbstractPreferenceSetFactory { 0041 public: 0042 virtual ~KisAbstractPreferenceSetFactory() {} 0043 virtual KisPreferenceSet* createPreferenceSet() = 0; 0044 virtual QString id() const = 0; 0045 }; 0046 0047 /** 0048 * This registry does not load the plugins itself: plugins with preferences panes should 0049 * add those panes when they are loaded themselves. 0050 */ 0051 class KRITAUI_EXPORT KisPreferenceSetRegistry : public QObject, public KoGenericRegistry<KisAbstractPreferenceSetFactory*> 0052 { 0053 public: 0054 KisPreferenceSetRegistry(); 0055 ~KisPreferenceSetRegistry() override; 0056 static KisPreferenceSetRegistry * instance(); 0057 0058 private: 0059 Q_DISABLE_COPY(KisPreferenceSetRegistry) 0060 }; 0061 0062 #endif // KIS_PREFERENCE_SETSPACE_REGISTRY_H_