[gnome-builder] plugins/editorui: add toggle to reset language overrides
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] plugins/editorui: add toggle to reset language overrides
- Date: Mon, 29 Aug 2022 19:20:20 +0000 (UTC)
commit a8361b0a56c495cdfa8b38bf825810e8519ca4ad
Author: Christian Hergert <chergert redhat com>
Date: Mon Aug 29 12:20:06 2022 -0700
plugins/editorui: add toggle to reset language overrides
src/plugins/editorui/gbp-editorui-tweaks-addin.c | 72 ++++++++++++++++++++++++
src/plugins/editorui/tweaks-language.ui | 17 ++++++
2 files changed, 89 insertions(+)
---
diff --git a/src/plugins/editorui/gbp-editorui-tweaks-addin.c
b/src/plugins/editorui/gbp-editorui-tweaks-addin.c
index 24d212256..6c895e981 100644
--- a/src/plugins/editorui/gbp-editorui-tweaks-addin.c
+++ b/src/plugins/editorui/gbp-editorui-tweaks-addin.c
@@ -70,6 +70,77 @@ editorui_create_style_scheme_selector (GbpEditoruiTweaksAddin *self,
NULL);
}
+static void
+reset_language_overrides_cb (GtkButton *button,
+ IdeContext *context)
+{
+ GSettingsSchemaSource *source;
+ g_autofree char *project_id = NULL;
+ g_autofree char *schema_path = NULL;
+ g_autoptr(GSettingsSchema) schema = NULL;
+ g_autoptr(GSettings) settings = NULL;
+ g_auto(GStrv) keys = NULL;
+ const char *lang_id;
+
+ g_assert (GTK_IS_BUTTON (button));
+ g_assert (IDE_IS_CONTEXT (context));
+
+ if (!(lang_id = g_object_get_data (G_OBJECT (button), "LANGUAGE")) ||
+ !(project_id = ide_context_dup_project_id (context)) ||
+ !(schema_path = ide_settings_resolve_schema_path ("org.gnome.builder.editor.language", project_id,
lang_id)))
+ return;
+
+ source = g_settings_schema_source_get_default ();
+ schema = g_settings_schema_source_lookup (source, "org.gnome.builder.editor.language", TRUE);
+ keys = g_settings_schema_list_keys (schema);
+ settings = g_settings_new_with_path ("org.gnome.builder.editor.language", schema_path);
+
+ for (guint i = 0; keys[i]; i++)
+ g_settings_reset (settings, keys[i]);
+}
+
+static GtkWidget *
+create_language_reset_cb (GbpEditoruiTweaksAddin *self,
+ IdeTweaksWidget *widget,
+ IdeTweaksWidget *instance)
+{
+ g_autoptr(GObject) language = NULL;
+ IdeTweaksBinding *binding;
+ const char *lang_id;
+ IdeContext *context;
+ IdeTweaks *tweaks;
+ GtkButton *button;
+
+ g_assert (GBP_IS_EDITORUI_TWEAKS_ADDIN (self));
+ g_assert (IDE_IS_TWEAKS_WIDGET (widget));
+ g_assert (IDE_IS_TWEAKS_WIDGET (instance));
+
+ if (!(binding = ide_tweaks_widget_get_binding (widget)) ||
+ !(language = ide_tweaks_property_dup_object (IDE_TWEAKS_PROPERTY (binding))) ||
+ !(lang_id = gtk_source_language_get_id (GTK_SOURCE_LANGUAGE (language))) ||
+ !(tweaks = IDE_TWEAKS (ide_tweaks_item_get_root (IDE_TWEAKS_ITEM (widget)))) ||
+ !(context = ide_tweaks_get_context (tweaks)))
+ return NULL;
+
+ button = g_object_new (GTK_TYPE_BUTTON,
+ "css-classes", IDE_STRV_INIT ("destructive-action"),
+ "label", _("Reset"),
+ "tooltip-text", _("Reverts language preferences to application defaults"),
+ "halign", GTK_ALIGN_END,
+ "width-request", 120,
+ NULL);
+ g_object_set_data (G_OBJECT (button),
+ "LANGUAGE",
+ (gpointer)g_intern_string (lang_id));
+ g_signal_connect_object (button,
+ "clicked",
+ G_CALLBACK (reset_language_overrides_cb),
+ context,
+ 0);
+
+ return GTK_WIDGET (button);
+}
+
static int
compare_by_section (gconstpointer a,
gconstpointer b,
@@ -112,6 +183,7 @@ gbp_editorui_tweaks_addin_load (IdeTweaksAddin *addin,
"/plugins/editorui/tweaks-language.ui"));
ide_tweaks_addin_bind_callback (IDE_TWEAKS_ADDIN (self), editorui_create_style_scheme_preview);
ide_tweaks_addin_bind_callback (IDE_TWEAKS_ADDIN (self), editorui_create_style_scheme_selector);
+ ide_tweaks_addin_bind_callback (IDE_TWEAKS_ADDIN (self), create_language_reset_cb);
ide_tweaks_expose_object (tweaks, "GtkSourceLanguages", G_OBJECT (store));
IDE_TWEAKS_ADDIN_CLASS (gbp_editorui_tweaks_addin_parent_class)->load (addin, tweaks);
diff --git a/src/plugins/editorui/tweaks-language.ui b/src/plugins/editorui/tweaks-language.ui
index 92a961697..bc818b724 100644
--- a/src/plugins/editorui/tweaks-language.ui
+++ b/src/plugins/editorui/tweaks-language.ui
@@ -301,6 +301,23 @@
</child>
</object>
</child>
+ <child>
+ <object class="IdeTweaksGroup">
+ <property name="hidden-when">app</property>
+ <child>
+ <object class="IdeTweaksWidget">
+ <signal name="create-for-item" handler="create_language_reset_cb"
swapped="true" object="GbpEditoruiTweaksAddin"/>
+ <property name="binding">
+ <object class="IdeTweaksProperty">
+ <binding name="object">
+ <lookup name="item">language_page_factory</lookup>
+ </binding>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
</child>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]