click-textual
Javanaut 12 months ago
parent 467977c81c
commit 1620638110

@ -24,6 +24,7 @@ from ffx.model.track import Track
from ffx.track_disposition import TrackDisposition from ffx.track_disposition import TrackDisposition
from ffx.track_descriptor import TrackDescriptor from ffx.track_descriptor import TrackDescriptor
from ffx.show_descriptor import ShowDescriptor
from textual.widgets._data_table import CellDoesNotExist from textual.widgets._data_table import CellDoesNotExist
@ -456,7 +457,7 @@ class MediaDetailsScreen(Screen):
return None return None
def getSelectedShow(self): def getSelectedShowDescriptor(self):
try: try:
# Fetch the currently selected row when 'Enter' is pressed # 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) selected_row_data = self.showsTable.get_row(row_key)
try: try:
#TODO: Put in a ShowDescriptor and harmonize with PatternController.addPattern() kwargs = {}
# and ShowDetailsScreen.getShowDescriptorFromInput()
selectedShow = {} kwargs[ShowDescriptor.ID_KEY] = int(selected_row_data[0])
selectedShow['id'] = int(selected_row_data[0]) kwargs[ShowDescriptor.NAME_KEY] = str(selected_row_data[1])
selectedShow['name'] = str(selected_row_data[1]) kwargs[ShowDescriptor.YEAR_KEY] = int(selected_row_data[2])
selectedShow['year'] = int(selected_row_data[2])
return selectedShow return ShowDescriptor(**kwargs)
except ValueError: except ValueError:
return {} return None
except CellDoesNotExist: except CellDoesNotExist:
return None 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)) self.showsTable.add_row(*map(str, show))
showRowIndex = self.getRowIndexFromShowId(screenResult['id']) showRowIndex = self.getRowIndexFromShowId(showDescriptor.getId())
if showRowIndex is not None: if showRowIndex is not None:
self.showsTable.move_cursor(row=showRowIndex) self.showsTable.move_cursor(row=showRowIndex)
patternDescriptor = {} patternDescriptor = {}
patternDescriptor['show_id'] = screenResult['id'] patternDescriptor['show_id'] = showDescriptor.getId()
patternDescriptor['pattern'] = self.getPatternFromInput() patternDescriptor['pattern'] = self.getPatternFromInput()
self.__pc.addPattern(patternDescriptor) self.__pc.addPattern(patternDescriptor)
@ -505,14 +507,14 @@ class MediaDetailsScreen(Screen):
if not self.__currentMediaDescriptor.checkDefaultAndForcedDispositions(): if not self.__currentMediaDescriptor.checkDefaultAndForcedDispositions():
return return
selectedShow = self.getSelectedShow() selectedShowDescriptor = self.getSelectedShowDescriptor()
#HINT: Callback is invoked after this method has exited. As a workaround the callback is executed directly #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. # 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) self.app.push_screen(ShowDetailsScreen(), self.handle_new_pattern)
else: else:
self.handle_new_pattern(selectedShow) self.handle_new_pattern(selectedShowDescriptor)
def action_update_pattern(self): def action_update_pattern(self):
@ -522,7 +524,7 @@ class MediaDetailsScreen(Screen):
inputPattern = self.getPatternFromInput() inputPattern = self.getPatternFromInput()
if self.__currentPattern.getPattern() != inputPattern: if self.__currentPattern.getPattern() != inputPattern:
patternDescriptor = {} patternDescriptor = {}
patternDescriptor['show_id'] = self.getSelectedShow()['id'] patternDescriptor['show_id'] = self.getSelectedShowDescriptor().getId()
patternDescriptor['pattern'] = inputPattern patternDescriptor['pattern'] = inputPattern
self.__pc.updatePattern(self.__currentPattern.getId(), patternDescriptor) self.__pc.updatePattern(self.__currentPattern.getId(), patternDescriptor)

Loading…
Cancel
Save