def __init__(self, color=None): """Initialize with a color (default is black""" Gtk.AspectFrame.__init__(self, xalign=0.5, yalign=0.5, ratio=1.0, obey_child=False) self.set_shadow_type(Gtk.ShadowType.IN) self.drawingarea = Gtk.DrawingArea() self.add(self.drawingarea) if color is None: color = RGBColor(0, 0, 0) self._color = color self.drawingarea.set_size_request(8, 8) self.drawingarea.connect("draw", self._draw_cb)
def _test(): """Run an interactive test""" toplevel = Gtk.Window() toplevel.set_title("topbar test") toplevel.connect("destroy", lambda *a: Gtk.main_quit()) mainbox = Gtk.VBox() topbar = TopBar() canvas = Gtk.DrawingArea() toplevel.set_size_request(500, 300) # Fullscreen action fs_act = Gtk.ToggleAction.new("Fullscreen", "Fullscreen", "Enter fullscreen mode", Gtk.STOCK_FULLSCREEN) def _fullscreen_cb(action, toplevel): if action.get_active(): toplevel.fullscreen() else: toplevel.unfullscreen() fs_act.connect("toggled", _fullscreen_cb, toplevel) # One normally constructed menubar menu1 = Gtk.Menu() menuitem1 = Gtk.MenuItem.new_with_label("Demo") menuitem2 = Gtk.CheckMenuItem() menuitem3 = Gtk.MenuItem.new_with_label("Quit") menuitem1.set_submenu(menu1) menuitem2.set_related_action(fs_act) menuitem3.connect("activate", lambda *a: Gtk.main_quit()) menu1.append(menuitem2) menu1.append(menuitem3) menuitem1.show() menuitem2.show() menuitem3.show() menubar = Gtk.MenuBar() menubar.append(menuitem1) # We need a pair of toolbars too. toolbar1 = Gtk.Toolbar() toolbar2 = Gtk.Toolbar() toolitem1 = Gtk.ToggleToolButton() toolitem1.set_related_action(fs_act) toolbar2.insert(toolitem1, -1) toolitem2 = Gtk.SeparatorToolItem() toolitem2.set_draw(False) toolitem2.set_expand(True) toolbar1.insert(toolitem2, 0) # Some junk items, to verify appearance in various GTK3 themes toolitem3 = Gtk.ToolButton.new_from_stock(Gtk.STOCK_ZOOM_100) toolitem3.set_is_important(True) toolitem4 = Gtk.ToolButton.new_from_stock(Gtk.STOCK_ZOOM_100) toolitem4.set_is_important(True) toolitem4.set_sensitive(False) toolitem5 = Gtk.ToolButton.new_from_stock(Gtk.STOCK_ZOOM_100) toolitem6 = Gtk.ToolButton.new_from_stock(Gtk.STOCK_ZOOM_100) toolitem6.set_sensitive(False) toolbar1.insert(toolitem6, 0) toolbar1.insert(toolitem5, 0) toolbar1.insert(toolitem4, 0) toolbar2.insert(toolitem3, 0) # Assign topbar's properties topbar.toolbar1 = toolbar1 topbar.toolbar2 = toolbar2 topbar.menubar = menubar # Pack main UI, and start demo mainbox.pack_start(topbar, False, False, 0) mainbox.pack_start(canvas, True, True, 0) toplevel.add(mainbox) toplevel.show_all() topbar.show_all() Gtk.main()