[gnome-builder] sidebar: add preference to toggle "Open Pages" section



commit d0766e0f33febf8348ab25882f268735e984d204
Author: Christian Hergert <chergert redhat com>
Date:   Tue Nov 14 15:01:29 2017 -0800

    sidebar: add preference to toggle "Open Pages" section
    
    This adds a new gsetting that can be used to toggle the visibility of the
    open pages section in the sidebar.

 data/gsettings/org.gnome.builder.gschema.xml     |    5 +++
 src/libide/editor/ide-editor-sidebar.c           |   30 ++++++++++++++++++++++
 src/libide/preferences/ide-preferences-builtin.c |    3 ++
 3 files changed, 38 insertions(+), 0 deletions(-)
---
diff --git a/data/gsettings/org.gnome.builder.gschema.xml b/data/gsettings/org.gnome.builder.gschema.xml
index 03c653d..52b5ca7 100644
--- a/data/gsettings/org.gnome.builder.gschema.xml
+++ b/data/gsettings/org.gnome.builder.gschema.xml
@@ -30,5 +30,10 @@
       <summary>Restore Previous Files</summary>
       <description>Restore previously opened files when loading a project.</description>
     </key>
+    <key name="show-open-files" type="b">
+      <default>true</default>
+      <summary>Show Open Files</summary>
+      <description>Display the open files list in the project sidebar.</description>
+    </key>
   </schema>
 </schemalist>
diff --git a/src/libide/editor/ide-editor-sidebar.c b/src/libide/editor/ide-editor-sidebar.c
index d9bcc9d..9898905 100644
--- a/src/libide/editor/ide-editor-sidebar.c
+++ b/src/libide/editor/ide-editor-sidebar.c
@@ -41,6 +41,9 @@ struct _IdeEditorSidebar
 {
   IdeLayoutPane      parent_instance;
 
+  GSettings         *settings;
+  GListModel        *open_pages;
+
   /* Template widgets */
   GtkBox            *box;
   GtkStackSwitcher  *stack_switcher;
@@ -143,6 +146,18 @@ ide_editor_sidebar_open_pages_items_changed (IdeEditorSidebar *self,
 }
 
 static void
+ide_editor_sidebar_changed_show_open_files (IdeEditorSidebar *self,
+                                            const gchar      *key,
+                                            GSettings        *settings)
+{
+  g_assert (IDE_IS_EDITOR_SIDEBAR (self));
+  g_assert (G_IS_SETTINGS (settings));
+
+  if (self->open_pages != NULL)
+    ide_editor_sidebar_open_pages_items_changed (self, 0, 0, 0, self->open_pages);
+}
+
+static void
 ide_editor_sidebar_destroy (GtkWidget *widget)
 {
   IdeEditorSidebar *self = (IdeEditorSidebar *)widget;
@@ -150,6 +165,9 @@ ide_editor_sidebar_destroy (GtkWidget *widget)
   if (self->open_pages_list_box != NULL)
     gtk_list_box_bind_model (self->open_pages_list_box, NULL, NULL, NULL, NULL);
 
+  g_clear_object (&self->open_pages);
+  g_clear_object (&self->settings);
+
   GTK_WIDGET_CLASS (ide_editor_sidebar_parent_class)->destroy (widget);
 }
 
@@ -185,6 +203,16 @@ ide_editor_sidebar_init (IdeEditorSidebar *self)
                             "notify::visible-child",
                             G_CALLBACK (ide_editor_sidebar_stack_notify_visible_child),
                             self);
+
+  self->settings = g_settings_new ("org.gnome.builder");
+
+  g_signal_connect_object (self->settings,
+                           "changed::show-open-files",
+                           G_CALLBACK (ide_editor_sidebar_changed_show_open_files),
+                           self,
+                           G_CONNECT_SWAPPED);
+
+  ide_editor_sidebar_changed_show_open_files (self, NULL, self->settings);
 }
 
 /**
@@ -449,6 +477,8 @@ _ide_editor_sidebar_set_open_pages (IdeEditorSidebar *self,
   g_return_if_fail (!open_pages ||
                     g_list_model_get_item_type (open_pages) == IDE_TYPE_LAYOUT_VIEW);
 
+  g_set_object (&self->open_pages, open_pages);
+
   if (open_pages != NULL)
     g_signal_connect_object (open_pages,
                              "items-changed",
diff --git a/src/libide/preferences/ide-preferences-builtin.c 
b/src/libide/preferences/ide-preferences-builtin.c
index e1ac633..105b49c 100644
--- a/src/libide/preferences/ide-preferences-builtin.c
+++ b/src/libide/preferences/ide-preferences-builtin.c
@@ -151,6 +151,9 @@ ide_preferences_builtin_register_editor (DzlPreferences *preferences)
 {
   dzl_preferences_add_page (preferences, "editor", _("Editor"), 100);
 
+  dzl_preferences_add_list_group (preferences, "editor", "general", _("General"), GTK_SELECTION_NONE, -5);
+  dzl_preferences_add_switch (preferences, "editor", "general", "org.gnome.builder", "show-open-files", 
NULL, NULL, _("Display list of open files"), _("Display the list of all open files in the within the project 
sidebar"), NULL, 0);
+
   dzl_preferences_add_list_group (preferences, "editor", "position", _("Cursor"), GTK_SELECTION_NONE, 0);
   dzl_preferences_add_switch (preferences, "editor", "position", "org.gnome.builder.editor", 
"restore-insert-mark", NULL, NULL, _("Restore cursor position"), _("Restore cursor position when a file is 
reopened"), NULL, 0);
   dzl_preferences_add_switch (preferences, "editor", "position", "org.gnome.builder.editor", "wrap-text", 
NULL, NULL, _("Enable text wrapping"), _("Wrap text that is too wide to display"), NULL, 5);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]