[gnome-builder/wip/minimap2: 12/13] editor: make minimap configurable with gsettings
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/minimap2: 12/13] editor: make minimap configurable with gsettings
- Date: Wed, 22 Apr 2015 00:59:49 +0000 (UTC)
commit 9416212882f0bdc1183d5a1fde371c1370c213a5
Author: Christian Hergert <christian hergert me>
Date: Tue Apr 21 17:37:32 2015 -0700
editor: make minimap configurable with gsettings
gsettings set org.gnome.builder.editor show-map true
.../org.gnome.builder.editor.gschema.xml.in | 5 ++
data/ui/gb-editor-frame.ui | 3 +-
src/editor/gb-editor-frame-private.h | 1 +
src/editor/gb-editor-frame.c | 57 +++++++++++++++++++-
4 files changed, 63 insertions(+), 3 deletions(-)
---
diff --git a/data/gsettings/org.gnome.builder.editor.gschema.xml.in
b/data/gsettings/org.gnome.builder.editor.gschema.xml.in
index 8565165..0d0a5b9 100644
--- a/data/gsettings/org.gnome.builder.editor.gschema.xml.in
+++ b/data/gsettings/org.gnome.builder.editor.gschema.xml.in
@@ -63,5 +63,10 @@
<range min="0" max="999"/>
<default>0</default>
</key>
+ <key name="show-map" type="b">
+ <default>false</default>
+ <summary>Show overview map</summary>
+ <description>If enabled, Builder will display an overview map of the source file next to the
editor.</description>
+ </key>
</schema>
</schemalist>
diff --git a/data/ui/gb-editor-frame.ui b/data/ui/gb-editor-frame.ui
index 3042df8..79301f6 100644
--- a/data/ui/gb-editor-frame.ui
+++ b/data/ui/gb-editor-frame.ui
@@ -143,8 +143,7 @@
</object>
</child>
<child>
- <object class="IdeSourceMap" id="source_map">
- <property name="view">source_view</property>
+ <object class="GtkBox" id="source_map_container">
<property name="visible">true</property>
</object>
</child>
diff --git a/src/editor/gb-editor-frame-private.h b/src/editor/gb-editor-frame-private.h
index dfcc5c8..6bd1055 100644
--- a/src/editor/gb-editor-frame-private.h
+++ b/src/editor/gb-editor-frame-private.h
@@ -39,6 +39,7 @@ struct _GbEditorFrame
GdTaggedEntry *search_entry;
GdTaggedEntryTag *search_entry_tag;
IdeSourceView *source_view;
+ GtkBox *source_map_container;
IdeSourceMap *source_map;
gulong cursor_moved_handler;
diff --git a/src/editor/gb-editor-frame.c b/src/editor/gb-editor-frame.c
index f19246d..e62899b 100644
--- a/src/editor/gb-editor-frame.c
+++ b/src/editor/gb-editor-frame.c
@@ -34,6 +34,7 @@ enum {
PROP_0,
PROP_BACK_FORWARD_LIST,
PROP_DOCUMENT,
+ PROP_SHOW_MAP,
LAST_PROP
};
@@ -455,6 +456,42 @@ gb_editor_frame__source_view_request_documentation (GbEditorFrame *self,
gb_widget_activate_action (GTK_WIDGET (self), "workbench", "search-docs", param);
}
+static gboolean
+gb_editor_frame_get_show_map (GbEditorFrame *self)
+{
+ g_assert (GB_IS_EDITOR_FRAME (self));
+
+ return (self->source_map != NULL);
+}
+
+static void
+gb_editor_frame_set_show_map (GbEditorFrame *self,
+ gboolean show_map)
+{
+ g_assert (GB_IS_EDITOR_FRAME (self));
+
+ if (show_map != gb_editor_frame_get_show_map (self))
+ {
+ if (self->source_map != NULL)
+ {
+ gtk_container_remove (GTK_CONTAINER (self->source_map_container),
+ GTK_WIDGET (self->source_map));
+ self->source_map = NULL;
+ }
+ else
+ {
+ self->source_map = g_object_new (IDE_TYPE_SOURCE_MAP,
+ "view", self->source_view,
+ "visible", TRUE,
+ NULL);
+ gtk_container_add (GTK_CONTAINER (self->source_map_container),
+ GTK_WIDGET (self->source_map));
+ }
+
+ g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_SHOW_MAP]);
+ }
+}
+
static void
gb_editor_frame_constructed (GObject *object)
{
@@ -525,6 +562,10 @@ gb_editor_frame_get_property (GObject *object,
g_value_set_object (value, gb_editor_frame_get_document (self));
break;
+ case PROP_SHOW_MAP:
+ g_value_set_boolean (value, gb_editor_frame_get_show_map (self));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -548,6 +589,10 @@ gb_editor_frame_set_property (GObject *object,
ide_source_view_set_back_forward_list (self->source_view, g_value_get_object (value));
break;
+ case PROP_SHOW_MAP:
+ gb_editor_frame_set_show_map (self, g_value_get_boolean (value));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -583,6 +628,15 @@ gb_editor_frame_class_init (GbEditorFrameClass *klass)
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (object_class, PROP_DOCUMENT, gParamSpecs [PROP_DOCUMENT]);
+ gParamSpecs [PROP_SHOW_MAP] =
+ g_param_spec_boolean ("show-map",
+ _("Show Map"),
+ _("If the ovewview map should be shown."),
+ FALSE,
+ (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_SHOW_MAP,
+ gParamSpecs [PROP_SHOW_MAP]);
+
GB_WIDGET_CLASS_TEMPLATE (klass, "gb-editor-frame.ui");
GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, floating_bar);
@@ -590,8 +644,8 @@ gb_editor_frame_class_init (GbEditorFrameClass *klass)
GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, overwrite_label);
GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, scrolled_window);
GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, search_entry);
+ GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, source_map_container);
GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, search_revealer);
- GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, source_map);
GB_WIDGET_CLASS_BIND (klass, GbEditorFrame, source_view);
g_type_ensure (NAUTILUS_TYPE_FLOATING_BAR);
@@ -618,6 +672,7 @@ gb_editor_frame_init (GbEditorFrame *self)
g_settings_bind (settings, "smart-backspace", self->source_view, "smart-backspace", G_SETTINGS_BIND_GET);
g_settings_bind_with_mapping (settings, "smart-home-end", self->source_view, "smart-home-end",
G_SETTINGS_BIND_GET, get_smart_home_end, NULL, NULL, NULL);
g_settings_bind (settings, "word-completion", self->source_view, "enable-word-completion",
G_SETTINGS_BIND_GET);
+ g_settings_bind (settings, "show-map", self, "show-map", G_SETTINGS_BIND_DEFAULT);
g_signal_connect (settings, "changed::keybindings", G_CALLBACK (keybindings_changed), self);
g_object_bind_property (self->source_view, "overwrite", self->overwrite_label, "visible",
G_BINDING_SYNC_CREATE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]