[pygobject] gtk-demo: Change demo to use Gtk.Application



commit 6ea41b60691e1ba7e21374582d7aea072af71103
Author: Simon Feltman <sfeltman src gnome org>
Date:   Thu Jul 25 18:00:47 2013 -0700

    gtk-demo: Change demo to use Gtk.Application
    
    Replace deriving from Gtk.Window with deriving from Gtk.Application
    connected to a Gtk.ApplicationWindow instance.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=698547

 demos/gtk-demo/demos/printing.py |    2 +-
 demos/gtk-demo/gtk-demo.py       |   40 +++++++++++++++++++-------------------
 2 files changed, 21 insertions(+), 21 deletions(-)
---
diff --git a/demos/gtk-demo/demos/printing.py b/demos/gtk-demo/demos/printing.py
index 5c27e06..b476e30 100644
--- a/demos/gtk-demo/demos/printing.py
+++ b/demos/gtk-demo/demos/printing.py
@@ -172,7 +172,7 @@ class PrintingApp:
 
 def main(demoapp=None):
     app = PrintingApp()
-    GLib.idle_add(app.run, demoapp)
+    GLib.idle_add(app.run, demoapp.window)
     Gtk.main()
 
 if __name__ == '__main__':
diff --git a/demos/gtk-demo/gtk-demo.py b/demos/gtk-demo/gtk-demo.py
index b6583c8..caae77b 100755
--- a/demos/gtk-demo/gtk-demo.py
+++ b/demos/gtk-demo/gtk-demo.py
@@ -110,18 +110,20 @@ class DemoTreeStore(Gtk.TreeStore):
         return self._parent_nodes[name]
 
 
-class GtkDemoWindow(Gtk.Window):
+class GtkDemoApp(Gtk.Application):
     __gtype_name__ = 'GtkDemoWindow'
 
     def __init__(self):
-        super(GtkDemoWindow, self).__init__(type=Gtk.WindowType.TOPLEVEL)
+        Gtk.Application.__init__(self, application_id='org.gnome.pygobject.gtkdemo')
 
-        self.set_title('PyGI GTK+ Code Demos')
-        self.set_default_size(600, 400)
+    def on_activate(self, app):
+        self.window = Gtk.ApplicationWindow.new(self)
+        self.window.set_title('PyGObject GTK+ Code Demos')
+        self.window.set_default_size(600, 400)
         self.setup_default_icon()
 
         hbox = Gtk.HBox(homogeneous=False, spacing=0)
-        self.add(hbox)
+        self.window.add(hbox)
 
         tree = self.create_tree()
         hbox.pack_start(tree, False, False, 0)
@@ -138,7 +140,7 @@ class GtkDemoWindow(Gtk.Window):
         text_widget, self.source_buffer = self.create_source_view()
         notebook.append_page(text_widget, Gtk.Label.new_with_mnemonic('_Source'))
 
-        self.show_all()
+        self.window.show_all()
 
         self.selection_cb(self.tree_view.get_selection(),
                           self.tree_view.get_model())
@@ -219,8 +221,10 @@ class GtkDemoWindow(Gtk.Window):
 
         if demo is not None:
             store.set_value(iter, 2, Pango.Style.ITALIC)
-            demo.module.main(self)
-            store.set_value(iter, 2, Pango.Style.NORMAL)
+            try:
+                demo.module.main(self)
+            finally:
+                store.set_value(iter, 2, Pango.Style.NORMAL)
 
     def create_tree(self):
         tree_store = DemoTreeStore()
@@ -315,20 +319,16 @@ class GtkDemoWindow(Gtk.Window):
         view.set_wrap_mode(Gtk.WrapMode.NONE)
         return scrolled_window, buffer
 
+    def run(self, argv):
+        self.connect('activate', self.on_activate)
+        return super(GtkDemoApp, self).run(argv)
 
-def main():
-    mainloop = GLib.MainLoop()
 
-    demowindow = GtkDemoWindow()
-    demowindow.connect('destroy', quit, mainloop)
-    demowindow.show()
-
-    mainloop.run()
-
-
-def quit(widget, mainloop):
-    mainloop.quit()
+def main(argv):
+    """Entry point for demo manager"""
+    app = GtkDemoApp()
+    return app.run(argv)
 
 
 if __name__ == '__main__':
-    main()
+    SystemExit(main(sys.argv))


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