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_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)

Loading…
Cancel
Save