[baobab/wip/vala] Split menu in its own ui file



commit d227066d9c208dbf4ec3fa7b0123b7eef7eaab92
Author: Paolo Borelli <pborelli gnome org>
Date:   Mon Jan 16 10:08:43 2012 +0100

    Split menu in its own ui file
    
    Menu xml should be read just once at application startup.

 data/Makefile.am            |    1 +
 data/baobab-main-window.ui  |   35 -----------------------------------
 data/baobab-menu.ui         |   37 +++++++++++++++++++++++++++++++++++++
 src/baobab-application.vala |   13 +++++++++++++
 src/baobab-window.vala      |    6 ------
 5 files changed, 51 insertions(+), 41 deletions(-)
---
diff --git a/data/Makefile.am b/data/Makefile.am
index 919f6df..0e4c1d1 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -1,6 +1,7 @@
 uidir = $(datadir)/baobab
 ui_DATA = \
 	baobab-main-window.ui \
+	baobab-menu.ui \
 	baobab-preferences-dialog.ui
 
 baobabappdir	   = $(datadir)/applications
diff --git a/data/baobab-main-window.ui b/data/baobab-main-window.ui
index 5309d20..a259707 100644
--- a/data/baobab-main-window.ui
+++ b/data/baobab-main-window.ui
@@ -1,41 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires gtk+ 3.0 -->
-  <menu id="appmenu">
-    <section>
-      <item label="_Help" action="app.help" accel="F1"/>
-      <item label="_About" action="app.about"/>
-      <item label="_Quit" action="app.quit" accel="<Primary>q"/>
-    </section>
-  </menu>
-  <menu id="menubar">
-    <section>
-      <submenu label="_Analyzer">
-        <section>
-          <item label="_Scan Home" action="win.scan-home" accel="<Primary>h"/>
-          <item label="Scan _Filesystem" action="win.scan-filesystem" accel="<Primary>f"/>
-          <item label="Scan F_older" action="win.scan-folder" accel="<Primary>o"/>
-        </section>
-      </submenu>
-      <submenu label="_View">
-        <section>
-          <item label="_Stop" action="win.stop"/>
-          <item label="_Reload" action="win.reload" accel="<Primary>r"/>
-        </section>
-        <section>
-          <item label="_Toolbar" action="win.show-toolbar"/>
-          <item label="_Statusbar" action="win.show-statusbar"/>
-        </section>
-        <section>
-          <item label="_Allocated Space" action="win.show-allocated"/>
-        </section>
-        <section>
-          <item label="_Expand All" action="win.expand-all"/>
-          <item label="_Collapse All" action="win.collapse-all"/>
-        </section>
-      </submenu>
-    </section>
-  </menu>
   <object class="GtkGrid" id="window-contents">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
diff --git a/data/baobab-menu.ui b/data/baobab-menu.ui
new file mode 100644
index 0000000..20a612a
--- /dev/null
+++ b/data/baobab-menu.ui
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <menu id="appmenu">
+    <section>
+      <item label="_Help" action="app.help" accel="F1"/>
+      <item label="_About" action="app.about"/>
+      <item label="_Quit" action="app.quit" accel="&lt;Primary&gt;q"/>
+    </section>
+  </menu>
+  <menu id="menubar">
+    <submenu label="_Analyzer">
+      <section>
+        <item label="_Scan Home" action="win.scan-home" accel="&lt;Primary&gt;h"/>
+        <item label="Scan _Filesystem" action="win.scan-filesystem" accel="&lt;Primary&gt;f"/>
+        <item label="Scan F_older" action="win.scan-folder" accel="&lt;Primary&gt;o"/>
+      </section>
+    </submenu>
+    <submenu label="_View">
+      <section>
+        <item label="_Stop" action="win.stop"/>
+        <item label="_Reload" action="win.reload" accel="&lt;Primary&gt;r"/>
+      </section>
+      <section>
+        <item label="_Toolbar" action="win.show-toolbar"/>
+        <item label="_Statusbar" action="win.show-statusbar"/>
+      </section>
+      <section>
+        <item label="_Allocated Space" action="win.show-allocated"/>
+      </section>
+      <section>
+        <item label="_Expand All" action="win.expand-all"/>
+        <item label="_Collapse All" action="win.collapse-all"/>
+      </section>
+    </submenu>
+  </menu>
+</interface>
diff --git a/src/baobab-application.vala b/src/baobab-application.vala
index 684f8d9..a544441 100644
--- a/src/baobab-application.vala
+++ b/src/baobab-application.vala
@@ -50,9 +50,22 @@ namespace Baobab {
 
 			baobab = this;
 
+			// Settings
 			ui_settings = new Settings ("org.gnome.baobab.ui");
 			prefs_settings = new Settings ("org.gnome.baobab.preferences");
 			desktop_settings = new Settings ("org.gnome.desktop.interface");
+
+			// Menus
+			var builder = new Gtk.Builder ();
+			try {
+				builder.add_from_file (Config.PKGDATADIR + "/baobab-menu.ui");
+			} catch (Error e) {
+				error ("loading menu builder file: %s", e.message);
+			}
+			var app_menu = builder.get_object ("appmenu") as MenuModel;
+			var menubar = builder.get_object ("menubar") as MenuModel;
+			set_app_menu (app_menu);
+			set_menubar (menubar);
 		}
 
 		protected override bool local_command_line ([CCode (array_length = false, array_null_terminated = true)] ref unowned string[] arguments, out int exit_status) {
diff --git a/src/baobab-window.vala b/src/baobab-window.vala
index ee62bea..0548f4b 100644
--- a/src/baobab-window.vala
+++ b/src/baobab-window.vala
@@ -45,12 +45,6 @@ namespace Baobab {
 				error ("loading main builder file: %s", e.message);
 			}
 
-			// Menus
-			var app_menu = builder.get_object ("appmenu") as MenuModel;
-			var menubar = builder.get_object ("menubar") as MenuModel;
-			app.set_app_menu (app_menu);
-			app.set_menubar (menubar);
-
 			// Cache some objects from the builder.
 			chart_type_combo = builder.get_object ("chart-type-combo") as Gtk.Widget;
 			rings_chart = builder.get_object ("rings-chart") as Chart;



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