[gnome-boxes] Add Gtk.Application subclass for minor cleanup
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-boxes] Add Gtk.Application subclass for minor cleanup
- Date: Mon, 28 Jan 2013 14:39:09 +0000 (UTC)
commit 1ce5fa86c0886b4584dabacd9d05c66ea0c40754
Author: Alexander Larsson <alexl redhat com>
Date: Fri Jan 25 15:29:04 2013 +0100
Add Gtk.Application subclass for minor cleanup
Ideally we'd like Boxes.App do inherit from Gtk.Applicaton, but we can't
as it needs to inherit Boxes.UI. Instead we create a subclass as
a proxy object that calls into Boxes.App. This makes the "app"
callbacks real methods rather than signal connections which look
slightly nicer, and allows later overriding of Gtk.Application vfuncs.
https://bugzilla.gnome.org/show_bug.cgi?id=692306
src/app.vala | 78 +++++++++++++++++++++++++++++++++++----------------------
1 files changed, 48 insertions(+), 30 deletions(-)
---
diff --git a/src/app.vala b/src/app.vala
index 5d7af16..437b1ca 100644
--- a/src/app.vala
+++ b/src/app.vala
@@ -8,6 +8,24 @@ private enum Boxes.AppPage {
DISPLAY
}
+// Ideally Boxes.App should inherit from, Gtk.Application, but we can't also inherit from Boxes.UI,
+// so we make it a separate object that calls into Boxes.App
+private class Boxes.Application: Gtk.Application {
+ public Application () {
+ application_id = "org.gnome.Boxes";
+ }
+
+ public override void startup () {
+ base.startup ();
+ App.app.startup ();
+ }
+
+ public override void activate () {
+ base.activate ();
+ App.app.activate ();
+ }
+}
+
private class Boxes.App: Boxes.UI {
public static App app;
public override Clutter.Actor actor { get { return stage; } }
@@ -49,7 +67,7 @@ private class Boxes.App: Boxes.UI {
public signal void ready (bool first_time);
public signal void item_selected (CollectionItem item);
- private Gtk.Application application;
+ private Boxes.Application application;
public CollectionView view;
private HashTable<string,GVir.Connection> connections;
@@ -64,7 +82,7 @@ private class Boxes.App: Boxes.UI {
public App () {
app = this;
- application = new Gtk.Application ("org.gnome.Boxes", 0);
+ application = new Boxes.Application ();
settings = new GLib.Settings ("org.gnome.boxes");
connections = new HashTable<string, GVir.Connection> (str_hash, str_equal);
sources = new HashTable<string,CollectionSource> (str_hash, str_equal);
@@ -115,42 +133,42 @@ private class Boxes.App: Boxes.UI {
"wrap-license", true);
});
application.add_action (action);
+ }
- application.startup.connect_after ((app) => {
- var menu = new GLib.Menu ();
- menu.append (_("New"), "app.new");
+ public void startup () {
+ var menu = new GLib.Menu ();
+ menu.append (_("New"), "app.new");
- var display_section = new GLib.Menu ();
- menu.append_section (null, display_section);
+ var display_section = new GLib.Menu ();
+ menu.append_section (null, display_section);
- menu.append (_("About Boxes"), "app.about");
- menu.append (_("Quit"), "app.quit");
+ menu.append (_("About Boxes"), "app.about");
+ menu.append (_("Quit"), "app.quit");
- application.set_app_menu (menu);
+ application.set_app_menu (menu);
- collection = new Collection ();
- duration = settings.get_int ("animation-duration");
- setup_ui ();
+ collection = new Collection ();
+ duration = settings.get_int ("animation-duration");
+ setup_ui ();
- collection.item_added.connect ((item) => {
- view.add_item (item);
- });
- collection.item_removed.connect ((item) => {
- view.remove_item (item);
- });
- setup_sources.begin ((obj, result) => {
- setup_sources.end (result);
- var no_items = collection.items.length == 0;
- ready (no_items);
- });
-
- check_cpu_vt_capability.begin ();
- check_module_kvm_loaded.begin ();
+ collection.item_added.connect ((item) => {
+ view.add_item (item);
});
-
- application.activate.connect_after ((app) => {
- window.present ();
+ collection.item_removed.connect ((item) => {
+ view.remove_item (item);
});
+ setup_sources.begin ((obj, result) => {
+ setup_sources.end (result);
+ var no_items = collection.items.length == 0;
+ ready (no_items);
+ });
+
+ check_cpu_vt_capability.begin ();
+ check_module_kvm_loaded.begin ();
+ }
+
+ public void activate () {
+ window.present ();
}
public int run () {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]