本文整理汇总了Python中sugar3.graphics.palette.ToolInvoker类的典型用法代码示例。如果您正苦于以下问题:Python ToolInvoker类的具体用法?Python ToolInvoker怎么用?Python ToolInvoker使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ToolInvoker类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__(self, activity, **kwargs):
self._activity = activity
self.properties = self._activity.area.tool
self._accelerator = None
self._tooltip = None
self._palette_invoker = ToolInvoker()
self._palette = None
self._selected_tool = None
GObject.GObject.__init__(self, **kwargs)
# The Gtk.ToolButton has already added a normal button.
# Replace it with a ColorButton
self.color_button = BrushButton(has_invoker=False)
self.add(self.color_button)
self.color_button.set_brush_size(self.properties['line size'])
self.color_button.set_brush_shape(self.properties['line shape'])
self.color_button.set_stamp_size(20)
# The following is so that the behaviour on the toolbar is correct.
self.color_button.set_relief(Gtk.ReliefStyle.NONE)
self._palette_invoker.attach_tool(self)
self._palette_invoker.props.toggle_palette = True
self._palette_invoker.props.lock_palette = True
# This widget just proxies the following properties to the colorbutton
self.color_button.connect('notify::color', self.__notify_change)
self.color_button.connect('notify::icon-name', self.__notify_change)
self.color_button.connect('notify::icon-size', self.__notify_change)
self.color_button.connect('notify::title', self.__notify_change)
self.color_button.connect('can-activate-accel',
self.__button_can_activate_accel_cb)
self.create_palette()
开发者ID:native93,项目名称:Sugar-paint-activity,代码行数:35,代码来源:widgets.py
示例2: __init__
def __init__(self, default_icon, default_label, palette_content):
self._palette_invoker = ToolInvoker()
Gtk.ToolButton.__init__(self)
self._label = default_label
self.set_is_important(False)
self.set_size_request(style.GRID_CELL_SIZE, -1)
self._label_widget = Gtk.Label()
self._label_widget.set_alignment(0.0, 0.5)
self._label_widget.set_ellipsize(style.ELLIPSIZE_MODE_DEFAULT)
self._label_widget.set_max_width_chars(_LABEL_MAX_WIDTH)
self._label_widget.set_use_markup(True)
self._label_widget.set_markup(default_label)
self.set_label_widget(self._label_widget)
self._label_widget.show()
self.set_widget_icon(icon_name=default_icon)
self._hide_tooltip_on_click = True
self._palette_invoker.attach_tool(self)
self._palette_invoker.props.toggle_palette = True
self._palette_invoker.props.lock_palette = True
self.palette = Palette(_('Select filter'))
self.palette.set_invoker(self._palette_invoker)
self.props.palette.set_content(palette_content)
开发者ID:AbrahmAB,项目名称:sugar,代码行数:28,代码来源:journaltoolbox.py
示例3: __init__
def __init__(self, tagline, default_icon, default_label, palette_content):
self._palette_invoker = ToolInvoker()
Gtk.ToolButton.__init__(self)
self._label = default_label
self.set_is_important(False)
self.set_size_request(style.GRID_CELL_SIZE, -1)
self._label_widget = Gtk.Label()
self._label_widget.set_alignment(0.0, 0.5)
self._label_widget.set_ellipsize(Pango.EllipsizeMode.MIDDLE)
self._label_widget.set_max_width_chars(10)
self._label_widget.set_use_markup(True)
self._label_widget.set_markup(default_label)
self.set_label_widget(self._label_widget)
self._label_widget.show()
self.set_widget_icon(icon_name=default_icon)
self._hide_tooltip_on_click = True
self._palette_invoker.attach_tool(self)
self._palette_invoker.props.toggle_palette = True
self._palette_invoker.props.lock_palette = True
self.palette = Palette(tagline)
self.palette.set_invoker(self._palette_invoker)
self.props.palette.set_content(palette_content)
开发者ID:godiard,项目名称:music-keyboard-activity,代码行数:28,代码来源:activity.py
示例4: __init__
def __init__(self, default_icon, default_value, options):
self._palette_invoker = ToolInvoker()
self._options = options
Gtk.ToolButton.__init__(self)
logging.debug('filter options %s', options)
self._value = default_value
self._label = self._options[default_value]
self.set_is_important(True)
self.set_size_request(style.GRID_CELL_SIZE, -1)
self._label_widget = Gtk.Label()
self._label_widget.set_alignment(0.0, 0.5)
self._label_widget.set_ellipsize(Pango.EllipsizeMode.MIDDLE)
self._label_widget.set_max_width_chars(self._LABEL_MAX_WIDTH)
self._label_widget.set_use_markup(True)
self._label_widget.set_markup(self._label)
self.set_label_widget(self._label_widget)
self._label_widget.show()
self.set_widget_icon(icon_name=default_icon)
self._hide_tooltip_on_click = True
self._palette_invoker.attach_tool(self)
self._palette_invoker.props.toggle_palette = True
self._palette_invoker.props.lock_palette = True
self.palette = Palette(_('Select language'))
self.palette.set_invoker(self._palette_invoker)
self.props.palette.set_content(self.set_palette_list(options))
开发者ID:sugarlabs,项目名称:words-activity,代码行数:30,代码来源:wordsactivity.py
示例5: __init__
def __init__(self, icon_name='color-preview', **kwargs):
self._accelerator = None
self._tooltip = None
self._palette_invoker = ToolInvoker()
self._palette = None
GObject.GObject.__init__(self, **kwargs)
# The Gtk.ToolButton has already added a normal button.
# Replace it with a ColorButton
color_button = _ColorButton(icon_name=icon_name, has_invoker=False)
self.add(color_button)
color_button.show()
# The following is so that the behaviour on the toolbar is correct.
color_button.set_relief(Gtk.ReliefStyle.NONE)
color_button.icon_size = Gtk.IconSize.LARGE_TOOLBAR
self._palette_invoker.attach_tool(self)
self._palette_invoker.props.toggle_palette = True
self._palette_invoker.props.lock_palette = True
# This widget just proxies the following properties to the colorbutton
color_button.connect('notify::color', self.__notify_change)
color_button.connect('notify::icon-name', self.__notify_change)
color_button.connect('notify::icon-size', self.__notify_change)
color_button.connect('notify::title', self.__notify_change)
color_button.connect('color-set', self.__color_set_cb)
color_button.connect('can-activate-accel',
self.__button_can_activate_accel_cb)
开发者ID:SoulAngel,项目名称:sugar-toolkit-gtk3,代码行数:30,代码来源:colorbutton.py
示例6: TrayIcon
class TrayIcon(Gtk.ToolItem):
__gtype_name__ = 'SugarTrayIcon'
def __init__(self, icon_name=None, xo_color=None):
Gtk.ToolItem.__init__(self)
self._icon_widget = _IconWidget(icon_name, xo_color)
self.add(self._icon_widget)
self._icon_widget.show()
self._palette_invoker = ToolInvoker(self)
self.set_size_request(style.GRID_CELL_SIZE, style.GRID_CELL_SIZE)
self.connect('destroy', self.__destroy_cb)
def __destroy_cb(self, icon):
if self._palette_invoker is not None:
self._palette_invoker.detach()
def create_palette(self):
return None
def get_palette(self):
return self._palette_invoker.palette
def set_palette(self, palette):
self._palette_invoker.palette = palette
palette = GObject.property(
type=object, setter=set_palette, getter=get_palette)
def get_palette_invoker(self):
return self._palette_invoker
def set_palette_invoker(self, palette_invoker):
self._palette_invoker.detach()
self._palette_invoker = palette_invoker
palette_invoker = GObject.property(
type=object, setter=set_palette_invoker, getter=get_palette_invoker)
def get_icon(self):
return self._icon_widget.get_icon()
icon = property(get_icon, None)
开发者ID:AbrahmAB,项目名称:sugar-toolkit-gtk3,代码行数:46,代码来源:tray.py
示例7: __init__
def __init__(self, icon_name=None):
GObject.GObject.__init__(self)
self._palette_invoker = ToolInvoker(self)
if icon_name:
self.set_icon_name(icon_name)
self.connect('destroy', self.__destroy_cb)
开发者ID:i5o,项目名称:sugar-toolkit-gtk3,代码行数:9,代码来源:toggletoolbutton.py
示例8: __init__
def __init__(self):
self._palette_invoker = ToolInvoker()
Gtk.ToolItem.__init__(self)
self._font_label = FontLabel()
bt = Gtk.Button('')
bt.set_can_focus(False)
bt.remove(bt.get_children()[0])
box = Gtk.HBox()
bt.add(box)
icon = Icon(icon_name='font-text')
box.pack_start(icon, False, False, 10)
box.pack_start(self._font_label, False, False, 10)
self.add(bt)
self.show_all()
self._font_name = 'Sans'
# theme the button, can be removed if add the style to the sugar css
if style.zoom(100) == 100:
subcell_size = 15
else:
subcell_size = 11
radius = 2 * subcell_size
theme = "GtkButton {border-radius: %dpx;}" % radius
css_provider = Gtk.CssProvider()
css_provider.load_from_data(theme)
style_context = bt.get_style_context()
style_context.add_provider(css_provider,
Gtk.STYLE_PROVIDER_PRIORITY_USER)
# init palette
self._hide_tooltip_on_click = True
self._palette_invoker.attach_tool(self)
self._palette_invoker.props.toggle_palette = True
self.palette = Palette(_('Select font'))
self.palette.set_invoker(self._palette_invoker)
# load the fonts in the palette menu
self._menu_box = PaletteMenuBox()
self.props.palette.set_content(self._menu_box)
self._menu_box.show()
context = self.get_pango_context()
self._init_font_list()
tmp_list = []
for family in context.list_families():
name = family.get_name()
if name in self._font_white_list:
tmp_list.append(name)
for name in sorted(tmp_list):
self._add_menu(name, self.__font_selected_cb)
self._font_label.set_font(self._font_name)
开发者ID:AbrahmAB,项目名称:write-activity,代码行数:56,代码来源:fontcombobox.py
示例9: __init__
def __init__(self, icon_name=None, xo_color=None):
Gtk.ToolItem.__init__(self)
self._icon_widget = _IconWidget(icon_name, xo_color)
self.add(self._icon_widget)
self._icon_widget.show()
self._palette_invoker = ToolInvoker(self)
self.set_size_request(style.GRID_CELL_SIZE, style.GRID_CELL_SIZE)
self.connect('destroy', self.__destroy_cb)
开发者ID:AbrahmAB,项目名称:sugar-toolkit-gtk3,代码行数:12,代码来源:tray.py
示例10: __init__
def __init__(self, icon_name=None, **kwargs):
self._accelerator = None
self._tooltip = None
self._xo_color = None
self._palette_invoker = ToolInvoker()
GObject.GObject.__init__(self, **kwargs)
self._palette_invoker.attach_tool(self)
if icon_name:
self.set_icon_name(icon_name)
self.connect('destroy', self.__destroy_cb)
开发者ID:ceibal-tatu,项目名称:sugar-toolkit-gtk3,代码行数:14,代码来源:radiotoolbutton.py
示例11: __init__
def __init__(self, default, options):
self._palette_invoker = ToolInvoker()
Gtk.ToolItem.__init__(self)
self._label = Gtk.Label()
bt = Gtk.Button('')
bt.set_can_focus(False)
bt.remove(bt.get_children()[0])
self._box = Gtk.HBox()
bt.add(self._box)
self._icon = Icon(icon_name='')
self._box.pack_start(self._icon, False, False, 5)
self._box.pack_end(self._label, False, False, 5)
self.add(bt)
self.show_all()
# theme the button, can be removed if add the style to the sugar css
if style.zoom(100) == 100:
subcell_size = 15
else:
subcell_size = 11
radius = 2 * subcell_size
theme = "GtkButton {border-radius: %dpx;}" % radius
css_provider = Gtk.CssProvider()
css_provider.load_from_data(theme)
style_context = bt.get_style_context()
style_context.add_provider(css_provider,
Gtk.STYLE_PROVIDER_PRIORITY_USER)
# init palette
self._hide_tooltip_on_click = True
self._palette_invoker.attach_tool(self)
self._palette_invoker.props.toggle_palette = True
self.palette = Palette(_('Select option'))
self.palette.set_invoker(self._palette_invoker)
# load the fonts in the palette menu
self._menu_box = PaletteMenuBox()
self.props.palette.set_content(self._menu_box)
self._menu_box.show()
for option in options:
if option.__class__ is str:
self._add_menu(option, activate_cb=self.__option_selected_cb)
else:
self._add_menu(option[0], icon=option[1],
activate_cb=self.__option_selected_cb)
self.set_value(default)
开发者ID:godiard,项目名称:domino-activity,代码行数:49,代码来源:palettebox.py
示例12: __init__
def __init__(self, icon_name=None, **kwargs):
self._accelerator = None
self._tooltip = None
self._palette_invoker = ToolInvoker()
GObject.GObject.__init__(self, **kwargs)
self._hide_tooltip_on_click = True
self._palette_invoker.attach_tool(self)
if icon_name:
self.set_icon_name(icon_name)
self.get_child().connect('can-activate-accel',
self.__button_can_activate_accel_cb)
self.connect('destroy', self.__destroy_cb)
开发者ID:ceibal-tatu,项目名称:sugar-toolkit-gtk3,代码行数:17,代码来源:toolbutton.py
示例13: __init__
def __init__(self, icon_name=None, **kwargs):
self._accelerator = None
self._tooltip = None
self._xo_color = None
self._hide_tooltip_on_click = True
self._palette_invoker = ToolInvoker()
GObject.GObject.__init__(self, **kwargs)
self._palette_invoker.attach_tool(self)
if icon_name:
self.set_icon_name(icon_name)
# HACK: stop Gtk from adding a label and expanding the size of
# the button. This happen when set_icon_widget is called
# if label_widget is None
self.props.label_widget = Gtk.Box()
self.connect('destroy', self.__destroy_cb)
开发者ID:godiard,项目名称:sugar-toolkit-gtk3,代码行数:21,代码来源:radiotoolbutton.py
示例14: __init__
def __init__(self, icon_name=None, pixel_size=None,
direction=Gtk.Orientation.VERTICAL, **kwargs):
self._accelerator = None
self._tooltip = None
self._palette_invoker = ToolInvoker()
self._progress = 0.0
self._icon_name = icon_name
self._pixel_size = pixel_size
self._direction = direction
GObject.GObject.__init__(self, **kwargs)
self._hide_tooltip_on_click = True
self._palette_invoker.attach_tool(self)
self._stroke = get_surface(
icon_name=self._icon_name, width=self._pixel_size, height=self._pixel_size,
stroke_color=style.COLOR_BUTTON_GREY.get_svg(),
fill_color=style.COLOR_TRANSPARENT.get_svg())
self._fill = get_surface(
icon_name=self._icon_name, width=self._pixel_size, height=self._pixel_size,
stroke_color=style.COLOR_TRANSPARENT.get_svg(),
fill_color=style.COLOR_WHITE.get_svg())
开发者ID:iamutkarshtiwari,项目名称:Browse-fiddleFeature,代码行数:24,代码来源:progresstoolbutton.py
示例15: ToolButton
class ToolButton(Gtk.ToolButton):
__gtype_name__ = 'SugarToolButton'
def __init__(self, icon_name=None, **kwargs):
self._accelerator = None
self._tooltip = None
self._palette_invoker = ToolInvoker()
GObject.GObject.__init__(self, **kwargs)
self._hide_tooltip_on_click = True
self._palette_invoker.attach_tool(self)
if icon_name:
self.set_icon_name(icon_name)
self.get_child().connect('can-activate-accel',
self.__button_can_activate_accel_cb)
self.connect('destroy', self.__destroy_cb)
def __destroy_cb(self, icon):
if self._palette_invoker is not None:
self._palette_invoker.detach()
def __button_can_activate_accel_cb(self, button, signal_id):
# Accept activation via accelerators regardless of this widget's state
return True
def set_tooltip(self, tooltip):
""" Set a simple palette with just a single label.
"""
if self.palette is None or self._tooltip is None:
self.palette = Palette(tooltip)
elif self.palette is not None:
self.palette.set_primary_text(tooltip)
self._tooltip = tooltip
# Set label, shows up when toolbar overflows
Gtk.ToolButton.set_label(self, tooltip)
def get_tooltip(self):
return self._tooltip
tooltip = GObject.property(type=str, setter=set_tooltip,
getter=get_tooltip)
def get_hide_tooltip_on_click(self):
return self._hide_tooltip_on_click
def set_hide_tooltip_on_click(self, hide_tooltip_on_click):
if self._hide_tooltip_on_click != hide_tooltip_on_click:
self._hide_tooltip_on_click = hide_tooltip_on_click
hide_tooltip_on_click = GObject.property(
type=bool, default=True, getter=get_hide_tooltip_on_click,
setter=set_hide_tooltip_on_click)
def set_accelerator(self, accelerator):
self._accelerator = accelerator
setup_accelerator(self)
def get_accelerator(self):
return self._accelerator
accelerator = GObject.property(type=str, setter=set_accelerator,
getter=get_accelerator)
def set_icon_name(self, icon_name):
icon = Icon(icon_name=icon_name)
self.set_icon_widget(icon)
icon.show()
def get_icon_name(self):
if self.props.icon_widget is not None:
return self.props.icon_widget.props.icon_name
else:
return None
icon_name = GObject.property(type=str, setter=set_icon_name,
getter=get_icon_name)
def create_palette(self):
return None
def get_palette(self):
return self._palette_invoker.palette
def set_palette(self, palette):
self._palette_invoker.palette = palette
palette = GObject.property(
type=object, setter=set_palette, getter=get_palette)
def get_palette_invoker(self):
return self._palette_invoker
def set_palette_invoker(self, palette_invoker):
#.........这里部分代码省略.........
开发者ID:ceibal-tatu,项目名称:sugar-toolkit-gtk3,代码行数:101,代码来源:toolbutton.py
示例16: FilterToolItem
class FilterToolItem(Gtk.ToolButton):
_LABEL_MAX_WIDTH = 18
_MAXIMUM_PALETTE_COLUMNS = 4
__gsignals__ = {
'changed': (GObject.SignalFlags.RUN_LAST, None, ([str])), }
def __init__(self, default_icon, default_value, options):
self._palette_invoker = ToolInvoker()
self._options = options
Gtk.ToolButton.__init__(self)
logging.debug('filter options %s', options)
self._value = default_value
self._label = self._options[default_value]
self.set_is_important(True)
self.set_size_request(style.GRID_CELL_SIZE, -1)
self._label_widget = Gtk.Label()
self._label_widget.set_alignment(0.0, 0.5)
self._label_widget.set_ellipsize(Pango.EllipsizeMode.MIDDLE)
self._label_widget.set_max_width_chars(self._LABEL_MAX_WIDTH)
self._label_widget.set_use_markup(True)
self._label_widget.set_markup(self._label)
self.set_label_widget(self._label_widget)
self._label_widget.show()
self.set_widget_icon(icon_name=default_icon)
self._hide_tooltip_on_click = True
self._palette_invoker.attach_tool(self)
self._palette_invoker.props.toggle_palette = True
self._palette_invoker.props.lock_palette = True
self.palette = Palette(_('Select language'))
self.palette.set_invoker(self._palette_invoker)
self.props.palette.set_content(self.set_palette_list(options))
def set_options(self, options):
self._options = options
self.palette = Palette(_('Select language'))
self.palette.set_invoker(self._palette_invoker)
self.props.palette.set_content(self.set_palette_list(options))
if self._value not in self._options.keys():
new_value = self._options.keys()[0]
self._value = new_value
self._set_widget_label(self._options[new_value])
self.emit('changed', new_value)
def set_widget_icon(self, icon_name=None):
icon = Icon(icon_name=icon_name,
pixel_size=style.SMALL_ICON_SIZE)
self.set_icon_widget(icon)
icon.show()
def _set_widget_label(self, label=None):
# FIXME: Ellipsis is not working on these labels.
if label is None:
label = self._label
if len(label) > self._LABEL_MAX_WIDTH:
label = label[0:7] + '...' + label[-7:]
self._label_widget.set_markup(label)
self._label = label
def __destroy_cb(self, icon):
if self._palette_invoker is not None:
self._palette_invoker.detach()
def create_palette(self):
return None
def get_palette(self):
return self._palette_invoker.palette
def set_palette(self, palette):
self._palette_invoker.palette = palette
palette = GObject.property(
type=object, setter=set_palette, getter=get_palette)
def get_palette_invoker(self):
return self._palette_invoker
def set_palette_invoker(self, palette_invoker):
self._palette_invoker.detach()
self._palette_invoker = palette_invoker
palette_invoker = GObject.property(
type=object, setter=set_palette_invoker, getter=get_palette_invoker)
def do_draw(self, cr):
if self.palette and self.palette.is_up():
allocation = self.get_allocation()
# draw a black background, has been done by the engine before
cr.set_source_rgb(0, 0, 0)
cr.rectangle(0, 0, allocation.width, allocation.height)
cr.paint()
Gtk.ToolButton.do_draw(self, cr)
#.........这里部分代码省略.........
开发者ID:sugarlabs,项目名称:words-activity,代码行数:101,代码来源:wordsactivity.py
示例17: ToolButton
class ToolButton(Gtk.ToolButton):
'''
The ToolButton class manages a Gtk.ToolButton styled for Sugar.
Keyword Args:
icon_name(string): name of themed icon.
accelerator (string): keyboard shortcut to be used to
activate this button.
tooltip (string): tooltip to be displayed when user hovers
over button.
hide_tooltip_on_click (bool): Whether or not the tooltip
is hidden when user clicks on button.
'''
__gtype_name__ = 'SugarToolButton'
def __init__(self, icon_name=None, **kwargs):
self._accelerator = None
self._tooltip = None
self._palette_invoker = ToolInvoker()
GObject.GObject.__init__(self, **kwargs)
self._hide_tooltip_on_click = True
self._palette_invoker.attach_tool(self)
if icon_name:
self.set_icon_name(icon_name)
self.get_child().connect('can-activate-accel',
self.__button_can_activate_accel_cb)
self.connect('destroy', self.__destroy_cb)
def __destroy_cb(self, icon):
if self._palette_invoker is not None:
self._palette_invoker.detach()
def __button_can_activate_accel_cb(self, button, signal_id):
# Accept activation via accelerators regardless of this widget's state
return True
def set_tooltip(self, tooltip):
'''
Set the tooltip.
Args:
tooltip (string): tooltip to be set.
'''
if self.palette is None or self._tooltip is None:
self.palette = Palette(tooltip)
elif self.palette is not None:
self.palette.set_primary_text(tooltip)
self._tooltip = tooltip
# Set label, shows up when toolbar overflows
Gtk.ToolButton.set_label(self, tooltip)
def get_tooltip(self):
'''
Return the tooltip.
'''
return self._tooltip
tooltip = GObject.property(type=str, setter=set_tooltip,
getter=get_tooltip)
def get_hide_tooltip_on_click(self):
'''
Return True if the tooltip is hidden when a user
clicks on the button, otherwise return False.
'''
return self._hide_tooltip_on_click
def set_hide_tooltip_on_click(self, hide_tooltip_on_click):
'''
Set whether or not the tooltip is hidden when a user
clicks on the button.
Args:
hide_tooltip_on_click (bool): True if the tooltip is
hidden on click, and False otherwise.
'''
if self._hide_tooltip_on_click != hide_tooltip_on_click:
self._hide_tooltip_on_click = hide_tooltip_on_click
hide_tooltip_on_click = GObject.property(
type=bool, default=True, getter=get_hide_tooltip_on_click,
setter=set_hide_tooltip_on_click)
def set_accelerator(self, accelerator):
'''
Set accelerator that activates the button.
Args:
#.........这里部分代码省略.........
开发者ID:i5o,项目名称:sugar-toolkit-gtk3,代码行数:101,代码来源:toolbutton.py
示例18: ToggleToolButton
class ToggleToolButton(Gtk.ToggleToolButton):
'''
UI for toggletoolbutton.
A ToggleToolButton is a ToolItem that contains a toggle button,
having an icon, a tooltip palette, and an accelerator.
Use ToggleToolButton.new() to create a new ToggleToolButton.
Args:
accelerator (string): keyboard shortcut to be used to
activate this button.
Find about format here :
https://developer.gnome.org/gtk3/stable/gtk3-Keyboard-Accelerators.html#gtk-accelerator-parse
tooltip (string): tooltip to be displayed when user
hovers over toggle button.
Keyword Args:
icon_name(string): name of themed icon which is to be used.
'''
__gtype_name__ = 'SugarToggleToolButton'
def __init__(self, icon_name=None):
GObject.GObject.__init__(self)
self._palette_invoker = ToolInvoker(self)
if icon_name:
self.set_icon_name(icon_name)
self.connect('destroy', self.__destroy_cb)
def __destroy_cb(self, icon):
if self._palette_invoker is not None:
self._palette_invoker.detach()
def set_icon_name(self, icon_name):
'''
Sets the icon for the tool button from a named themed icon.
If it is none then no icon will be shown.
Args:
icon_name(string): The name for a themed icon.
It can be set as 'None' too.
Example:
set_icon_name('view-radial')
'''
icon = Icon(icon_name=icon_name)
self.set_icon_widget(icon)
icon.show()
def get_icon_name(self):
'''
The get_icon_name() method returns the value of the icon_name
property that contains the name of a themed icon or None.
'''
if self.props.icon_widget is not None:
return self.props.icon_widget.props.icon_name
else:
return None
icon_name = GObject.property(type=str, setter=set_icon_name,
getter=get_icon_name)
def create_palette(self):
return None
def get_palette(self):
return self._palette_invoker.palette
def set_palette(self, palette):
self._palette_invoker.palette = palette
palette = GObject.property(
type=object, setter=set_palette, getter=get_palette)
def get_palette_invoker(self):
return self._palette_invoker
def set_palette_invoker(self, palette_invoker):
self._palette_invoker.detach()
self._palette_invoker = palette_invoker
palette_invoker = GObject.property(
type=object, setter=set_palette_invoker, getter=get_palette_invoker)
def set_tooltip(self, text):
'''
Sets the tooltip of the toogle tool button. Displays when
user hovers over the button with cursor.
Args:
tooltip (string): tooltip to be added to the button
'''
self.set_palette(Palette(text))
def set_accelerator(self, accelerator):
'''
Sets keyboard shortcut that activates this button.
#.........这里部分代码省略.........
开发者ID:i5o,项目名称:sugar-toolkit-gtk3,代码行数:101,代码来源:toggletoolbutton.py
示例19: PaletteBox
class PaletteBox(Gtk.ToolItem):
__gsignals__ = {
'changed': (GObject.SignalFlags.RUN_LAST, None, ([])), }
def __init__(self, default, options):
self._palette_invoker = ToolInvoker()
Gtk.ToolItem.__init__(self)
self._label = Gtk.Label()
bt = Gtk.Button('')
bt.set_can_focus(False)
bt.remove(bt.get_children()[0])
self._box = Gtk.HBox()
bt.add(self._box)
self._icon = Icon(icon_name='')
self._box.pack_start(self._icon, False, False, 5)
self._box.pack_end(self._label, False, False, 5)
self.add(bt)
self.show_all()
# theme the button, can be removed if add the style to the sugar css
if style.zoom(100) == 100:
subcell_size = 15
else:
subcell_size = 11
radius = 2 * subcell_size
theme = "GtkButton {border-radius: %dpx;}" % radius
css_provider = Gtk.CssProvider()
css_provider.load_from_data(theme)
style_context = bt.get_style_context()
style_context.add_provider(css_provider,
Gtk.STYLE_PROVIDER_PRIORITY_USER)
# init palette
self._hide_tooltip_on_click = True
self._palette_invoker.attach_tool(self)
self._palette_invoker.props.toggle_palette = True
self.palette = Palette(_('Select option'))
self.palette.set_invoker(self._palette_invoker)
# load the fonts in the palette menu
self._menu_box = PaletteMenuBox()
self.props.palette.set_content(self._menu_box)
self._menu_box.show()
for option in options:
if option.__class__ is str:
self._add_menu(option, activate_cb=self.__option_selected_cb)
else:
self._add_menu(option[0], icon=option[1],
activate_cb=self.__option_selected_cb)
self.set_value(default)
def _set_icon(self, icon_name):
self._box.remove(self._box.get_children()[0])
self._icon = Icon(icon_name=icon_name,
pixel_size=style.STANDARD_ICON_SIZE)
self._icon.show()
self._box.pack_start(self._icon, False, False, 5)
def __option_selected_cb(self, menu, option):
self.set_value(option)
self.emit('changed')
def _add_menu(self, option, icon=None, activate_cb=None):
if icon is not None:
menu_item = PaletteMenuItem(icon_name=icon)
if activate_cb is not None:
menu_item.connect('activate', activate_cb, [option, icon])
else:
menu_item = PaletteMenuItem()
if activate_cb is not None:
menu_item.connect('activate', activate_cb, option)
menu_item.set_label(option)
self._menu_box.append_item(menu_item)
menu_item.show()
def __destroy_cb(self, icon):
if self._palette_invoker is not None:
self._palette_invoker.detach()
def create_palette(self):
return None
def get_palette(self):
return self._palette_invoker.palette
def set_palette(self, palette):
self._palette_invoker.palette = palette
palette = GObject.property(
type=object, setter=set_palette, getter=get_palette)
def get_palette_invoker(self):
return self._palette_invoker
def set_palette_invoker(self, palette_invoker):
self._palette_invoker.detach()
#.........这里部分代码省略.........
开发者ID:godiard,项目名称:domino-activity,代码行数:101,代码来源:palettebox.py
示例20: ButtonStrokeColor
class ButtonStrokeColor(Gtk.ToolItem):
"""Class to manage the Stroke Color of a Button"""
__gtype_name__ = 'BrushColorToolButton'
__gsignals__ = {'color-set': (GObject.SignalFlags.RUN_FIRST, None,
tuple())}
def __init__(self, activity, **kwargs):
self._activity = activity
self.properties = self._activity.area.tool
self._accelerator = None
self._tooltip = None
self._palette_invoker = ToolInvoker()
self._palette = None
self._selected_tool = None
GObject.GObject.__init__(self, **kwargs)
# The Gtk.ToolButton has already added a normal button.
# Replace it with a ColorButton
self.color_button = BrushButton(has_invoker=False)
self.add(self.color_button)
self.color_button.set_brush_size(self.properties['line size'])
self.color_button.set_brush_shape(self.properties['line shape'])
self.color_button.set_stamp_size(20)
# The following is so that the behaviour on the toolbar is correct.
self.color_button.set_relief(Gtk.ReliefStyle.NONE)
self._palette_invoker.attach_tool(self)
self._palette_invoker.props.toggle_palette = True
self._palette_invoker.props.lock_palette = True
# This widget just proxies the following properties to the colorbutton
self.color_button.connect('notify::color', self.__notify_change)
self.color_button.connect('notify::icon-name', self.__notify_change)
self.color_button.connect('notify::icon-size', self.__notify_change)
self.color_button.connect('notify::title', self.__notify_change)
self.color_button.connect('can-activate-accel',
self.__button_can_activate_accel_cb)
self.create_palette()
def __button_can_activate_accel_cb(self, button, signal_id):
# Accept activation via accelerators regardless of this widget's state
return True
def __notify_change(self, widget, pspec):
self.color_button.set_color(self.get_color())
self.notify(pspec.name)
def _color_button_cb(self, widget, pspec):
color = self.get_color()
self.set_stroke_color(color)
def create_palette(self):
self._palette = self.get_child().create_palette()
color_palette_hbox = self._palette._picker_hbox
self.custom_box = Gtk.VBox()
self.vbox_brush_options = Gtk.VBox()
# This is where we set restrictions for size:
# Initial value, minimum value, maximum value, step
adj = Gtk.Adjustment(self.properties['line size'], 1.0, 100.0, 1.0)
self.size_scale = Gtk.HScale()
self.size_scale.set_adjustment(adj)
self.size_scale.set_draw_value(False)
self.size_scale.set_size_request(style.zoom(200), -1)
self.size_label = Gtk.Label(label=_('Size'))
self.size_label.props.halign = Gtk.Align.START
self.vbox_brush_options.pack_start(self.size_label, True, True, 0)
self.vbox_brush_options.pack_start(self.size_scale, True, True, 0)
self.size_scale.connect('value-changed', self._on_value_changed)
# Control alpha
alpha = self.properties['alpha'] * 100
adj_alpha = Gtk.Adjustment(alpha, 10.0, 100.0, 1.0)
self.alpha_scale = Gtk.HScale()
self.alpha_scale.set_adjustment(adj_alpha)
self.alpha_scale.set_draw_value(False)
self.alpha_scale.set_size_request(style.zoom(200), -1)
self.alpha_label = Gtk.Label(label=_('Opacity'))
self.alpha_label.props.halign = Gtk.Align.START
self.vbox_brush_options.pack_start(self.alpha_label, True, True, 0)
self.vbox_brush_options.pack_start(self.alpha_scale, True, True, 0)
self.alpha_scale.connect('value-changed', self._on_alpha_changed)
# User is able to choose Shapes for 'Brush' and 'Eraser'
self.shape_box = Gtk.HBox()
self.custom_box.pack_start(self.vbox_brush_options, True, True, 0)
item1 = RadioToolButton()
item1.set_icon_name('tool-shape-ellipse')
item2 = RadioToolButton()
item2.set_icon_name('tool-shape-rectangle')
#.........这里部分代码省略.........
开发者ID:native93,项目名称:Sugar-paint-activity,代码行数:101,代码来源:widgets.py
注:本文中的sugar3.graphics.palette.ToolInvoker类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论