コード例 #1
0
 def compute_shadow(self, rect):
     self.surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, rect.width, rect.height)
     surface_cr = cairo.Context(self.surface)
     
     draw_round_rectangle_with_triangle(surface_cr, 
                                        rect,
                                        self.radius, 
                                        self.arrow_width, self.arrow_height, self.offset,
                                        border=5,
                                        pos_type=self.pos_type)
     
     surface_cr.set_line_width(2)
     surface_cr.set_source_rgba(*alpha_color_hex_to_cairo(self.shadow_color))
     surface_cr.stroke_preserve()
     gaussian_blur(self.surface, 2)
     
     # border.
     # out border.
     surface_cr.clip()
     draw_round_rectangle_with_triangle(surface_cr, 
                                        rect,
                                        self.radius, 
                                        self.arrow_width, self.arrow_height, self.offset,
                                        border=6,
                                        pos_type=self.pos_type)
     surface_cr.set_source_rgba(*alpha_color_hex_to_cairo(self.mask_color))
     surface_cr.set_line_width(1)
     surface_cr.fill()
コード例 #2
0
 def compute_shadow(self, rect):
     self.surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, rect.width, rect.height)
     surface_cr = cairo.Context(self.surface)
     
     draw_round_rectangle_with_triangle(surface_cr, 
                                        rect,
                                        self.radius, 
                                        self.arrow_width, self.arrow_height, self.offset,
                                        border=5,
                                        pos_type=self.pos_type)
     
     surface_cr.set_line_width(2)
     surface_cr.set_source_rgba(*alpha_color_hex_to_cairo(self.shadow_color))
     surface_cr.stroke_preserve()
     gaussian_blur(self.surface, 2)
     
     # border.
     # out border.
     surface_cr.clip()
     draw_round_rectangle_with_triangle(surface_cr, 
                                        rect,
                                        self.radius, 
                                        self.arrow_width, self.arrow_height, self.offset,
                                        border=6,
                                        pos_type=self.pos_type)
     surface_cr.set_source_rgba(*alpha_color_hex_to_cairo(self.mask_color))
     surface_cr.set_line_width(1)
     surface_cr.fill()
コード例 #3
0
    def expose_completion_window_frame(self, widget, event):
        cr = widget.window.cairo_create()
        rect = widget.allocation

        with cairo_disable_antialias(cr):
            cr.set_line_width(1)
            cr.set_source_rgba(*alpha_color_hex_to_cairo(ui_theme.get_alpha_color("window_frame_outside_3").get_color_info()))
            cr.rectangle(rect.x, rect.y, rect.width, rect.height)
            cr.fill()

            cr.set_source_rgba(*alpha_color_hex_to_cairo(ui_theme.get_alpha_color("window_frame_inside_2").get_color_info()))
            cr.rectangle(rect.x + 1, rect.y + 1, rect.width - 2, rect.height - 2)
            cr.fill()
コード例 #4
0
 def expose_event_draw(self, cr, rect):
     x, y, w, h = rect
     # out border.
     cairo_popover(cr, x, y, w, h, self.radius, 
                   self.arrow_width, self.arrow_height, self.offset)
     cr.set_source_rgba(*alpha_color_hex_to_cairo(self.border_out_color))
     cr.set_line_width(self.border_width)
     cr.fill()
     # in border.
     padding_h = 0.7 
     cairo_popover(cr, x + 1, y + 1, w - 2, h - 2, self.radius, 
                   self.arrow_width, self.arrow_height, self.offset) 
     cr.set_source_rgba(*alpha_color_hex_to_cairo(self.in_border_color)) # set in border color.
     cr.set_line_width(self.border_width)
     cr.fill()
コード例 #5
0
ファイル: player.py プロジェクト: huowa222/deepin-game-center
    def __paint_bottom_toolbar_background(self, e):
        # 将皮肤的图片画在bottom toolbar上,作为背景.
        cr = e.window.cairo_create()
        bottom_size = e.window.get_size()
        # draw background.
        cr.set_source_rgba(*alpha_color_hex_to_cairo(("#ebebeb", 0.1)))
        cr.rectangle(0, 0, bottom_size[0], bottom_size[1])
        cr.fill()
        # draw background pixbuf.
        pixbuf = skin_config.background_pixbuf
        app_h = self.application.window.allocation.height
        app_w = self.application.window.allocation.width
        bottom_h = bottom_size[1]
        # 当图片的高度小雨窗口高度的时候,只拿出图片的最尾巴.
        if pixbuf.get_height() > app_h + bottom_h:
            h = app_h
        else:
            h = pixbuf.get_height() - bottom_h
        # 当图片小于窗口宽度的时候,拉伸图片.
        if pixbuf.get_width() < app_w:
            pixbuf = pixbuf.scale_simple(app_w,
                                pixbuf.get_width(),
                                gtk.gdk.INTERP_BILINEAR)

        draw_pixbuf(cr, 
                    pixbuf, 
                    0, 
                    -(h))
コード例 #6
0
 def expose_event_draw(self, cr, rect):
     x, y, w, h = rect
     # out border.
     cairo_popover(cr, x, y, w, h, self.radius, self.arrow_width,
                   self.arrow_height, self.offset)
     cr.set_source_rgba(*alpha_color_hex_to_cairo(self.border_out_color))
     cr.set_line_width(self.border_width)
     cr.fill()
     # in border.
     padding_h = 0.7
     cairo_popover(cr, x + 1, y + 1, w - 2, h - 2, self.radius,
                   self.arrow_width, self.arrow_height, self.offset)
     cr.set_source_rgba(*alpha_color_hex_to_cairo(
         self.in_border_color))  # set in border color.
     cr.set_line_width(self.border_width)
     cr.fill()
コード例 #7
0
def draw_alpha_mask(cr, x, y, width, height, color_name, radius):
    if not isinstance(color_name, tuple):
        color_info = app_theme.get_alpha_color(color_name).get_color_info()
    else:    
        color_info = color_name
    cr.set_source_rgba(*alpha_color_hex_to_cairo(color_info))
    cr.rectangle(x, y, width, height)
    cr.fill()
コード例 #8
0
    def expose_completion_window_frame(self, widget, event):
        cr = widget.window.cairo_create()
        rect = widget.allocation

        with cairo_disable_antialias(cr):
            cr.set_line_width(1)
            cr.set_source_rgba(*alpha_color_hex_to_cairo(
                ui_theme.get_alpha_color(
                    "window_frame_outside_3").get_color_info()))
            cr.rectangle(rect.x, rect.y, rect.width, rect.height)
            cr.fill()

            cr.set_source_rgba(*alpha_color_hex_to_cairo(
                ui_theme.get_alpha_color(
                    "window_frame_inside_2").get_color_info()))
            cr.rectangle(rect.x + 1, rect.y + 1, rect.width - 2,
                         rect.height - 2)
            cr.fill()
コード例 #9
0
    def render_background(self,  cr, rect):
        backgound_color = ("#FFFFFF", 0.9)
        cr.set_source_rgba(*alpha_color_hex_to_cairo(backgound_color))
        cr.rectangle(rect.x, rect.y, rect.width, rect.height)
        cr.fill()

        background_color = get_background_color(self.is_highlight, False, self.is_hover)
        if background_color:
            cr.set_source_rgb(*color_hex_to_cairo(ui_theme.get_color(background_color).get_color()))
            cr.rectangle(rect.x, rect.y, rect.width, rect.height)
            cr.fill()
コード例 #10
0
ファイル: preference.py プロジェクト: kissthink/deepin-store
    def render_background(self,  cr, rect):
        backgound_color = ("#FFFFFF", 0.9)
        cr.set_source_rgba(*alpha_color_hex_to_cairo(backgound_color))
        cr.rectangle(rect.x, rect.y, rect.width, rect.height)
        cr.fill()

        background_color = get_background_color(self.is_highlight, False, self.is_hover)
        if background_color:
            cr.set_source_rgb(*color_hex_to_cairo(ui_theme.get_color(background_color).get_color()))
            cr.rectangle(rect.x, rect.y, rect.width, rect.height)
            cr.fill()
コード例 #11
0
    def expose_button(self, widget, event, font_size, label_dcolor):
        # Init.
        rect = widget.allocation
        image = self.pixbuf_normal.get_pixbuf()
        
        # Get pixbuf along with button's sate.
        if widget.state == gtk.STATE_NORMAL:
            image = self.pixbuf_normal.get_pixbuf()
            label_dcolor = app_theme.get_color('button_text_fg_normal')
            bg_dcolor = app_theme.get_alpha_color('button_bg_normal')
        elif widget.state == gtk.STATE_PRELIGHT:
            image = self.pixbuf_hover.get_pixbuf()
            label_dcolor = app_theme.get_color('button_text_fg_hover')
            bg_dcolor = app_theme.get_alpha_color('button_bg_hover')
        elif widget.state == gtk.STATE_ACTIVE:
            image = self.pixbuf_press.get_pixbuf()
            label_dcolor = app_theme.get_color('button_text_fg_press')
            bg_dcolor = app_theme.get_alpha_color('button_bg_press')
        
        # Draw button.
        cr = widget.window.cairo_create()
        draw_pixbuf(cr, image, rect.x + self.padding_edge, rect.y)
        
        # Draw font.
        if widget.state == gtk.STATE_INSENSITIVE:
            label_color = ui_theme.get_color("disable_text").get_color()
        else:
            label_color = label_dcolor.get_color()
        if self.button_label:
            draw_text(cr, self.button_label, 
                        rect.x + image.get_width() + self.padding_edge + self.padding_middle,
                        rect.y, 
                        rect.width - image.get_width() - self.padding_middle - self.padding_edge*2,
                        rect.height,
                        font_size, 
                        label_color,
                        alignment=pango.ALIGN_LEFT
                        )

        if self.draw_background:
            cr.set_source_rgba(*alpha_color_hex_to_cairo(bg_dcolor.get_color_info()))
            draw_round_rectangle(cr, rect.x, rect.y, rect.width, rect.height, rect.height/2)
            cr.fill()
    
        # Propagate expose to children.
        propagate_expose(widget, event)
        
        return True
コード例 #12
0
    def __paint_top_titlebar_background(self, e):
        # 将皮肤的图片画在bottom toolbar上,作为背景.
        cr = e.window.cairo_create()
        bottom_size = e.window.get_size()
        # draw background.
        cr.set_source_rgba(*alpha_color_hex_to_cairo(("#ebebeb", 0.1)))
        cr.rectangle(0, 0, bottom_size[0], bottom_size[1])
        cr.fill()
        # draw background pixbuf.
        pixbuf = skin_config.background_pixbuf
        app_w = self.application.window.allocation.width
        # 当图片小于窗口宽度的时候,拉伸图片.
        if pixbuf.get_width() < app_w:
            pixbuf = pixbuf.scale_simple(app_w, pixbuf.get_width(),
                                         gtk.gdk.INTERP_BILINEAR)

        draw_pixbuf(cr, pixbuf, 0, 0)
コード例 #13
0
ファイル: ui.py プロジェクト: maskegger/deepin-music-player
 def expose_input_entry(self, widget, event):
     '''
     Internal callback for `expose-event` signal.
     '''
     # Init.
     cr = widget.window.cairo_create()
     rect = widget.allocation
     
     cr.set_source_rgba(*alpha_color_hex_to_cairo(("#FFFFFF", 0.9)))
     cr.rectangle(rect.x, rect.y, rect.width, rect.height)
     cr.fill()
     
     # Draw frame.
     with cairo_disable_antialias(cr):
         cr.set_line_width(1)
         cr.set_source_rgba(*color_hex_to_cairo("#C3C4C5"))
         cr.move_to(rect.x + rect.width, rect.y)
         cr.rel_line_to(0, rect.height)
         cr.stroke()
     
     propagate_expose(widget, event)
コード例 #14
0
    def expose(self, widget, event=None):
        cr = widget.window.cairo_create()
        rect = widget.get_allocation()
        
        cr.translate(rect.x+rect.width/2, rect.y+rect.height/2)
        cr.rotate(self.rotate_angle)

        cr.set_line_width(self.line_width)
        for i in range(int(self.rate)):
            cr.set_source_rgba(*alpha_color_hex_to_cairo(("#000", i/self.rate)))
            cr.arc(
                #rect.x + rect.width / 2, 
                #rect.y + rect.height / 2, 
                0,
                0,
                (self.diameter-self.line_width)/2.0, 
                i * self.radian_per_part, 
                (i+1) * self.radian_per_part,
            )
            cr.stroke()

        return True
コード例 #15
0
    def expose_input_entry(self, widget, event):
        '''
        Internal callback for `expose-event` signal.
        '''
        # Init.
        cr = widget.window.cairo_create()
        rect = widget.allocation
        x, y, w, h = rect.x, rect.y, rect.width, rect.height

        # Draw frame.
        with cairo_disable_antialias(cr):
            cr.set_line_width(1)
            cr.set_source_rgb(*color_hex_to_cairo(self.border_color))
            cr.rectangle(rect.x, rect.y, rect.width, rect.height)
            cr.stroke()
            
            cr.set_source_rgba(*alpha_color_hex_to_cairo(("#ffffff", 0.9)))
            cr.rectangle(rect.x, rect.y, rect.width - 1, rect.height - 1)
            cr.fill()
        
        propagate_expose(widget, event)
        
        return True
コード例 #16
0
    def expose_input_entry(self, widget, event):
        '''
        Internal callback for `expose-event` signal.
        '''
        # Init.
        cr = widget.window.cairo_create()
        rect = widget.allocation
        x, y, w, h = rect.x, rect.y, rect.width, rect.height

        # Draw frame.
        with cairo_disable_antialias(cr):
            cr.set_line_width(1)
            cr.set_source_rgb(*color_hex_to_cairo(self.border_color))
            cr.rectangle(rect.x, rect.y, rect.width, rect.height)
            cr.stroke()

            cr.set_source_rgba(*alpha_color_hex_to_cairo(("#ffffff", 0.9)))
            cr.rectangle(rect.x, rect.y, rect.width - 1, rect.height - 1)
            cr.fill()

        propagate_expose(widget, event)

        return True
コード例 #17
0
    def expose(self, widget, event=None):
        cr = widget.window.cairo_create()
        rect = widget.get_allocation()

        cr.translate(rect.x + rect.width / 2, rect.y + rect.height / 2)
        cr.rotate(self.rotate_angle)

        cr.set_line_width(self.line_width)
        for i in range(int(self.rate)):
            cr.set_source_rgba(*alpha_color_hex_to_cairo((
                app_theme.get_color("sidebar_select").get_color(),
                i / self.rate)))
            cr.arc(
                #rect.x + rect.width / 2,
                #rect.y + rect.height / 2,
                0,
                0,
                (self.diameter - self.line_width) / 2.0,
                i * self.radian_per_part,
                (i + 1) * self.radian_per_part,
            )
            cr.stroke()

        return True
コード例 #18
0
 def __paint_top_window(self, e):
     top_width, top_height = self.top_window.get_size()
     cr = self.top_window.cairo_create()
     cr.set_source_rgba(*alpha_color_hex_to_cairo(("#ffffff", 0.0)))
     cr.rectangle(0, 0, top_width, top_height)
     cr.fill()
コード例 #19
0
 def __paint_bottom_window(self, e):
     bottom_rect = self.bottom_window.get_size()
     cr = self.bottom_window.cairo_create()
     cr.set_source_rgba(*alpha_color_hex_to_cairo(("#ffffff", 0.0)))
     cr.rectangle(0, 0, bottom_rect[0], bottom_rect[1])
     cr.fill()
コード例 #20
0
    def on_expose_event(self, widget, event):
        cr = widget.window.cairo_create()
        rect = widget.allocation
        rect.x = rect.y = 0

        cr.set_source_rgb(1, 1, 1)
        cr.rectangle(rect.x, rect.y, rect.width, rect.height)
        cr.fill()

        if not self.channel_infos:
            render_text(
                cr,
                self.prompt_text,
                rect.x,
                rect.y,
                rect.width,
                rect.height,
                text_color=app_theme.get_color("labelText").get_color(),
                alignment=pango.ALIGN_CENTER)
            return True

        if self.active_alpha > 0.0:
            self.draw_channel_info(cr, rect, self.active_index,
                                   self.active_alpha)

        if self.target_index != None and self.target_alpha > 0.0:
            self.draw_channel_info(cr, rect, self.target_index,
                                   self.target_alpha)

        if self.mask_flag:
            draw_pixbuf(cr, self.mask_pixbuf, rect.x, rect.y)

        # Draw select pointer.
        for index in range(0, self.slide_number):
            if self.target_index == None:
                if self.active_index == index:
                    cr.set_source_rgba(*alpha_color_hex_to_cairo(("#9DD6C5",
                                                                  0.9)))
                else:
                    cr.set_source_rgba(*alpha_color_hex_to_cairo(("#D4E1DC",
                                                                  0.9)))
            else:
                if self.target_index == index:
                    cr.set_source_rgba(*alpha_color_hex_to_cairo(("#9DD6C5",
                                                                  0.9)))
                else:
                    cr.set_source_rgba(*alpha_color_hex_to_cairo(("#D4E1DC",
                                                                  0.9)))

            p_x = rect.x + rect.width + self.pointer_offset_x + index * self.pointer_padding
            p_y = rect.y + self.pointer_offset_y
            cr.arc(p_x, p_y, self.pointer_radious, 0, 2 * math.pi)

            cr.fill()

            pointer_rect = gtk.gdk.Rectangle(p_x - self.pointer_radious,
                                             p_y - self.pointer_radious,
                                             self.pointer_radious * 2,
                                             self.pointer_radious * 2)
            # Draw index number.
            render_text(cr,
                        str(index + 1),
                        pointer_rect.x,
                        pointer_rect.y,
                        pointer_rect.width,
                        pointer_rect.height,
                        text_size=9,
                        text_color="#444444",
                        alignment=pango.ALIGN_CENTER)
            pointer_rect.x -= rect.x
            pointer_rect.y -= rect.y
            self.pointer_coords[index] = pointer_rect

        return True
コード例 #21
0
 def render(self, cr, rect):    
     color = "#EFEFEF"
     if self.is_select:    
         color = "#FFFFFF"
     alpha_color = (color, 0.95)    
     
     with cairo_disable_antialias(cr):
         cr.set_source_rgba(*alpha_color_hex_to_cairo(alpha_color))
         cr.rectangle(rect.x, rect.y, rect.width, rect.height)
         cr.fill()
         
         cr.set_line_width(1)
         cr.set_source_rgba(*alpha_color_hex_to_cairo(("#D6D6D6", 0.95)))        
         
         if self.index == 0:
             if self.is_select:
                 if self.total == 1:
                     pass
                 else:
                     cr.move_to(rect.x + rect.width, rect.y)
                     cr.rel_line_to(0, rect.height)
                     cr.stroke()
             else:    
                 cr.move_to(rect.x, rect.y + rect.height)
                 cr.rel_line_to(rect.width, 0)
                 cr.stroke()                         
             
             if self.total <= 2:
                 dashed = [4.0, 4.0]
                 cr.save()
                 cr.move_to(rect.x, rect.y + rect.height)
                 cr.line_to(rect.x + rect.width, rect.y + rect.height)
                 cr.set_dash(dashed)
                 cr.stroke()
                 cr.restore()
         
         elif self.index == self.total - 1:
             if self.is_select:
                 cr.move_to(rect.x + 1, rect.y)
                 cr.rel_line_to(0, rect.height)
             else:    
                 cr.move_to(rect.x, rect.y + rect.height)
                 cr.rel_line_to(rect.width, 0)
             cr.stroke()    
             
         else:    
             if self.is_select:
                 cr.move_to(rect.x + 1, rect.y)
                 cr.rel_line_to(0, rect.height)
                 cr.stroke()
                 
                 cr.save()
                 cr.move_to(rect.x + rect.width, rect.y)
                 cr.rel_line_to(0, rect.height)
                 cr.stroke()
         
             else:    
                 cr.move_to(rect.x, rect.y + rect.height)
                 cr.rel_line_to(rect.width, 0)
                 cr.stroke()
     
     if self.icon_pixbuf:
         icon_y = rect.y + (rect.height - self.icon_size) / 2
         draw_pixbuf(cr, self.icon_pixbuf, rect.x + self.padding_x, rect.y + icon_y)
         
     if self.is_select or self.is_hover:    
         color = app_theme.get_color("progressBarLeft").get_color()
         # color = app_theme.get_color("simpleItemHighlight").get_color()
     else:    
         color = app_theme.get_color("labelText").get_color()
         
     draw_text(cr, self.title, rect.x, rect.y, 
               rect.width, rect.height,
               text_color= color,
               alignment=pango.ALIGN_CENTER,
               text_size=10)
コード例 #22
0
    def expose_toggle_button(self, widget, event, font_size, label_dcolor):
        '''
        Callback for `expose-event` signal.
        
        @param widget: ToggleButton widget.
        @param event: Expose event.
        @param button_label: Button label string.
        @param padding_x: horticultural padding value.
        @param font_size: Font size.
        @param label_dcolor: Label DynamicColor.
        '''
        # Init.
        inactive_normal_dpixbuf, inactive_hover_dpixbuf, inactive_press_dpixbuf, inactive_disable_dpixbuf = self.inactive_pixbuf_group
        active_normal_dpixbuf, active_hover_dpixbuf, active_press_dpixbuf, active_disable_dpixbuf = self.active_pixbuf_group
        rect = widget.allocation
        image = inactive_normal_dpixbuf.get_pixbuf()

        if not widget.get_active():
            button_label = self.active_button_label
        else:
            button_label = self.inactive_button_label

        # Get pixbuf along with button's sate.
        if widget.state == gtk.STATE_INSENSITIVE:
            if widget.get_active():
                image = active_disable_dpixbuf.get_pixbuf()
            else:
                image = inactive_disable_dpixbuf.get_pixbuf()
        elif widget.state == gtk.STATE_NORMAL:
            label_dcolor = app_theme.get_color('button_text_fg_normal')
            bg_dcolor = app_theme.get_alpha_color('button_bg_normal')
            image = inactive_normal_dpixbuf.get_pixbuf()
        elif widget.state == gtk.STATE_PRELIGHT:
            label_dcolor = app_theme.get_color('button_text_fg_hover')
            bg_dcolor = app_theme.get_alpha_color('button_bg_hover')
            if not inactive_hover_dpixbuf and not active_hover_dpixbuf:
                if widget.get_active():
                    image = active_normal_dpixbuf.get_pixbuf()
                else:    
                    image = inactive_normal_dpixbuf.get_pixbuf()
            else:    
                if inactive_hover_dpixbuf and active_hover_dpixbuf:
                    if widget.get_active():
                        image = active_hover_dpixbuf.get_pixbuf()
                    else:    
                        image = inactive_hover_dpixbuf.get_pixbuf()
                elif inactive_hover_dpixbuf:        
                    image = inactive_hover_dpixbuf.get_pixbuf()
                elif active_hover_dpixbuf:    
                    image = active_hover_dpixbuf.get_pixbuf()
        elif widget.state == gtk.STATE_ACTIVE:
            if inactive_press_dpixbuf and active_press_dpixbuf:
                if self.button_press_flag:
                    label_dcolor = app_theme.get_color('button_text_fg_press')
                    bg_dcolor = app_theme.get_alpha_color('button_bg_press')
                    if widget.get_active():
                        image = active_press_dpixbuf.get_pixbuf()
                    else:    
                        image = inactive_press_dpixbuf.get_pixbuf()
                else:    
                    label_dcolor = app_theme.get_color('button_text_fg_normal')
                    bg_dcolor = app_theme.get_alpha_color('button_bg_normal')
                    image = active_normal_dpixbuf.get_pixbuf()
            else:        
                image = active_normal_dpixbuf.get_pixbuf()
        
        # Draw button.
        cr = widget.window.cairo_create()
        draw_pixbuf(cr, image, rect.x + self.padding_edge, rect.y)
        
        # Draw font.
        if widget.state == gtk.STATE_INSENSITIVE:
            label_color = ui_theme.get_color("disable_text").get_color()
        else:
            label_color = label_dcolor.get_color()
        if button_label:
            draw_text(cr, button_label, 
                        rect.x + image.get_width() + self.padding_edge + self.padding_middle,
                        rect.y, 
                        rect.width - image.get_width() - self.padding_edge * 2 - self.padding_middle + self.more_width,
                        rect.height,
                        font_size, 
                        label_color,
                        alignment=pango.ALIGN_LEFT
                        )

        if self.draw_background:
            cr.set_source_rgba(*alpha_color_hex_to_cairo(bg_dcolor.get_color_info()))
            draw_round_rectangle(cr, rect.x, rect.y, rect.width, rect.height, rect.height/2)
            cr.fill()
    
        # Propagate expose to children.
        propagate_expose(widget, event)
        
        return True
コード例 #23
0
    def on_expose_event(self, widget, event):    
        cr = widget.window.cairo_create()
        rect = widget.allocation
        rect.x = rect.y = 0
        
        cr.set_source_rgb(1, 1, 1)
        cr.rectangle(rect.x, rect.y, rect.width,rect.height)
        cr.fill()
        
        if not self.channel_infos:
            render_text(cr, self.prompt_text, rect.x, rect.y, rect.width, rect.height,
                        text_color=app_theme.get_color("labelText").get_color(),
                        alignment=pango.ALIGN_CENTER)
            return True
            
        
        if self.active_alpha > 0.0:
            self.draw_channel_info(cr, rect, self.active_index, self.active_alpha)
            
        if self.target_index != None and self.target_alpha > 0.0:    
            self.draw_channel_info(cr, rect, self.target_index, self.target_alpha)
            
        if self.mask_flag:    
            draw_pixbuf(cr, self.mask_pixbuf, rect.x, rect.y)
        
        
        # Draw select pointer.
        for index in range(0, self.slide_number):
            if self.target_index == None:
                if self.active_index == index:
                    cr.set_source_rgba(*alpha_color_hex_to_cairo(("#9DD6C5", 0.9)))                    
                else:
                    cr.set_source_rgba(*alpha_color_hex_to_cairo(("#D4E1DC", 0.9)))
            else:
                if self.target_index == index:
                    cr.set_source_rgba(*alpha_color_hex_to_cairo(("#9DD6C5", 0.9)))                    
                else:
                    cr.set_source_rgba(*alpha_color_hex_to_cairo(("#D4E1DC", 0.9)))

            p_x =  rect.x + rect.width + self.pointer_offset_x + index * self.pointer_padding       
            p_y =  rect.y + self.pointer_offset_y
            cr.arc(p_x, p_y,
                   self.pointer_radious,
                   0, 
                   2 * math.pi)
            
            cr.fill()
            
            pointer_rect = gtk.gdk.Rectangle(p_x - self.pointer_radious,
                                             p_y - self.pointer_radious,
                                             self.pointer_radious * 2,
                                             self.pointer_radious * 2)
            # Draw index number.
            render_text(cr, str(index + 1), pointer_rect.x, pointer_rect.y,
                        pointer_rect.width, pointer_rect.height, text_size=9, text_color="#444444",
                        alignment=pango.ALIGN_CENTER
                        )
            pointer_rect.x -= rect.x
            pointer_rect.y -= rect.y
            self.pointer_coords[index] = pointer_rect
            
        return True
コード例 #24
0
 def __paint_bottom_window(self, e):
     bottom_rect = self.bottom_window.get_size()
     cr = self.window.cairo_create()
     cr.set_source_rgba(*alpha_color_hex_to_cairo(("#ff0000", 0.1)))
     cr.rectangle(0, 0, bottom_rect[0], bottom_rect[1])
     cr.fill()
コード例 #25
0
    def render(self, cr, rect):
        color = "#EFEFEF"
        if self.is_select:
            color = "#FFFFFF"
        alpha_color = (color, 0.95)

        with cairo_disable_antialias(cr):
            cr.set_source_rgba(*alpha_color_hex_to_cairo(alpha_color))
            cr.rectangle(rect.x, rect.y, rect.width, rect.height)
            cr.fill()

            cr.set_line_width(1)
            cr.set_source_rgba(*alpha_color_hex_to_cairo(("#D6D6D6", 0.95)))

            if self.index == 0:
                if self.is_select:
                    if self.total == 1:
                        pass
                    else:
                        cr.move_to(rect.x + rect.width, rect.y)
                        cr.rel_line_to(0, rect.height)
                        cr.stroke()
                else:
                    cr.move_to(rect.x, rect.y + rect.height)
                    cr.rel_line_to(rect.width, 0)
                    cr.stroke()

                if self.total <= 2:
                    dashed = [4.0, 4.0]
                    cr.save()
                    cr.move_to(rect.x, rect.y + rect.height)
                    cr.line_to(rect.x + rect.width, rect.y + rect.height)
                    cr.set_dash(dashed)
                    cr.stroke()
                    cr.restore()

            elif self.index == self.total - 1:
                if self.is_select:
                    cr.move_to(rect.x + 1, rect.y)
                    cr.rel_line_to(0, rect.height)
                else:
                    cr.move_to(rect.x, rect.y + rect.height)
                    cr.rel_line_to(rect.width, 0)
                cr.stroke()

            else:
                if self.is_select:
                    cr.move_to(rect.x + 1, rect.y)
                    cr.rel_line_to(0, rect.height)
                    cr.stroke()

                    cr.save()
                    cr.move_to(rect.x + rect.width, rect.y)
                    cr.rel_line_to(0, rect.height)
                    cr.stroke()

                else:
                    cr.move_to(rect.x, rect.y + rect.height)
                    cr.rel_line_to(rect.width, 0)
                    cr.stroke()

        if self.icon_pixbuf:
            icon_y = rect.y + (rect.height - self.icon_size) / 2
            draw_pixbuf(cr, self.icon_pixbuf, rect.x + self.padding_x,
                        rect.y + icon_y)

        if self.is_select or self.is_hover:
            color = app_theme.get_color("progressBarLeft").get_color()
            # color = app_theme.get_color("simpleItemHighlight").get_color()
        else:
            color = app_theme.get_color("labelText").get_color()

        draw_text(cr,
                  self.title,
                  rect.x,
                  rect.y,
                  rect.width,
                  rect.height,
                  text_color=color,
                  alignment=pango.ALIGN_CENTER,
                  text_size=10)
コード例 #26
0
 def __paint_top_window(self, e):
     top_width, top_height = self.top_window.get_size()
     cr = self.top_window.cairo_create()
     cr.set_source_rgba(*alpha_color_hex_to_cairo(("#ffffff", 0.0)))
     cr.rectangle(0, 0, top_width, top_height)
     cr.fill()