sugar3.graphics.palettemenu module¶
The palettemenu module is the main port of call for making palettes. It covers creating menu items, seperators and placing them in a box.
Example
Create a palette menu with 2 items with a seperator in the middle.
from gi.repository import Gtk
from gettext import gettext as _
from sugar3.graphics.palette import Palette
from sugar3.graphics.palettemenu import PaletteMenuBox
from sugar3.graphics.palettemenu import PaletteMenuItem
from sugar3.graphics.palettemenu import PaletteMenuItemSeparator
class ItemPalette(Palette):
    def __init__(self):
        Palette.__init__(
            self, primary_text='List Item')
        box = PaletteMenuBox()
        self.set_content(box)
        box.show()
        menu_item = PaletteMenuItem(
            _('Edit'), icon_name='toolbar-edit')
        menu_item.connect('activate', self.__edit_cb)
        box.append_item(menu_item)
        menu_item.show()
        sep = PaletteMenuItemSeparator()
        box.append_item(sep)
        sep.show()
        menu_item = PaletteMenuItem(
            _('Delete'), icon_name='edit-delete')
        box.append_item(menu_item)
        menu_item.show()
    def __edit_cb(self, menu_item):
        print('Edit...')
# Usually the Palette instance is returned in a create_palette function
p = ItemPalette()
p.popup()
Gtk.main()
Add a palettebox to a toolbutton:
image = ToolButton('insert-picture')
image.set_tooltip(_('Insert Image'))
self._image_id = image.connect('clicked', self.__image_cb)
toolbar_box.toolbar.insert(image, -1)
palette = image.get_palette()
box = PaletteMenuBox()
palette.set_content(box)
box.show()
menu_item = PaletteMenuItem(_('Floating'))
menu_item.connect('activate', self.__image_cb, True)
box.append_item(menu_item)
menu_item.show()
- class sugar3.graphics.palettemenu.PaletteMenuBox¶
 Bases:
gi.repository.Gtk.VBoxThe PaletteMenuBox is a box that is useful for making palettes. It supports adding
sugar3.graphics.palettemenu.PaletteMenuItem,sugar3.graphics.palettemenu.PaletteMenuItemSeparatorand it automatically adds padding to other widgets.- append_item(item_or_widget, horizontal_padding=None, vertical_padding=None)¶
 Add a menu item, seperator or other widget to the end of the palette (simmilar to Gtk.Box.pack_start).
If an item is appended (a
sugar3.graphics.palettemenu.PaletteMenuItemor asugar3.graphics.palettemenu.PaletteMenuItemSeparator) no padding will be added, as that is handled by the item. If a widget is appended (Gtk.Widgetsubclass) padding will be added.- Parameters
 item_or_widget (
Gtk.Widgetor menu item or seperator) – item or widget to add the the palettehorizontal_padding (int) – by default,
sugar3.graphics.style.DEFAULT_SPACINGis appliedvertical_padding (int) – by default,
sugar3.graphics.style.DEFAULT_SPACINGis applied
- Returns
 None
- class sugar3.graphics.palettemenu.PaletteMenuItem(text_label=None, icon_name=None, text_maxlen=60, xo_color=None, file_name=None, accelerator=None)¶
 Bases:
gi.repository.Gtk.EventBoxA palette menu item is a line of text, and optionally an icon, that the user can activate.
The activate signal is usually emitted when the item is clicked. It has no arguments. When a menu item is activated, the palette is also closed.
- Parameters
 text_label (str) – a text to display in the menu
icon_name (str) – the name of a sugar icon to be displayed. Takse precedence over file_name
text_maxlen (int) – the desired maximum width of the label, in characters. By default set to 60 chars
xo_color (
sugar.graphics.XoColor) – the color to be applied to the iconfile_name (str) – the path to a svg file used as icon
accelerator (str) – a text used to display the keyboard shortcut associated to the menu
- set_accelerator(text)¶
 Sets the text used to display the keyboard shortcut associated with the menu.
- Parameters
 text (str) – accelerator text
- set_image(icon)¶
 Sets the icon widget. Usually this will be a
sugar3.graphics.icon.Icon.- Parameters
 icon (
Gtk.Widget) – icon widget
- set_label(text_label)¶
 Sets the text to display in the menu.
- Parameters
 text_label (str) – text label
- set_sensitive(sensitive)¶
 Sets whether the widget should be activateable by the user and changes the widget’s appearence to the appropriate state.
- Parameters
 sensitive (bool) – if True, the widget will be activateable by the user. Otherwise, it will not be activateable
- class sugar3.graphics.palettemenu.PaletteMenuItemSeparator¶
 Bases:
gi.repository.Gtk.EventBoxHorizontal seperator to put in a palette