[nautilus] application: add an application menu



commit 346bc714c8b289b9babf7f6a2bfbd03edc7ce000
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Mon Apr 23 18:34:45 2012 -0400

    application: add an application menu
    
    Right now, actions are still not wired.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=674532

 src/nautilus-app-menu.ui   |   36 +++++++++++++++++++++++++++++++++
 src/nautilus-application.c |   47 ++++++++++++++++++++++++++++++++++++++++++++
 src/nautilus.gresource.xml |    1 +
 3 files changed, 84 insertions(+), 0 deletions(-)
---
diff --git a/src/nautilus-app-menu.ui b/src/nautilus-app-menu.ui
new file mode 100644
index 0000000..0f234ae
--- /dev/null
+++ b/src/nautilus-app-menu.ui
@@ -0,0 +1,36 @@
+<interface>
+  <menu id="app-menu">
+    <section>
+      <item>
+	<attribute name="action">app.new-window</attribute>
+	<attribute name="label" translatable="yes">New _Window</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+	<attribute name="action">app.connect-to-server</attribute>
+	<attribute name="label" translatable="yes">Connect to _Server</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+	<attribute name="action">app.preferences</attribute>
+	<attribute name="label" translatable="yes">Prefere_nces</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
+	<attribute name="action">app.about</attribute>
+	<attribute name="label" translatable="yes">_About Files</attribute>
+      </item>
+      <item>
+	<attribute name="action">app.help</attribute>
+	<attribute name="label" translatable="yes">_Help</attribute>
+      </item>
+      <item>
+	<attribute name="action">app.quit</attribute>
+	<attribute name="label" translatable="yes">_Quit</attribute>
+      </item>
+    </section>
+  </menu>
+</interface>
diff --git a/src/nautilus-application.c b/src/nautilus-application.c
index 6838361..429e52a 100644
--- a/src/nautilus-application.c
+++ b/src/nautilus-application.c
@@ -1067,6 +1067,51 @@ init_gtk_accels (void)
 }
 
 static void
+nautilus_application_init_app_menu (NautilusApplication *self)
+{
+	GtkBuilder *builder;
+	GError *error = NULL;
+	GSimpleAction *action;
+
+	action = g_simple_action_new ("new-window", NULL);
+	g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (action));
+	g_object_unref (action);
+
+	action = g_simple_action_new ("connect-to-server", NULL);
+	g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (action));
+	g_object_unref (action);
+
+	action = g_simple_action_new ("preferences", NULL);
+	g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (action));
+	g_object_unref (action);
+
+	action = g_simple_action_new ("about", NULL);
+	g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (action));
+	g_object_unref (action);
+
+	action = g_simple_action_new ("help", NULL);
+	g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (action));
+	g_object_unref (action);
+
+	action = g_simple_action_new ("quit", NULL);
+	g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (action));
+	g_object_unref (action);
+
+	builder = gtk_builder_new ();
+	gtk_builder_add_from_resource (builder, "/org/gnome/nautilus/nautilus-app-menu.ui", &error);
+
+	if (error == NULL) {
+		gtk_application_set_app_menu (GTK_APPLICATION (self),
+					      G_MENU_MODEL (gtk_builder_get_object (builder, "app-menu")));
+	} else {
+		g_critical ("Unable to add the application menu: %s\n", error->message);
+		g_error_free (error);
+	}
+
+	g_object_unref (builder);
+}
+
+static void
 nautilus_application_startup (GApplication *app)
 {
 	NautilusApplication *self = NAUTILUS_APPLICATION (app);
@@ -1130,6 +1175,8 @@ nautilus_application_startup (GApplication *app)
 	init_desktop (self);
 
 	do_upgrades_once (self);
+
+	nautilus_application_init_app_menu (self);
 }
 
 static void
diff --git a/src/nautilus.gresource.xml b/src/nautilus.gresource.xml
index 8765788..8e405a0 100644
--- a/src/nautilus.gresource.xml
+++ b/src/nautilus.gresource.xml
@@ -9,6 +9,7 @@
     <file>nautilus-desktop-icon-view-ui.xml</file>
     <file>nautilus-list-view-ui.xml</file>
     <file>nautilus-shell-ui.xml</file>
+    <file>nautilus-app-menu.ui</file>
     <file alias="icons/thumbnail_frame.png">../icons/thumbnail_frame.png</file>
     <file alias="icons/knob.png">../icons/knob.png</file>
   </gresource>



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