def get_playlist_headers(self): """ Return playlist headers @return items as [(int, str)] """ lists = ShownPlaylists.get() if lists: lists.append((Type.SEPARATOR, "", "")) return lists
def get_playlist_headers(self): """ Return playlist headers @return items as [(int, str)] """ lists = ShownPlaylists.get() if lists and\ App().settings.get_enum("sidebar-content") !=\ SidebarContent.DEFAULT: lists.append((Type.SEPARATOR, "", "")) return lists
def __init__(self, widget, mask, header=False): """ Init menu @param widget as Gtk.Widget @param mask as SelectionListMask @param header as bool """ Gio.Menu.__init__(self) self.__widget = widget self.__mask = mask if header: from lollypop.menu_header import MenuHeader if mask & SelectionListMask.PLAYLISTS: label = _("Playlists") icon_name = "emblem-documents-symbolic" else: label = _("Sidebar") icon_name = "org.gnome.Lollypop-sidebar-symbolic" self.append_item(MenuHeader(label, icon_name)) # Options if not App().window.folded and\ not mask & SelectionListMask.PLAYLISTS: options_menu = Gio.Menu() action = Gio.SimpleAction.new_stateful( "show_label", None, App().settings.get_value("show-sidebar-labels")) action.connect("change-state", self.__on_show_label_change_state) App().add_action(action) options_menu.append(_("Show text"), "app.show_label") self.append_section(_("Options"), options_menu) # Shown menu shown_menu = Gio.Menu() if mask & SelectionListMask.PLAYLISTS: lists = ShownPlaylists.get(True) wanted = App().settings.get_value("shown-playlists") else: mask |= SelectionListMask.COMPILATIONS lists = ShownLists.get(mask, True) wanted = App().settings.get_value("shown-album-lists") for item in lists: if item[0] == Type.SEPARATOR: continue exists = item[0] in wanted encoded = sha256(item[1].encode("utf-8")).hexdigest() action = Gio.SimpleAction.new_stateful( encoded, None, GLib.Variant.new_boolean(exists)) action.connect("change-state", self.__on_shown_change_state, item[0]) App().add_action(action) shown_menu.append(item[1], "app.%s" % encoded) # Translators: shown => items self.append_section(_("Sections"), shown_menu)
def __init__(self, widget, rowid, mask): """ Init menu @param widget as Gtk.Widget @param rowid as int @param mask as SelectionListMask """ Popover.__init__(self) self.__widget = widget self.__rowid = rowid self.__mask = mask menu = Gio.Menu() self.bind_model(menu, None) # Startup menu if rowid in [Type.POPULARS, Type.RADIOS, Type.LOVED, Type.ALL, Type.RECENTS, Type.YEARS, Type.RANDOMS, Type.NEVER, Type.PLAYLISTS, Type.ARTISTS] and\ not App().settings.get_value("save-state"): startup_menu = Gio.Menu() if self.__mask & SelectionListMask.LIST_TWO: exists = rowid in App().settings.get_value("startup-two-ids") else: exists = rowid in App().settings.get_value("startup-one-ids") action = Gio.SimpleAction.new_stateful( "default_selection_id", None, GLib.Variant.new_boolean(exists)) App().add_action(action) action.connect("change-state", self.__on_default_change_state, rowid) item = Gio.MenuItem.new(_("Default on startup"), "app.default_selection_id") startup_menu.append_item(item) menu.insert_section(0, _("Startup"), startup_menu) # Shown menu shown_menu = Gio.Menu() if mask & SelectionListMask.PLAYLISTS: lists = ShownPlaylists.get(True) wanted = App().settings.get_value("shown-playlists") else: lists = ShownLists.get(mask, True) wanted = App().settings.get_value("shown-album-lists") for item in lists: exists = item[0] in wanted encoded = sha256(item[1].encode("utf-8")).hexdigest() action = Gio.SimpleAction.new_stateful( encoded, None, GLib.Variant.new_boolean(exists)) action.connect("change-state", self.__on_shown_change_state, item[0]) App().add_action(action) shown_menu.append(item[1], "app.%s" % encoded) # Translators: shown => items menu.insert_section(1, _("Shown"), shown_menu)
def populate(self, items): """ Populate items @param items """ if self.__obj is not None: new_items = [] for item in items: if not App().playlists.get_smart(item): new_items.append(item) items = new_items else: items = [i[0] for i in ShownPlaylists.get()] + items FlowBoxView.populate(self, items)
def populate(self, items=None): """ Populate items @param items """ if self.__obj is not None: new_items = [] for item in App().playlists.get_ids(): if not App().playlists.get_smart(item): new_items.append(item) items = new_items elif items is None: items = [i[0] for i in ShownPlaylists.get()] items += App().playlists.get_ids() FlowBoxView.populate(self, items)
def get_name(self, playlist_id): """ Get playlist name @param playlist_id as int @return playlist name as str """ if playlist_id < 0: for (id, name, sortname) in ShownPlaylists.get(True): if id == playlist_id: return name with SqlCursor(self) as sql: result = sql.execute("SELECT name\ FROM playlists\ WHERE rowid=?", (playlist_id,)) v = result.fetchone() if v is not None: return v[0] return ""
def __on_shown_change_state(self, action, variant, rowid): """ Set action value @param action as Gio.SimpleAction @param variant as GLib.Variant @param rowid as int """ action.set_state(variant) if self.__mask & SelectionListMask.PLAYLISTS: option = "shown-playlists" else: option = "shown-album-lists" wanted = list(App().settings.get_value(option)) if variant: wanted.append(rowid) else: wanted.remove(rowid) App().settings.set_value(option, GLib.Variant("ai", wanted)) if self.__mask & SelectionListMask.PLAYLISTS: items = ShownPlaylists.get(True) else: items = ShownLists.get(self.__mask, True) if variant and rowid != Type.USB_DISKS: for item in items: if item[0] == rowid: self.__widget.add_value(item) break else: self.__widget.remove_value(rowid) if self.__mask & SelectionListMask.LIST_ONE: ids = App().settings.get_value("startup-one-ids") if rowid in ids: ids.remove(rowid) App().settings.set_value("startup-one-ids", GLib.Variant("ai", ids)) App().settings.set_value("startup-two-ids", GLib.Variant("ai", [])) self.popdown()
def __init__(self, widget, rowid, mask): """ Init menu @param widget as Gtk.Widget @param rowid as int @param mask as SelectionListMask """ Gio.Menu.__init__(self) self.__widget = widget self.__rowid = rowid self.__mask = mask section = None if not App().devices and mask & (SelectionListMask.LIST_ONE | SelectionListMask.LIST_TWO | SelectionListMask.ARTISTS_VIEW): section = Gio.Menu() section.append(_("No connected devices"), "app.none") elif mask & SelectionListMask.PLAYLISTS: from lollypop.menu_sync import SyncPlaylistsMenu section = SyncPlaylistsMenu(rowid) elif rowid > 0: from lollypop.menu_sync import SyncAlbumsMenu if mask & SelectionListMask.GENRES: section = SyncAlbumsMenu([rowid], []) else: section = SyncAlbumsMenu([], [rowid]) elif rowid == Type.ALL or rowid == Type.ARTISTS: from lollypop.menu_sync import SyncAlbumsMenu section = SyncAlbumsMenu([], []) if section is not None: self.append_section(_("Synchronization"), section) # Startup menu if not App().settings.get_value("save-state") and\ (rowid in [Type.POPULARS, Type.RADIOS, Type.LOVED, Type.ALL, Type.RECENTS, Type.YEARS, Type.RANDOMS, Type.NEVER, Type.GENRES, Type.PLAYLISTS, Type.ARTISTS, Type.WEB] or mask & SelectionListMask.PLAYLISTS): startup_menu = Gio.Menu() if self.__mask & SelectionListMask.LIST_TWO: exists = rowid in App().settings.get_value("startup-two-ids") else: exists = rowid in App().settings.get_value("startup-one-ids") action = Gio.SimpleAction.new_stateful( "default_selection_id", None, GLib.Variant.new_boolean(exists)) App().add_action(action) action.connect("change-state", self.__on_default_change_state, rowid) item = Gio.MenuItem.new(_("Default on startup"), "app.default_selection_id") startup_menu.append_item(item) self.append_section(_("Startup"), startup_menu) # Shown menu if mask & (SelectionListMask.LIST_ONE | SelectionListMask.LIST_TWO | SelectionListMask.ARTISTS_VIEW) and rowid < 0: shown_menu = Gio.Menu() if mask & SelectionListMask.PLAYLISTS: lists = ShownPlaylists.get(True) wanted = App().settings.get_value("shown-playlists") else: mask |= SelectionListMask.COMPILATIONS lists = ShownLists.get(mask, True) wanted = App().settings.get_value("shown-album-lists") for item in lists: exists = item[0] in wanted encoded = sha256(item[1].encode("utf-8")).hexdigest() action = Gio.SimpleAction.new_stateful( encoded, None, GLib.Variant.new_boolean(exists)) action.connect("change-state", self.__on_shown_change_state, item[0]) App().add_action(action) shown_menu.append(item[1], "app.%s" % encoded) # Translators: shown => items self.append_section(_("Sections"), shown_menu)
def load(): items = [i[0] for i in ShownPlaylists.get()] items += App().playlists.get_ids() return items