|
|
|
|
@ -16,6 +16,7 @@ from .tag_controller import TagController
|
|
|
|
|
|
|
|
|
|
from .track_details_screen import TrackDetailsScreen
|
|
|
|
|
from .track_delete_screen import TrackDeleteScreen
|
|
|
|
|
from .show_details_screen import ShowDetailsScreen
|
|
|
|
|
|
|
|
|
|
from ffx.track_type import TrackType
|
|
|
|
|
from ffx.model.track import Track
|
|
|
|
|
@ -244,7 +245,6 @@ class MediaDetailsScreen(Screen):
|
|
|
|
|
row = (' ', '<New show>', ' ') # Convert each element to a string before adding
|
|
|
|
|
self.showsTable.add_row(*map(str, row))
|
|
|
|
|
|
|
|
|
|
#TODO: Stürzt ab wenn keine Shows vorhanden sind. Onthefly Show add impl
|
|
|
|
|
for show in self.__sc.getAllShows():
|
|
|
|
|
row = (int(show.id), show.name, show.year) # Convert each element to a string before adding
|
|
|
|
|
self.showsTable.add_row(*map(str, row))
|
|
|
|
|
@ -270,9 +270,13 @@ class MediaDetailsScreen(Screen):
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
|
|
self.query_one("#pattern_input", Input).value = self.__mediaFilename
|
|
|
|
|
self.query_one("#pattern_input", Input).styles.background = 'red'
|
|
|
|
|
|
|
|
|
|
self.highlightPattern(True)
|
|
|
|
|
|
|
|
|
|
def highlightPattern(self, state : bool):
|
|
|
|
|
if state:
|
|
|
|
|
self.query_one("#pattern_input", Input).styles.background = 'red'
|
|
|
|
|
else:
|
|
|
|
|
self.query_one("#pattern_input", Input).styles.background = None
|
|
|
|
|
|
|
|
|
|
def updateTracks(self):
|
|
|
|
|
|
|
|
|
|
@ -363,7 +367,7 @@ class MediaDetailsScreen(Screen):
|
|
|
|
|
|
|
|
|
|
# 2
|
|
|
|
|
yield Static(" ")
|
|
|
|
|
yield Button("Substitute")
|
|
|
|
|
yield Button("Substitute", id="pattern_button")
|
|
|
|
|
yield Static(" ")
|
|
|
|
|
|
|
|
|
|
# 3
|
|
|
|
|
@ -454,8 +458,8 @@ class MediaDetailsScreen(Screen):
|
|
|
|
|
yield Footer()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# def getPatternFromInput(self):
|
|
|
|
|
# return str(self.query_one("#pattern_input", Input).value)
|
|
|
|
|
def getPatternFromInput(self):
|
|
|
|
|
return str(self.query_one("#pattern_input", Input).value)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -512,7 +516,6 @@ class MediaDetailsScreen(Screen):
|
|
|
|
|
|
|
|
|
|
# Event handler for button press
|
|
|
|
|
def on_button_pressed(self, event: Button.Pressed) -> None:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
# # Check if the button pressed is the one we are interested in
|
|
|
|
|
# if event.button.id == "save_button":
|
|
|
|
|
@ -565,17 +568,17 @@ class MediaDetailsScreen(Screen):
|
|
|
|
|
# self.app.push_screen(TrackDetailsScreen(trackDescriptor = selectedSubtitleTrack), self.handle_edit_track)
|
|
|
|
|
# if event.button.id == "button_delete_subtitle_stream":
|
|
|
|
|
# self.app.push_screen(TrackDeleteScreen(trackDescriptor = selectedSubtitleTrack), self.handle_delete_track)
|
|
|
|
|
#
|
|
|
|
|
# if event.button.id == "patternbutton":
|
|
|
|
|
#
|
|
|
|
|
# INDICATOR_PATTERN = '([sS][0-9]+[eE][0-9]+)'
|
|
|
|
|
#
|
|
|
|
|
# pattern = self.query_one("#pattern_input", Input).value
|
|
|
|
|
#
|
|
|
|
|
# patternMatch = re.search(INDICATOR_PATTERN, pattern)
|
|
|
|
|
#
|
|
|
|
|
# if patternMatch:
|
|
|
|
|
# self.query_one("#pattern_input", Input).value = pattern.replace(patternMatch.group(1), INDICATOR_PATTERN)
|
|
|
|
|
|
|
|
|
|
if event.button.id == "pattern_button":
|
|
|
|
|
|
|
|
|
|
INDICATOR_PATTERN = '([sS][0-9]+[eE][0-9]+)'
|
|
|
|
|
|
|
|
|
|
pattern = self.query_one("#pattern_input", Input).value
|
|
|
|
|
|
|
|
|
|
patternMatch = re.search(INDICATOR_PATTERN, pattern)
|
|
|
|
|
|
|
|
|
|
if patternMatch:
|
|
|
|
|
self.query_one("#pattern_input", Input).value = pattern.replace(patternMatch.group(1), INDICATOR_PATTERN)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# def handle_add_track(self, trackDescriptor):
|
|
|
|
|
@ -647,12 +650,76 @@ class MediaDetailsScreen(Screen):
|
|
|
|
|
# pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getSelectedShow(self):
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
# Fetch the currently selected row when 'Enter' is pressed
|
|
|
|
|
#selected_row_index = self.table.cursor_row
|
|
|
|
|
row_key, col_key = self.showsTable.coordinate_to_cell_key(self.showsTable.cursor_coordinate)
|
|
|
|
|
|
|
|
|
|
if row_key is not None:
|
|
|
|
|
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
|
|
|
|
|
except ValueError:
|
|
|
|
|
return {}
|
|
|
|
|
|
|
|
|
|
except CellDoesNotExist:
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def handle_new_pattern(self, screenResult):
|
|
|
|
|
|
|
|
|
|
show = (screenResult['id'], screenResult['name'], screenResult['year'])
|
|
|
|
|
self.showsTable.add_row(*map(str, show))
|
|
|
|
|
|
|
|
|
|
showRowIndex = self.getRowIndexFromShowId(screenResult['id'])
|
|
|
|
|
if showRowIndex is not None:
|
|
|
|
|
self.showsTable.move_cursor(row=showRowIndex)
|
|
|
|
|
|
|
|
|
|
patternDescriptor = {}
|
|
|
|
|
patternDescriptor['show_id'] = screenResult['id']
|
|
|
|
|
patternDescriptor['pattern'] = self.getPatternFromInput()
|
|
|
|
|
self.__pc.addPattern(patternDescriptor)
|
|
|
|
|
|
|
|
|
|
self.highlightPattern(False)
|
|
|
|
|
|
|
|
|
|
self.action_update_pattern()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def action_new_pattern(self):
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
selectedShow = self.getSelectedShow()
|
|
|
|
|
|
|
|
|
|
#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:
|
|
|
|
|
self.app.push_screen(ShowDetailsScreen(), self.handle_new_pattern)
|
|
|
|
|
else:
|
|
|
|
|
self.handle_new_pattern(selectedShow)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def action_update_pattern(self):
|
|
|
|
|
"""When updating the database the actions must reverse the difference (eq to diff db->file)"""
|
|
|
|
|
|
|
|
|
|
if self.__currentPattern is not None:
|
|
|
|
|
inputPattern = self.getPatternFromInput()
|
|
|
|
|
if self.__currentPattern.getPattern() != inputPattern:
|
|
|
|
|
patternDescriptor = {}
|
|
|
|
|
patternDescriptor['show_id'] = self.getSelectedShow()['id']
|
|
|
|
|
patternDescriptor['pattern'] = inputPattern
|
|
|
|
|
self.__pc.updatePattern(self.__currentPattern.getId(), patternDescriptor)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.loadProperties()
|
|
|
|
|
|
|
|
|
|
if MediaDescriptor.TAGS_KEY in self.__mediaDifferences.keys():
|
|
|
|
|
|
|
|
|
|
if DIFF_ADDED_KEY in self.__mediaDifferences[MediaDescriptor.TAGS_KEY].keys():
|
|
|
|
|
|