class ProjectsMenu(rofi_menu.Menu): prompt = "Projects" items = [ rofi_menu.BackItem(), rofi_menu.ShellItem("Project 1", "code-insiders ~/Develop/project1"), rofi_menu.ShellItem("Project 2", "code-insiders ~/Develop/project2"), rofi_menu.Delimiter(), rofi_menu.ShellItem("Project X", "code-insiders ~/Develop/projectx"), ]
async def generate_menu_items(self, meta): """ All playlists from the current user as nested menus """ nested_playlist_menus = [rofi_menu.BackItem()] for playlist in (await spotify.async_all_playlists()): nested_playlist_menus.append( DynamicNestedMenu( sub_menu_type=TrackMenu.from_playlist, playlist=playlist, text=config.playlist_item_label(playlist), )) return nested_playlist_menus
async def generate_menu_items(self, meta): await self.update_popup_meta(meta) tracks = [] for offset, track in enumerate(self.tracks): tracks.append( TrackItem(track=track, offset=track['offset'] if track.get('offset') is not None else offset, text=track['name'])) return [rofi_menu.BackItem()] + tracks
async def generate_menu_items(self, meta): """ Generate a list of selected album items """ items = [rofi_menu.BackItem()] for artist in self.artists['items']: items.append( DynamicNestedMenu( text=artist['name'], sub_menu_type=ArtistPage, artist=artist, ) ) return items
async def generate_menu_items(self, meta): if not spotify.playback._playback: await spotify.playback.update_playback() items = [ rofi_menu.BackItem(), PlayPauseItem(), NextItem(), PreviousItem(), ShuffleItem(), RepeatItem(), ] return items
async def generate_menu_items(self, meta): items = [rofi_menu.BackItem()] # This is used to keep track of which device is active between user input meta.session.setdefault('active_device', None) # Populate items with DeviceItems for each device devices = spotify.device.all_devices() for device in devices: if device['is_active']: meta.session['active_device'] = device['id'] items.append(DeviceItem(device=device)) return items
async def generate_menu_items(self, meta): # Set the element to bring up device menu if there is no set device meta.session.setdefault('popup_device_menu', False) if not spotify.device.current_device: meta.session['popup_device_menu'] = True else: meta.session['popup_device_menu'] = False items = [rofi_menu.BackItem()] top_tracks = rofi_menu.Item(nonselectable=True, text=f"{self.artist['name']} Top Tracks:") items.append(top_tracks) top_tracks = spotify.client.artist_top_tracks(self.artist['id'])['tracks'] albums = spotify.client.artist_albums(self.artist['id'])['items'] for track in top_tracks: items.append( TrackItem( track=track ) ) artist_albums = rofi_menu.Item(nonselectable=True, text=f"{self.artist['name']} Albums:") items.append(artist_albums) for album in albums: items.append( DynamicNestedMenu( text=substitute_pango_escape(album['name']), sub_menu_type=TrackMenu.from_album, album=album, ) ) return items