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) self.failed_dpixbuf = get_common_locale_image_pixbuf("network", "timeout.png") self.connect("motion-notify-event", self.on_motion_notify) self.connect("button-press-event", self.on_button_press) self.normal_text_dcolor = app_theme.get_color("labelText") self.hover_text_dcolor = app_theme.get_color("globalItemHighlight") self.prompt_text = _("Click 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_name(self, cr, rect): text_color = "#333333" if self.is_select: cr.set_source_rgba(*color_hex_to_cairo( app_theme.get_color("sidebar_select").get_color())) cr.rectangle(rect.x, rect.y, rect.width, rect.height) cr.fill() text_color = "#FFFFFF" elif self.is_hover: cr.set_source_rgba(*color_hex_to_cairo( app_theme.get_color("sidebar_hover").get_color())) cr.rectangle(rect.x, rect.y, rect.width, rect.height) cr.fill() draw_text( cr, get_category_name(self.second_category_name), rect.x + SECOND_CATEGORY_PADDING_X, rect.y, rect.width, rect.height, text_size=SECOND_CATEGORY_ITEM_NAME_SIZE, text_color=text_color, )
def render_item_text(cr, content, rect, in_select, in_highlight, align=pango.ALIGN_LEFT, font_size=8, error=False): if in_select or in_highlight: color = app_theme.get_color("simpleSelectItem").get_color() else: color = app_theme.get_color("labelText").get_color() if error: color = "#ff0000" draw_text(cr, content, rect.x, rect.y, rect.width, rect.height, font_size, color, alignment=align)
def __init_values(self): self.clear_check = False self.search_none_color = app_theme.get_color("searchNone").get_color() self.search_input_color = app_theme.get_color("searchInput").get_color() # self.search_bg_pixbuf = app_theme.get_pixbuf("net_search/search_bg.png").get_pixbuf() self.clear_normal_pixbuf = app_theme.get_pixbuf("net_search/clean_normal.png").get_pixbuf() self.clear_hover_pixbuf = app_theme.get_pixbuf("net_search/clean_hover.png").get_pixbuf() self.search_hover_pixbuf = app_theme.get_pixbuf("net_search/search_hover.png").get_pixbuf() self.search_normal_pixbuf = app_theme.get_pixbuf("net_search/search_normal.png").get_pixbuf()
def show_screenshot(self): container_remove_all(self.right_slide_box) screenshot_dir = os.path.join(SCREENSHOT_DOWNLOAD_DIR, self.pkg_name) if os.path.exists(screenshot_dir): screenshot_files = map( lambda filename: os.path.join(screenshot_dir, filename), filter(lambda file_name: file_name.endswith(".png"), os.listdir(screenshot_dir))) if len(screenshot_files) > 0: slide_switcher = SlideSwitcher( map( lambda screenshot_file: get_resize_pixbuf_with_height( screenshot_file, 290), screenshot_files), pointer_offset_x=-370, pointer_offset_y=-15, horizontal_align=ALIGN_MIDDLE, vertical_align=ALIGN_MIDDLE, height_offset=60, hover_switch=False, auto_switch=False, navigate_switch=True, ) slide_align = gtk.Alignment() slide_align.set(0.5, 0.5, 1, 1) slide_align.add(slide_switcher) slide_align.connect("expose-event", self.expose_resizable_label_background) self.right_slide_box.pack_start(slide_align, True, True) powered_link = Label( _("Powered by UpYun.com"), text_color=app_theme.get_color("homepage"), hover_color=app_theme.get_color("homepage_hover"), ) powered_link.set_clickable() powered_link.connect( "button-press-event", lambda w, e: run_command( "xdg-open https://www.upyun.com/")) powered_link_align = gtk.Alignment() powered_link_align.set(1.0, 0.5, 0, 0) powered_link_align.set_padding(0, 0, 0, 100) powered_link_align.add(powered_link) self.right_slide_box.pack_start(powered_link_align, False, False) self.show_all() else: global_logger.error("%s haven't any screenshot from zip file" % self.pkg_name)
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 __init__(self, detail_page, pkg_name, alias_name, star): ''' init docs ''' gtk.HBox.__init__(self) self.star = star self.pkg_name = pkg_name v_box = gtk.VBox() pkg_icon_image = gtk.image_new_from_pixbuf( gtk.gdk.pixbuf_new_from_file_at_size(get_icon_pixbuf_path(pkg_name), 32, 32)) pkg_alias_label = Label(alias_name, hover_color=app_theme.get_color("homepage_hover")) pkg_alias_label.set_clickable() pkg_alias_label.connect("button-press-event", lambda w, e: detail_page.update_pkg_info(pkg_name)) self.pkg_star_box = gtk.HBox() self.pkg_star_view = StarView() self.pkg_star_view.star_buffer.star_level = int(star) self.pkg_star_view.connect("clicked", lambda w: self.grade_pkg()) self.pkg_star_mark = StarMark(self.star, self.MARK_SIZE, self.MARK_PADDING_X, self.MARK_PADDING_Y) self.pack_start(pkg_icon_image, False, False) self.pack_start(v_box, True, True, 8) v_box.pack_start(pkg_alias_label, False, False, 2) v_box.pack_start(self.pkg_star_box, False, False, 2) self.pkg_star_box.pack_start(self.pkg_star_view, False, False) self.pkg_star_box.pack_start(self.pkg_star_mark, False, False)
def render_item_text(cr, content, rect, in_select, in_highlight, align=pango.ALIGN_LEFT, font_size=9, error=False): if in_highlight: color = app_theme.get_color("simpleSelectItem").get_color() else: # color = app_theme.get_color("labelText").get_color() color = "#707070" if error: color = "#ff0000" content = utils.xmlescape(content) draw_text(cr, content, rect.x, rect.y, rect.width, rect.height, font_size, color, alignment=align)
def __init__(self, detail_page, pkg_name, alias_name, star): ''' init docs ''' gtk.HBox.__init__(self) self.star = star self.pkg_name = pkg_name v_box = gtk.VBox() pkg_icon_image = gtk.image_new_from_pixbuf( gtk.gdk.pixbuf_new_from_file_at_size( get_icon_pixbuf_path(pkg_name), 32, 32)) pkg_alias_label = Label( alias_name, hover_color=app_theme.get_color("homepage_hover")) pkg_alias_label.set_clickable() pkg_alias_label.connect( "button-press-event", lambda w, e: detail_page.update_pkg_info(pkg_name)) self.pkg_star_box = gtk.HBox() self.pkg_star_view = StarView() self.pkg_star_view.star_buffer.star_level = int(star) self.pkg_star_view.connect("clicked", lambda w: self.grade_pkg()) self.pkg_star_mark = StarMark(self.star, self.MARK_SIZE, self.MARK_PADDING_X, self.MARK_PADDING_Y) self.pack_start(pkg_icon_image, False, False) self.pack_start(v_box, True, True, 8) v_box.pack_start(pkg_alias_label, False, False, 2) v_box.pack_start(self.pkg_star_box, False, False, 2) self.pkg_star_box.pack_start(self.pkg_star_view, False, False) self.pkg_star_box.pack_start(self.pkg_star_mark, False, False)
def render_name(self, cr, rect): text_color = "#333333" font_image_color = app_theme.get_color("sidebar_select").get_color() if self.is_select: cr.set_source_rgba(*color_hex_to_cairo( app_theme.get_color("sidebar_select").get_color())) cr.rectangle(rect.x, rect.y, rect.width, rect.height) cr.fill() text_color = "#FFFFFF" font_image_color = "#FFFFFF" elif self.is_hover: cr.set_source_rgba(*color_hex_to_cairo( app_theme.get_color("sidebar_hover").get_color())) cr.rectangle(rect.x, rect.y, rect.width, rect.height) cr.fill() pixbuf = app_theme.get_pixbuf("category/%s.png" % (self.index)).get_pixbuf() category_img_path = os.path.join(get_parent_dir(__file__, 2), "image", "category", "%s.png" % (self.index + 1, )) surface = cairo.ImageSurface.create_from_png(category_img_path) cr.set_source_rgb(*color_hex_to_cairo(font_image_color)) cr.mask_surface(surface, rect.x + 14, rect.y + (rect.height - 24) / 2) draw_text( cr, get_category_name(self.first_category_name), rect.x + pixbuf.get_width() + 22, rect.y, rect.width, rect.height, text_size=CATEGORY_ITEM_NAME_SIZE, text_color=text_color, ) if self.is_hover: if self.is_expand: pixbuf = app_theme.get_pixbuf("sidebar/close.png").get_pixbuf() else: pixbuf = app_theme.get_pixbuf("sidebar/open.png").get_pixbuf() draw_pixbuf(cr, pixbuf, rect.x + rect.width - CATEGORY_ITEM_EXPAND_PADDING_X, rect.y + (rect.height - pixbuf.get_height()) / 2)
def draw_single_mask(cr, x, y, width, height, color_name): if color_name.startswith("#"): color = color_name else: color = app_theme.get_color(color_name).get_color() cairo_color = color_hex_to_cairo(color) cr.set_source_rgb(*cairo_color) cr.rectangle(x, y, width, height) cr.fill()
def render_name(self, cr, rect): text_color = "#333333" font_image_color = app_theme.get_color("sidebar_select").get_color() if self.is_select: cr.set_source_rgba(*color_hex_to_cairo(app_theme.get_color("sidebar_select").get_color())) cr.rectangle(rect.x, rect.y, rect.width, rect.height) cr.fill() text_color = "#FFFFFF" font_image_color = "#FFFFFF" elif self.is_hover: cr.set_source_rgba(*color_hex_to_cairo(app_theme.get_color("sidebar_hover").get_color())) cr.rectangle(rect.x, rect.y, rect.width, rect.height) cr.fill() pixbuf = app_theme.get_pixbuf("category/%s.png" % (self.index)).get_pixbuf() category_img_path = os.path.join(get_parent_dir(__file__, 2), "image", "category", "%s.png" % (self.index+1, )) surface = cairo.ImageSurface.create_from_png(category_img_path) cr.set_source_rgb(*color_hex_to_cairo(font_image_color)) cr.mask_surface(surface, rect.x+14, rect.y+(rect.height-24)/2) draw_text(cr, get_category_name(self.first_category_name), rect.x + pixbuf.get_width() + 22, rect.y, rect.width, rect.height, text_size=CATEGORY_ITEM_NAME_SIZE, text_color=text_color, ) if self.is_hover: if self.is_expand: pixbuf = app_theme.get_pixbuf("sidebar/close.png").get_pixbuf() else: pixbuf = app_theme.get_pixbuf("sidebar/open.png").get_pixbuf() draw_pixbuf( cr, pixbuf, rect.x + rect.width - CATEGORY_ITEM_EXPAND_PADDING_X, rect.y + (rect.height - pixbuf.get_height()) / 2)
def show_screenshot(self): container_remove_all(self.right_slide_box) screenshot_dir = os.path.join(SCREENSHOT_DOWNLOAD_DIR, self.pkg_name) if os.path.exists(screenshot_dir): screenshot_files = map(lambda filename: os.path.join(screenshot_dir, filename), filter(lambda file_name: file_name.endswith(".png"), os.listdir(screenshot_dir))) if len(screenshot_files) > 0: slide_switcher = SlideSwitcher( map(lambda screenshot_file: get_resize_pixbuf_with_height(screenshot_file, 290), screenshot_files), pointer_offset_x=-370, pointer_offset_y=-15, horizontal_align=ALIGN_MIDDLE, vertical_align=ALIGN_MIDDLE, height_offset=60, hover_switch=False, auto_switch=False, navigate_switch=True, ) slide_align = gtk.Alignment() slide_align.set(0.5, 0.5, 1, 1) slide_align.add(slide_switcher) slide_align.connect("expose-event", self.expose_resizable_label_background) self.right_slide_box.pack_start(slide_align, True, True) powered_link = Label( _("Powered by UpYun.com"), text_color=app_theme.get_color("homepage"), hover_color=app_theme.get_color("homepage_hover"), ) powered_link.set_clickable() powered_link.connect("button-press-event", lambda w, e: run_command("xdg-open https://www.upyun.com/")) powered_link_align = gtk.Alignment() powered_link_align.set(1.0, 0.5, 0, 0) powered_link_align.set_padding(0, 0, 0, 100) powered_link_align.add(powered_link) self.right_slide_box.pack_start(powered_link_align, False, False) self.show_all() else: global_logger.logerror("%s haven't any screenshot from zip file" % self.pkg_name)
def draw_range(cr, x, y, width, height, color_name): if color_name.startswith("#"): color = color_name else: color = app_theme.get_color(color_name).get_color() cairo_color = color_hex_to_cairo(color) with cairo_disable_antialias(cr): cr.set_line_width(1) cr.set_source_rgb(*cairo_color) cr.rectangle(x, y, width, height) cr.stroke()
def draw_line(cr, start, end, color_name): if color_name.startswith("#"): color = color_name else: color = app_theme.get_color(color_name).get_color() cairo_color = color_hex_to_cairo(color) with cairo_disable_antialias(cr): cr.set_line_width(1) cr.set_source_rgb(*cairo_color) cr.move_to(*start) cr.line_to(*end) cr.stroke()
def render_name(self, cr, rect): text_color = "#333333" font_image_color = app_theme.get_color("sidebar_select").get_color() if self.is_select: cr.set_source_rgba(*color_hex_to_cairo( app_theme.get_color("sidebar_select").get_color())) cr.rectangle(rect.x, rect.y, rect.width, rect.height) cr.fill() text_color = "#FFFFFF" font_image_color = "#FFFFFF" elif self.is_hover: cr.set_source_rgba(*color_hex_to_cairo( app_theme.get_color("sidebar_hover").get_color())) cr.rectangle(rect.x, rect.y, rect.width, rect.height) cr.fill() pixbuf = app_theme.get_pixbuf("category/12.png").get_pixbuf() #draw_pixbuf( #cr, #pixbuf, #rect.x + 12, #rect.y + (rect.height - pixbuf.get_height()) / 2) category_img_path = os.path.join(get_parent_dir(__file__, 2), "image", "category", "1.png") surface = cairo.ImageSurface.create_from_png(category_img_path) cr.set_source_rgb(*color_hex_to_cairo(font_image_color)) cr.mask_surface(surface, rect.x + 14, rect.y + (rect.height - 24) / 2) draw_text( cr, self.name, rect.x + pixbuf.get_width() + 22, rect.y, rect.width, rect.height, text_size=CATEGORY_ITEM_NAME_SIZE, text_color=text_color, )
def render_name(self, cr, rect): text_color = "#333333" if self.is_select: cr.set_source_rgba(*color_hex_to_cairo(app_theme.get_color("sidebar_select").get_color())) cr.rectangle(rect.x, rect.y, rect.width, rect.height) cr.fill() text_color = "#FFFFFF" elif self.is_hover: cr.set_source_rgba(*color_hex_to_cairo(app_theme.get_color("sidebar_hover").get_color())) cr.rectangle(rect.x, rect.y, rect.width, rect.height) cr.fill() draw_text(cr, get_category_name(self.second_category_name), rect.x + SECOND_CATEGORY_PADDING_X, rect.y, rect.width, rect.height, text_size=SECOND_CATEGORY_ITEM_NAME_SIZE, text_color=text_color, )
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) self.failed_dpixbuf = get_common_locale_image_pixbuf( "network", "timeout.png") self.connect("motion-notify-event", self.on_motion_notify) self.connect("button-press-event", self.on_button_press) self.normal_text_dcolor = app_theme.get_color("labelText") self.hover_text_dcolor = app_theme.get_color("globalItemHighlight") self.prompt_text = _("Click 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 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 render_name(self, cr, rect): text_color = "#333333" font_image_color = app_theme.get_color("sidebar_select").get_color() if self.is_select: cr.set_source_rgba(*color_hex_to_cairo(app_theme.get_color("sidebar_select").get_color())) cr.rectangle(rect.x, rect.y, rect.width, rect.height) cr.fill() text_color = "#FFFFFF" font_image_color = "#FFFFFF" elif self.is_hover: cr.set_source_rgba(*color_hex_to_cairo(app_theme.get_color("sidebar_hover").get_color())) cr.rectangle(rect.x, rect.y, rect.width, rect.height) cr.fill() pixbuf = app_theme.get_pixbuf("category/12.png").get_pixbuf() #draw_pixbuf( #cr, #pixbuf, #rect.x + 12, #rect.y + (rect.height - pixbuf.get_height()) / 2) category_img_path = os.path.join(get_parent_dir(__file__, 2), "image", "category", "1.png") surface = cairo.ImageSurface.create_from_png(category_img_path) cr.set_source_rgb(*color_hex_to_cairo(font_image_color)) cr.mask_surface(surface, rect.x+14, rect.y+(rect.height-24)/2) draw_text(cr, self.name, rect.x + pixbuf.get_width() + 22, rect.y, rect.width, rect.height, text_size=CATEGORY_ITEM_NAME_SIZE, text_color=text_color, )
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_canopy(self, widget, event): # Init. cr = widget.window.cairo_create() rect = widget.allocation canopy_color = app_theme.get_color("sidebar_select").get_color() canopy_img_blue_path = os.path.join(get_parent_dir(__file__, 2), "image", "canopy", "canopy-blue.png") canopy_img_yellow_path = os.path.join(get_parent_dir(__file__, 2), "image", "canopy", "canopy-yellow.png") draw_pixbuf( cr, gtk.gdk.pixbuf_new_from_file(canopy_img_yellow_path), rect.x, rect.y) surface = cairo.ImageSurface.create_from_png(canopy_img_blue_path) cr.set_source_rgb(*color_hex_to_cairo(canopy_color)) cr.mask_surface(surface, rect.x, rect.y)
def expose_canopy(self, widget, event): # Init. cr = widget.window.cairo_create() rect = widget.allocation canopy_color = app_theme.get_color("sidebar_select").get_color() canopy_img_blue_path = os.path.join(get_parent_dir(__file__, 2), "image", "canopy", "canopy-blue.png") canopy_img_yellow_path = os.path.join(get_parent_dir(__file__, 2), "image", "canopy", "canopy-yellow.png") draw_pixbuf(cr, gtk.gdk.pixbuf_new_from_file(canopy_img_yellow_path), rect.x, rect.y) surface = cairo.ImageSurface.create_from_png(canopy_img_blue_path) cr.set_source_rgb(*color_hex_to_cairo(canopy_color)) cr.mask_surface(surface, rect.x, rect.y)
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
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
def __init__(self, data_manager): ''' init docs ''' gtk.HBox.__init__(self) self.data_manager = data_manager self.pkg_name = None self.alias_name = "" self.pkg_pixbuf = None self.pkg_star_view = None self.left_view_box = gtk.VBox() self.left_view_box.set_size_request(self.LEFT_INFO_WIDTH, -1) self.left_logo_box = gtk.VBox() self.left_logo_box.set_size_request(-1, 90) self.star_box = gtk.HBox() self.star_align = gtk.Alignment(0.4, 0.5, 0, 0) self.star_align.set_padding(0, 5, 0, 0) self.star_align.add(self.star_box) self.left_action_box = gtk.HBox() self.left_action_align = gtk.Alignment() self.left_action_align.set(0.5, 0.5, 0, 0) self.left_action_align.set_padding(0, 30, 0, 0) self.left_action_align.add(self.left_action_box) self.left_label_table = gtk.Table(4, 1) self.left_label_table.set_row_spacings(4) self.left_label_align = gtk.Alignment() self.left_label_align.set(0.0, 0.5, 0, 0) self.left_label_align.set_padding(0, 0, 14, 0) self.left_category_name_label = Label() self.left_category_label = Label( hover_color=app_theme.get_color("homepage_hover")) self.left_category_label.set_clickable() self.left_category_label_align = gtk.Alignment() self.left_category_label_align.set(0.0, 0.5, 0, 0) self.left_category_label_align.add(self.left_category_label) self.left_category_label_box = gtk.HBox() self.left_category_label_box.pack_start(self.left_category_name_label, False, False) self.left_category_label_box.pack_start(self.left_category_label_align, True, True) self.left_category_box = gtk.VBox() self.left_version_label = Label(label_width=136) show_label_tooltip(self.left_version_label) self.left_version_label.set_ellipsize(pango.ELLIPSIZE_END) self.left_download_label = Label() self.left_size_label = Label() self.left_homepage_box = gtk.HBox() self.left_homepage_box_align = gtk.Alignment() self.left_homepage_box_align.set(0.0, 0.5, 0, 0) self.left_homepage_box_align.add(self.left_homepage_box) self.left_recommend_box = gtk.VBox() self.left_recommend_box_align = gtk.Alignment() self.left_recommend_box_align.set(0.0, 0.0, 0, 0) self.left_recommend_box_align.set_padding(30, 0, 14, 0) self.left_recommend_box_align.add(self.left_recommend_box) self.left_recommend_label = Label(_("Popular recommendations")) self.right_info_box = gtk.VBox() self.scrolled_window = ScrolledWindow(0, 0) self.right_view_box = gtk.VBox() self.right_top_box = gtk.HBox() self.right_top_box.set_size_request(-1, self.RIGHT_TITLE_BOX_HEIGHT) self.right_desc_box = gtk.VBox() self.right_slide_box = gtk.VBox() self.right_comment_box = gtk.VBox() self.right_title_box = gtk.VBox() self.return_button = ImageButton( app_theme.get_pixbuf("detail/normal.png"), app_theme.get_pixbuf("detail/hover.png"), app_theme.get_pixbuf("detail/press.png"), ) self.return_align = gtk.Alignment() self.return_align.set(0.5, 0.5, 1, 1) self.return_align.set_padding(self.ALIAS_NAME_PADDING_Y, 0, 0, self.RIGHT_INFO_PADDING_X) self.return_align.add(self.return_button) self.return_button.connect( "clicked", lambda w: global_event.emit("switch-from-detail-page")) self.right_top_box.pack_start(self.right_title_box, True, True) self.right_top_box.pack_start(self.return_align, False, False) self.right_view_box.pack_start(self.right_top_box, False, False) self.right_view_box.pack_start(self.right_desc_box, False, False) self.right_view_box.pack_start(self.right_slide_box, False, False) self.right_view_box.pack_start(self.right_comment_box, False, False) self.scrolled_window.add_child(self.right_view_box) self.left_view_box.pack_start(self.left_logo_box, False, False) self.left_view_box.pack_start(self.star_align, False, False) self.left_view_box.pack_start(self.left_action_align, False, False) self.left_label_table.attach(self.left_category_box, 0, 1, 0, 1) self.left_label_table.attach(self.left_version_label, 0, 1, 1, 2) self.left_label_table.attach(self.left_size_label, 0, 1, 2, 3) self.left_label_table.attach(self.left_download_label, 0, 1, 3, 4) self.left_label_table.attach(self.left_homepage_box_align, 0, 1, 4, 5) self.left_label_align.add(self.left_label_table) self.left_view_box.pack_start(self.left_label_align, False, False) self.left_view_box.pack_start(self.left_recommend_box_align, False, False) self.right_info_box.pack_start(self.scrolled_window, True, True) self.pack_start(self.left_view_box, False, False) self.pack_start(self.right_info_box, True, True) self.left_view_box.connect("expose-event", self.expose_left_view) self.right_view_box.connect("expose-event", self.expose_right_view) self.left_logo_box.connect("expose-event", self.expose_left_logo_box) self.right_top_box.connect("expose-event", self.expose_right_top_box) self.right_title_box.connect("expose-event", self.expose_right_title_box) self.connect("hierarchy-changed", self.hierarchy_change) self.left_category_label.connect("button-press-event", lambda w, e: self.jump_to_category()) global_event.register_event("download-screenshot-finish", self.download_screenshot_finish) self.loading_label = Label(_("Loading comments...")) self.loading_label_align = gtk.Alignment(0.5, 0, 0, 0) self.loading_label_align.add(self.loading_label) self.loading_label_align.set_padding(10, 0, 0, 0) self.update_pkg_time = 0 self.update_pkg_interval = 0.2 # in seconds
def update_pkg_info(self, pkg_name): current_time = time.time() if current_time - self.update_pkg_time < self.update_pkg_interval: return False else: self.update_pkg_time = current_time FetchPackageInfo(pkg_name, self.update_some_info).start() self.pkg_name = pkg_name detail_info = self.data_manager.get_pkg_detail_info(self.pkg_name) self.category = detail_info['category'] self.long_desc = detail_info['long_desc'] self.version = detail_info['version'] self.homepage = detail_info['homepage'] self.alias_name = detail_info['alias_name'] self.recommend_pkgs = detail_info['recommend_pkgs'] self.pkg_star_view = StarView() self.pkg_star_view.connect("clicked", lambda w: self.grade_pkg()) self.pkg_star_mark = StarMark(5.0, self.MARK_SIZE, self.MARK_PADDING_X, self.MARK_PADDING_Y) container_remove_all(self.star_box) self.star_box.pack_start(self.pkg_star_view, False, False) self.star_box.pack_start(self.pkg_star_mark, False, False) self.fetch_pkg_status() container_remove_all(self.left_category_box) if self.category != None: self.left_category_name_label.set_text(_("Category: ")) self.left_category_label.set_text(get_category_name(self.category[1])) self.left_category_box.add(self.left_category_label_box) self.left_version_label.set_text(_("Version: %s") % self.version) self.left_download_label.set_text(_("Download: 0")) self.left_size_label.set_text(_("Size: calculating...")) container_remove_all(self.left_homepage_box) if self.homepage != "": homepage_label = Label(_("Visit Homepage"), text_color=app_theme.get_color("homepage"), hover_color=app_theme.get_color("homepage_hover")) homepage_label.set_clickable() homepage_label.connect("button-press-event", lambda w, e: run_command("xdg-open %s" % self.homepage)) self.left_homepage_box.pack_start(homepage_label) container_remove_all(self.left_recommend_box) if len(self.recommend_pkgs) > 0: self.left_recommend_box.pack_start(self.left_recommend_label, False, False, 8) for (recommend_pkg_name, alias_name, star) in self.recommend_pkgs: self.left_recommend_box.pack_start(RecommendPkgItem(self, recommend_pkg_name, alias_name, star), False, False, 4) container_remove_all(self.right_desc_box) resizable_label = ResizableLabel(self.long_desc.replace("&", "&").replace("<", "<").replace(">", ">"), self.LONG_DESC_WRAP_WIDTH, self.LONG_DESC_INIT_HEIGHT, 3) resizable_align = gtk.Alignment() resizable_align.set(0.5, 0.5, 1, 1) resizable_align.set_padding(0, 0, self.RIGHT_INFO_PADDING_X, self.RIGHT_INFO_PADDING_X) resizable_align.add(resizable_label) resizable_align.connect("expose-event", self.expose_resizable_label_background) self.right_desc_box.pack_start(resizable_align, False, False) self.show_screenshot() self.fetch_comment() self.show_all()
def __init__(self, data_manager): ''' init docs ''' gtk.HBox.__init__(self) self.data_manager = data_manager self.pkg_name = None self.alias_name = "" self.pkg_pixbuf = None self.pkg_star_view = None self.left_view_box = gtk.VBox() self.left_view_box.set_size_request(self.LEFT_INFO_WIDTH, - 1) self.left_logo_box = gtk.VBox() self.left_logo_box.set_size_request(-1, 90) self.star_box = gtk.HBox() self.star_align = gtk.Alignment(0.4, 0.5, 0, 0) self.star_align.set_padding(0, 5, 0, 0) self.star_align.add(self.star_box) self.left_action_box = gtk.HBox() self.left_action_align = gtk.Alignment() self.left_action_align.set(0.5, 0.5, 0, 0) self.left_action_align.set_padding(0, 30, 0, 0) self.left_action_align.add(self.left_action_box) self.left_label_table = gtk.Table(4, 1) self.left_label_table.set_row_spacings(4) self.left_label_align = gtk.Alignment() self.left_label_align.set(0.0, 0.5, 0, 0) self.left_label_align.set_padding(0, 0, 14, 0) self.left_category_name_label = Label() self.left_category_label = Label(hover_color=app_theme.get_color("homepage_hover")) self.left_category_label.set_clickable() self.left_category_label_align = gtk.Alignment() self.left_category_label_align.set(0.0, 0.5, 0, 0) self.left_category_label_align.add(self.left_category_label) self.left_category_label_box = gtk.HBox() self.left_category_label_box.pack_start(self.left_category_name_label, False, False) self.left_category_label_box.pack_start(self.left_category_label_align, True, True) self.left_category_box = gtk.VBox() self.left_version_label = Label(label_width=136) show_label_tooltip(self.left_version_label) self.left_version_label.set_ellipsize(pango.ELLIPSIZE_END) self.left_download_label = Label() self.left_size_label = Label() self.left_homepage_box = gtk.HBox() self.left_homepage_box_align = gtk.Alignment() self.left_homepage_box_align.set(0.0, 0.5, 0, 0) self.left_homepage_box_align.add(self.left_homepage_box) self.left_recommend_box = gtk.VBox() self.left_recommend_box_align = gtk.Alignment() self.left_recommend_box_align.set(0.0, 0.0, 0, 0) self.left_recommend_box_align.set_padding(30, 0, 14, 0) self.left_recommend_box_align.add(self.left_recommend_box) self.left_recommend_label = Label(_("Popular recommendations")) self.right_info_box = gtk.VBox() self.scrolled_window = ScrolledWindow(0, 0) self.right_view_box = gtk.VBox() self.right_top_box = gtk.HBox() self.right_top_box.set_size_request(-1, self.RIGHT_TITLE_BOX_HEIGHT) self.right_desc_box = gtk.VBox() self.right_slide_box = gtk.VBox() self.right_comment_box = gtk.VBox() self.right_title_box = gtk.VBox() self.return_button = ImageButton( app_theme.get_pixbuf("detail/normal.png"), app_theme.get_pixbuf("detail/hover.png"), app_theme.get_pixbuf("detail/press.png"), ) self.return_align = gtk.Alignment() self.return_align.set(0.5, 0.5, 1, 1) self.return_align.set_padding(self.ALIAS_NAME_PADDING_Y, 0, 0, self.RIGHT_INFO_PADDING_X) self.return_align.add(self.return_button) self.return_button.connect("clicked", lambda w: global_event.emit("switch-from-detail-page")) self.right_top_box.pack_start(self.right_title_box, True, True) self.right_top_box.pack_start(self.return_align, False, False) self.right_view_box.pack_start(self.right_top_box, False, False) self.right_view_box.pack_start(self.right_desc_box, False, False) self.right_view_box.pack_start(self.right_slide_box, False, False) self.right_view_box.pack_start(self.right_comment_box, False, False) self.scrolled_window.add_child(self.right_view_box) self.left_view_box.pack_start(self.left_logo_box, False, False) self.left_view_box.pack_start(self.star_align, False, False) self.left_view_box.pack_start(self.left_action_align, False, False) self.left_label_table.attach(self.left_category_box, 0, 1, 0, 1) self.left_label_table.attach(self.left_version_label, 0, 1, 1, 2) self.left_label_table.attach(self.left_size_label, 0, 1, 2, 3) self.left_label_table.attach(self.left_download_label, 0, 1, 3, 4) self.left_label_table.attach(self.left_homepage_box_align, 0, 1, 4, 5) self.left_label_align.add(self.left_label_table) self.left_view_box.pack_start(self.left_label_align, False, False) self.left_view_box.pack_start(self.left_recommend_box_align, False, False) self.right_info_box.pack_start(self.scrolled_window, True, True) self.pack_start(self.left_view_box, False, False) self.pack_start(self.right_info_box, True, True) self.left_view_box.connect("expose-event", self.expose_left_view) self.right_view_box.connect("expose-event", self.expose_right_view) self.left_logo_box.connect("expose-event", self.expose_left_logo_box) self.right_top_box.connect("expose-event", self.expose_right_top_box) self.right_title_box.connect("expose-event", self.expose_right_title_box) self.connect("hierarchy-changed", self.hierarchy_change) self.left_category_label.connect("button-press-event", lambda w, e: self.jump_to_category()) global_event.register_event("download-screenshot-finish", self.download_screenshot_finish) self.loading_label = Label(_("Loading comments...")) self.loading_label_align = gtk.Alignment(0.5, 0, 0, 0) self.loading_label_align.add(self.loading_label) self.loading_label_align.set_padding(10, 0, 0, 0) self.update_pkg_time = 0 self.update_pkg_interval = 0.2 # in seconds
def update_pkg_info(self, pkg_name): current_time = time.time() if current_time - self.update_pkg_time < self.update_pkg_interval: return False else: self.update_pkg_time = current_time FetchPackageInfo(pkg_name, self.update_some_info).start() self.pkg_name = pkg_name detail_info = self.data_manager.get_pkg_detail_info(self.pkg_name) self.category = detail_info['category'] self.long_desc = detail_info['long_desc'] self.version = detail_info['version'] self.homepage = detail_info['homepage'] self.alias_name = detail_info['alias_name'] self.recommend_pkgs = detail_info['recommend_pkgs'] self.pkg_star_view = StarView() self.pkg_star_view.connect("clicked", lambda w: self.grade_pkg()) self.pkg_star_mark = StarMark(5.0, self.MARK_SIZE, self.MARK_PADDING_X, self.MARK_PADDING_Y) container_remove_all(self.star_box) self.star_box.pack_start(self.pkg_star_view, False, False) self.star_box.pack_start(self.pkg_star_mark, False, False) self.fetch_pkg_status() container_remove_all(self.left_category_box) if self.category != None: self.left_category_name_label.set_text(_("Category: ")) self.left_category_label.set_text( get_category_name(self.category[1])) self.left_category_box.add(self.left_category_label_box) self.left_version_label.set_text(_("Version: %s") % self.version) self.left_download_label.set_text(_("Download: 0")) self.left_size_label.set_text(_("Size: calculating...")) container_remove_all(self.left_homepage_box) if self.homepage != "": homepage_label = Label( _("Visit Homepage"), text_color=app_theme.get_color("homepage"), hover_color=app_theme.get_color("homepage_hover")) homepage_label.set_clickable() homepage_label.connect( "button-press-event", lambda w, e: run_command("xdg-open %s" % self.homepage)) self.left_homepage_box.pack_start(homepage_label) container_remove_all(self.left_recommend_box) if len(self.recommend_pkgs) > 0: self.left_recommend_box.pack_start(self.left_recommend_label, False, False, 8) for (recommend_pkg_name, alias_name, star) in self.recommend_pkgs: self.left_recommend_box.pack_start( RecommendPkgItem(self, recommend_pkg_name, alias_name, star), False, False, 4) container_remove_all(self.right_desc_box) resizable_label = ResizableLabel( self.long_desc.replace("&", "&").replace("<", "<").replace( ">", ">"), self.LONG_DESC_WRAP_WIDTH, self.LONG_DESC_INIT_HEIGHT, 3) resizable_align = gtk.Alignment() resizable_align.set(0.5, 0.5, 1, 1) resizable_align.set_padding(0, 0, self.RIGHT_INFO_PADDING_X, self.RIGHT_INFO_PADDING_X) resizable_align.add(resizable_label) resizable_align.connect("expose-event", self.expose_resizable_label_background) self.right_desc_box.pack_start(resizable_align, False, False) self.show_screenshot() self.fetch_comment() self.show_all()