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, pixel_size, stroke_color, fill_color, direction='vertical'): Gtk.DrawingArea.__init__(self) self._icon_name = icon_name self._direction = direction self._progress = 0 self._stroke = get_surface( icon_name=icon_name, width=pixel_size, height=pixel_size, stroke_color=stroke_color, fill_color=style.COLOR_TRANSPARENT.get_svg()) self._fill = get_surface( icon_name=icon_name, width=pixel_size, height=pixel_size, stroke_color=style.COLOR_TRANSPARENT.get_svg(), fill_color=fill_color) self.connect("draw", self.__draw_cb)
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() if self.palette and self.palette.is_up(): invoker = self.palette.props.invoker invoker.draw_rectangle(cr, self.palette) # Changes the outline color of the progressicon on activation if self._progress > 0: self._stroke = get_surface( icon_name=self._icon_name, width=self._pixel_size, height=self._pixel_size, stroke_color=style.COLOR_WHITE.get_svg(), fill_color=style.COLOR_TRANSPARENT.get_svg()) else: 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()) allocation = self.get_allocation() # Center the graphic in the allocated space. margin_x = (allocation.width - self._stroke.get_width()) / 2 margin_y = (allocation.height - self._stroke.get_height()) / 2 cr.translate(margin_x, margin_y) # Paint the fill, clipping it by the progress. x_, y_ = 0, 0 width, height = self._stroke.get_width(), self._stroke.get_height() if self._direction == 'vertical': # vertical direction, bottom to top y_ = self._stroke.get_height() height *= self._progress * -1 else: rtl_direction = \ Gtk.Widget.get_default_direction() == Gtk.TextDirection.RTL if rtl_direction: # horizontal direction, right to left x_ = self._stroke.get_width() width *= self._progress * -1 else: # horizontal direction, left to right width *= self._progress cr.rectangle(x_, y_, width, height) cr.clip() cr.set_source_surface(self._fill, 0, 0) cr.paint() # Paint the stroke over the fill. cr.reset_clip() cr.set_source_surface(self._stroke, 0, 0) cr.paint() return False
def do_draw(self, cr): if self._progress > 0: self._stroke = get_surface( icon_name=self._icon_name, width=self._pixel_size, height=self._pixel_size, stroke_color=style.COLOR_WHITE.get_svg(), fill_color=style.COLOR_TRANSPARENT.get_svg()) else: 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()) allocation = self.get_allocation() # Center the graphic in the allocated space. margin_x = (allocation.width - self._stroke.get_width()) / 2 margin_y = (allocation.height - self._stroke.get_height()) / 2 cr.translate(margin_x, margin_y) # Paint the fill, clipping it by the progress. x_, y_ = 0, 0 width, height = self._stroke.get_width(), self._stroke.get_height() if self._direction == 'vertical': # vertical direction, bottom to top y_ = self._stroke.get_height() height *= self._progress * -1 else: rtl_direction = \ Gtk.Widget.get_default_direction() == Gtk.TextDirection.RTL if rtl_direction: # horizontal direction, right to left x_ = self._stroke.get_width() width *= self._progress * -1 else: # horizontal direction, left to right width *= self._progress cr.rectangle(x_, y_, width, height) cr.clip() cr.set_source_surface(self._fill, 0, 0) cr.paint() # Paint the stroke over the fill. cr.reset_clip() cr.set_source_surface(self._stroke, 0, 0) cr.paint() return False
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 show_badge(self): self._badge = get_surface(icon_name='emblem-notification', stroke_color=style.COLOR_WHITE.get_svg(), fill_color=style.COLOR_BLACK.get_svg(), width=self.SIZE, height=self.SIZE)
def show_badge(self): self._badge = get_surface(icon_name='emblem-notification', stroke_color=style.COLOR_WHITE.get_svg(), fill_color=style.COLOR_BLACK.get_svg(), width=self.get_badge_size(), height=self.get_badge_size())