[gnome-builder/editor-layout] some dummy vertical split code



commit afbf7bce45e2c0adebc0653d24cb75a72a6e6112
Author: Christian Hergert <christian hergert me>
Date:   Wed Nov 26 02:55:53 2014 -0800

    some dummy vertical split code

 src/editor/gb-editor-commands.c       |   10 +++++++
 src/editor/gb-editor-tab-private.h    |    3 ++
 src/editor/gb-editor-tab.c            |   45 ++++++++++++++++++++++++++++++---
 src/editor/gb-editor-tab.h            |    1 +
 src/resources/keybindings/default.ini |    1 +
 src/resources/ui/gb-editor-tab.ui     |   37 +++++++++++++++++++++------
 6 files changed, 85 insertions(+), 12 deletions(-)
---
diff --git a/src/editor/gb-editor-commands.c b/src/editor/gb-editor-commands.c
index 0f5f162..004ba4d 100644
--- a/src/editor/gb-editor-commands.c
+++ b/src/editor/gb-editor-commands.c
@@ -813,6 +813,15 @@ gb_editor_commands_scroll_down (GbEditorWorkspace *workspace,
 }
 
 static void
+gb_editor_commands_toggle_split (GbEditorWorkspace *workspace,
+                                 GbEditorTab       *tab)
+{
+  g_return_if_fail (GB_IS_EDITOR_TAB (tab));
+
+  gb_editor_tab_toggle_split (tab);
+}
+
+static void
 gb_editor_commands_scroll_up (GbEditorWorkspace *workspace,
                               GbEditorTab       *tab)
 {
@@ -924,6 +933,7 @@ gb_editor_commands_init (GbEditorWorkspace *workspace)
     { "trim-trailing-space", gb_editor_commands_trim_trailing_space, TRUE },
     { "scroll-down",         gb_editor_commands_scroll_down,         TRUE },
     { "scroll-up",           gb_editor_commands_scroll_up,           TRUE },
+    { "toggle-split",        gb_editor_commands_toggle_split,        TRUE },
     { NULL }
   };
   GSimpleAction *action;
diff --git a/src/editor/gb-editor-tab-private.h b/src/editor/gb-editor-tab-private.h
index fd597b6..bd6deee 100644
--- a/src/editor/gb-editor-tab-private.h
+++ b/src/editor/gb-editor-tab-private.h
@@ -82,9 +82,12 @@ struct _GbEditorTabPrivate
   GtkProgressBar      *progress_bar;
   GtkRevealer         *revealer;
   GtkScrolledWindow   *scroller;
+  GtkScrolledWindow   *scroller2;
   GbSourceView        *source_view;
+  GbSourceView        *source_view2;
   GdTaggedEntry       *search_entry;
   GdTaggedEntryTag    *search_entry_tag;
+  GtkToggleButton     *split_button;
 
   /*
    * Information about our target file and encoding.
diff --git a/src/editor/gb-editor-tab.c b/src/editor/gb-editor-tab.c
index b083022..773c43f 100644
--- a/src/editor/gb-editor-tab.c
+++ b/src/editor/gb-editor-tab.c
@@ -394,6 +394,17 @@ on_search_entry_focus_out (GdTaggedEntry *entry,
   return FALSE;
 }
 
+void
+gb_editor_tab_toggle_split (GbEditorTab *tab)
+{
+  gboolean active;
+
+  g_return_if_fail (GB_IS_EDITOR_TAB (tab));
+
+  active = gtk_toggle_button_get_active (tab->priv->split_button);
+  gtk_toggle_button_set_active (tab->priv->split_button, !active);
+}
+
 static gboolean
 do_delayed_animation (gpointer data)
 {
@@ -936,6 +947,20 @@ transform_file_to_title (GBinding     *binding,
 }
 
 static void
+gb_editor_tab_split_toggled (GbEditorTab     *tab,
+                             GtkToggleButton *button)
+{
+  gboolean active;
+
+  g_return_if_fail (GB_IS_EDITOR_TAB (tab));
+  g_return_if_fail (GTK_IS_TOGGLE_BUTTON (button));
+
+  active = gtk_toggle_button_get_active (button);
+
+  gtk_widget_set_visible (GTK_WIDGET (tab->priv->scroller2), active);
+}
+
+static void
 gb_editor_tab_constructed (GObject *object)
 {
   GtkSourceCompletion *comp;
@@ -957,6 +982,8 @@ gb_editor_tab_constructed (GObject *object)
 
   gtk_text_view_set_buffer (GTK_TEXT_VIEW (priv->source_view),
                             GTK_TEXT_BUFFER (priv->document));
+  gtk_text_view_set_buffer (GTK_TEXT_VIEW (priv->source_view2),
+                            GTK_TEXT_BUFFER (priv->document));
 
   if (!priv->file)
     priv->file = gtk_source_file_new ();
@@ -980,9 +1007,13 @@ gb_editor_tab_constructed (GObject *object)
                   "search-context", priv->search_context,
                   "search-settings", priv->search_settings,
                   NULL);
+
   g_object_set (priv->source_view,
                 "search-highlighter", priv->search_highlighter,
                 NULL);
+  g_object_set (priv->source_view2,
+                "search-highlighter", priv->search_highlighter,
+                NULL);
 
   g_signal_connect_swapped (priv->document,
                             "notify::language",
@@ -997,6 +1028,8 @@ gb_editor_tab_constructed (GObject *object)
                             G_CALLBACK (gb_editor_tab_cursor_moved),
                             tab);
 
+  /* TODO: attach source view abstraction */
+
   g_signal_connect (priv->source_view,
                     "focus-in-event",
                     G_CALLBACK (on_source_view_focus_in_event),
@@ -1105,10 +1138,11 @@ gb_editor_tab_constructed (GObject *object)
                     G_CALLBACK (on_vim_notify_mode),
                     tab);
 
-#if 0
-  g_settings_bind (settings, "word-completion", tab, "enable-word-completion",
-                   G_SETTINGS_BIND_DEFAULT);
-#endif
+  g_signal_connect_object (priv->split_button,
+                           "toggled",
+                           G_CALLBACK (gb_editor_tab_split_toggled),
+                           tab,
+                           G_CONNECT_SWAPPED);
 
   gb_editor_tab_cursor_moved (tab, priv->document);
 
@@ -1336,8 +1370,11 @@ gb_editor_tab_class_init (GbEditorTabClass *klass)
   gtk_widget_class_bind_template_child_private (widget_class, GbEditorTab, progress_bar);
   gtk_widget_class_bind_template_child_private (widget_class, GbEditorTab, revealer);
   gtk_widget_class_bind_template_child_private (widget_class, GbEditorTab, scroller);
+  gtk_widget_class_bind_template_child_private (widget_class, GbEditorTab, scroller2);
   gtk_widget_class_bind_template_child_private (widget_class, GbEditorTab, search_entry);
   gtk_widget_class_bind_template_child_private (widget_class, GbEditorTab, source_view);
+  gtk_widget_class_bind_template_child_private (widget_class, GbEditorTab, source_view2);
+  gtk_widget_class_bind_template_child_private (widget_class, GbEditorTab, split_button);
 
   g_type_ensure (GB_TYPE_EDITOR_DOCUMENT);
   g_type_ensure (GB_TYPE_SOURCE_CHANGE_MONITOR);
diff --git a/src/editor/gb-editor-tab.h b/src/editor/gb-editor-tab.h
index b7e2625..4f64fbd 100644
--- a/src/editor/gb-editor-tab.h
+++ b/src/editor/gb-editor-tab.h
@@ -53,6 +53,7 @@ GType             gb_editor_tab_get_type       (void) G_GNUC_CONST;
 GtkWidget        *gb_editor_tab_new            (void);
 GbEditorDocument *gb_editor_tab_get_document   (GbEditorTab                *tab);
 GtkSourceFile    *gb_editor_tab_get_file       (GbEditorTab                *tab);
+void              gb_editor_tab_toggle_split   (GbEditorTab                *tab);
 void              gb_editor_tab_set_font_desc  (GbEditorTab                *tab,
                                                 const PangoFontDescription *font_desc);
 gboolean          gb_editor_tab_get_is_default (GbEditorTab                *tab);
diff --git a/src/resources/keybindings/default.ini b/src/resources/keybindings/default.ini
index 65fb4ef..893ae69 100644
--- a/src/resources/keybindings/default.ini
+++ b/src/resources/keybindings/default.ini
@@ -30,6 +30,7 @@ save-as = <Control><Shift>S
 toggle-preview = <Control><Alt>P
 scroll-up = <Control>Y
 scroll-down = <Control>E
+toggle-split = <Control><Shift>J
 
 [tabs]
 next = <Control>J
diff --git a/src/resources/ui/gb-editor-tab.ui b/src/resources/ui/gb-editor-tab.ui
index a62f876..a5b894b 100644
--- a/src/resources/ui/gb-editor-tab.ui
+++ b/src/resources/ui/gb-editor-tab.ui
@@ -21,7 +21,7 @@
           </object>
         </child>
         <child>
-          <object class="GtkButton" id="split_button">
+          <object class="GtkToggleButton" id="split_button">
             <property name="visible">True</property>
             <property name="tooltip_text">Split tab vertically</property>
             <style>
@@ -45,16 +45,37 @@
           <object class="GtkOverlay" id="overlay">
             <property name="visible">True</property>
             <child>
-              <object class="GtkScrolledWindow" id="scroller">
+              <object class="GtkPaned">
                 <property name="visible">True</property>
-                <property name="expand">True</property>
+                <property name="orientation">vertical</property>
                 <child>
-                  <object class="GbSourceView" id="source_view">
+                  <object class="GtkScrolledWindow" id="scroller">
                     <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="show_line_numbers">True</property>
-                    <property name="show_right_margin">True</property>
-                    <property name="right_margin_position">80</property>
+                    <property name="expand">True</property>
+                    <child>
+                      <object class="GbSourceView" id="source_view">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="show_line_numbers">True</property>
+                        <property name="show_right_margin">True</property>
+                        <property name="right_margin_position">80</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkScrolledWindow" id="scroller2">
+                    <property name="visible">False</property>
+                    <property name="expand">True</property>
+                    <child>
+                      <object class="GbSourceView" id="source_view2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="show_line_numbers">True</property>
+                        <property name="show_right_margin">True</property>
+                        <property name="right_margin_position">80</property>
+                      </object>
+                    </child>
                   </object>
                 </child>
               </object>


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