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)),] )
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)), ])
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 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))])
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
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 __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)
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(), )
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)
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)
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())
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)
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)
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 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)),] )