[gnome-builder] editor: use gtk widget template for editor workspace.



commit e1e1ed1c2ecf518b370618fb86500ddf78283cf8
Author: Christian Hergert <christian hergert me>
Date:   Sat Nov 22 04:53:09 2014 -0800

    editor: use gtk widget template for editor workspace.

 src/editor/gb-editor-workspace-private.h  |    1 +
 src/editor/gb-editor-workspace.c          |   22 ++++++++++----------
 src/resources/gnome-builder.gresource.xml |    1 +
 src/resources/ui/gb-editor-workspace.ui   |   30 +++++++++++++++++++++++++++++
 4 files changed, 43 insertions(+), 11 deletions(-)
---
diff --git a/src/editor/gb-editor-workspace-private.h b/src/editor/gb-editor-workspace-private.h
index e159e5e..24cc6c3 100644
--- a/src/editor/gb-editor-workspace-private.h
+++ b/src/editor/gb-editor-workspace-private.h
@@ -32,6 +32,7 @@ struct _GbEditorWorkspacePrivate
   GSimpleActionGroup *actions;
   GHashTable         *command_map;
   GbMultiNotebook    *multi_notebook;
+  GtkPaned           *paned;
 };
 
 G_END_DECLS
diff --git a/src/editor/gb-editor-workspace.c b/src/editor/gb-editor-workspace.c
index 57dee44..eeaeed0 100644
--- a/src/editor/gb-editor-workspace.c
+++ b/src/editor/gb-editor-workspace.c
@@ -21,6 +21,8 @@
 #include "gb-editor-commands.h"
 #include "gb-editor-workspace.h"
 #include "gb-editor-workspace-private.h"
+#include "gb-multi-notebook.h"
+#include "gb-tree.h"
 
 enum {
   PROP_0,
@@ -102,6 +104,14 @@ gb_editor_workspace_class_init (GbEditorWorkspaceClass *klass)
   workspace_class->get_actions = gb_editor_workspace_get_actions;
 
   widget_class->grab_focus = gb_editor_workspace_grab_focus;
+
+  gtk_widget_class_set_template_from_resource (widget_class,
+                                               "/org/gnome/builder/ui/gb-editor-workspace.ui");
+  gtk_widget_class_bind_template_child_private (widget_class, GbEditorWorkspace, multi_notebook);
+  gtk_widget_class_bind_template_child_private (widget_class, GbEditorWorkspace, paned);
+
+  g_type_ensure (GB_TYPE_MULTI_NOTEBOOK);
+  g_type_ensure (GB_TYPE_TREE);
 }
 
 static void
@@ -112,16 +122,6 @@ gb_editor_workspace_init (GbEditorWorkspace *workspace)
   workspace->priv->actions = g_simple_action_group_new ();
   workspace->priv->command_map = g_hash_table_new (g_str_hash, g_str_equal);
 
-  /*
-   * TODO: make this be done with GtkBuilder.
-   */
-  workspace->priv->multi_notebook =
-      g_object_new (GB_TYPE_MULTI_NOTEBOOK,
-                    "visible", TRUE,
-                    "group-name", "GB_EDITOR_WORKSPACE",
-                    NULL);
-  gtk_container_add (GTK_CONTAINER (workspace),
-                     GTK_WIDGET (workspace->priv->multi_notebook));
-
+  gtk_widget_init_template (GTK_WIDGET (workspace));
   gb_editor_commands_init (workspace);
 }
diff --git a/src/resources/gnome-builder.gresource.xml b/src/resources/gnome-builder.gresource.xml
index c5120f3..3f83c33 100644
--- a/src/resources/gnome-builder.gresource.xml
+++ b/src/resources/gnome-builder.gresource.xml
@@ -24,6 +24,7 @@
     <file>ui/gb-devhelp-tab.ui</file>
     <file>ui/gb-editor-settings-widget.ui</file>
     <file>ui/gb-editor-tab.ui</file>
+    <file>ui/gb-editor-workspace.ui</file>
     <file>ui/gb-preferences-window.ui</file>
     <file>ui/gb-preferences-page-editor.ui</file>
     <file>ui/gb-preferences-page-git.ui</file>
diff --git a/src/resources/ui/gb-editor-workspace.ui b/src/resources/ui/gb-editor-workspace.ui
new file mode 100644
index 0000000..26e4635
--- /dev/null
+++ b/src/resources/ui/gb-editor-workspace.ui
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.8 -->
+  <template class="GbEditorWorkspace" parent="GbWorkspace">
+    <child>
+      <object class="GtkPaned" id="paned">
+        <property name="visible">True</property>
+        <property name="orientation">horizontal</property>
+        <property name="position">250</property>
+        <child>
+          <object class="GtkScrolledWindow" id="scroller">
+            <property name="visible">False</property>
+            <child>
+              <object class="GbTree" id="tree">
+                <property name="headers-visible">False</property>
+                <property name="visible">True</property>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child>
+          <object class="GbMultiNotebook" id="multi_notebook">
+            <property name="group-name">GB_EDITOR_WORKSPACE</property>
+            <property name="visible">True</property>
+          </object>
+        </child>
+      </object>
+    </child>
+  </template>
+</interface>


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