]> sigrok.org Git - pulseview.git/blobdiff - pv/globalsettings.hpp
Auto-load session setups if they exist and auto-save them if desired
[pulseview.git] / pv / globalsettings.hpp
index 6e027d782c97dd3e4a449e72282fa8c2ad55e646..a65a723c0c0e85f4704fa38bb712a8e68276c0ba 100644 (file)
 #include <glib.h>
 #include <glibmm/variant.h>
 
+#include <QPalette>
 #include <QSettings>
 #include <QString>
 #include <QVariant>
 
 using std::map;
+using std::pair;
 using std::vector;
 
 namespace pv {
 
+extern const vector< pair<QString, QString> > Themes;
+
+
 class GlobalSettingsInterface
 {
 public:
@@ -46,6 +51,9 @@ class GlobalSettings : public QSettings
        Q_OBJECT
 
 public:
+       static const QString Key_General_Theme;
+       static const QString Key_General_Style;
+       static const QString Key_General_SaveWithSetup;
        static const QString Key_View_ZoomToFitDuringAcq;
        static const QString Key_View_ZoomToFitAfterAcq;
        static const QString Key_View_TriggerIsZeroTime;
@@ -60,6 +68,7 @@ public:
        static const QString Key_View_DefaultLogicHeight;
        static const QString Key_View_ShowHoverMarker;
        static const QString Key_View_SnapDistance;
+       static const QString Key_View_CursorFillColor;
        static const QString Key_Dec_InitialStateConfigurable;
        static const QString Key_Dec_ExportFormat;
        static const QString Key_Log_BufferSize;
@@ -74,7 +83,13 @@ public:
 public:
        GlobalSettings();
 
+       void save_internal_defaults();
        void set_defaults_where_needed();
+       void set_bright_theme_default_colors();
+       void set_dark_theme_default_colors();
+
+       bool current_theme_is_dark();
+       void apply_theme();
 
        static void add_change_handler(GlobalSettingsInterface *cb);
        static void remove_change_handler(GlobalSettingsInterface *cb);
@@ -112,6 +127,11 @@ private:
 
        static bool tracking_;
        static map<QString, QVariant> tracked_changes_;
+
+       static QString default_style_;
+       static QPalette default_palette_;
+
+       bool is_dark_theme_;
 };
 
 } // namespace pv