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.VBox
The PaletteMenuBox is a box that is useful for making palettes. It supports adding
sugar3.graphics.palettemenu.PaletteMenuItem
,sugar3.graphics.palettemenu.PaletteMenuItemSeparator
and 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.PaletteMenuItem
or asugar3.graphics.palettemenu.PaletteMenuItemSeparator
) no padding will be added, as that is handled by the item. If a widget is appended (Gtk.Widget
subclass) padding will be added.- Parameters
item_or_widget (
Gtk.Widget
or menu item or seperator) – item or widget to add the the palettehorizontal_padding (int) – by default,
sugar3.graphics.style.DEFAULT_SPACING
is appliedvertical_padding (int) – by default,
sugar3.graphics.style.DEFAULT_SPACING
is 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.EventBox
A 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.EventBox
Horizontal seperator to put in a palette