Пример #1
0
    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)
        
        lang = utils.get_system_lang()
        if lang == "zh_CN":
            prefix = "cn"
        elif lang in ["zh_HK", "zh_TW"]:    
            prefix = "tw"
        else:    
            prefix = "en"
            
        self.failed_dpixbuf = app_theme.get_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 = app_theme.get_color("labelText")
        self.hover_text_dcolor = app_theme.get_color("globalItemHighlight")
        self.prompt_text = "点击此处刷新"
        self.text_padding_y = 5
        self.text_padding_x = 5
        self.text_rect = None
        self.is_hover = False
        self.press_callback = callback
Пример #2
0
    def __init__(self, prompt_text, click_text, callback=None, auto_size=True):
        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.normal_text_dcolor = app_theme.get_color("labelText")
        self.hover_text_dcolor = app_theme.get_color("globalItemHighlight")
        self.click_text = click_text
        self.prompt_text = prompt_text
        
        self.text_padding_y = 5
        self.text_padding_x = 5
        self.text_rect = None
        self.is_hover = False
        self.press_callback = callback

        self.adjust_size()        
        
        self.connect("expose-event", self.on_expose_event)
        self.connect("motion-notify-event", self.on_motion_notify)
        self.connect("button-press-event", self.on_button_press)
Пример #3
0
    def render_content(self, cr, rect):
        if self.is_highlight:    
            if not self.is_double_click:
                draw_single_mask(cr, rect.x + 1, rect.y, rect.width, rect.height, "globalItemHighlight")
                text_color = "#FFFFFF"
            else:    
                text_color = app_theme.get_color("labelText").get_color()
                
        elif self.is_hover:
            text_color = app_theme.get_color("labelText").get_color()
            draw_single_mask(cr, rect.x + 1, rect.y, rect.width, rect.height, "globalItemHover")
        else:    
            text_color = app_theme.get_color("labelText").get_color()

            
        if not self.is_highlight:    
            self.entry_buffer.move_to_start()
            
        self.entry_buffer.set_text_color(text_color)
        width, height = self.entry_buffer.get_content_size()
        offset_y = (self.item_height - height) / 2
        # offset_x = (self.item_height - width) / 2
        rect.y += offset_y
        rect.x += 10
        # rect.x += offset_x
        
        if self.entry and self.entry.allocation.width == self.get_column_widths()[0]-4:
            self.entry.calculate()
            self.entry_buffer.set_text_color("#000000")
            self.entry_buffer.render(cr, rect, self.entry.im)
        else:
            self.entry_buffer.render(cr, rect)
Пример #4
0
    def __init__(self, drag_data_received_cb, callback):
        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.empty_dpixbuf = app_theme.get_pixbuf("empty/local.png")
        targets = [("text/deepin-songs", gtk.TARGET_SAME_APP, 1), ("text/uri-list", 0, 2), ("text/plain", 0, 3)]        
        self.drag_dest_set(gtk.DEST_DEFAULT_MOTION | gtk.DEST_DEFAULT_DROP,
                           targets, gtk.gdk.ACTION_COPY)
        self.connect("drag-data-received", drag_data_received_cb)
        self.connect("motion-notify-event", self.on_motion_notify)
        self.connect("button-press-event", self.on_button_press)
        
        self.add_normal_dpixbuf = app_theme.get_pixbuf("empty/add_normal.png")
        self.add_hover_dpixbuf = app_theme.get_pixbuf("empty/add_hover.png")
        
        self.normal_text_dcolor = app_theme.get_color("labelText")
        self.hover_text_dcolor = app_theme.get_color("globalItemHighlight")
        self.text_padding_y = 5
        self.text_padding_x = 5
        self.prompt_offset = 15
        self.text_rect = None
        self.is_hover = False
        self.press_callback = callback
        self.prompt_text = _("Add Music")
Пример #5
0
    def __init__(
        self,
        fg_dpixbuf=app_theme.get_pixbuf("scalebar/fg.png"),
        bg_dpixbuf=app_theme.get_pixbuf("scalebar/bg.png"),
        point_normal_dpixbuf=app_theme.get_pixbuf("scalebar/point_normal.png"),
        point_hover_dpixbuf=app_theme.get_pixbuf("scalebar/point_hover.png"),
        point_press_dpixbuf=app_theme.get_pixbuf("scalebar/point_press.png"),
    ):

        super(HScalebar, self).__init__()
        self.set_draw_value(False)
        self.set_range(0, 100)
        self.fg_dpixbuf = fg_dpixbuf
        self.bg_dpixbuf = bg_dpixbuf
        self.point_normal_dpixbuf = point_normal_dpixbuf
        self.point_hover_dpixbuf = point_hover_dpixbuf
        self.point_press_dpixbuf = point_press_dpixbuf
        self.bottom_side = 0
        self.fg_cache_pixbuf = CachePixbuf()
        self.bg_cache_pixbuf = CachePixbuf()
        self.side_cache_pixbuf = CachePixbuf()

        # Colors
        self.fg_left_dcolor = app_theme.get_color("progressBarLeft")
        self.fg_right_dcolor = app_theme.get_color("progressBarRight")

        self.set_size_request(-1, self.bg_dpixbuf.get_pixbuf().get_height())

        self.connect("expose-event", self.expose_h_scalebar)
        self.connect("button-press-event", self.press_volume_progressbar)
Пример #6
0
 def __init__(self, 
              fg_dpixbuf=app_theme.get_pixbuf("scalebar/fg.png"),
              bg_dpixbuf=app_theme.get_pixbuf("scalebar/bg.png"),
              point_normal_dpixbuf = app_theme.get_pixbuf("scalebar/point_normal.png"),
              point_hover_dpixbuf = app_theme.get_pixbuf("scalebar/point_hover.png"),
              point_press_dpixbuf = app_theme.get_pixbuf("scalebar/point_press.png"),
              ):
     
     super(HScalebar, self).__init__()
     self.set_draw_value(False)
     self.set_range(0, 100)
     self.fg_dpixbuf = fg_dpixbuf
     self.bg_dpixbuf = bg_dpixbuf
     self.point_normal_dpixbuf = point_normal_dpixbuf
     self.point_hover_dpixbuf = point_hover_dpixbuf
     self.point_press_dpixbuf = point_press_dpixbuf
     self.bottom_side = 0
     self.fg_cache_pixbuf = CachePixbuf()
     self.bg_cache_pixbuf = CachePixbuf()
     self.side_cache_pixbuf = CachePixbuf()
     
     # Colors
     self.fg_left_dcolor = app_theme.get_color("progressBarLeft")
     self.fg_right_dcolor = app_theme.get_color("progressBarRight")
     
     self.set_size_request(-1, self.bg_dpixbuf.get_pixbuf().get_height())
     
     self.connect("expose-event", self.expose_h_scalebar)
     self.connect("button-press-event", self.press_volume_progressbar)
Пример #7
0
    def on_expose_event(self, widget, event):
        cr = widget.window.cairo_create()
        rect = widget.allocation
        rect.x += self.padding_x
        rect.width -= self.padding_x * 2

        keyword_span = self.red_span % self.keyword
        from_keyword_span = self.black_span % self.from_keyword
        from_keyword_dict = {
            "keyword": keyword_span,
            "from": from_keyword_span
        }
        self.prompt_text = self.prompt_format_text.format(**from_keyword_dict)
        _width, _height = get_content_size(self.prompt_text)

        draw_text(cr,
                  self.prompt_text,
                  rect.x,
                  rect.y,
                  rect.width,
                  _height,
                  text_color=app_theme.get_color("labelText").get_color())

        # draw dash
        rect.y += _height + self.padding_y
        dash_line_width = 1
        with cairo_disable_antialias(cr):
            cr.set_source_rgb(*color_hex_to_cairo("#D6D6D6"))
            cr.set_line_width(dash_line_width)
            cr.set_dash([4.0, 4.0])
            cr.move_to(rect.x, rect.y)
            cr.rel_line_to(rect.width, 0)
            cr.stroke()

        rect.y += self.padding_y + dash_line_width

        _width, _height = get_content_size(self.suggest_title)
        draw_text(cr, self.suggest_title, rect.x, rect.y, rect.width, _height)

        rect.y += _height + self.padding_y
        _width, _height = get_content_size(self.suggest_first_line)
        draw_text(cr,
                  self.suggest_first_line,
                  rect.x,
                  rect.y,
                  rect.width,
                  _height,
                  text_color=app_theme.get_color("labelText").get_color())

        rect.y += _height + self.padding_y
        _width, _height = get_content_size(self.suggest_second_line)
        draw_text(cr,
                  self.suggest_second_line,
                  rect.x,
                  rect.y,
                  rect.width,
                  _height,
                  text_color=app_theme.get_color("labelText").get_color())
        return True
Пример #8
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 render_title(self, cr, rect):        
     # Draw select background.
     # if self.is_select:
     #     draw_pixbuf(cr, self.hover_bg, rect.x, rect.y)
     #     text_color = app_theme.get_color("simpleItemSelect").get_color()
     if self.is_hover:    
         text_color = app_theme.get_color("simpleItemHighlight").get_color()
     else:    
         text_color = app_theme.get_color("labelText").get_color()
         
     draw_text(cr, self.title, rect.x, rect.y, rect.width, rect.height, text_size=10, 
               text_color = text_color,
               alignment=pango.ALIGN_CENTER)    
Пример #10
0
 def render_title(self, cr, rect, in_select, in_highlight):    
     rect.x += self.title_padding_x
     rect.width -= self.title_padding_x * 2
     
     if in_highlight:
         color = app_theme.get_color("simpleSelectItem").get_color()
     else:    
         color = app_theme.get_color("labelText").get_color()
     
     # if error:    
     #     color = "#ff0000"        
         
     content = utils.xmlescape(self.title)    
     draw_text(cr, content, rect.x, rect.y, rect.width, rect.height, 
               text_size=9, text_color=color, alignment=pango.ALIGN_LEFT)    
Пример #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 __init__(self):
     super(MusicPlaylist, self).__init__()
     
     self.listen_db_file = get_cache_file("baidumusic/local_listen.db")
     self.status_db_file = get_cache_file("baidumusic/status.db")
     
     # Init default items        
     self.default_list_item = MusicListItem("试听列表", 
                                            list_type=MusicListItem.DEFAULT_TYPE)
     self.collect_list_item = MusicListItem("我的收藏", 
                                            list_type=MusicListItem.COLLECT_TYPE, 
                                            has_separator=True)
     
     # Init category list.
     self.category_list = CategoryView(enable_drag_drop=False, enable_multiple_select=True)
     self.category_list.add_items([self.default_list_item, self.collect_list_item])
     
     del self.category_list.keymap["Delete"]
     self.category_list.draw_mask = self.draw_category_list_mask
     self.category_list.set_size_request(CATEGROYLIST_WIDTH, -1)
     self.category_list.connect("single-click-item", self.on_category_single_click)
     self.category_list.connect("right-press-items", self.on_category_right_press)
     self.category_list.set_highlight_item(self.default_list_item)
     
     # View box
     self.view_box = gtk.VBox()
     self.view_box.connect("size-allocate", self.on_viewbox_size_allocate)
     self.view_box.add(self.default_list_item.list_widget)
     
     # bottom_box = gtk.HBox(spacing=45)
     # bottom_box_align = gtk.Alignment()
     # bottom_box_align.set(0.5, 0.5, 1, 1)
     # bottom_box_align.set_padding(2, 2, 28, 0)
     # bottom_box_align.set_size_request(-1, 22)
     # bottom_box_align.add(bottom_box)
     # bottom_box_align.connect("expose_event", self.on_bottombox_expose_event)
     # self.search_button = create_toggle_button("toolbar/search", parent=bottom_box)
     # self.person_button = create_button("combo/artist", parent=bottom_box, no_hover=True)
     
     main_paned = HPaned(handle_color=app_theme.get_color("panedHandler"), enable_drag=True)
     main_paned.pack1(self.category_list, True, True)
     main_paned.pack2(self.view_box, True, False)
     
     # events
     event_manager.connect("login-success", self.on_event_login_success)
     event_manager.connect("collect-songs", self.on_event_collect_songs)
     event_manager.connect("add-songs", self.on_event_add_songs)
     event_manager.connect("play-songs", self.on_event_play_songs)
     event_manager.connect("save-listen-lists", self.on_event_save_listen_lists)
     event_manager.connect("save-playlist-status", self.save_status)
     
     # load playlists.
     self.online_thread_id = 0
     self.new_list_thread_id = 0
     
     self.load()
     self.load_online_lists()
     self.load_status()
     
     self.add(main_paned)
Пример #13
0
    def on_expose_event(self, widget, event):
        if not self.prompt_pixbuf: return
        cr = widget.window.cairo_create()
        rect = widget.allocation
        pixbuf_y = rect.y + (rect.height - self.prompt_pixbuf.get_height()) / 2
        draw_pixbuf(cr, self.bg_left, rect.x, rect.y)
        bg_left_w = self.bg_left.get_width()
        self.cache_bg_pixbuf.scale(self.bg_middle, rect.width - bg_left_w * 2,
                                   self.bg_middle.get_height())
        draw_pixbuf(cr, self.cache_bg_pixbuf.get_cache(), rect.x + bg_left_w,
                    rect.y)
        draw_pixbuf(cr, self.bg_right, rect.x + rect.width - bg_left_w, rect.y)

        draw_pixbuf(cr, self.prompt_pixbuf, rect.x + self.padding_x, pixbuf_y)

        # draw text.
        text_rect = gtk.gdk.Rectangle(
            rect.x + self.prompt_pixbuf.get_width() + self.padding_x * 2,
            rect.y,
            rect.width - self.prompt_pixbuf.get_width() - self.padding_x * 3,
            rect.height)
        render_text(cr, self.prompt_text, text_rect,
                    app_theme.get_color("labelText").get_color(), 8)

        return True
Пример #14
0
    def __init__(self):
        gtk.VBox.__init__(self)

        # Init radiobar.
        self.__init_radiobar()

        # is loaded.
        self.homepage_load_flag = False
        self.home_page = HomePage()

        self.hot_page_view, self.hot_page_sw = self.get_radio_icon_view(
            TAG_HOT, 20)
        self.fast_page_view, self.fast_page_sw = self.get_radio_icon_view(
            TAG_FAST, 20)

        # Genres page
        self.genre_page = GenrePage()

        self.page_box = gtk.VBox()
        self.page_box.add(self.home_page)

        self.body_paned = HPaned(
            handle_color=app_theme.get_color("panedHandler"))
        self.body_paned.add1(self.radiobar)
        self.body_paned.add2(self.page_box)
        self.network_failed_box = NetworkConnectFailed(
            self.check_network_connection)
        self.check_network_connection(auto=True)
Пример #15
0
    def expose_simple_item(self, widget, event):

        # Init.
        cr = widget.window.cairo_create()
        rect = widget.allocation
        font_color = app_theme.get_color("labelText").get_color()
        item_pixbuf = self.normal_dpixbuf.get_pixbuf()
        # Draw pixbuf.
        draw_pixbuf(cr, item_pixbuf, rect.x + self.padding_left,
                    rect.y + (rect.height - item_pixbuf.get_height()) / 2)

        # Draw content.
        draw_text(cr,
                  self.content,
                  rect.x + self.padding_left + self.font_offset,
                  rect.y,
                  rect.width - self.padding_left - self.font_offset -
                  self.padding_right,
                  rect.height,
                  self.font_size,
                  font_color,
                  alignment=self.x_align)

        propagate_expose(widget, event)

        return True
Пример #16
0
    def __init__(self, title_name):
        BaseBar.__init__(self, init_index=-1)
        self.set_spacing(3)
        self.child_box = gtk.VBox()
        self.child_item_height = 22
        self.current_page = 1
        self.page_items_num = 0
        self.items = []

        title_item = StaticLabel(
            app_theme.get_pixbuf("filter/local_normal.png"), title_name, 10,
            25, 15, 10, 25, ALIGN_START)
        self.pack_start(title_item, False, False)
        self.pack_start(self.child_box, True, True)
        self.child_box.connect("size-allocate", self.size_change_cb)

        self.control_box = gtk.HBox()
        self.control_box.set_spacing(15)
        previous_align = self.create_simple_button("previous",
                                                   self.update_current_page,
                                                   "previous")
        next_align = self.create_simple_button("next",
                                               self.update_current_page,
                                               "next")
        self.info_label = Label("0/0",
                                app_theme.get_color("labelText"),
                                text_x_align=ALIGN_MIDDLE)
        self.control_box.pack_start(previous_align, False, False)
        self.control_box.pack_start(self.info_label, False, False)
        self.control_box.pack_start(next_align, False, False)
        self.control_box.set_no_show_all(True)
        control_align = gtk.Alignment()
        control_align.set(1, 1, 0.5, 0.5)
        control_align.add(self.control_box)
        self.pack_start(control_align, False, False)
Пример #17
0
 def on_expose_event(self, widget, event):    
     cr = widget.window.cairo_create()
     rect = widget.allocation
     
     draw_text(cr, self.text, rect.x, rect.y, rect.width, rect.height, 
               text_color=app_theme.get_color("labelText").get_color(),
               alignment=pango.ALIGN_CENTER)
Пример #18
0
    def __init__(self, title_name):
        BaseBar.__init__(self, init_index=-1)
        self.set_spacing(3)
        self.child_box = gtk.VBox()
        self.child_item_height = 22
        self.current_page = 1
        self.page_items_num = 0        
        self.items = []
        
        title_item = SimpleLabel(
            app_theme.get_pixbuf("filter/local_normal.png"),
            title_name, 10, 25, 15, 10, 25, ALIGN_START)
        self.pack_start(title_item, False, False)
        self.pack_start(self.child_box, True, True)
        self.child_box.connect("size-allocate", self.size_change_cb)

        self.control_box = gtk.HBox()
        self.control_box.set_spacing(15)        
        previous_align = self.create_simple_button("previous", self.update_current_page, "previous")
        next_align = self.create_simple_button("next", self.update_current_page, "next")
        self.info_label = Label("0/0", app_theme.get_color("labelText"), text_x_align=ALIGN_MIDDLE)
        self.control_box.pack_start(previous_align, False, False)
        self.control_box.pack_start(self.info_label, False, False)
        self.control_box.pack_start(next_align, False, False)
        self.control_box.set_no_show_all(True)
        control_align = gtk.Alignment()
        control_align.set(1, 1, 0.5, 0.5)
        control_align.add(self.control_box)
        self.pack_start(control_align, False, False)
    def __init__(self, tab_names):
        '''
        init docs
        '''
        gtk.EventBox.__init__(self)
        self.set_visible_window(False)
        self.add_events(gtk.gdk.ALL_EVENTS_MASK)
        self.tab_names = tab_names
        self.tab_name_size = 10
        self.tab_number = len(self.tab_names)
        tab_sizes = map(lambda tab_name: get_content_size(tab_name, self.tab_name_size), self.tab_names)
        self.tab_name_padding_x = 10
        self.tab_name_padding_y = 2
        self.tab_width = max(map(lambda (width, height): width, tab_sizes)) + self.tab_name_padding_x * 2
        self.tab_height = tab_sizes[0][1] + self.tab_name_padding_y * 2
        self.tab_line_height = 1
        self.tab_index = 0
        
        self.tab_animation_x = 0
        self.tab_animation_time = 200 # milliseconds
        
        self.padding_x = 0
        self.padding_y = 15        
        self.in_animiation = False
        
        self.set_size_request(-1, self.tab_height + self.tab_line_height)
        self.line_dcolor = app_theme.get_color("globalItemHighlight")

        self.connect("expose-event", self.expose_tab_switcher)
        self.connect("button-press-event", self.button_press_tab_switcher)
 def __init__(self):
     gtk.VBox.__init__(self)
     
     self.set_spacing(10)
     self.local_view_page = LocalSearchView(local_search_tab)
     
     self.close_button = SearchCloseButton()
     self.line_dcolor = app_theme.get_color("globalItemHighlight")
     close_button_align = set_widget_gravity(self.close_button, gravity=(0.5, 0.5, 0, 0),
                                             paddings=(0, 0, 5, 10))
     close_button_align.connect("expose-event",  self.on_close_button_expose_event)
     
     self.tab_switcher = TabSwitcher([TabItem(_("Library"), self.local_view_page)])
     self.tab_switcher.connect("tab-switch-start", lambda switcher, tab_index: self.switch_result_view(tab_index))
     tab_switcher_align = set_widget_gravity(self.tab_switcher, gravity=(0, 0, 1, 1),
                                             paddings=(10, 0, 0, 0))
     tab_switcher_box = gtk.HBox()
     tab_switcher_box.pack_start(tab_switcher_align, True, True)
     tab_switcher_box.pack_start(close_button_align, False, False)
     
     self.result_page = gtk.VBox()
     self.result_page.add(self.local_view_page)
     
     self.pack_start(tab_switcher_box, False, True)
     self.pack_start(self.result_page, True, True)
     
     Dispatcher.connect("add-search-view", self.on_dispatcher_add_search_view)
     Dispatcher.connect("remove-search-view", self.on_dispatcher_remove_search_view)
     Dispatcher.connect("switch-browser", self.on_list_manager_switch_browser)
Пример #21
0
 def render_title(self, cr, rect):        
     # Draw select background.
         
     if self.is_select:    
         draw_single_mask(cr, rect.x + 1, rect.y, rect.width - 2, rect.height, "globalItemHighlight")
     elif self.is_hover:
         draw_single_mask(cr, rect.x + 1, rect.y, rect.width - 2, rect.height, "globalItemHover")
     
     if self.is_select:
         text_color = "#FFFFFF"
     else:    
         text_color = app_theme.get_color("labelText").get_color()
         
     if self.is_select:    
         icon_pixbuf = self.press_dpixbuf.get_pixbuf()
     else:    
         icon_pixbuf = self.normal_dpixbuf.get_pixbuf()
         
     rect.x += self.padding_x    
     rect.width -= self.padding_x * 2
     icon_y = rect.y + (rect.height - icon_pixbuf.get_height()) / 2
     draw_pixbuf(cr,icon_pixbuf, rect.x, icon_y)    
     rect.x += self.icon_width + self.padding_x
     rect.width -= self.icon_width
         
     draw_text(cr, self.title, rect.x,
               rect.y, rect.width,
               rect.height, text_size=10, 
               text_color = text_color,
               alignment=pango.ALIGN_LEFT)    
 def render_text(self, cr, rect):
     if self.is_hover:
         # Draw background.
         draw_single_mask(cr, rect.x + 1, rect.y, rect.width - 2, rect.height, "globalItemSelect")
         
         # Set font color.
         font_color = "#FFFFFF"
         
         # Don't highlight when select.
         # text = self.text
     else:
         # Set font color.
         font_color = app_theme.get_color("labelText").get_color()
         
         # Highilght match string.
         # (text_pre, text_post) = self.text.split(self.search_string)
         # text = "%s<span foreground=\"#00AAFF\">%s</span>%s" % (text_pre, self.search_string, text_post)
         
     draw_text(cr, 
               self.text,
               rect.x + self.padding_x, 
               rect.y,
               rect.width - self.padding_x * 2, 
               rect.height,
               text_color=font_color)
Пример #23
0
 def render_title(self, cr, rect):        
     # Draw select background.
         
     if self.is_select:    
         draw_single_mask(cr, rect.x, rect.y, rect.width, rect.height, "globalItemHighlight")
     elif self.is_hover:
         draw_single_mask(cr, rect.x, rect.y, rect.width, rect.height, "globalItemHover")
     
     if self.is_select:
         text_color = "#FFFFFF"
     else:    
         text_color = app_theme.get_color("labelText").get_color()
         
     # draw arrow    
     if self.is_expand:    
         if self.is_select:
             arrow_pixbuf = self.down_press_dpixbuf.get_pixbuf()
         else:
             arrow_pixbuf = self.down_normal_dpixbuf.get_pixbuf()
     else:        
         if self.is_select:
             arrow_pixbuf = self.right_press_dpixbuf.get_pixbuf()
         else:
             arrow_pixbuf = self.right_normal_dpixbuf.get_pixbuf()
             
     arrow_x = rect.x + self.arrow_padding_x
     arrow_y = rect.y + (rect.height - arrow_pixbuf.get_height()) / 2
     draw_pixbuf(cr, arrow_pixbuf, arrow_x, arrow_y)
     draw_text(cr, self.title, rect.x + self.title_padding_x, rect.y, 
               rect.width - self.title_padding_x, rect.height, text_size=10, 
               text_color = text_color,
               alignment=pango.ALIGN_LEFT)    
 def render(self, cr, rect):    
     if self.hover_flag or self.is_select:
         color = app_theme.get_color("simpleItemHighlight").get_color()            
     else:    
         color = "#333333"
     draw_text(cr, self.title, rect.x, rect.y, rect.width, rect.height,
               text_color=color, underline=self.underline_flag)
Пример #25
0
    def render_title(self, cr, rect):
        # Draw select background.

        if self.is_select:
            draw_single_mask(cr, rect.x, rect.y, rect.width, rect.height,
                             "globalItemHighlight")
        elif self.is_hover:
            draw_single_mask(cr, rect.x, rect.y, rect.width, rect.height,
                             "globalItemHover")

        if self.is_select:
            text_color = "#FFFFFF"
        else:
            text_color = app_theme.get_color("labelText").get_color()

        column_offset = self.column_offset * self.column_index
        draw_text(cr,
                  self.title,
                  rect.x + self.title_padding_x + column_offset,
                  rect.y,
                  rect.width - self.title_padding_x - column_offset,
                  rect.height,
                  text_size=10,
                  text_color=text_color,
                  alignment=pango.ALIGN_LEFT)
Пример #26
0
    def __init__(self):
        super(SongTimer, self).__init__()

        self.label_time = Label("00:00/00:00", app_theme.get_color("labelText"), 8, enable_gaussian=True)

        self.bar = HScalebar()
        self.bar.set_draw_value(False)
        self.bar.set_range(0, 1000)
        self.bar.set_value(0)
        self.bar.connect("button_press_event", self.on_bar_press)
        self.bar.connect("button_release_event", self.on_bar_release)
        self.__value_changed_id = self.bar.connect("value-changed", self.on_bar_value_changed)
        self.bar.handler_block(self.__value_changed_id)
        self.pack_start(self.bar, True, True)
        self.update_bar = 1
        self.duration = 0
        self.__idle_release_id = None
        self.delete = False
        self.__need_report = False

        Player.connect("instant-new-song", self.set_duration)

        Player.bin.connect("tick", self.on_tick)
        Player.connect("seeked", self.on_seek)
        Player.connect("stopped", self.set_duration)
        if not Player.song:
            self.bar.set_sensitive(False)
Пример #27
0
def render_item_text2(cr,
                      content,
                      rect,
                      in_select,
                      in_highlight,
                      align=pango.ALIGN_LEFT,
                      font_size=9,
                      error=False):
    if in_select:
        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)
Пример #28
0
    def __init__(self, draw_time_callback=None):
        super(SongTimer, self).__init__()

        self.label_time = Label("00:00", app_theme.get_color("labelText"), 8, enable_gaussian=True)
        self.draw_time_callback = draw_time_callback
        if draw_time_callback:
            draw_time_callback(self.label_time.get_text())
            
        self.bar = ProgressBar()
        bar_align = gtk.Alignment()
        bar_align.set_padding(0, 0, 2, 2)
        bar_align.set(1, 1, 1, 1)
        bar_align.add(self.bar)
        self.bar.connect("button-press-event", self.on_bar_press)
        self.bar.connect("button-release-event", self.on_bar_release)
        self.__value_changed_id = self.bar.connect("value-changed", self.on_bar_value_changed)

        self.pack_start(bar_align, True, True)
        self.update_bar = 1
        self.duration = 0
        self.__idle_release_id = None
        self.delete = False
        self.__need_report = False
        self.press_flag = False

        Player.connect("instant-new-song", self.set_duration)
        Player.connect("init-status", self.on_player_init_status)

        Player.bin.connect("queue-running", self.on_queue_running)
        Player.bin.connect("tick", self.on_tick)
        Player.connect("seeked", self.on_seek)
        Player.connect("stopped", self.set_duration)
        if not Player.song:
            self.bar.set_sensitive(False)
Пример #29
0
    def __init__(self, items):
        '''
        init docs
        '''
        gtk.EventBox.__init__(self)
        self.set_visible_window(False)
        self.add_events(gtk.gdk.ALL_EVENTS_MASK)
        self.items = items
        self.tab_name_size = 10
        self.tab_number = len(self.items)
        tab_sizes = map(
            lambda item: get_content_size(item.title, self.tab_name_size),
            self.items)
        self.tab_name_padding_x = 10
        self.tab_name_padding_y = 2
        self.tab_width = max(map(lambda (width, height): width,
                                 tab_sizes)) + self.tab_name_padding_x * 2
        self.tab_height = tab_sizes[0][1] + self.tab_name_padding_y * 2
        self.tab_line_height = 1
        self.tab_index = 0

        self.tab_animation_x = 0
        self.tab_animation_time = 200  # milliseconds

        self.padding_x = 0
        self.padding_y = 15
        self.in_animiation = False

        self.set_size_request(-1, self.tab_height + self.tab_line_height)
        self.line_dcolor = app_theme.get_color("globalItemHighlight")

        self.connect("expose-event", self.expose_tab_switcher)
        self.connect("button-press-event", self.button_press_tab_switcher)
Пример #30
0
    def __init__(self, draw_time_callback=None):
        super(SongTimer, self).__init__()

        self.label_time = Label("00:00", app_theme.get_color("labelText"), 8, enable_gaussian=True)
        self.draw_time_callback = draw_time_callback
        if draw_time_callback:
            draw_time_callback(self.label_time.get_text())
            
        self.bar = ProgressBar()
        bar_align = gtk.Alignment()
        bar_align.set_padding(0, 0, 1, 1)
        bar_align.set(1, 1, 1, 1)
        bar_align.add(self.bar)
        self.bar.connect("button-press-event", self.on_bar_press)
        self.bar.connect("button-release-event", self.on_bar_release)
        self.__value_changed_id = self.bar.connect("value-changed", self.on_bar_value_changed)

        self.pack_start(bar_align, True, True)
        self.update_bar = 1
        self.duration = 0
        self.__idle_release_id = None
        self.delete = False
        self.__need_report = False
        self.press_flag = False

        Player.connect("instant-new-song", self.set_duration)
        Player.connect("init-status", self.on_player_init_status)

        Player.bin.connect("queue-running", self.on_queue_running)
        Player.bin.connect("tick", self.on_tick)
        Player.connect("seeked", self.on_seek)
        Player.connect("stopped", self.set_duration)
        if not Player.song:
            self.bar.set_sensitive(False)
 def on_panel_expose_event(self, widget, event):    
     if not self.items:
         return 
     cr = widget.window.cairo_create()
     rect = widget.allocation
     
     draw_line(cr, (rect.x, rect.y + 1), (rect.x + rect.width, rect.y + 1), "#c7c7c7")
     draw_line(cr, (rect.x + rect.width, rect.y), (rect.x + rect.width, rect.y + rect.height), "#c7c7c7")
     draw_line(cr, (rect.x, rect.y + rect.height), (rect.x + rect.width, rect.y + rect.height), "#c7c7c7")
     draw_line(cr, (rect.x + 1, rect.y + 32), (rect.x + 1, rect.y + rect.height), "#c7c7c7")
     rect.y += self.block_height        
     
     start_x, start_y = self.padding_x, self.padding_y
     
     for index, item in enumerate(self.items):
         item_width, item_height = item.get_size()
         if rect.width - start_x < item_width + self.separate_width:
             start_y += item_height + self.item_interval_height
             start_x = self.padding_x
             
         item.render(cr, gtk.gdk.Rectangle(rect.x + start_x, rect.y + start_y,
                                           item_width, item_height))    
         
         self.coords[index] = self.range(rect.x + start_x, rect.x + start_x + item_width,
                                         rect.y + start_y, rect.y + start_y + item_height)
         start_x += item_width            
         
         
         draw_text(cr, self.separate_text, rect.x + start_x, rect.y + start_y, self.separate_width, 
                   self.separate_height, text_color=app_theme.get_color("labelText").get_color())
         start_x += self.separate_width
         
     return True    
Пример #32
0
    def expose_simple_item(self, widget, event):

        # Init.
        cr = widget.window.cairo_create()
        rect = widget.allocation
        font_color = app_theme.get_color("labelText").get_color()
        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_single_mask(cr, rect.x, rect.y, rect.width, rect.height,
                             "simpleItemHighlight")
            font_color = app_theme.get_color("simpleSelectItem").get_color()

        elif select_status == BUTTON_HOVER:
            draw_single_mask(cr, rect.x, rect.y, rect.width, rect.height,
                             "simpleItemHover")

        # Draw content.
        draw_text(cr,
                  self.content,
                  rect.x + self.padding_left + self.font_offset,
                  rect.y,
                  rect.width - self.padding_left - self.font_offset -
                  self.padding_right,
                  rect.height,
                  self.font_size,
                  font_color,
                  alignment=self.x_align)

        propagate_expose(widget, event)

        return True
    def __init__(self):
        super(MusicPlaylist, self).__init__()

        # Set db file
        self.listen_db_file = get_cache_file("neteasecloudmusic/local_listen.db")
        self.status_db_file = get_cache_file("neteasecloudmusic/status.db")

        # Set default & collect list item
        self.playing_list_item = MusicListItem("播放列表",
                MusicListItem.PLAYING_LIST_TYPE)

        # Set category list and connect click/right click
        self.category_list = CategoryView(enable_drag_drop=False,
                enable_multiple_select=True)
        self.category_list.add_items([self.playing_list_item])

        del self.category_list.keymap["Delete"]
        self.category_list.draw_mask = self.draw_category_list_mask
        self.category_list.set_size_request(CATEGROYLIST_WIDTH, -1)
        self.category_list.connect("single-click-item",
                self.on_category_single_click)
        self.category_list.connect("right-press-items",
                self.on_category_right_press)
        #self.category_list.set_highlight_item(self.playing_list_item)

        # Set view_box
        self.view_box = gtk.VBox()
        self.view_box.connect("size-allocate",
                self.on_viewbox_size_allocate)
        #self.view_box.add(self.playing_list_item.list_widget)

        main_paned = HPaned(handle_color=app_theme.get_color("panedHandler"),
                enable_drag=True)
        main_paned.pack1(self.category_list, True, True)
        main_paned.pack2(self.view_box, True, False)

        """ Set events"""
        event_manager.connect("login-success", self.load_online_lists)
        event_manager.connect("relogin", self.relogin)
        event_manager.connect("add-songs-to-playing-list-and-play",
                self.add_songs_to_playing_list_and_play)
        event_manager.connect("add-songs-to-playing-list",
                self.add_songs_to_playing_list)
        event_manager.connect("save-playing-list-status",
                self.save)

        # Load playlists
        self.online_thread_id = 0
        self.new_list_thread_id = 0

        if nplayer.is_login:
            self.load_online_lists('')
        else:
            self.login_item = MusicListItem("登录",
                    MusicListItem.LOGIN_LIST_TYPE)
            self.category_list.add_items([self.login_item])
        self.load()

        self.add(main_paned)
 def render_title(self, cr, rect):        
     # Draw select background.
     if self.is_select:
         draw_pixbuf(cr, self.hover_bg, rect.x, rect.y)
         text_color = app_theme.get_color("simpleItemHighlight").get_color()
     elif self.is_hover:    
         text_color = app_theme.get_color("simpleItemHighlight").get_color()
     else:    
         text_color = app_theme.get_color("labelText").get_color()
         
     draw_text(cr, self.title, rect.x, rect.y, rect.width, rect.height, text_size=10, 
               text_color = text_color,
               alignment=pango.ALIGN_CENTER)    
     
     if self.has_icon:
         draw_pixbuf(cr, self.selected_pixbuf, rect.x + 10,
                     rect.y + (rect.height - self.selected_pixbuf.get_height()) / 2)
    def __init__(self, value=100, lower=0, upper=100, step=5):
        gtk.Button.__init__(self)
        
        # Init data.
        self.__value = value
        self.__lower = lower
        self.__upper = upper
        self.__step = step
        self.drag_flag = False
        self.move_flag = False
        
        # Init DPixbufs.
        self.bg_dpixbuf = app_theme.get_pixbuf("scalebar/bg.png")
        
        self.point_dpixbuf = app_theme.get_pixbuf("scalebar/point_normal.png")
        self.point_width = self.point_dpixbuf.get_pixbuf().get_width()        
        
        # Init Dcolors.
        self.fg_left_dcolor = app_theme.get_color("progressBarLeft")
        self.fg_right_dcolor = app_theme.get_color("progressBarRight")
        
        # self.progressbar_tip = progressBarTip()
        
        # Init Sizes.
        self._value = lower
        self.padding_x = 0
        self.padding_y = 0
        self.progress_x = 0
        self.point_offset = 0

        self.fg_offset = self.bg_offset = 0
        self.default_height = self.bg_dpixbuf.get_pixbuf().get_height()
        
        # Init CachePixbufs
        self.bg_cache_pixbuf = CachePixbuf()
        self.fg_cache_pixbuf = CachePixbuf()
        
        
        self.set_size_request(-1, self.default_height)        
        
        # Init Events.
        self.add_events(gtk.gdk.ALL_EVENTS_MASK)
        self.connect("expose-event", self.on_expose_event)
        self.connect("button-press-event", self.on_button_press_event)
        self.connect("motion-notify-event", self.on_motion_notify_event)
        self.connect("button-release-event", self.on_button_release_event)
Пример #36
0
    def __init__(self, value=100, lower=0, upper=100, step=5):
        gtk.Button.__init__(self)

        # Init data.
        self.__value = value
        self.__lower = lower
        self.__upper = upper
        self.__step = step
        self.drag_flag = False
        self.move_flag = False

        # Init DPixbufs.
        self.bg_dpixbuf = app_theme.get_pixbuf("scalebar/bg.png")

        self.point_dpixbuf = app_theme.get_pixbuf("scalebar/point_normal.png")
        self.point_width = self.point_dpixbuf.get_pixbuf().get_width()

        # Init Dcolors.
        self.fg_left_dcolor = app_theme.get_color("progressBarLeft")
        self.fg_right_dcolor = app_theme.get_color("progressBarRight")

        # self.progressbar_tip = progressBarTip()

        # Init Sizes.
        self._value = lower
        self.padding_x = 0
        self.padding_y = 0
        self.progress_x = 0
        self.point_offset = 0

        self.fg_offset = self.bg_offset = 0
        self.default_height = self.bg_dpixbuf.get_pixbuf().get_height()

        # Init CachePixbufs
        self.bg_cache_pixbuf = CachePixbuf()
        self.fg_cache_pixbuf = CachePixbuf()

        self.set_size_request(-1, self.default_height)

        # Init Events.
        self.add_events(gtk.gdk.ALL_EVENTS_MASK)
        self.connect("expose-event", self.on_expose_event)
        self.connect("button-press-event", self.on_button_press_event)
        self.connect("motion-notify-event", self.on_motion_notify_event)
        self.connect("button-release-event", self.on_button_release_event)
    def expose_tab_switcher(self, widget, event):
        # Init.
        cr = widget.window.cairo_create()
        rect = widget.allocation

        # Draw tab line.
        cr.set_source_rgb(*color_hex_to_cairo(self.line_dcolor.get_color()))
        cr.rectangle(rect.x + self.padding_x, 
                     rect.y + self.tab_height,
                     rect.width - self.padding_x * 2, 
                     self.tab_line_height)
        cr.fill()
        
        # Draw tab.
        draw_start_x = rect.x + (rect.width - self.tab_width * self.tab_number) / 2
        if self.in_animiation:
            cr.rectangle(self.tab_animation_x,
                         rect.y,
                         self.tab_width,
                         self.tab_height)
        else:
            cr.rectangle(draw_start_x + self.tab_index * self.tab_width,
                         rect.y,
                         self.tab_width,
                         self.tab_height)
        cr.fill()
        
        # Draw tab name.
        for (tab_index, tab_name) in enumerate(self.tab_names):
            if self.in_animiation:
                tab_name_color = app_theme.get_color("labelText").get_color()
            elif tab_index == self.tab_index:
                tab_name_color = "#FFFFFF"
            else:
                tab_name_color = app_theme.get_color("labelText").get_color()
            draw_text(cr,
                      tab_name,
                      draw_start_x + tab_index * self.tab_width,
                      rect.y,
                      self.tab_width,
                      self.tab_height,
                      text_size=self.tab_name_size,
                      text_color=tab_name_color,
                      alignment=pango.ALIGN_CENTER,
                      )
Пример #38
0
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(self, cr, rect):    
     if not self.hover_flag:
         color = "#333333"
         self.underline = False
     else:    
         if self.has_underline:            
             self.underline = True
         color = app_theme.get_color("simpleItemHighlight").get_color()
     draw_text(cr, self.title, rect.x, rect.y, rect.width, rect.height, text_color=color, underline=self.underline)
Пример #40
0
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()
Пример #41
0
    def render_title(self, cr, rect):
        # Draw select background.
        # if self.is_select:
        #     draw_pixbuf(cr, self.hover_bg, rect.x, rect.y)
        #     text_color = app_theme.get_color("simpleItemSelect").get_color()
        if self.is_hover:
            text_color = app_theme.get_color("simpleItemHighlight").get_color()
        else:
            text_color = app_theme.get_color("labelText").get_color()

        draw_text(cr,
                  self.title,
                  rect.x,
                  rect.y,
                  rect.width,
                  rect.height,
                  text_size=10,
                  text_color=text_color,
                  alignment=pango.ALIGN_CENTER)
Пример #42
0
 def expose_simple_item(self, widget, event):    
     
     # Init.
     cr = widget.window.cairo_create()
     rect = widget.allocation
     font_color = app_theme.get_color("labelText").get_color()
     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_single_mask(cr, rect.x, rect.y, rect.width, rect.height, "simpleItemHighlight")
         font_color = app_theme.get_color("simpleSelectItem").get_color()
         
     elif select_status == BUTTON_HOVER:    
         draw_single_mask(cr, rect.x, rect.y, rect.width, rect.height, "simpleItemHover")
     
     
     # Draw content.
     draw_text(cr, self.content, 
               rect.x + self.padding_left + self.font_offset , 
               rect.y,
               rect.width - self.padding_left - self.font_offset - self.padding_right,
               rect.height, 
               self.font_size, font_color,
               alignment=self.x_align)
     
     propagate_expose(widget, event)
     
     return True
Пример #43
0
    def on_expose_event(self, widget, event):    
        cr = widget.window.cairo_create()
        rect = widget.allocation
        rect.x += self.padding_x
        rect.width -= self.padding_x * 2
        
        keyword_span = self.red_span % self.keyword
        from_keyword_span = self.black_span % self.from_keyword
        from_keyword_dict = {"keyword" : keyword_span, "from" : from_keyword_span}
        self.prompt_text = self.prompt_format_text.format(**from_keyword_dict)
        _width, _height = get_content_size(self.prompt_text)

        draw_text(cr, self.prompt_text, rect.x, rect.y, rect.width, _height, 
                  text_color=app_theme.get_color("labelText").get_color())
        
        
        # draw dash
        rect.y += _height + self.padding_y
        dash_line_width = 1
        with cairo_disable_antialias(cr):
            cr.set_source_rgb(*color_hex_to_cairo("#D6D6D6"))            
            cr.set_line_width(dash_line_width)
            cr.set_dash([4.0, 4.0])
            cr.move_to(rect.x, rect.y)
            cr.rel_line_to(rect.width, 0)
            cr.stroke()
            
        rect.y += self.padding_y + dash_line_width
        
        _width, _height = get_content_size(self.suggest_title)
        draw_text(cr, self.suggest_title, rect.x, rect.y, rect.width, _height)
        
        rect.y += _height + self.padding_y
        _width, _height = get_content_size(self.suggest_first_line)
        draw_text(cr, self.suggest_first_line, rect.x, rect.y, rect.width, _height,
                  text_color=app_theme.get_color("labelText").get_color())

        rect.y += _height + self.padding_y
        _width, _height = get_content_size(self.suggest_second_line)
        draw_text(cr, self.suggest_second_line, rect.x, rect.y, rect.width, _height,
                  text_color=app_theme.get_color("labelText").get_color())
        return True
Пример #44
0
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()
Пример #45
0
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()
Пример #46
0
    def expose_tab_switcher(self, widget, event):
        # Init.
        cr = widget.window.cairo_create()
        rect = widget.allocation

        # Draw tab line.
        cr.set_source_rgb(*color_hex_to_cairo(self.line_dcolor.get_color()))
        cr.rectangle(rect.x + self.padding_x, rect.y + self.tab_height,
                     rect.width - self.padding_x * 2, self.tab_line_height)
        cr.fill()

        # Draw tab.
        draw_start_x = rect.x + (rect.width -
                                 self.tab_width * self.tab_number) / 2
        if self.in_animiation:
            cr.rectangle(self.tab_animation_x, rect.y, self.tab_width,
                         self.tab_height)
        else:
            cr.rectangle(draw_start_x + self.tab_index * self.tab_width,
                         rect.y, self.tab_width, self.tab_height)
        cr.fill()

        # Draw tab name.
        for (tab_index, tab_item) in enumerate(self.items):
            if self.in_animiation:
                tab_name_color = app_theme.get_color("labelText").get_color()
            elif tab_index == self.tab_index:
                tab_name_color = "#FFFFFF"
            else:
                tab_name_color = app_theme.get_color("labelText").get_color()
            draw_text(
                cr,
                tab_item.title,
                draw_start_x + tab_index * self.tab_width,
                rect.y,
                self.tab_width,
                self.tab_height,
                text_size=self.tab_name_size,
                text_color=tab_name_color,
                alignment=pango.ALIGN_CENTER,
            )
Пример #47
0
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()
Пример #48
0
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)    
Пример #49
0
    def render(self, cr, rect):
        '''
        Render item.
        
        This is IconView interface, you should implement it.
        '''
        # Draw cover.

        if self.pixbuf is None:
            self.create_cover_pixbuf()

        pixbuf_x = rect.x + (rect.width - self.pixbuf.get_width()) / 2

        cr.save()
        cr.arc(pixbuf_x + self.pixbuf.get_width() / 2,
               rect.y + self.pixbuf.get_height() / 2,
               self.pixbuf.get_width() / 2, 0, 2 * math.pi)
        cr.clip()
        draw_pixbuf(cr, self.pixbuf, pixbuf_x, rect.y)
        cr.restore()

        if self.pixbuf_rect is None:
            self.pixbuf_rect = gtk.gdk.Rectangle(
                (rect.width - self.pixbuf.get_width()) / 2, 0,
                self.pixbuf.get_width(), self.pixbuf.get_height())

        if self.mask_flag:
            if self.mask_pixbuf is None:
                self.create_mask_pixbuf()
            cr.save()
            cr.arc(pixbuf_x + self.pixbuf.get_width() / 2,
                   rect.y + self.pixbuf.get_height() / 2,
                   self.pixbuf.get_width() / 2, 0, 2 * math.pi)
            cr.clip()
            draw_pixbuf(cr, self.mask_pixbuf, pixbuf_x, rect.y)
            cr.restore()

        title_rect = gtk.gdk.Rectangle(rect.x + self.padding_x,
                                       rect.y + self.pixbuf.get_height() + 5,
                                       rect.width - self.padding_x * 2, 11)
        total_rect = gtk.gdk.Rectangle(title_rect.x, title_rect.y + 16,
                                       title_rect.width, 9)

        render_text(
            cr,
            utils.xmlescape(self.title),
            title_rect,
            # app_theme.get_color("labelText").get_color(),
            "#444444",
            10)
        render_text(cr, utils.xmlescape(self.description), total_rect,
                    app_theme.get_color("labelText").get_color(), 8)
Пример #50
0
    def render_title(self, cr, rect, in_select, in_highlight):
        rect.x += self.title_padding_x
        rect.width -= self.title_padding_x * 2

        if in_highlight:
            color = app_theme.get_color("simpleSelectItem").get_color()
        else:
            color = app_theme.get_color("labelText").get_color()

        # if error:
        #     color = "#ff0000"

        content = utils.xmlescape(self.title)
        draw_text(cr,
                  content,
                  rect.x,
                  rect.y,
                  rect.width,
                  rect.height,
                  text_size=9,
                  text_color=color,
                  alignment=pango.ALIGN_LEFT)
Пример #51
0
    def __init__(self):
        super(JobsManager, self).__init__(spacing=6)
        self.connect("expose-event", self.draw_bg_mask)

        self.jobs_label = Label("0 " + _("jobs waiting!"),
                                app_theme.get_color("labelText"), 8)
        self.jobs_label.set_size_request(150, 12)
        label_align = gtk.Alignment()
        label_align.set(0.5, 0.5, 0, 0)
        label_align.set_padding(0, 0, 10, 0)
        label_align.add(self.jobs_label)

        self.progress_label = Label("", app_theme.get_color("labelText"), 8)
        self.progress_label.set_size_request(500, 10)
        self.__paused = False
        btn_cancel = self.__create_simple_button("stop", self.stop)
        self.__btn_pause = self.__create_begin_button(self.pause)

        btn_pause_align = gtk.Alignment()
        btn_pause_align.set(0.5, 0.5, 0, 0)
        btn_pause_align.add(self.__btn_pause)

        btn_cancel_align = gtk.Alignment()
        btn_cancel_align.set(0.5, 0.5, 0, 0)
        btn_cancel_align.set_padding(0, 0, 0, 10)
        btn_cancel_align.add(btn_cancel)

        self.pack_start(label_align, False, False)
        # self.pack_start(self.throbber, False, False)
        self.pack_start(self.progress_label, True, True)
        self.pack_start(btn_pause_align, False, False)
        self.pack_start(btn_cancel_align, False, False)
        self.show_all()
        self.set_no_show_all(True)
        self.hide()

        self.jobs_label.hide_all()
Пример #52
0
    def render_title(self, cr, rect):
        # Draw select background.
        if self.is_select:
            draw_pixbuf(cr, self.hover_bg, rect.x, rect.y)
            text_color = app_theme.get_color("simpleItemHighlight").get_color()
        elif self.is_hover:
            text_color = app_theme.get_color("simpleItemHighlight").get_color()
        else:
            text_color = app_theme.get_color("labelText").get_color()

        draw_text(cr,
                  self.title,
                  rect.x,
                  rect.y,
                  rect.width,
                  rect.height,
                  text_size=10,
                  text_color=text_color,
                  alignment=pango.ALIGN_CENTER)

        if self.has_icon:
            draw_pixbuf(
                cr, self.selected_pixbuf, rect.x + 10,
                rect.y + (rect.height - self.selected_pixbuf.get_height()) / 2)
Пример #53
0
 def render(self, cr, rect):
     if not self.hover_flag:
         color = "#333333"
         self.underline = False
     else:
         if self.has_underline:
             self.underline = True
         color = app_theme.get_color("simpleItemHighlight").get_color()
     draw_text(cr,
               self.title,
               rect.x,
               rect.y,
               rect.width,
               rect.height,
               text_color=color,
               underline=self.underline)
Пример #54
0
 def render_version(self, cr, rect):    
     if self.is_select:    
         draw_single_mask(cr, rect.x, rect.y, rect.width, rect.height, "globalItemSelect")
     elif self.is_hover:
         draw_single_mask(cr, rect.x, rect.y, rect.width, rect.height, "globalItemHover")
     
     if self.is_select:
         text_color = "#FFFFFF"
     else:    
         text_color = app_theme.get_color("labelText").get_color()
         
     draw_text(cr, self.pluginfo["Version"], rect.x + self.draw_padding_x, 
               rect.y, rect.width - self.draw_padding_x * 2,
               rect.height, text_size=10, 
               text_color = text_color,
               alignment=pango.ALIGN_LEFT)