예제 #1
0
    def __init__(self, app, list_name):
        super().__init__()
        self.app = app
        self.list_name = list_name

        # name, artist, album, rid, artistid, albumid
        self.liststore = Gtk.ListStore(str, str, str, int, int, int)

        self.treeview = Gtk.TreeView(model=self.liststore)
        self.selection = self.treeview.get_selection()
        self.treeview.set_search_column(0)
        self.treeview.props.headers_clickable = True
        self.treeview.props.headers_visible = True
        self.treeview.props.reorderable = True
        self.treeview.props.rules_hint = True
        self.treeview.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
        self.treeview.enable_model_drag_source(Gdk.ModifierType.BUTTON1_MASK,
                                               DRAG_TARGETS, DRAG_ACTIONS)
        self.treeview.connect('drag-data-get', self.on_drag_data_get)
        self.treeview.enable_model_drag_dest(DRAG_TARGETS, DRAG_ACTIONS)
        self.treeview.connect('drag-data-received', self.on_drag_data_received)
        self.treeview.connect('row_activated', self.on_treeview_row_activated)
        self.add(self.treeview)

        song_cell = Gtk.CellRendererText()
        song_col = TreeViewColumnText(_('Title'), song_cell, text=0)
        self.treeview.append_column(song_col)

        artist_cell = Gtk.CellRendererText()
        artist_col = TreeViewColumnText(_('Aritst'), artist_cell, text=1)
        self.treeview.append_column(artist_col)

        album_cell = Gtk.CellRendererText()
        album_col = TreeViewColumnText(_('Album'), album_cell, text=2)
        self.treeview.append_column(album_col)

        delete_cell = Gtk.CellRendererPixbuf(icon_name='user-trash-symbolic')
        self.delete_col = Widgets.TreeViewColumnIcon(_('Delete'), delete_cell)
        self.treeview.append_column(self.delete_col)
        self.treeview.connect('key-press-event', self.on_treeview_key_pressed)
        self.treeview.connect('button-press-event',
                              self.on_treeview_button_pressed)
        self.treeview.connect('button-release-event',
                              self.on_treeview_button_released)

        self.popup_menu = Gtk.Menu()
        save_as_menu = Gtk.MenuItem(_('Save As..'))
        save_as_menu.connect('activate', self.on_save_as_menu_activated)
        self.popup_menu.append(save_as_menu)
        sep = Gtk.SeparatorMenuItem()
        self.popup_menu.append(sep)
        delete_song_menu = Gtk.MenuItem(_('Delete from Playlist'))
        delete_song_menu.connect('activate',
                                 self.on_delete_song_menu_activated)
        self.popup_menu.append(delete_song_menu)
        delete_cache_menu = Gtk.MenuItem(_('Delete Local Cache'))
        delete_cache_menu.connect('activate',
                                  self.on_delete_cache_menu_activated)
        self.popup_menu.append(delete_cache_menu)