class QueuePage(NotebookPage): menu_provider_name = 'queue-tab-context' def __init__(self, container, player): NotebookPage.__init__(self) self.container = container self.player = player self.playlist = player.queue # a queue is a playlist object... self.swindow = gtk.ScrolledWindow() self.swindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.pack_start(self.swindow, True, True) self.view = PlaylistView(self.player.queue, self.player) self.view.dragdrop_copyonly = True self.swindow.add(self.view) event.add_callback(self.on_length_changed, 'playlist_current_position_changed', self.player.queue) event.add_callback(self.on_length_changed, "playlist_tracks_added", self.player.queue) event.add_callback(self.on_length_changed, "playlist_tracks_removed", self.player.queue) self.show_all() def on_length_changed(self, *args): self.name_changed() if len(self.player.queue) == 0: self.tab.set_closable(True) else: self.container.show_queue(switch=False) self.tab.set_closable(False) ## NotebookPage API ## def focus(self): self.view.grab_focus() def get_page_name(self): qlen = self.player.queue.queue_length() if qlen == -1: return _("Queue") else: return _("Queue (%d)") % qlen def set_tab(self, tab): NotebookPage.set_tab(self, tab) tab.set_closable(not self.do_closing()) def do_closing(self): """ Allows closing only if the queue is empty """ return len(self.player.queue) != 0
class QueuePage(PlaylistPageBase): def __init__(self, container, player): PlaylistPageBase.__init__(self) self.plcontainer = container self.player = player self.playlist = player.queue # a queue is a playlist object... self.swindow = Gtk.ScrolledWindow() self.swindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) self.pack_start(self.swindow, True, True, 0) self.view = PlaylistView(self.player.queue, self.player) self.view.dragdrop_copyonly = True self.swindow.add(self.view) event.add_ui_callback(self.on_length_changed, 'playlist_current_position_changed', self.player.queue) event.add_ui_callback(self.on_length_changed, "playlist_tracks_added", self.player.queue) event.add_ui_callback(self.on_length_changed, "playlist_tracks_removed", self.player.queue) self.show_all() def on_length_changed(self, *args): self.name_changed() if len(self.player.queue) == 0: self.tab.set_closable(True) else: self.plcontainer.show_queue(switch=False) self.tab.set_closable(False) ## NotebookPage API ## def focus(self): self.view.grab_focus() def get_page_name(self): qlen = self.player.queue.queue_length() if qlen == -1: return _("Queue") else: return _("Queue (%d)") % qlen def set_tab(self, tab): super(QueuePage, self).set_tab(tab) tab.set_closable(not self.do_closing()) def do_closing(self): """ Allows closing only if the queue is empty """ return len(self.player.queue) != 0 ## End NotebookPage ## def on_saveas(self): exaile = main.exaile() name = dialogs.ask_for_playlist_name( exaile.gui.main.window, exaile.playlists) if name is not None: pl = playlist.Playlist(name, self.playlist[:]) exaile.playlists.save_playlist(pl) self.plcontainer.create_tab_from_playlist(pl)