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 = style.STANDARD_ICON_SIZE 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)
def __init__(self, **kwargs): _ColorButton.__init__(self, **kwargs) self._title = _('Choose brush properties') self._color = Gdk.Color(0, 0, 0) self._has_palette = True self._has_invoker = True self._palette = None self._accept_drag = True self._brush_size = 2 self._stamp_size = 20 self._brush_shape = 'circle' self._alpha = 1.0 self._resized_stamp = None self._preview = Gtk.DrawingArea() self._preview.set_size_request(style.STANDARD_ICON_SIZE, style.STANDARD_ICON_SIZE) self._ctx = None self._preview.set_events(Gdk.EventMask.BUTTON_PRESS_MASK) self._preview.connect("draw", self.draw) self.set_image(self._preview) if self._has_palette and self._has_invoker: self._invoker = ToolInvoker(self) # FIXME: This is a hack. self._invoker.has_rectangle_gap = lambda: False self._invoker.palette = self._palette
def __init__(self, font_name): Gtk.ToolItem.__init__(self) self._palette_invoker = ToolInvoker() self._font_label = FontLabel(font_name) self._font_name = font_name bt = Gtk.Button("") bt.set_can_focus(False) bt.set_valign(Gtk.Align.CENTER) bt.remove(bt.get_children()[0]) box = Gtk.HBox() icon = Icon(icon_name="font-text") box.pack_start(icon, False, False, 10) box.pack_start(self._font_label, False, False, 10) bt.add(box) self.add(bt) self.show_all() 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) 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) 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)
def __init__(self, default_icon, default_value, options, palette_title): self._palette_invoker = ToolInvoker() self._options = options self._palette_title = palette_title Gtk.ToolButton.__init__(self) 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(self._palette_title) self.palette.set_invoker(self._palette_invoker) self.props.palette.set_content(self.set_palette_list(options))
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)
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)
def __init__(self, activity, **kwargs): Gtk.ToolItem.__init__(self, **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 # 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 __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())
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 __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 __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 __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) self.connect('destroy', self.__destroy_cb)
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 __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)
def __init__(self, icon_name=None, pixel_size=None, direction='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(), #stroke_color=style.COLOR_WHITE.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()) self.get_child().connect('can-activate-accel', self.__button_can_activate_accel_cb) self.connect('destroy', self.__destroy_cb)
def __init__(self, value_range, default_value, default_image): Gtk.ToolItem.__init__(self) self._palette_invoker = ToolInvoker() self.palette = None self._values = value_range self._palette_invoker.attach_tool(self) # theme the buttons, can be removed if add the style to the sugar css # these are the same values used in gtk-widgets.css.em if style.zoom(100) == 100: subcell_size = 15 default_padding = 6 else: subcell_size = 11 default_padding = 4 hbox = Gtk.HBox() vbox = Gtk.VBox() self.add(vbox) # add a vbox to set the padding up and down vbox.pack_start(hbox, True, True, default_padding) self._size_down = ToolButton('go-previous-paired') self._palette_invoker.attach_tool(self._size_down) self._size_down.set_can_focus(False) self._size_down.connect('clicked', self.__value_changed_cb, False) hbox.pack_start(self._size_down, False, False, 5) # TODO: default? self._default_value = default_value self._value = self._default_value self.image_wrapper = Gtk.EventBox() self._intensityImage = Gtk.Image() self.image_wrapper.add(self._intensityImage) self.image_wrapper.show() self._intensityImage.set_from_file(default_image) self._intensityImage.show() self._palette_invoker.attach_widget(self.image_wrapper) hbox.pack_start(self.image_wrapper, False, False, 10) self._size_up = ToolButton('go-next-paired') self._palette_invoker.attach_tool(self._size_up) self._size_up.set_can_focus(False) self._size_up.connect('clicked', self.__value_changed_cb, True) hbox.pack_start(self._size_up, False, False, 5) radius = 2 * subcell_size theme_up = "GtkButton {border-radius:0px %dpx %dpx 0px;}" % (radius, radius) css_provider_up = Gtk.CssProvider() css_provider_up.load_from_data(theme_up) style_context = self._size_up.get_style_context() style_context.add_provider(css_provider_up, Gtk.STYLE_PROVIDER_PRIORITY_USER) theme_down = "GtkButton {border-radius: %dpx 0px 0px %dpx;}" % (radius, radius) css_provider_down = Gtk.CssProvider() css_provider_down.load_from_data(theme_down) style_context = self._size_down.get_style_context() style_context.add_provider(css_provider_down, Gtk.STYLE_PROVIDER_PRIORITY_USER) self.show_all()