X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fglobalsettings.cpp;h=ae8682a68f3ba9ec6a31edf7ac9d96c212d6fc97;hp=8be4265b247e729d00f9bccacd433283d868250f;hb=6fff12acb797c5363f5ac2e60a9b747032f2ce79;hpb=7ba25e4f0953839d9dd9623ef8d80c57db75364b diff --git a/pv/globalsettings.cpp b/pv/globalsettings.cpp index 8be4265b..ae8682a6 100644 --- a/pv/globalsettings.cpp +++ b/pv/globalsettings.cpp @@ -20,11 +20,13 @@ #include "globalsettings.hpp" #include +#include #include #include #include using std::map; +using std::string; using std::vector; namespace pv { @@ -32,14 +34,19 @@ namespace pv { const QString GlobalSettings::Key_View_ZoomToFitDuringAcq = "View_ZoomToFitDuringAcq"; const QString GlobalSettings::Key_View_ZoomToFitAfterAcq = "View_ZoomToFitAfterAcq"; const QString GlobalSettings::Key_View_TriggerIsZeroTime = "View_TriggerIsZeroTime"; -const QString GlobalSettings::Key_View_ColouredBG = "View_ColouredBG"; +const QString GlobalSettings::Key_View_ColoredBG = "View_ColoredBG"; const QString GlobalSettings::Key_View_StickyScrolling = "View_StickyScrolling"; const QString GlobalSettings::Key_View_ShowSamplingPoints = "View_ShowSamplingPoints"; +const QString GlobalSettings::Key_View_FillSignalHighAreas = "View_FillSignalHighAreas"; +const QString GlobalSettings::Key_View_FillSignalHighAreaColor = "View_FillSignalHighAreaColor"; const QString GlobalSettings::Key_View_ShowAnalogMinorGrid = "View_ShowAnalogMinorGrid"; const QString GlobalSettings::Key_View_ConversionThresholdDispMode = "View_ConversionThresholdDispMode"; const QString GlobalSettings::Key_View_DefaultDivHeight = "View_DefaultDivHeight"; const QString GlobalSettings::Key_View_DefaultLogicHeight = "View_DefaultLogicHeight"; +const QString GlobalSettings::Key_View_ShowHoverMarker = "View_ShowHoverMarker"; +const QString GlobalSettings::Key_View_SnapDistance = "View_SnapDistance"; const QString GlobalSettings::Key_Dec_InitialStateConfigurable = "Dec_InitialStateConfigurable"; +const QString GlobalSettings::Key_Dec_ExportFormat = "Dec_ExportFormat"; const QString GlobalSettings::Key_Log_BufferSize = "Log_BufferSize"; const QString GlobalSettings::Key_Log_NotifyOfStacktrace = "Log_NotifyOfStacktrace"; @@ -59,14 +66,21 @@ void GlobalSettings::set_defaults_where_needed() if (!contains(Key_View_ZoomToFitAfterAcq)) setValue(Key_View_ZoomToFitAfterAcq, true); - // Enable coloured trace backgrounds by default - if (!contains(Key_View_ColouredBG)) - setValue(Key_View_ColouredBG, true); + // Enable colored trace backgrounds by default + if (!contains(Key_View_ColoredBG)) + setValue(Key_View_ColoredBG, true); // Enable showing sampling points by default if (!contains(Key_View_ShowSamplingPoints)) setValue(Key_View_ShowSamplingPoints, true); + // Enable filling logic signal high areas by default + if (!contains(Key_View_FillSignalHighAreas)) + setValue(Key_View_FillSignalHighAreas, true); + if (!contains(Key_View_FillSignalHighAreaColor)) + setValue(Key_View_FillSignalHighAreaColor, + QColor(0, 0, 0, 5 * 256 / 100).rgba()); + if (!contains(Key_View_DefaultDivHeight)) setValue(Key_View_DefaultDivHeight, 3 * QFontMetrics(QApplication::font()).height()); @@ -75,6 +89,15 @@ void GlobalSettings::set_defaults_where_needed() setValue(Key_View_DefaultLogicHeight, 2 * QFontMetrics(QApplication::font()).height()); + if (!contains(Key_View_ShowHoverMarker)) + setValue(Key_View_ShowHoverMarker, true); + + if (!contains(Key_View_SnapDistance)) + setValue(Key_View_SnapDistance, 15); + + if (!contains(Key_Dec_ExportFormat)) + setValue(Key_Dec_ExportFormat, "%s %d: %c: %1"); + // Default to 500 lines of backlog if (!contains(Key_Log_BufferSize)) setValue(Key_Log_BufferSize, 500); @@ -107,6 +130,7 @@ void GlobalSettings::setValue(const QString &key, const QVariant &value) QSettings::setValue(key, value); + // TODO Emulate noquote() qDebug() << "Setting" << key << "changed to" << value; // Call all registered callbacks @@ -168,5 +192,33 @@ GVariant* GlobalSettings::restore_gvariant(QSettings &settings) return value; } +void GlobalSettings::store_variantbase(QSettings &settings, Glib::VariantBase v) +{ + const QByteArray var_data = QByteArray((const char*)v.get_data(), v.get_size()); + + settings.setValue("value", var_data); + settings.setValue("type", QString::fromStdString(v.get_type_string())); +} + +Glib::VariantBase GlobalSettings::restore_variantbase(QSettings &settings) +{ + QString raw_type = settings.value("type").toString(); + GVariantType *var_type = g_variant_type_new(raw_type.toUtf8()); + + QByteArray data = settings.value("value").toByteArray(); + + gpointer var_data = g_memdup((gconstpointer)data.constData(), + (guint)data.size()); + + GVariant *value = g_variant_new_from_data(var_type, var_data, + data.size(), false, g_free, var_data); + + Glib::VariantBase ret_val = Glib::VariantBase(value, true); + + g_variant_type_free(var_type); + g_variant_unref(value); + + return ret_val; +} } // namespace pv