X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fglobalsettings.cpp;h=cd69591a8cbae45f6808a3cf2338197ef3ceb4fb;hp=c77327c3d1b6b18bd1c1255139b0a6b19323a7d9;hb=16a832bc5bb4cce24598537c99e0655edb65c1d0;hpb=fe060a4874fc72655cced0596ef610a13f5b0413 diff --git a/pv/globalsettings.cpp b/pv/globalsettings.cpp index c77327c3..cd69591a 100644 --- a/pv/globalsettings.cpp +++ b/pv/globalsettings.cpp @@ -25,6 +25,7 @@ #include using std::map; +using std::string; using std::vector; namespace pv { @@ -39,6 +40,7 @@ const QString GlobalSettings::Key_View_ShowAnalogMinorGrid = "View_ShowAnalogMin 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_Dec_InitialStateConfigurable = "Dec_InitialStateConfigurable"; const QString GlobalSettings::Key_Log_BufferSize = "Log_BufferSize"; const QString GlobalSettings::Key_Log_NotifyOfStacktrace = "Log_NotifyOfStacktrace"; @@ -169,5 +171,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