Issues with developer.gnome.org/gnome-devel-demos/3.12/gmenu.py.html



Hello,
those warnings about the accessibility bus in Debian Sid i386 occur with
every Python application using the Gtk library. Maybe the Gtk classes do
not work properly together with the AT-SPI2 interface in the
32bit-Versions, but this should be discussed elsewhere.
You can simply work around the gmenu.py script's failure to display the
menu items in Debian Sid amd64 systems just by wrapping around them
another Gio.Menu object and placing this in the Gtk.Application menu
bar. Here is the changed code:

from gi.repository import Gtk
from gi.repository import Gio
import sys

class MyWindow(Gtk.ApplicationWindow):

    def __init__(self, app):
        Gtk.Window.__init__(self, title="GMenu Example",
application=app)

class MyApplication(Gtk.Application):

    def __init__(self):
        Gtk.Application.__init__(self)

    def do_activate(self):
        win = MyWindow(self)
        win.show_all()

    def do_startup(self):
        # start the application
        Gtk.Application.do_startup(self)
        # new (2014-08-26): Create fileMenu as wrapper around menu
        fileMenu = Gio.Menu()
        # create a menu
        menu = Gio.Menu()
        # append to the menu three options
        menu.append("New", "app.new")
        menu.append("About", "app.about")
        menu.append("Quit", "app.quit")
        # changed (2014-08-26): menu as submenu of fileMenu
        fileMenu.append_submenu("File", menu)
        # changed (2014-08-26): Place fileMenu in the application menu
bar
        self.set_menubar(fileMenu)

        # create an action for the option "new" of the menu
        new_action = Gio.SimpleAction.new("new", None)
        # connect it to the callback function new_cb
        new_action.connect("activate", self.new_cb)
        # add the action to the application
        self.add_action(new_action)

        # option "about"
        about_action = Gio.SimpleAction.new("about", None)
        about_action.connect("activate", self.about_cb)
        self.add_action(about_action)

        # option "quit"
        quit_action = Gio.SimpleAction.new("quit", None)
        quit_action.connect("activate", self.quit_cb)
        self.add_action(quit_action)

    # callback function for "new"
    def new_cb(self, action, parameter):
        print ("This does nothing. It is only a demonstration.")

    # callback function for "about"
    def about_cb(self, action, parameter):
        print ("No AboutDialog for you. This is only a demonstration.")

    # callback function for "quit"
    def quit_cb(self, action, parameter):
        print ("You have quit.")
        self.quit()

app = MyApplication()
exit_status = app.run(sys.argv)
sys.exit(exit_status)

Regards, Jürgen



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