* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef PULSEVIEW_GLOBALSETTINGS_HPP
-#define PULSEVIEW_GLOBALSETTINGS_HPP
+#ifndef PULSEVIEW_PV_GLOBALSETTINGS_HPP
+#define PULSEVIEW_PV_GLOBALSETTINGS_HPP
#include <map>
#include <glib.h>
+#include <glibmm/variant.h>
+#include <QPalette>
#include <QSettings>
#include <QString>
#include <QVariant>
+#include "util.hpp"
+
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_Language;
+ static const QString Key_General_Theme;
+ static const QString Key_General_Style;
+ static const QString Key_General_SaveWithSetup;
+ static const QString Key_General_StartAllSessions;
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_AllowVerticalDragging;
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_KeepRulerItemSelected;
+ static const QString Key_View_SnapDistance;
+ static const QString Key_View_CursorFillColor;
+ static const QString Key_View_CursorShowInterval;
+ static const QString Key_View_CursorShowFrequency;
+ static const QString Key_View_CursorShowSamples;
static const QString Key_Dec_InitialStateConfigurable;
+ static const QString Key_Dec_ExportFormat;
+ static const QString Key_Dec_AlwaysShowAllRows;
+ 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();
+
+ static bool current_theme_is_dark();
+ void apply_theme();
+
+ void apply_language();
static void add_change_handler(GlobalSettingsInterface *cb);
static void remove_change_handler(GlobalSettingsInterface *cb);
void undo_tracked_changes();
static void store_gvariant(QSettings &settings, GVariant *v);
-
static GVariant* restore_gvariant(QSettings &settings);
+ static void store_variantbase(QSettings &settings, Glib::VariantBase v);
+ static Glib::VariantBase restore_variantbase(QSettings &settings);
+
+ static void store_timestamp(QSettings &settings, const char *name, const pv::util::Timestamp &ts);
+ static pv::util::Timestamp restore_timestamp(QSettings &settings, const char *name);
+
private:
static vector<GlobalSettingsInterface*> callbacks_;
static bool tracking_;
static map<QString, QVariant> tracked_changes_;
+
+ static QString default_style_;
+ static QPalette default_palette_;
+
+ static bool is_dark_theme_;
};
} // namespace pv
-#endif // PULSEVIEW_GLOBALSETTINGS_HPP
+#endif // PULSEVIEW_PV_GLOBALSETTINGS_HPP