diff --git a/bin/ffx/show_details_screen.py b/bin/ffx/show_details_screen.py index 06b6ed6..90695be 100644 --- a/bin/ffx/show_details_screen.py +++ b/bin/ffx/show_details_screen.py @@ -15,6 +15,9 @@ from .pattern_delete_screen import PatternDeleteScreen from .show_controller import ShowController from .pattern_controller import PatternController +from .show_descriptor import ShowDescriptor + + # Screen[dict[int, str, int]] class ShowDetailsScreen(Screen): @@ -79,7 +82,7 @@ class ShowDetailsScreen(Screen): self.__sc = ShowController(context = self.context) self.__pc = PatternController(context = self.context) - self.show_obj = self.__sc.getShowDescriptor(showId) if showId is not None else {} + self.__showDescriptor = self.__sc.getShowDescriptor(showId) if showId is not None else None def loadPatterns(self, show_id : int): @@ -98,18 +101,18 @@ class ShowDetailsScreen(Screen): def on_mount(self): - if self.show_obj: + if not self.__showDescriptor is None: - self.query_one("#id_wdg", Static).update(str(self.show_obj['id'])) - self.query_one("#name_input", Input).value = str(self.show_obj['name']) - self.query_one("#year_input", Input).value = str(self.show_obj['year']) + self.query_one("#id_wdg", Static).update(str(self.__showDescriptor.getId())) + self.query_one("#name_input", Input).value = str(self.__showDescriptor.getName()) + self.query_one("#year_input", Input).value = str(self.__showDescriptor.getYear()) - self.query_one("#index_season_digits_input", Input).value = str(self.show_obj['index_season_digits']) - self.query_one("#index_episode_digits_input", Input).value = str(self.show_obj['index_episode_digits']) - self.query_one("#indicator_season_digits_input", Input).value = str(self.show_obj['indicator_season_digits']) - self.query_one("#indicator_episode_digits_input", Input).value = str(self.show_obj['indicator_episode_digits']) + self.query_one("#index_season_digits_input", Input).value = str(self.__showDescriptor.getIndexSeasonDigits()) + self.query_one("#index_episode_digits_input", Input).value = str(self.__showDescriptor.getIndexEpisodeDigits()) + self.query_one("#indicator_season_digits_input", Input).value = str(self.__showDescriptor.getIndicatorSeasonDigits()) + self.query_one("#indicator_episode_digits_input", Input).value = str(self.__showDescriptor.getIndicatorEpisodeDigits()) - showId = int(self.show_obj['id']) + showId = int(self.__showDescriptor.getId()) #raise click.ClickException(f"show_id {showId}") patternList = self.loadPatterns(showId) # raise click.ClickException(f"patternList {patternList}") @@ -138,7 +141,7 @@ class ShowDetailsScreen(Screen): if row_key is not None: selected_row_data = self.patternTable.get_row(row_key) - selectedPattern['show_id'] = self.show_obj['id'] + selectedPattern['show_id'] = self.__showDescriptor.getId() selectedPattern['pattern'] = str(selected_row_data[0]) except CellDoesNotExist: @@ -151,8 +154,8 @@ class ShowDetailsScreen(Screen): def action_add_pattern(self): - if self.show_obj: - self.app.push_screen(PatternDetailsScreen(showId = self.show_obj['id']), self.handle_add_pattern) # <- + if not self.__showDescriptor is None: + self.app.push_screen(PatternDetailsScreen(showId = self.__showDescriptor.getId()), self.handle_add_pattern) # <- def handle_add_pattern(self, screenResult): @@ -172,7 +175,7 @@ class ShowDetailsScreen(Screen): if selectedPatternId is None: raise click.ClickException(f"ShowDetailsScreen.action_edit_pattern(): Pattern to edit has no id") - self.app.push_screen(PatternDetailsScreen(patternId = selectedPatternId, showId = self.show_obj['id']), self.handle_edit_pattern) # <- + self.app.push_screen(PatternDetailsScreen(patternId = selectedPatternId, showId = self.__showDescriptor.getId()), self.handle_edit_pattern) # <- def handle_edit_pattern(self, screenResult): @@ -197,7 +200,7 @@ class ShowDetailsScreen(Screen): if selectedPatternId is None: raise click.ClickException(f"ShowDetailsScreen.action_remove_pattern(): Pattern to remove has no id") - self.app.push_screen(PatternDeleteScreen(patternId = selectedPatternId, showId = self.show_obj['id']), self.handle_remove_pattern) + self.app.push_screen(PatternDeleteScreen(patternId = selectedPatternId, showId = self.__showDescriptor.getId()), self.handle_remove_pattern) def handle_remove_pattern(self, screenResult): @@ -225,11 +228,11 @@ class ShowDetailsScreen(Screen): with Grid(): # 1 - yield Static("Show" if self.show_obj else "New Show", id="toplabel", classes="five") + yield Static("Show" if not self.__showDescriptor is None else "New Show", id="toplabel", classes="five") # 2 yield Static("ID") - if self.show_obj: + if not self.__showDescriptor is None: yield Static("", id="id_wdg", classes="four") else: yield Input(type="integer", id="id_wdg", classes="four") @@ -282,22 +285,23 @@ class ShowDetailsScreen(Screen): def getShowDescriptorFromInput(self): - showDescriptor = {} - - if self.show_obj: - showDescriptor['id'] = int(self.show_obj['id']) + kwargs = {} + + if self.__showDescriptor: + kwargs[ShowDescriptor.ID_KEY] = int(self.__showDescriptor.getId()) else: - showDescriptor['id'] = int(self.query_one("#id_wdg", Input).value) + kwargs[ShowDescriptor.ID_KEY] = int(self.query_one("#id_wdg", Input).value) - showDescriptor['name'] = str(self.query_one("#name_input", Input).value) - showDescriptor['year'] = int(self.query_one("#year_input", Input).value) - showDescriptor['index_season_digits'] = int(self.query_one("#index_season_digits_input", Input).value) - showDescriptor['index_episode_digits'] = int(self.query_one("#index_episode_digits_input", Input).value) - showDescriptor['indicator_season_digits'] = int(self.query_one("#indicator_season_digits_input", Input).value) - showDescriptor['indicator_episode_digits'] = int(self.query_one("#indicator_episode_digits_input", Input).value) + kwargs[ShowDescriptor.NAME_KEY] = str(self.query_one("#name_input", Input).value) + kwargs[ShowDescriptor.YEAR_KEY] = int(self.query_one("#year_input", Input).value) + + kwargs[ShowDescriptor.INDEX_SEASON_DIGITS_KEY] = int(self.query_one("#index_season_digits_input", Input).value) + kwargs[ShowDescriptor.INDEX_EPISODE_DIGITS_KEY] = int(self.query_one("#index_episode_digits_input", Input).value) + kwargs[ShowDescriptor.INDICATOR_SEASON_DIGITS_KEY] = int(self.query_one("#indicator_season_digits_input", Input).value) + kwargs[ShowDescriptor.INDICATOR_EPISODE_DIGITS_KEY] = int(self.query_one("#indicator_episode_digits_input", Input).value) - return showDescriptor + return ShowDescriptor(**kwargs) # Event handler for button press