def __init__(self, playlist, udi=None): TreeItem.__init__(self) # Init playlist. self.playlist = playlist self.udi = udi self.title = self.playlist.get_name() self.song_view = SongView() self.song_view.add_songs(self.playlist.get_songs()) self.song_view.connect("begin-add-items", lambda w: self.switch_it()) self.song_view.connect("empty-items", lambda w: self.switch_it(False)) self.song_view.set_size_request(PLAYLIST_WIDTH, -1) # Init params. self.entry = None self.item_height = 26 self.item_width = CATEGROYLIST_WIDTH self.ENTRY_COLUMN = 0 self.is_double_click = False self.is_highlight = False self.text_padding = 15 # create jobs box. self.main_box = gtk.VBox() self.jobs_main_box = LocalEmpty(self.song_view.on_drag_data_received, self.song_view.recursion_add_dir) self.jobs_main_box.set_size_request(PLAYLIST_WIDTH, -1)
class ListTreeItem(TreeItem): def __init__(self, playlist, udi=None): TreeItem.__init__(self) # Init playlist. self.playlist = playlist self.udi = udi self.title = self.playlist.get_name() self.song_view = SongView() self.song_view.add_songs(self.playlist.get_songs()) self.song_view.connect("begin-add-items", lambda w: self.switch_it()) self.song_view.connect("empty-items", lambda w: self.switch_it(False)) self.song_view.set_size_request(PLAYLIST_WIDTH, -1) # Init params. self.entry = None self.item_height = 26 self.item_width = CATEGROYLIST_WIDTH self.ENTRY_COLUMN = 0 self.is_double_click = False self.is_highlight = False self.text_padding = 15 # create jobs box. self.main_box = gtk.VBox() self.jobs_main_box = LocalEmpty(self.song_view.on_drag_data_received, self.song_view.recursion_add_dir) self.jobs_main_box.set_size_request(PLAYLIST_WIDTH, -1) def get_list_widget(self): if self.get_songs(): switch_box(self.main_box, self.song_view) else: switch_box(self.main_box, self.jobs_main_box) return self.main_box def switch_it(self, scrolled_window=True): if scrolled_window: switch_box(self.main_box, self.song_view) else: switch_box(self.main_box, self.jobs_main_box) def get_songs(self): if self.song_view: return self.song_view.get_songs() def get_title(self): return self.title def set_title(self, value): self.title = value def emit_redraw_request(self): if self.redraw_request_callback: self.redraw_request_callback(self) def get_height(self): return self.item_height def get_column_widths(self): return (self.item_width, ) def get_column_renders(self): return (self.render_title,) def render_title(self, cr, rect): if self.is_highlight: draw_single_mask(cr, rect.x + 1, rect.y, rect.width - 3, rect.height, "globalItemHighlight") elif self.is_hover: draw_single_mask(cr, rect.x + 1, rect.y, rect.width - 3, rect.height, "globalItemHover") if self.is_highlight: text_color = "#FFFFFF" else: text_color = app_theme.get_color("labelText").get_color() rect.x += self.text_padding rect.width -= self.text_padding * 2 draw_text(cr, self.title, rect.x, rect.y, rect.width, rect.height, text_size=9, text_color = text_color, alignment=pango.ALIGN_LEFT) 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) def unselect(self): self.is_select = False self.emit_redraw_request() def select(self): self.is_select = True self.emit_redraw_request() def highlight(self): self.is_highlight = True self.emit_redraw_request() def unhighlight(self): self.is_highlight = False self.emit_redraw_request() def unhover(self, column, offset_x, offset_y): self.is_hover = False self.emit_redraw_request() def hover(self, column, offset_x, offset_y): self.is_hover = True self.emit_redraw_request() def single_click(self, column, offset_x, offset_y): self.is_double_click = False self.emit_redraw_request() def double_click(self, column, offset_x, offset_y): self.is_double_click = True