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