def render_text(self, cr, rect):
        if self.is_hover or self.is_select:
            # Draw background.
            draw_vlinear(cr, rect.x, rect.y, rect.width, rect.height,
                         ui_theme.get_shadow_color("menu_item_select").get_color_info())

            # Set font color.
            font_color = ui_theme.get_color("menu_select_font").get_color()

            # Don't highlight when select.
            text = self.text
        else:
            # Set font color.
            font_color = ui_theme.get_color("menu_font").get_color()

            # Highilght match string.
            r = self.text.partition(self.search_string.lower())
            text = "%s<span foreground=\"#00AAFF\">%s</span>%s" % (r[0], r[1], r[2])

        draw_text(cr,
                  text,
                  rect.x + self.padding_x,
                  rect.y,
                  rect.width - self.padding_x * 2,
                  rect.height,
                  text_color=font_color)
 def __treeview_paint_nodes_event(self, node_event):
     color = self.listview_color.get_color()
     text_color = "#FFFFFF"
     # 单击和移动, 双击.
     if node_event.node in node_event.single_items:
         color_info = [(0, (color, 0.45)), (1, (color, 0.45))] 
         draw_vlinear(node_event.cr,
                      node_event.x, node_event.y, node_event.w, node_event.h,
                      color_info
                      )
         #text_color = "#000000"
     elif node_event.node in node_event.motion_items:
         color_info = [(0, (color, 0.75)), (1, (color, 0.75))] 
         draw_vlinear(node_event.cr,
                      node_event.x, node_event.y, node_event.w, node_event.h,
                      color_info
                      )
     #
     x_padding = 12 # 因为要和搜索框对齐.
     if 0 == node_event.node.leave: # 根节点. :比如->> >我看过的. >优酷视频. >pps.
         if node_event.node.is_expanded:
             pixbuf = self.one_open.get_pixbuf()
         else:
             pixbuf = self.one_close.get_pixbuf()
     elif 1 == node_event.node.leave: # 
         if node_event.node.is_expanded:
             pixbuf = self.two_open.get_pixbuf()
         else:
             pixbuf = self.two_close.get_pixbuf()
     else:
         if node_event.node.is_expanded:
             pixbuf = self.three_open.get_pixbuf()
         else:
             pixbuf = self.three_close.get_pixbuf()
     #
     icon_x = node_event.x + x_padding
     icon_y = node_event.y + node_event.h/2 - pixbuf.get_height()/2 + 1
     if node_event.node.leave > 1:
         icon_x += (node_event.node.leave - 1) * pixbuf.get_width()
     if node_event.node.leave > 0:
         text_color = "#a8a8a8"
     ##########
     # 画图标.
     if node_event.node.nodes != []:
         draw_pixbuf(node_event.cr,
                     pixbuf,
                     icon_x,
                     icon_y) 
     # 画文本.
     text_x_padding = 15
     text_size = 9
     draw_text(node_event.cr, 
               node_event.node.text, 
               icon_x + text_x_padding,
               node_event.y + node_event.h/2 - get_text_size(node_event.node.text, text_size=9)[1]/2,
               text_color=text_color,
               text_size=text_size
               )
def render_background(cr, rect, is_select=False):
    if is_select:
        background_color = [(0,["#91aadd", 1.0]),
                            (1,["#91aadd", 1.0])]
    else:
        background_color = [(0,["#ffffff", 1.0]),
                            (1,["#ffffff", 1.0])]

    draw_vlinear(cr, rect.x ,rect.y, rect.width , rect.height, background_color)
    def __treeview_paint_nodes_event(self, node_event):
        leave_width = 20
        color = self.listview_color.get_color()
        text_color = "#FFFFFF"
        #
        if node_event.node in node_event.single_items:
            color_info = [(0, (color, 0.45)), (1, (color, 0.45))] 
            draw_vlinear(node_event.cr,
                         node_event.x, node_event.y, node_event.w, node_event.h,
                         color_info
                         )
            text_color = "#000000"
        elif node_event.node in node_event.motion_items:
            color_info = [(0, (color, 0.75)), (1, (color, 0.75))] 
            draw_vlinear(node_event.cr,
                         node_event.x, node_event.y, node_event.w, node_event.h,
                         color_info
                         )
        #
        if node_event.node.leave == 1: # 根节点.
            x = node_event.x + 20
            # 画root的图标.
            if node_event.node.is_expanded:
                pixbuf = self.tree_view_close.get_pixbuf()
            else:
                pixbuf = self.tree_view_open.get_pixbuf()
            # node_event.x + 5 是图标与文字之间的宽度.
            draw_pixbuf(node_event.cr,
                        pixbuf,
                        node_event.x + 5,
                        node_event.y + node_event.h/2 - pixbuf.get_height()/2 )
        else:
            #x_padding = node_event.node.leave * leave_width
            #x = node_event.x + 18 + x_padding
            x = node_event.x + 20
            #
            if node_event.node.is_expanded:
                pixbuf = self.tree_view_bottom.get_pixbuf()
            else:
                pixbuf = self.tree_view_right.get_pixbuf()
            icon_x = node_event.x + pixbuf.get_width()/2
            icon_y = node_event.y + node_event.h/2 - pixbuf.get_height()/2

            if node_event.node.nodes or node_event.node.leave == 2:
                draw_pixbuf(node_event.cr, pixbuf, icon_x, icon_y)
        #
        draw_text(node_event.cr, 
                  node_event.node.text, 
                  x + 5,
                  node_event.y + node_event.h/2 - get_text_size(node_event.node.text, text_size=9)[1]/2,
                  text_color=text_color,
                  text_size=9
                  )
 def draw_mask(self, cr, x, y, w, h):
     '''
     Draw mask interface.
     
     @param cr: Cairo context.
     @param x: X coordiante of draw area.
     @param y: Y coordiante of draw area.
     @param w: Width of draw area.
     @param h: Height of draw area.
     '''
     draw_vlinear(cr, x, y, w, h,
                  [(0, ("#FFFFFF", 0.9)),
                   (1, ("#FFFFFF", 0.9)),]
                  )
Esempio n. 6
0
    def draw_mask(self, cr, x, y, w, h):
        '''
        Draw mask interface.

        @param cr: Cairo context.
        @param x: X coordiante of draw area.
        @param y: Y coordiante of draw area.
        @param w: Width of draw area.
        @param h: Height of draw area.
        '''
        draw_vlinear(cr, x, y, w, h, [
            (0, ("#FFFFFF", 0.9)),
            (1, ("#FFFFFF", 0.9)),
        ])
 def draw_mask(self, cr, x, y, w, h):
     '''
     Draw mask interface.
     
     @param cr: Cairo context.
     @param x: X coordiante of draw area.
     @param y: Y coordiante of draw area.
     @param w: Width of draw area.
     @param h: Height of draw area.
     '''
     sidebar_color = "#ffffff"
     draw_vlinear(cr, x, y, w, h,
                  [(0, (sidebar_color, 0.9)),
                   (1, (sidebar_color, 0.9)),]
                  )
 def draw_mask(self, cr, x, y, w, h):
     '''
     Draw mask interface.
     
     @param cr: Cairo context.
     @param x: X coordiante of draw area.
     @param y: Y coordiante of draw area.
     @param w: Width of draw area.
     @param h: Height of draw area.
     '''
     sidebar_color = app_theme.get_color("sidebar_background").get_color()
     draw_vlinear(cr, x, y, w, h,
                  [(0, (sidebar_color, 0.9)),
                   (1, (sidebar_color, 0.9)),]
                  )
 def draw_mask(self, cr, x, y, w, h):
     '''
     Draw mask interface.
     
     @param cr: Cairo context.
     @param x: X coordiante of draw area.
     @param y: Y coordiante of draw area.
     @param w: Width of draw area.
     @param h: Height of draw area.
     '''
     sidebar_color = "#ffffff"
     draw_vlinear(cr, x, y, w, h, [
         (0, (sidebar_color, 0.9)),
         (1, (sidebar_color, 0.9)),
     ])
Esempio n. 10
0
    def draw_mask(self, cr, x, y, w, h):
        '''
        Draw mask interface.

        @param cr: Cairo context.
        @param x: X coordiante of draw area.
        @param y: Y coordiante of draw area.
        @param w: Width of draw area.
        @param h: Height of draw area.
        '''
        sidebar_color = app_theme.get_color("sidebar_background").get_color()
        draw_vlinear(cr, x, y, w, h, [
            (0, (sidebar_color, 0.9)),
            (1, (sidebar_color, 0.9)),
        ])
Esempio n. 11
0
 def expose_category_item(self, widget, event):    
     
     # Init.
     cr = widget.window.cairo_create()
     rect = widget.allocation
     font_color = app_theme.get_color("labelText").get_color()
     arrow_pixbuf = self.arrow_dpixbuf.get_pixbuf()
     select_index = self.get_index()
     
     if widget.state == gtk.STATE_NORMAL:
         if select_index == self.index:
             select_status = BUTTON_PRESS
         else:    
             select_status = BUTTON_NORMAL
             
     elif widget.state == gtk.STATE_PRELIGHT:        
         if select_index == self.index: 
             select_status = BUTTON_PRESS
         else:    
             select_status = BUTTON_HOVER
             
     elif widget.state == gtk.STATE_ACTIVE:        
         select_status = BUTTON_PRESS
         
     if select_status == BUTTON_PRESS:    
         draw_vlinear(cr, rect.x, rect.y, rect.width, rect.height, 
                      app_theme.get_shadow_color("simpleItemPress").get_color_info())
         font_color = app_theme.get_color("simpleSelectItem").get_color()
         
     elif select_status == BUTTON_HOVER:    
         draw_vlinear(cr, rect.x, rect.y, rect.width, rect.height, 
                      app_theme.get_shadow_color("simpleItemHover").get_color_info())
         
     
     # Draw content.
     draw_text(cr, self.content, 
               rect.x + self.padding_left, 
               rect.y,
               rect.width - self.padding_left - self.arrow_width - self.padding_right,
               rect.height, 
               self.font_size, font_color,
               alignment=self.x_align)
     
     # Draw pixbuf.    
     draw_pixbuf(cr, arrow_pixbuf, rect.x + rect.width - self.arrow_width - self.padding_right ,rect.y + (rect.height - arrow_pixbuf.get_height()) / 2)    
     propagate_expose(widget, event)
     
     return True
    def expose_event(self, widget, event):
        '''
        docs
        '''
        cr = widget.window.cairo_create()
        rect = widget.allocation

        # sep height is 2/3 of hbox
        x = rect.x
        y = rect.y + rect.height / 6
        width = 1
        height = rect.height * 2 / 3

        draw_vlinear(cr, x, y, width, height, [(0, ("#ffffff", 0)),
                                               (0.5, ("#2b2b2b", 0.5)),
                                               (1, ("#ffffff", 0))])
Esempio n. 13
0
    def on_expose_event(self, widget, event):    
        cr = widget.window.cairo_create()
        rect = widget.allocation
        item_x = rect.x + self.padding_x
        item_y = rect.y + self.padding_y
        
        for i in range(1, self.max_number + 1):

            if i <= self.active_number:
                color_info = self.active_color_info
            else:    
                color_info = self.inactive_color_info
            cr.save()                
            draw_vlinear(cr, item_x, item_y, self.item_width, self.item_height, color_info, 3)                                
            cr.restore()
            item_x += self.padding_x + self.item_width
Esempio n. 14
0
    def render(self, cr, rect):
        # Init.
        x, y, w, h = rect.x, rect.y, rect.width, rect.height

        # Draw background frame.
        with cairo_state(cr):
            cr.rectangle(x, y + 1, w, h - 2)
            cr.rectangle(x + 1, y, w - 2, h)
            cr.clip()

            cr.set_source_rgb(*color_hex_to_cairo(
                ui_theme.get_color(
                    "progressbar_background_frame").get_color()))
            cr.rectangle(x, y, w, h)
            cr.set_line_width(1)
            cr.stroke()

        # Draw background.
        with cairo_state(cr):
            cr.rectangle(x + 1, y + 1, w - 2, h - 2)
            cr.clip()

            draw_vlinear(
                cr,
                x + 1,
                y + 1,
                w - 2,
                h - 2,
                ui_theme.get_shadow_color(
                    "progressbar_background").get_color_info(),
            )
            cache_pixbuf_object = CachePixbuf()
            if self.progress > 0 and self.progress < 100:
                cache_pixbuf_object.scale(
                    self.percentage_dpixbuf[int(self.progress /
                                                10)].get_pixbuf(), w, h)
            if self.progress == 100:
                cache_pixbuf_object.scale(
                    self.percentage_dpixbuf[9].get_pixbuf(), w, h)
            draw_pixbuf(cr, cache_pixbuf_object.get_cache(), x, y)

        # Draw light.
        with cairo_disable_antialias(cr):
            cr.set_source_rgba(1, 1, 1, 0.5)
            cr.rectangle(x + 1, y + 1, w - 2, 1)
            cr.fill()
Esempio n. 15
0
    def __render_name(self, cr, rect):
        font_color = ui_theme.get_color("menu_font").get_color()
        '''
        cr.set_source_rgb(1, 1, 1)
        cr.rectangle(rect.x, rect.y, rect.width, rect.height)
        cr.fill()
        '''
        if self.is_hover:
            # Draw background.
            draw_vlinear(cr, rect.x, rect.y, rect.width, rect.height,
                         ui_theme.get_shadow_color("menu_item_select").get_color_info())
            font_color = ui_theme.get_color("menu_select_font").get_color()

        draw_text(cr,
                  self.name,
                  rect.x + 10,
                  rect.y,
                  self.ITEM_WIDTH,
                  rect.height,
                  text_color=font_color)
Esempio n. 16
0
    def draw_mask_single_page(self, cr, x, y, w, h):
        '''
        Internal render function for DIALOG_MASK_SINGLE_PAGE type.

        @param cr: Cairo context.
        @param x: X coordinate of draw area.
        @param y: Y coordinate of draw area.
        @param w: Width of draw area.
        @param h: Height of draw area.
        '''
        top_height = 70

        draw_vlinear(
            cr, x, y, w, top_height,
            ui_theme.get_shadow_color("mask_single_page_top").get_color_info(),
            )

        draw_vlinear(
            cr, x, y + top_height, w, h - top_height,
            ui_theme.get_shadow_color("mask_single_page_bottom").get_color_info(),
            )
Esempio n. 17
0
    def __render_name(self, cr, rect):
        font_color = ui_theme.get_color("menu_font").get_color()
        '''
        cr.set_source_rgb(1, 1, 1)
        cr.rectangle(rect.x, rect.y, rect.width, rect.height)
        cr.fill()
        '''
        if self.is_hover:
            # Draw background.
            draw_vlinear(
                cr, rect.x, rect.y, rect.width, rect.height,
                ui_theme.get_shadow_color("menu_item_select").get_color_info())
            font_color = ui_theme.get_color("menu_select_font").get_color()

        draw_text(cr,
                  self.name,
                  rect.x + 10,
                  rect.y,
                  self.ITEM_WIDTH,
                  rect.height,
                  text_color=font_color)
Esempio n. 18
0
    def __listview_on_draw_sub_item(self, e):
        color = self.listview_color.get_color()
        if e.double_items == e.item:
            e.text_color = "#000000"
            text_size=9
            color_info = [(0, (color, 0.8)), (1, (color, 0.8))] 
            draw_vlinear(e.cr,
                         e.x, e.y, e.w, e.h,
                         color_info
                         )
        elif e.item in e.single_items:
            e.text_color = "#FFFFFF"
            text_size=9
            color_info = [(0, (color, 0.5)), (1, (color, 0.5))] 
            draw_vlinear(e.cr,
                         e.x, e.y, e.w, e.h,
                         color_info
                         )
        elif e.motion_items == e.item:
            e.text_color  = "#FFFFFF"
            text_size=9
            color_info = [(0, (color, 0.2)), (1, (color, 0.2))] 
            draw_vlinear(e.cr,
                         e.x, e.y, e.w, e.h,
                         color_info
                         )
        else:
            e.text_color = "#FFFFFF"
            text_size=9
        #
        text = e.text.decode("utf-8")
        one_width = self.list_view.columns[0].width
        two_width = self.list_view.columns[1].width
        #if e.w == one_width: # 显示播放名字的第一列.
        if e.column_index == 0:
            #
            t_width = 0
            t_index = 0
            add_point = False
            for t in text:
                t_width += get_text_size(t, text_size=text_size)[0]
                if t_width > one_width - 20:
                    add_point = True
                    break
                t_index += 1
            if add_point:
                text = text[:t_index] + "..."
            #
            alignment = Text.LEFT
            x = e.x + 15
        elif e.w == two_width:
            alignment = Text.RIGHT
            x = e.x - 15

        e.draw_text(e.cr, 
                str(text), 
                  x, e.y, e.w, e.h,
                  text_color=e.text_color, 
                  text_size=text_size,
                  alignment=alignment)
 def render(self, cr, rect):
     # Init.
     x, y, w, h = rect.x, rect.y, rect.width, rect.height
     
     # Draw background frame.
     with cairo_state(cr):
         cr.rectangle(x, y + 1, w, h - 2)
         cr.rectangle(x + 1, y, w - 2, h)
         cr.clip()
         
         cr.set_source_rgb(*color_hex_to_cairo(ui_theme.get_color("progressbar_background_frame").get_color()))
         cr.rectangle(x, y, w, h)
         cr.set_line_width(1)
         cr.stroke()
         
     # Draw background.
     with cairo_state(cr):
         cr.rectangle(x + 1, y + 1, w - 2, h - 2)
         cr.clip()
         
         draw_vlinear(cr, x + 1, y + 1, w - 2, h - 2,
                      ui_theme.get_shadow_color("progressbar_background").get_color_info(), 
                      )
         cache_pixbuf_object = CachePixbuf()
         if self.progress > 0 and self.progress < 100:
             cache_pixbuf_object.scale(self.percentage_dpixbuf[int(self.progress / 10)].get_pixbuf(), 
                                       w, 
                                       h)
         if self.progress == 100:
             cache_pixbuf_object.scale(self.percentage_dpixbuf[9].get_pixbuf(), 
                                       w, 
                                       h)
         draw_pixbuf(cr, cache_pixbuf_object.get_cache(), x, y)
     
     # Draw light.
     with cairo_disable_antialias(cr):
         cr.set_source_rgba(1, 1, 1, 0.5)
         cr.rectangle(x + 1, y + 1, w - 2, 1)
         cr.fill()
    def __listview_on_draw_sub_item(self, e):
        color = self.listview_color.get_color()
        if e.double_items == e.item:
            e.text_color = "#000000"
            text_size = 9
            color_info = [(0, (color, 0.8)), (1, (color, 0.8))]
            draw_vlinear(e.cr, e.x, e.y, e.w, e.h, color_info)
        elif e.item in e.single_items:
            e.text_color = "#FFFFFF"
            text_size = 9
            color_info = [(0, (color, 0.5)), (1, (color, 0.5))]
            draw_vlinear(e.cr, e.x, e.y, e.w, e.h, color_info)
        elif e.motion_items == e.item:
            e.text_color = "#FFFFFF"
            text_size = 9
            color_info = [(0, (color, 0.2)), (1, (color, 0.2))]
            draw_vlinear(e.cr, e.x, e.y, e.w, e.h, color_info)
        else:
            e.text_color = "#FFFFFF"
            text_size = 9
        #
        text = e.text.decode("utf-8")
        one_width = self.list_view.columns[0].width
        two_width = self.list_view.columns[1].width
        #if e.w == one_width: # 显示播放名字的第一列.
        if e.column_index == 0:
            #
            t_width = 0
            t_index = 0
            add_point = False
            for t in text:
                t_width += get_text_size(t, text_size=text_size)[0]
                if t_width > one_width - 20:
                    add_point = True
                    break
                t_index += 1
            if add_point:
                text = text[:t_index] + "..."
            #
            alignment = Text.LEFT
            x = e.x + 15
        elif e.w == two_width:
            alignment = Text.RIGHT
            x = e.x - 15

        e.draw_text(e.cr,
                    str(text),
                    x,
                    e.y,
                    e.w,
                    e.h,
                    text_color=e.text_color,
                    text_size=text_size,
                    alignment=alignment)
Esempio n. 21
0
 def draw_item_mask(self, cr, x, y, width, height):
     draw_vlinear(cr, x, y, width, height,
                  app_theme.get_shadow_color("editlistItemPress").get_color_info())
Esempio n. 22
0
 def draw_item_mask(self, cr, x, y, width, height):    
     draw_vlinear(cr, x, y, width, height,
                  app_theme.get_shadow_color("editlistItemPress").get_color_info())        
Esempio n. 23
0
 def draw_border_mask(self, widget, event):    
     cr = widget.window.cairo_create()
     rect = widget.allocation
     draw_vlinear(cr, rect.x + 8, rect.y + 6, rect.width - 16, rect.height - 16,
                  app_theme.get_shadow_color("linearBackground").get_color_info(),
                  4)
Esempio n. 24
0
 def render_background(self, item, cr, rect):
     draw_vlinear(cr, rect.x ,rect.y, rect.width, rect.height,
                  ui_theme.get_shadow_color("listview_select").get_color_info())
def render_background( cr, rect):
    background_color = [(0,["#ffffff", 1.0]),
                        (1,["#ffffff", 1.0])]
    draw_vlinear(cr, rect.x ,rect.y, rect.width, rect.height, background_color)
Esempio n. 26
0
 def render_background(self, item, cr, rect):
     draw_vlinear(
         cr, rect.x, rect.y, rect.width, rect.height,
         ui_theme.get_shadow_color("listview_select").get_color_info())
Esempio n. 27
0
 def draw_mask(self, cr, x, y, w, h):
     sidebar_color = ui_theme.get_color("menu_select_font").get_color()
     draw_vlinear(cr, x, y, w, h,
                  [(0, (sidebar_color, 0.9)),
                   (1, (sidebar_color, 0.9)),]
                  )