def __init__(self, callback=None): gtk.EventBox.__init__(self) self.set_visible_window(False) self.add_events(gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.ENTER_NOTIFY_MASK | gtk.gdk.LEAVE_NOTIFY_MASK ) self.connect("expose-event", self.on_expose_event) if LANGUAGE == "zh_CN": prefix = "cn" elif LANGUAGE in ["zh_HK", "zh_TW"]: prefix = "tw" else: prefix = "en" self.failed_dpixbuf = get_common_image_pixbuf("network/timeout_%s.png" % prefix) self.connect("motion-notify-event", self.on_motion_notify) self.connect("button-press-event", self.on_button_press) self.normal_text_dcolor = ui_theme.get_color("label_text") self.hover_text_dcolor = ui_theme.get_color("globalItemHighlight") self.prompt_text = _("Click here to refresh") self.text_padding_y = 5 self.text_padding_x = 5 self.text_rect = None self.is_hover = False self.press_callback = callback
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 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 text_view_changed(self, buf, button): '''text_view changed callback''' count = buf.get_char_count() if count <= self.MAX_CHAR: #self.input_tip_label.set_text(_("left")) self.input_num_label.set_text("%d" % (self.MAX_CHAR - count)) self.input_num_label.text_color = ui_theme.get_color("category_item") if not button.is_sensitive(): button.set_sensitive(True) else: #self.input_tip_label.set_text(_("exceeds")) self.input_num_label.set_text("-%d" % (count - self.MAX_CHAR)) self.input_num_label.text_color = ui_theme.get_color("category_item") if button.is_sensitive(): button.set_sensitive(False)
def __init__(self): self.tree_view_open = app_theme.get_pixbuf("treeview/open.png") self.tree_view_close = app_theme.get_pixbuf("treeview/close.png") self.tree_view_right = app_theme.get_pixbuf("treeview/right.png") self.tree_view_bottom = app_theme.get_pixbuf("treeview/bottom.png") # self.listview_color = ui_theme.get_color("scrolledbar") self.play_list_vbox = gtk.VBox() # self.list_scroll_win = ScrolledWindow(0, 0) self.list_scroll_win.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS) self.list_view = ListView() # self.tree_scroll_win = ScrolledWindow(0, 0) self.tree_scroll_win.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS) self.tree_view = TreeViewBase() self.note_book = NoteBook() # self.list_view.on_draw_sub_item = self.__listview_on_draw_sub_item self.list_view.columns.add_range(["filename", "time"]) self.list_view.columns[0].width = 120 self.list_view.columns[1].width = 95 # self.note_book.hide_title() self.tree_view.paint_nodes_event = self.__treeview_paint_nodes_event # self.list_scroll_win.add_with_viewport(self.list_view) self.tree_scroll_win.add_with_viewport(self.tree_view) self.note_book.add_layout1(self.list_scroll_win) self.note_book.add_layout2(self.tree_scroll_win) #self.play_list_vbox.pack_start(self.scroll_win, True, True) self.play_list_vbox.pack_start(self.note_book, True, True)
def on_expose_event(self, widget, event): ''' docs ''' cr = widget.window.cairo_create() rect = widget.allocation if widget.state == gtk.STATE_NORMAL: cr.set_source_rgba(0, 0, 0, 0) elif widget.state == gtk.STATE_PRELIGHT: cr.set_source_rgba(0.5, 0.5, 0.5, 0.5) elif widget.state == gtk.STATE_ACTIVE: cr.set_source_rgb(0.5, 0.5, 0.5) cr.rectangle(*rect) cr.fill() draw_pixbuf(cr, self.pixbuf, rect.x, rect.y + 5) draw_text(cr, self.content, rect.x + self.pixbuf_width + 2, rect.y + 8, rect.width - self.pixbuf_width, rect.height - self.pixbuf_height, text_color=ui_theme.get_color("title_text").get_color(), ) return True
def __init__( self, text, callback_action=None, enable_gaussian=False, text_color=ui_theme.get_color("link_text"), ): ''' Initialize LinkButton class. @param text: Link content. @param link: Link address. @param enable_gaussian: To enable gaussian effect on link, default is True. @param text_color: Link color, just use when option enable_gaussian is False. ''' Label.__init__(self, text, text_color, enable_gaussian=enable_gaussian, text_size=9, gaussian_radious=1, border_radious=0, underline=True) self.callback_action = callback_action set_clickable_cursor(self) self.connect('button-press-event', self.button_press_action)
def expose_event(self, widget, event): cr = widget.window.cairo_create() rect = widget.child.allocation width, height = get_content_size(self.label_name) cr.set_source_rgb( *color_hex_to_cairo(ui_theme.get_color("link_text").get_color())) draw_line(cr, rect.x, rect.y + rect.height, rect.x + width, rect.y + rect.height)
def __init__(self): self.one_close = app_theme.get_pixbuf("treeview/1-close.png") self.one_open = app_theme.get_pixbuf("treeview/1-open.png") self.two_close = app_theme.get_pixbuf("treeview/2-close.png") self.two_open = app_theme.get_pixbuf("treeview/2-open.png") self.three_close = app_theme.get_pixbuf("treeview/3-close.png") self.three_open = app_theme.get_pixbuf("treeview/3-open.png") # self.tree_view_open = app_theme.get_pixbuf("treeview/open.png") self.tree_view_close = app_theme.get_pixbuf("treeview/close.png") self.tree_view_right = app_theme.get_pixbuf("treeview/right.png") self.tree_view_bottom = app_theme.get_pixbuf("treeview/bottom.png") # self.listview_color = ui_theme.get_color("scrolledbar") self.play_list_vbox = gtk.VBox() # self.list_view_vbox = gtk.VBox() self.list_scroll_win = ScrolledWindow(0, 0) self.list_scroll_win.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS) self.list_view = ListView() # self.play_list_con = PlayListControl() # self.list_view_vbox.pack_start(self.list_scroll_win, True, True) self.list_view_vbox.pack_start(self.play_list_con, False, False) # 网络列表,搜索框. self.tree_scroll_win = ScrolledWindow(0, 0) self.tree_scroll_win.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS) self.tree_view_vbox = gtk.VBox() self.tree_view = TreeViewBase() self.search_ali = gtk.Alignment(0, 0, 1, 1) self.search = Search() self.search_ali.add(self.search) # self.search_ali.set_padding(7, 5, 12, 12) self.tree_view_vbox.pack_start(self.search_ali, False, False) self.tree_view_vbox.pack_start(self.tree_scroll_win, True, True) self.search_ali.connect("expose-event", self.search_ali_expose_event) # self.note_book = NoteBook() # self.list_view.on_draw_sub_item = self.__listview_on_draw_sub_item self.list_view.columns.add_range(["filename", "time"]) self.list_view.columns[0].width = 120 self.list_view.columns[1].width = 95 # self.note_book.hide_title() self.tree_view.paint_nodes_event = self.__treeview_paint_nodes_event # self.list_scroll_win.add_with_viewport(self.list_view) self.tree_scroll_win.add_with_viewport(self.tree_view) #self.note_book.add_layout1(self.list_scroll_win) self.note_book.add_layout1(self.list_view_vbox) self.note_book.add_layout2(self.tree_view_vbox) #self.play_list_vbox.pack_start(self.scroll_win, True, True) self.play_list_vbox.pack_start(self.note_book, True, True)
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()
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 __init__(self, text, callback_action=None, enable_gaussian=False, text_color=ui_theme.get_color("link_text"), ): Label.__init__(self, text, text_color, enable_gaussian=enable_gaussian, text_size=9, gaussian_radious=1, border_radious=0, underline=False) self.callback_action = callback_action set_clickable_cursor(self) self.connect('button-press-event', self.button_press_action)
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 __init_values(self): self.color = ui_theme.get_color("scrolledbar") self.fg_left_color = app_theme.get_color("progressBarLeft") self.fg_right_color = app_theme.get_color("progressBarRight") self.bg_pixbuf = app_theme.get_pixbuf("progressbar/bg.png").get_pixbuf() # self.drag_pixbuf = app_theme.get_pixbuf("progressbar/slide_block.png").get_pixbuf() self.drag_pixbuf_width = self.drag_pixbuf.get_width() self.drag_pixbuf_height = self.drag_pixbuf.get_height() # self.max_value = 100 self.min_value = 0 self.pos = 0 self.drag_show_check = False self.move_check = False
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
def __init__(self): super(GuideBox, self).__init__() self.scrolled_window = ScrolledWindow() self.backgroundbox = BackgroundBox() self.backgroundbox.draw_mask = self.draw_mask self.guide_pixbuf = utils.get_common_image_pixbuf('guide.png') self.top_title = gtk.HBox() self.top_left_icon = gtk.VBox() self.top_left_icon.set_size_request(self.guide_pixbuf.get_width(), self.guide_pixbuf.get_height()) self.top_left_icon.connect('expose-event', self.expose_top_left_icon) top_left_icon_align = gtk.Alignment(0.5, 0.5, 0, 0) top_left_icon_align.set_padding(15, 3, 13, 3) top_left_icon_align.add(self.top_left_icon) self.top_right_text = Label( _("Introduction"), ui_theme.get_color('label_select_background'), 14) top_right_text_align = gtk.Alignment(0.5, 0.5, 0, 0) top_right_text_align.set_padding(18, 3, 3, 3) top_right_text_align.add(self.top_right_text) self.top_title.pack_start(top_left_icon_align, False, False) self.top_title.pack_start(top_right_text_align, False, False) self.content_box = gtk.VBox() self.guide_label = Label('', enable_select=False, wrap_width=200, text_size=9, text_color=DynamicColor('#808080')) guide_label_align = gtk.Alignment(0.5, 0.5, 1, 1) guide_label_align.set_padding(5, 5, 10, 10) guide_label_align.add(self.guide_label) self.content_box.pack_start(guide_label_align, False, False) self.backgroundbox.pack_start(self.top_title, False, False) self.backgroundbox.pack_start(self.content_box) self.scrolled_window.add_child(self.backgroundbox) self.add(self.scrolled_window) global_event.register_event('download-app-info-finish', self.update_content)
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 __init__( self, text, callback_action=None, enable_gaussian=False, text_color=ui_theme.get_color("link_text"), ): Label.__init__(self, text, text_color, enable_gaussian=enable_gaussian, text_size=9, gaussian_radious=1, border_radious=0, underline=False) self.callback_action = callback_action set_clickable_cursor(self) self.connect('button-press-event', self.button_press_action)
def __init__(self, text, enable_gaussian=False, text_color=ui_theme.get_color("link_text"), ): ''' Initialize LinkButton class. @param text: Link content. @param link: Link address. @param enable_gaussian: To enable gaussian effect on link, default is True. @param text_color: Link color, just use when option enable_gaussian is False. ''' Label.__init__(self, text, text_color, enable_gaussian=enable_gaussian, text_size=9, gaussian_radious=1, border_radious=0, underline=True) self.callback_action = None set_clickable_cursor(self) self.connect('button-press-event', self.button_press_action)
def __init__(self): super(GuideBox, self).__init__() self.scrolled_window = ScrolledWindow() self.backgroundbox = BackgroundBox() self.backgroundbox.draw_mask = self.draw_mask self.guide_pixbuf = utils.get_common_image_pixbuf('guide.png') self.top_title = gtk.HBox() self.top_left_icon = gtk.VBox() self.top_left_icon.set_size_request(self.guide_pixbuf.get_width(), self.guide_pixbuf.get_height()) self.top_left_icon.connect('expose-event', self.expose_top_left_icon) top_left_icon_align = gtk.Alignment(0.5, 0.5, 0, 0) top_left_icon_align.set_padding(15, 3, 13, 3) top_left_icon_align.add(self.top_left_icon) self.top_right_text = Label(_("Introduction"), ui_theme.get_color('label_select_background'), 14) top_right_text_align = gtk.Alignment(0.5, 0.5, 0, 0) top_right_text_align.set_padding(18, 3, 3, 3) top_right_text_align.add(self.top_right_text) self.top_title.pack_start(top_left_icon_align, False, False) self.top_title.pack_start(top_right_text_align, False, False) self.content_box = gtk.VBox() self.guide_label = Label('', enable_select=False, wrap_width=200, text_size=9, text_color=DynamicColor('#808080')) guide_label_align = gtk.Alignment(0.5, 0.5, 1, 1) guide_label_align.set_padding(5, 5, 10, 10) guide_label_align.add(self.guide_label) self.content_box.pack_start(guide_label_align, False, False) self.backgroundbox.pack_start(self.top_title, False, False) self.backgroundbox.pack_start(self.content_box) self.scrolled_window.add_child(self.backgroundbox) self.add(self.scrolled_window) global_event.register_event('download-app-info-finish', self.update_content)
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 share_to_weibo_result(self): '''result of share to weibo''' font_color = ui_theme.get_color("category_item") res_hbox = gtk.HBox(False) res_hbox.set_size_request(-1, 240) res_left_box = DialogLeftButtonBox() res_right_box = DialogRightButtonBox() res_left_box.button_align.set(0.5, 0.0, 0, 1) res_right_box.button_align.set(0.5, 0.0, 0, 1) res_left_box.button_align.set_padding(5, 9, 19, 0) res_right_box.button_align.set_padding(30, 0, 0, 0) res_left_box.set_size_request(405, -1) res_right_box.set_size_request(195, -1) res_hbox.pack_start(res_left_box) res_hbox.pack_start( VSeparator(app_theme.get_shadow_color("VSeparator").get_color_info(), 0, 0)) res_hbox.pack_start(res_right_box) res_vbox = gtk.VBox(False) follow_vbox = gtk.VBox(False) tmp_img = gtk.Image() # only use as a placeholder tmp_img.set_size_request(-1, 50) res_vbox.pack_start(tmp_img, False, False) follow_tip_hbox = gtk.HBox(False) img = gtk.image_new_from_icon_name("deepin-logo", 16) if img.get_pixel_size() == -1: img = gtk.image_new_from_file(app_theme.get_theme_file_path("image/share/deepin_logo.png")) follow_tip_hbox.pack_start(img, False, False, 5) follow_tip_hbox.pack_start( Label("%s %s" % (_("Follow"), "Linux Deepin"), text_color=app_theme_get_dynamic_color("#5f5f5f"), text_size=12, enable_select=False), False, False) follow_vbox.pack_start(follow_tip_hbox, False, False, 13) for weibo in self.to_share_weibo_res: vbox = gtk.VBox(False, 1) tip_box = gtk.HBox() error_box = gtk.HBox() vbox.pack_start(tip_box, False, False) vbox.pack_start(error_box, False, False) if self.to_share_weibo_res[weibo][0]: # upload succeed img = gtk.image_new_from_file(app_theme.get_theme_file_path("image/share/share_succeed.png")) #link = LinkButton(_(weibo.t_type), text_size=13, self.to_share_weibo_res[weibo][1]) link = Label(self.weibo_name_l18n[weibo.t_type], text_size=12, text_color=ui_theme.get_color("link_text")) #, enable_gaussian=True, gaussian_radious=1, border_radious=0) link.add_events(gtk.gdk.BUTTON_PRESS_MASK) link.connect("enter-notify-event", lambda w, e: self.__draw_under_line(w)) link.connect("leave-notify-event", lambda w, e: w.queue_draw()) link.connect("button-press-event", self.goto_weibo_button_clicked, weibo) link_box = gtk.HBox(False) link_box.pack_start(link, False, False) utils.set_clickable_cursor(link) text = _("Share to") label = Label(text, text_size=12, text_color=font_color, enable_select=False) text = _("Successful") label1 = Label(text, text_size=12, text_color=font_color, enable_select=False) tip_box.pack_start(img, False, False, 15) tip_box.pack_start(label, False, False, 3) tip_box.pack_start(link_box, False, False, 3) tip_box.pack_start(label1, False, False) # only use as a placeholder img = gtk.Image() img.set_size_request(20, 1) error_box.pack_start(img, False, False, 16) tmp = Label(" ", text_size=9, label_width=200) tmp.set_size_request(200, 1) error_box.pack_start(tmp, False, False) #print text else: # upload failed img = gtk.image_new_from_file(app_theme.get_theme_file_path("image/share/share_failed.png")) #text = "% %s %s." % (_(weibo.t_type), _("upload failed")) text = _("Share to") label1 = Label(text, text_size=12, text_color=font_color, enable_select=False) label2 = Label(_(weibo.t_type), text_size=12, text_color=font_color, enable_select=False) text = _("Failed") label3 = Label(text, text_size=12, text_color=font_color, enable_select=False) if weibo.curl.error: error = "(%s)" % _(weibo.curl.error) elif weibo.get_error_msg(): error = "(%s)" % _(weibo.get_error_msg()) else: error = "(%s)" % _("Unknown reason") #print "%s: %s" % (weibo.t_type, error) #print "%s: %s" % (weibo.t_type, weibo.get_error_msg()) label = Label(text, text_size=12, text_color=font_color, enable_select=False) tip_box.pack_start(img, False, False, 15) tip_box.pack_start(label1, False, False, 3) tip_box.pack_start(label2, False, False, 3) tip_box.pack_start(label3, False, False) img = gtk.Image() # only use as a placeholder img.set_size_request(20, 20) error_box.pack_start(img, False, False, 16) error_box.pack_start(Label(error, text_size=9, label_width=200, text_color=font_color, enable_select=False), False, False) #print text res_vbox.pack_start(vbox, False, False, 10) for weibo in self.deepin_info: box = gtk.HBox(False, 15) # followed img = gtk.image_new_from_pixbuf(app_theme.get_pixbuf("share/"+weibo.t_type+".png").get_pixbuf()) box.pack_start(img, False, False) if self.deepin_info[weibo] is not None and self.deepin_info[weibo][3]: if not default_locale.startswith("zh_"): button = gtk.image_new_from_pixbuf( app_theme.get_pixbuf("share/followed_en.png").get_pixbuf()) else: button = gtk.image_new_from_pixbuf( app_theme.get_pixbuf("share/followed.png").get_pixbuf()) else: # to follow if not default_locale.startswith("zh_"): button = ImageButton( app_theme.get_pixbuf("share/follow_normal_en.png"), app_theme.get_pixbuf("share/follow_hover_en.png"), app_theme.get_pixbuf("share/follow_press_en.png")) else: button = ImageButton( app_theme.get_pixbuf("share/follow_normal.png"), app_theme.get_pixbuf("share/follow_hover.png"), app_theme.get_pixbuf("share/follow_press.png")) button.connect("clicked", self.friendships_add_button_clicked, weibo, box) box.pack_start(button, False, False) align = gtk.Alignment() align.set(0.0, 0.5, 0, 0) align.set_padding(0, 0, 30, 0) align.add(box) follow_vbox.pack_start(align, False, False, 8) res_left_box.set_buttons([res_vbox]) res_right_box.set_buttons([follow_vbox]) self.result_box.pack_start(res_hbox, False, False) self.result_box.show_all() self.set_slide_index(2)
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
def init_share_box(self): '''get weibo info, and create button''' self.to_share_weibo = {} self.to_share_weibo_res = {} self.deepin_info = {} self.is_get_user_info = {} self.__weibo_check_button_list = [] self.__weibo_image_button_list = [] # create Thumbnail if exists(self.upload_image): pixbuf = gtk.gdk.pixbuf_new_from_file(self.upload_image) pix_w = pixbuf.get_width() pix_h = pixbuf.get_height() if pix_w > pix_h: pix_s_w = self.thumb_width pix_s_h = int(pix_h / (float(pix_w) / self.thumb_width)) else: pix_s_h = self.thumb_height pix_s_w = int(pix_w / (float(pix_h) / self.thumb_height)) pixbuf = pixbuf.scale_simple(pix_s_w, pix_s_h, gtk.gdk.INTERP_TILES) thumb = gtk.image_new_from_pixbuf(pixbuf) else: thumb = gtk.Image() thumb.set_size_request(self.thumb_width, self.thumb_height) # weibo context input text_box = gtk.HBox(False, 2) text_vbox = gtk.VBox(False, 2) text_bg_vbox = gtk.VBox(False) text_bg_align = gtk.Alignment() text_bg_align.set(0.5, 0.5, 0, 0) text_bg_align.set_padding(5, 5, 16, 5) text_bg_align.connect("expose-event", self.text_view_bg_expose) text_scrolled_win = gtk.ScrolledWindow() text_scrolled_win.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER) text_scrolled_win.set_size_request(340, 157) text_view = gtk.TextView() text_view.set_left_margin(10) text_view.set_right_margin(10) text_view.set_pixels_above_lines(5) text_view.set_pixels_below_lines(5) text_view.set_wrap_mode(gtk.WRAP_WORD| gtk.WRAP_CHAR) text_view.connect("expose-event", self.text_view_expose) buf = text_view.get_buffer() text_scrolled_win.add(text_view) text_bg_vbox.pack_start(text_scrolled_win) text_bg_align.add(text_bg_vbox) text_align = gtk.Alignment() text_align.set(0.5, 0.5, 0, 0) text_align.set_padding(25, 30, 10, 10) text_box.pack_start(thumb, False, False, 10) text_box.pack_start(text_bg_align) text_vbox.pack_start(text_box, False, False, 10) text_align.add(text_vbox) #tmp_align = gtk.Alignment() #tmp_align.set(0.5, 0, 0, 1) #self.share_box.pack_start(tmp_align, False, False) self.share_box.pack_start(text_align, False, False) # dialog button box left_box = self.window.left_button_box right_box = self.window.right_button_box # input tip label self.input_num_label = Label("%d" % self.MAX_CHAR, text_size=16, text_x_align=pango.ALIGN_CENTER, label_width=50, enable_select=False) self.input_num_label.text_color = ui_theme.get_color("label_select_text") # login box #weibo_box = gtk.HBox(False, 1) #weibo_box.set_size_request(-1, 50) weibo_box_list = [] self.loading_label = Label("%s..." % _("Loading"), text_size=12, label_width=70, enable_select=False) weibo_box_list.append(self.loading_label) for weibo in self.__weibo_list: box = gtk.HBox(False, 2) weibo.set_box(box) weibo_box_list.append(box) left_box.set_buttons(weibo_box_list) # share button button = Button(_("Share")) #button.set_size_request(75, 25) button.connect("clicked", self.share_button_clicked, text_view) buf.connect("changed", self.text_view_changed, button) # check char num tmp_vbox = gtk.VBox(False) tmp_align = gtk.Alignment() tmp_align.set(0.5, 0.5, 0, 0) tmp_vbox.pack_start(button, False, False) #tmp_vbox.pack_start(tmp_align) tmp_align.add(tmp_vbox) right_box.set_buttons([self.input_num_label, tmp_align]) # at first, set widget insensitive button.set_sensitive(False) text_view.set_editable(False) t = threading.Thread(target=self.init_user_info_thread, args=(button, text_view)) t.setDaemon(True) t.start()
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)),] )
def add_toolbar(self): toolbar_btn_box = gtk.HBox() toolbar_btn_box_align = gtk.Alignment(0.5, 0.5, 0, 0) import_btn = ToolbarItem(self.import_btn_pixbuf, _("Import")) import_btn.connect("clicked", self.on_toolbar_import_clicked) export_btn = ToolbarItem(self.export_btn_pixbuf, _("Export")) export_btn.connect("clicked", self.on_toolbar_export_clicked) delete_btn = ToolbarItem(self.delete_btn_pixbuf, _("Delete")) delete_btn.connect("clicked", self.on_toolbar_delete_clicked) refresh_btn = ToolbarItem(self.refresh_btn_pixbuf, _("Refresh")) refresh_btn.connect("clicked", self.on_toolbar_refresh_clicked) toolbar_btn_box.pack_start(import_btn, False, False, 2) toolbar_btn_box.pack_start(export_btn, False, False, 2) toolbar_btn_box.pack_start(delete_btn, False, False, 2) toolbar_btn_box.pack_start(refresh_btn, False, False, 2) toolbar_btn_box_align.add(toolbar_btn_box) look_in_Label = Label( _("Look up in"), text_color=ui_theme.get_color("title_text"), ) self.category_comb = ComboBox([(_("All"), 0)]) self.category_comb.add_items([(item, index) for index, item in enumerate(self.classified_items)], clear_first=False) self.time_comb = ComboBox([(_("Today"), 0), (_("Last week"), 1), (_("Last month"), 2), (_("Last three months"), 3), (_("Last year"), 4), (_("All"), 5) ]) self.category_comb.set_size_request(-1, TOOLBAR_ENTRY_HEIGHT) self.category_comb.connect("item-selected", self.on_category_comb_item_selected) self.time_comb.set_size_request(-1, TOOLBAR_ENTRY_HEIGHT) self.time_comb.connect("item-selected", self.on_time_comb_item_selected) combos_box = gtk.HBox() combos_box.pack_start(self.category_comb, False, False, 5) combos_box.pack_start(self.time_comb, False, False) combos_box_align = gtk.Alignment(0.5, 0.5, 1, 1) padding_height = (TOOLBAR_HEIGHT - TOOLBAR_ENTRY_HEIGHT) / 2 combos_box_align.set_padding(padding_height, padding_height, 5, 5) combos_box_align.add(combos_box) find_content_Label = Label( _("Find in content"), text_color=ui_theme.get_color("title_text"), ) search_entry = SearchEntry() search_entry.connect("action-active", self.on_search_entry_action_active) search_entry_align = gtk.Alignment(0.5, 0.5, 1, 1) search_entry_align.set_padding(padding_height, padding_height, 5, 5) search_entry_align.add(search_entry) #Align left self.toolbar_box.pack_start(toolbar_btn_box_align, False, False, 5) #Align right self.toolbar_box.pack_end(search_entry_align, False, True, 5) self.toolbar_box.pack_end(find_content_Label, False, False, 5) self.toolbar_box.pack_end(combos_box_align, False, False, 0) self.toolbar_box.pack_end(look_in_Label, False, False, 5) self.toolbar_box.pack_end(ToolbarSep(), False, False, 5)
def get_user_info(self, weibo): '''get weibo user info''' info = weibo.get_user_name() gtk.gdk.threads_enter() #self.get_user_error_text = "" weibo_hbox = weibo.get_box() hbox = gtk.HBox(False) vbox = gtk.VBox(False) weibo_hbox.pack_start(vbox, False, False) vbox.pack_start(hbox) #print weibo.t_type, info if info: self.is_get_user_info[weibo] = 1 label = Label(text=info, label_width=70, enable_select=False) check = CheckButton() #check = gtk.CheckButton() check.connect("toggled", self.weibo_check_toggle, weibo) check.set_active(True) check_vbox = gtk.VBox(False) check_align = gtk.Alignment(0.5, 0.5, 0, 0) check_align.add(check_vbox) check_vbox.pack_start(check, False, False) button = ImageButton( app_theme.get_pixbuf("share/" + weibo.t_type + ".png"), app_theme.get_pixbuf("share/" + weibo.t_type + ".png"), app_theme.get_pixbuf("share/" + weibo.t_type + ".png")) utils.set_clickable_cursor(button) button.connect("enter-notify-event", self.show_tooltip, _("Click to switch user")) hbox.pack_start(check_align, False, False) hbox.pack_start(button, False, False, 5) hbox.pack_start(label, False, False) else: self.is_get_user_info[weibo] = 0 check = CheckButton() #check = gtk.CheckButton() check.set_sensitive(False) check_vbox = gtk.VBox(False) check_align = gtk.Alignment(0.5, 0.5, 0, 0) check_align.add(check_vbox) check_vbox.pack_start(check, False, False) button = ImageButton( app_theme.get_pixbuf("share/" + weibo.t_type + "_no.png"), app_theme.get_pixbuf("share/" + weibo.t_type + "_no.png"), app_theme.get_pixbuf("share/" + weibo.t_type + "_no.png")) utils.set_clickable_cursor(button) button.connect("enter-notify-event", self.show_tooltip, _("Click to login")) hbox.pack_start(check_align, False, False) hbox.pack_start(button, False, False, 5) # curl time out info_error = weibo.get_curl_error() if info_error: #self.get_user_error_text += "%s:%s." % (weibo.t_type, _(info_error)) hbox.pack_start( Label(text="(%s)" % _(info_error), label_width=70,enable_select=False, text_color = ui_theme.get_color("category_item")), False, False) button.connect("clicked", self.weibo_login, weibo) self.__weibo_check_button_list.append(check) self.__weibo_image_button_list.append(button) gtk.gdk.threads_leave() return weibo_hbox
def expose_event(self, widget, event): cr = widget.window.cairo_create() rect = widget.child.allocation width, height = get_content_size(self.label_name) cr.set_source_rgb(*color_hex_to_cairo(ui_theme.get_color("link_text").get_color())) draw_line(cr, rect.x, rect.y + rect.height, rect.x + width, rect.y + rect.height)