#include <map>
#include <glib.h>
+#include <glibmm/variant.h>
+#include <QPalette>
#include <QSettings>
#include <QString>
#include <QVariant>
-using std::function;
using std::map;
+using std::pair;
using std::vector;
namespace pv {
+extern const vector< pair<QString, QString> > Themes;
+
+
class GlobalSettingsInterface
{
public:
Q_OBJECT
public:
+ static const QString Key_General_Theme;
+ static const QString Key_General_Style;
static const QString Key_View_ZoomToFitDuringAcq;
static const QString Key_View_ZoomToFitAfterAcq;
static const QString Key_View_TriggerIsZeroTime;
- static const QString Key_View_ColouredBG;
+ static const QString Key_View_ColoredBG;
static const QString Key_View_StickyScrolling;
static const QString Key_View_ShowSamplingPoints;
+ static const QString Key_View_FillSignalHighAreas;
+ static const QString Key_View_FillSignalHighAreaColor;
static const QString Key_View_ShowAnalogMinorGrid;
static const QString Key_View_ConversionThresholdDispMode;
static const QString Key_View_DefaultDivHeight;
static const QString Key_View_DefaultLogicHeight;
+ static const QString Key_View_ShowHoverMarker;
+ static const QString Key_View_SnapDistance;
static const QString Key_Dec_InitialStateConfigurable;
+ static const QString Key_Dec_ExportFormat;
+ static const QString Key_Log_BufferSize;
+ static const QString Key_Log_NotifyOfStacktrace;
enum ConvThrDispMode {
ConvThrDispMode_None = 0,
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);
static GVariant* restore_gvariant(QSettings &settings);
+ static void store_variantbase(QSettings &settings, Glib::VariantBase v);
+
+ static Glib::VariantBase restore_variantbase(QSettings &settings);
+
private:
static vector<GlobalSettingsInterface*> callbacks_;
static bool tracking_;
static map<QString, QVariant> tracked_changes_;
+
+ static QString default_style_;
+ static QPalette default_palette_;
+
+ bool is_dark_theme_;
};
} // namespace pv