diff --git a/bin/ffx/media_details_screen.py b/bin/ffx/media_details_screen.py index 56b68ca..4e8d925 100644 --- a/bin/ffx/media_details_screen.py +++ b/bin/ffx/media_details_screen.py @@ -24,6 +24,7 @@ from ffx.model.track import Track from ffx.track_disposition import TrackDisposition from ffx.track_descriptor import TrackDescriptor +from ffx.show_descriptor import ShowDescriptor from textual.widgets._data_table import CellDoesNotExist @@ -456,7 +457,7 @@ class MediaDetailsScreen(Screen): return None - def getSelectedShow(self): + def getSelectedShowDescriptor(self): try: # Fetch the currently selected row when 'Enter' is pressed @@ -467,31 +468,32 @@ class MediaDetailsScreen(Screen): selected_row_data = self.showsTable.get_row(row_key) try: - #TODO: Put in a ShowDescriptor and harmonize with PatternController.addPattern() - # and ShowDetailsScreen.getShowDescriptorFromInput() - selectedShow = {} - selectedShow['id'] = int(selected_row_data[0]) - selectedShow['name'] = str(selected_row_data[1]) - selectedShow['year'] = int(selected_row_data[2]) - return selectedShow + kwargs = {} + + kwargs[ShowDescriptor.ID_KEY] = int(selected_row_data[0]) + kwargs[ShowDescriptor.NAME_KEY] = str(selected_row_data[1]) + kwargs[ShowDescriptor.YEAR_KEY] = int(selected_row_data[2]) + + return ShowDescriptor(**kwargs) + except ValueError: - return {} + return None except CellDoesNotExist: return None - def handle_new_pattern(self, screenResult): + def handle_new_pattern(self, showDescriptor: ShowDescriptor): - show = (screenResult['id'], screenResult['name'], screenResult['year']) + show = (showDescriptor.getId(), showDescriptor.getName(), showDescriptor.getYear()) self.showsTable.add_row(*map(str, show)) - showRowIndex = self.getRowIndexFromShowId(screenResult['id']) + showRowIndex = self.getRowIndexFromShowId(showDescriptor.getId()) if showRowIndex is not None: self.showsTable.move_cursor(row=showRowIndex) patternDescriptor = {} - patternDescriptor['show_id'] = screenResult['id'] + patternDescriptor['show_id'] = showDescriptor.getId() patternDescriptor['pattern'] = self.getPatternFromInput() self.__pc.addPattern(patternDescriptor) @@ -505,14 +507,14 @@ class MediaDetailsScreen(Screen): if not self.__currentMediaDescriptor.checkDefaultAndForcedDispositions(): return - selectedShow = self.getSelectedShow() + selectedShowDescriptor = self.getSelectedShowDescriptor() #HINT: Callback is invoked after this method has exited. As a workaround the callback is executed directly # from here with a mock-up screen result containing the necessary part of keys to perform correctly. - if not selectedShow: + if selectedShowDescriptor is None: self.app.push_screen(ShowDetailsScreen(), self.handle_new_pattern) else: - self.handle_new_pattern(selectedShow) + self.handle_new_pattern(selectedShowDescriptor) def action_update_pattern(self): @@ -522,7 +524,7 @@ class MediaDetailsScreen(Screen): inputPattern = self.getPatternFromInput() if self.__currentPattern.getPattern() != inputPattern: patternDescriptor = {} - patternDescriptor['show_id'] = self.getSelectedShow()['id'] + patternDescriptor['show_id'] = self.getSelectedShowDescriptor().getId() patternDescriptor['pattern'] = inputPattern self.__pc.updatePattern(self.__currentPattern.getId(), patternDescriptor)