Blame platform-demos/C/samples/menubutton.py

Packit 1470ea
from gi.repository import Gtk
Packit 1470ea
from gi.repository import Gio
Packit 1470ea
import sys
Packit 1470ea
Packit 1470ea
Packit 1470ea
class MyWindow(Gtk.ApplicationWindow):
Packit 1470ea
Packit 1470ea
    def __init__(self, app):
Packit 1470ea
        Gtk.Window.__init__(self, title="Menubutton Example", application=app)
Packit 1470ea
        self.set_default_size(600, 400)
Packit 1470ea
Packit 1470ea
        grid = Gtk.Grid()
Packit 1470ea
Packit 1470ea
        # a menubutton
Packit 1470ea
        menubutton = Gtk.MenuButton()
Packit 1470ea
        menubutton.set_size_request(80, 35)
Packit 1470ea
Packit 1470ea
        grid.attach(menubutton, 0, 0, 1, 1)
Packit 1470ea
Packit 1470ea
        # a menu with two actions
Packit 1470ea
        menumodel = Gio.Menu()
Packit 1470ea
        menumodel.append("New", "app.new")
Packit 1470ea
        menumodel.append("About", "win.about")
Packit 1470ea
Packit 1470ea
        # a submenu with one action for the menu
Packit 1470ea
        submenu = Gio.Menu()
Packit 1470ea
        submenu.append("Quit", "app.quit")
Packit 1470ea
        menumodel.append_submenu("Other", submenu)
Packit 1470ea
Packit 1470ea
        # the menu is set as the menu of the menubutton
Packit 1470ea
        menubutton.set_menu_model(menumodel)
Packit 1470ea
Packit 1470ea
        # the action related to the window (about)
Packit 1470ea
        about_action = Gio.SimpleAction.new("about", None)
Packit 1470ea
        about_action.connect("activate", self.about_callback)
Packit 1470ea
        self.add_action(about_action)
Packit 1470ea
Packit 1470ea
        self.add(grid)
Packit 1470ea
Packit 1470ea
    # callback for "about"
Packit 1470ea
    def about_callback(self, action, parameter):
Packit 1470ea
        print("You clicked \"About\"")
Packit 1470ea
Packit 1470ea
Packit 1470ea
class MyApplication(Gtk.Application):
Packit 1470ea
Packit 1470ea
    def __init__(self):
Packit 1470ea
        Gtk.Application.__init__(self)
Packit 1470ea
Packit 1470ea
    def do_activate(self):
Packit 1470ea
        win = MyWindow(self)
Packit 1470ea
        win.show_all()
Packit 1470ea
Packit 1470ea
    def do_startup(self):
Packit 1470ea
        Gtk.Application.do_startup(self)
Packit 1470ea
Packit 1470ea
        #  the actions related to the application
Packit 1470ea
        new_action = Gio.SimpleAction.new("new", None)
Packit 1470ea
        new_action.connect("activate", self.new_callback)
Packit 1470ea
        self.add_action(new_action)
Packit 1470ea
Packit 1470ea
        quit_action = Gio.SimpleAction.new("quit", None)
Packit 1470ea
        quit_action.connect("activate", self.quit_callback)
Packit 1470ea
        self.add_action(quit_action)
Packit 1470ea
Packit 1470ea
    # callback functions for the actions related to the application
Packit 1470ea
    def new_callback(self, action, parameter):
Packit 1470ea
        print("You clicked \"New\"")
Packit 1470ea
Packit 1470ea
    def quit_callback(self, action, parameter):
Packit 1470ea
        print("You clicked \"Quit\"")
Packit 1470ea
        self.quit()
Packit 1470ea
Packit 1470ea
app = MyApplication()
Packit 1470ea
exit_status = app.run(sys.argv)
Packit 1470ea
sys.exit(exit_status)