[gnome-usage] window: Port to Gtk+ widget template



commit ccfb845da9d829cb6aeae8070e41d740c291661a
Author: Felipe Borges <felipeborges gnome org>
Date:   Sat Apr 22 16:37:32 2017 +0200

    window: Port to Gtk+ widget template
    
    https://bugzilla.gnome.org/show_bug.cgi?id=781607

 data/org.gnome.Usage.gresource.xml |    1 +
 data/ui/window.ui                  |   25 +++++++++++++++++++++++++
 src/header-bar.vala                |    7 +++++--
 src/window.vala                    |   17 +++++++----------
 4 files changed, 38 insertions(+), 12 deletions(-)
---
diff --git a/data/org.gnome.Usage.gresource.xml b/data/org.gnome.Usage.gresource.xml
index fedcfe0..5a7054b 100644
--- a/data/org.gnome.Usage.gresource.xml
+++ b/data/org.gnome.Usage.gresource.xml
@@ -4,5 +4,6 @@
         <file compressed="true">interface/adwaita.css</file>
         <file compressed="true">interface/adwaita-dark.css</file>
         <file preprocess="xml-stripblanks">ui/header-bar.ui</file>
+        <file preprocess="xml-stripblanks">ui/window.ui</file>
     </gresource>
 </gresources>
diff --git a/data/ui/window.ui b/data/ui/window.ui
new file mode 100644
index 0000000..c955554
--- /dev/null
+++ b/data/ui/window.ui
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.9 -->
+
+  <template class="UsageWindow" parent="GtkApplicationWindow">
+    <property name="visible">True</property>
+    <property name="show-menubar">False</property>
+    <property name="title" translatable="yes">Usage</property>
+    <property name="window-position">center</property>
+    <property name="width-request">950</property>
+    <property name="height-request">600</property>
+
+    <child type="titlebar">
+      <object class="UsageHeaderBar" id="header_bar">
+        <property name="visible">True</property>
+      </object>
+    </child>
+
+    <child>
+      <object class="GtkStack" id="stack">
+        <property name="visible">True</property>
+      </object>
+    </child>
+  </template>
+</interface>
diff --git a/src/header-bar.vala b/src/header-bar.vala
index 659cbf1..872d514 100644
--- a/src/header-bar.vala
+++ b/src/header-bar.vala
@@ -40,14 +40,17 @@ namespace Usage
            { "select-none", select_none },
         };
 
-           public HeaderBar(Gtk.Stack stack)
+        public HeaderBar ()
            {
                mode = HeaderBarMode.PERFORMANCE;
-            stack_switcher.set_stack(stack);
 
             set_mode(HeaderBarMode.PERFORMANCE);
            }
 
+        public void set_stack (Gtk.Stack stack) {
+            stack_switcher.set_stack(stack);
+        }
+
            public void set_mode(HeaderBarMode mode)
            {
             switch(this.mode)
diff --git a/src/window.vala b/src/window.vala
index 238e5db..68ff2bd 100644
--- a/src/window.vala
+++ b/src/window.vala
@@ -1,28 +1,27 @@
 namespace Usage
 {
+    [GtkTemplate (ui = "/org/gnome/Usage/ui/window.ui")]
     public class Window : Gtk.ApplicationWindow
     {
+        [GtkChild]
         private Usage.HeaderBar header_bar;
+
+        [GtkChild]
+        private Gtk.Stack stack;
+
         private View[] views;
 
                public Window(Gtk.Application application)
         {
             GLib.Object(application : application);
 
-            this.set_default_size(950, 600);
-            this.set_size_request(930, 300);
-            this.window_position = Gtk.WindowPosition.CENTER;
-            this.set_title(_("Usage"));
-
             load_css();
             Gtk.Settings.get_for_screen(get_screen()).notify["gtk-application-prefer-dark-theme"].connect(() 
=>
             {
                 load_css();
             });
 
-                       var stack = new Gtk.Stack();
-                       header_bar = new Usage.HeaderBar(stack);
-                       set_titlebar(header_bar);
+            header_bar.set_stack (stack);
 
             views = new View[]
             {
@@ -54,8 +53,6 @@ namespace Usage
                     header_bar.set_mode(HeaderBarMode.POWER);
                 }
             });
-
-            this.add(stack);
         }
 
         public Usage.HeaderBar get_header_bar()


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