From f20d89af5b68408c3bc1fa5e967708f2bb1e91c0 Mon Sep 17 00:00:00 2001 From: JISAUAY Date: Wed, 22 Jan 2025 15:18:56 -0600 Subject: [PATCH] trying to use tabs and stuff, maybe will try screens --- textual-test.py | 129 +++++++++++++++++++++++++++++++----------------- textual.log | 72 +-------------------------- 2 files changed, 84 insertions(+), 117 deletions(-) diff --git a/textual-test.py b/textual-test.py index 1d60380..7ed3089 100644 --- a/textual-test.py +++ b/textual-test.py @@ -17,7 +17,7 @@ import SubSonic from textual import on, events from textual.app import App, ComposeResult -from textual.widgets import Footer, Header, OptionList, DataTable +from textual.widgets import Footer, Header, OptionList, DataTable, Tabs, Tab, TabbedContent, TabPane from textual.widgets.option_list import Option u = 'pseudo' @@ -35,9 +35,9 @@ class Menus(Enum): class TextualSubpyPlayer(App): - BINDINGS = [ - ('backspace', 'menu_back()', 'Go back a menu') - ] + # BINDINGS = [ + # ('backspace', 'menu_back()', 'Go back a menu') + # ] artists: list[SubSonic.Artist] selectedArtist: SubSonic.Artist @@ -47,35 +47,72 @@ class TextualSubpyPlayer(App): currentMenu: Menus lastMenu: Menus + last_menu_type: any + def compose(self) -> ComposeResult: self.currentMenu = Menus.MAIN self.lastMenu = Menus.MAIN - yield OptionList( - Option("Browse Artists", id="BrowseArtists"), - Option("Browse Albums"), - Option("Browse Songs"), - Option("Browse Playlists"), - id=Menus.MAIN.value - ) + self.last_menu_type = None - async def action_menu_back(self) -> None: - logging.debug('Menu Back Called') - match self.lastMenu: - case Menus.MAIN: - logging.debug("Moving back to the main menu") - await self.main_menu() - case Menus.ARTISTALBUMS: - logging.debug("Moving back to Artist Albums") - await self.selectArtistAlbumView(self.selectedArtist.id) - case Menus.ARTISTS: - logging.debug("Moving backt to artists") - await self.selectArtistsView() - case _: - logging.debug(f"Last Menu unknown, {self.lastMenu}") + with TabbedContent(initial="Artists"): + with TabPane("Artists", id="Artists"): + yield OptionList(id="Artists") + + yield Footer() + + # yield OptionList( + # Option("Browse Artists", id="BrowseArtists"), + # Option("Browse Albums"), + # Option("Browse Songs"), + # Option("Browse Playlists"), + # id=Menus.MAIN.value + # ) + + # def on_mount(self) -> None: + # self.query_one(Tabs).allow_focus(False) + + # async def action_menu_back(self) -> None: + # logging.debug('Menu Back Called') + # match self.lastMenu: + # case Menus.MAIN: + # logging.debug("Moving back to the main menu") + # await self.main_menu() + # case Menus.ARTISTALBUMS: + # logging.debug("Moving back to Artist Albums") + # await self.selectArtistAlbumView(self.selectedArtist.id) + # case Menus.ARTISTS: + # logging.debug("Moving backt to artists") + # await self.selectArtistsView() + # case _: + # logging.debug(f"Last Menu unknown, {self.lastMenu}") def on_key(self, event: events.Key) -> None: logging.debug(f'Key Pressed {event.name}') + # def on_tabs_tab_activated(self, event: Tabs.TabActivated) -> None: + # logging.debug(f'{event.tab.id} selected') + + @on(Tabs.TabActivated) + async def artists_tab(self, event: Tabs.TabActivated) -> None: + if self.last_menu_type: + await self.query_one(self.last_menu_type).remove() + self.last_menu_type = None + + logging.debug(f'{event.tab.name} tab selected') + + id = event.tab.id + + match id: + case "Artists": + artistList: OptionList = await self._getArtistMenu() + + await self.mount(artistList) + + for artist in self.artists: + artistList.add_option(Option(artist.name, artist.id)) + + self.last_menu_type = OptionList + def action_toggle_dark(self) -> None: """An action to toggle dark mode.""" @@ -90,34 +127,34 @@ class TextualSubpyPlayer(App): return OptionList(id=Menus.ARTISTS.value) - @on(OptionList.OptionSelected, f'#{Menus.MAIN.value}') - async def selectMainMenu(self, event: OptionList.OptionSelected) -> None: - match event.option_id: - case "BrowseArtists": - logging.debug('View Artists Selected') - await self.selectArtistsView() + # @on(OptionList.OptionSelected, f'#{Menus.MAIN.value}') + # async def selectMainMenu(self, event: OptionList.OptionSelected) -> None: + # match event.option_id: + # case "BrowseArtists": + # logging.debug('View Artists Selected') + # await self.selectArtistsView() - @on(OptionList.OptionSelected, f"#{Menus.ARTISTS.value}") - async def artistSelected(self, event: OptionList.OptionSelected) -> None: - logging.debug(f'Artist {event.option.prompt} Selected') - self.lastMenu = Menus.ARTISTS + # @on(OptionList.OptionSelected, f"#{Menus.ARTISTS.value}") + # async def artistSelected(self, event: OptionList.OptionSelected) -> None: + # logging.debug(f'Artist {event.option.prompt} Selected') + # self.lastMenu = Menus.ARTISTS - for artist in self.artists: - if event.option_id == artist.id: - self.selectedArtist = artist + # for artist in self.artists: + # if event.option_id == artist.id: + # self.selectedArtist = artist - await self.selectArtistAlbumView(self.selectedArtist.id) + # await self.selectArtistAlbumView(self.selectedArtist.id) - @on(DataTable.RowSelected, "#ArtistAlbums") - async def ArtistAlbumSelected(self, event: DataTable.RowSelected) -> None: - self.lastMenu = Menus.ARTISTALBUMS - row_key = event.row_key - row = event.data_table.get_row(row_key) - logging.debug(f'Album {row[0]} Selected') + # @on(DataTable.RowSelected, "#ArtistAlbums") + # async def ArtistAlbumSelected(self, event: DataTable.RowSelected) -> None: + # self.lastMenu = Menus.ARTISTALBUMS + # row_key = event.row_key + # row = event.data_table.get_row(row_key) + # logging.debug(f'Album {row[0]} Selected') - await self.selectAlbumSongsView(row_key.value) + # await self.selectAlbumSongsView(row_key.value) async def selectAlbumSongsView(self, album_id: str) -> None: logging.debug("Setting up album songs DataTable") diff --git a/textual.log b/textual.log index c778d98..1290999 100644 --- a/textual.log +++ b/textual.log @@ -1,71 +1 @@ -[2025-01-21 09:35:07,989] DEBUG in selector_events: Using selector: EpollSelector -[2025-01-21 09:35:08,547] DEBUG in textual-test: Key Pressed enter -[2025-01-21 09:35:08,548] DEBUG in textual-test: View Artists Selected -[2025-01-21 09:35:08,550] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443 -[2025-01-21 09:35:08,732] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/getIndexes?u=pseudo&t=a97d230d3166610b05dd3a30bb673f32&s=AOT38T3U&v=1.16.1&c=testing HTTP/1.1" 200 None -[2025-01-21 09:35:09,360] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:09,601] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:09,775] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:10,338] DEBUG in textual-test: Key Pressed backspace -[2025-01-21 09:35:10,339] DEBUG in textual-test: Menu Back Called -[2025-01-21 09:35:10,339] DEBUG in textual-test: Moving back to the main menu -[2025-01-21 09:35:11,388] DEBUG in textual-test: Key Pressed enter -[2025-01-21 09:35:11,389] DEBUG in textual-test: View Artists Selected -[2025-01-21 09:35:11,399] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443 -[2025-01-21 09:35:11,572] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/getIndexes?u=pseudo&t=a28d65a7ebd5359e9c2ec2b8fa30478b&s=ZWOC8KFV&v=1.16.1&c=testing HTTP/1.1" 200 None -[2025-01-21 09:35:12,120] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:12,620] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:12,656] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:12,680] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:12,711] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:12,742] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:12,772] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:12,803] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:12,834] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:12,864] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:12,895] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:12,926] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:12,956] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:13,209] DEBUG in textual-test: Key Pressed backspace -[2025-01-21 09:35:13,210] DEBUG in textual-test: Menu Back Called -[2025-01-21 09:35:13,210] DEBUG in textual-test: Moving back to the main menu -[2025-01-21 09:35:13,779] DEBUG in textual-test: Key Pressed enter -[2025-01-21 09:35:13,780] DEBUG in textual-test: View Artists Selected -[2025-01-21 09:35:13,781] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443 -[2025-01-21 09:35:13,968] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/getIndexes?u=pseudo&t=2931ef5d69cd6d656d7f9c20b2968f1b&s=RYEHVX5N&v=1.16.1&c=testing HTTP/1.1" 200 None -[2025-01-21 09:35:14,284] DEBUG in textual-test: Key Pressed backspace -[2025-01-21 09:35:14,284] DEBUG in textual-test: Menu Back Called -[2025-01-21 09:35:14,284] DEBUG in textual-test: Moving back to the main menu -[2025-01-21 09:35:15,494] DEBUG in textual-test: Key Pressed enter -[2025-01-21 09:35:15,495] DEBUG in textual-test: View Artists Selected -[2025-01-21 09:35:15,496] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443 -[2025-01-21 09:35:15,678] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/getIndexes?u=pseudo&t=0463fa3d1d9c1537d395eb7fc64a8b24&s=IMVSYTQU&v=1.16.1&c=testing HTTP/1.1" 200 None -[2025-01-21 09:35:15,792] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:16,291] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:16,322] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:16,353] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:16,383] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:16,413] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:16,444] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:16,474] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:16,505] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:16,542] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:16,565] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:16,596] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:16,626] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:16,911] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:17,093] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:17,252] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:17,663] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:17,950] DEBUG in textual-test: Key Pressed enter -[2025-01-21 09:35:17,951] DEBUG in textual-test: Artist Daft Punk Selected -[2025-01-21 09:35:17,951] DEBUG in textual-test: Setting up album DataTable -[2025-01-21 09:35:17,957] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443 -[2025-01-21 09:35:18,134] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/getMusicDirectory?u=pseudo&t=306fc4f8690b4c90a4502e59d3e985f1&s=GKUV4BSR&v=1.16.1&c=testing&id=39bfe262546e5598284a148b1eb59d4a HTTP/1.1" 200 816 -[2025-01-21 09:35:19,063] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:19,223] DEBUG in textual-test: Key Pressed down -[2025-01-21 09:35:19,805] DEBUG in textual-test: Key Pressed backspace -[2025-01-21 09:35:19,805] DEBUG in textual-test: Menu Back Called -[2025-01-21 09:35:19,805] DEBUG in textual-test: Moving backt to artists -[2025-01-21 09:35:19,807] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443 -[2025-01-21 09:35:19,989] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/getIndexes?u=pseudo&t=151c6db8f37e0b900d3ca7c6384de338&s=SPHUFUL3&v=1.16.1&c=testing HTTP/1.1" 200 None +[2025-01-22 14:48:12,080] DEBUG in proactor_events: Using proactor: IocpProactor