Inspect from Scratch -> RC

click-textual
Javanaut 1 year ago
parent e1cff6c8db
commit 9fee9d1ae4

@ -61,7 +61,7 @@ class MediaDescriptor():
self.__jellyfinOrder = False
def __getReorderedTrackDescriptors(self):
def getReorderedTrackDescriptors(self):
videoTracks = [v for v in self.__trackDescriptors.copy() if v.getType() == TrackType.VIDEO]
audioTracks = [a for a in self.__trackDescriptors.copy() if a.getType() == TrackType.AUDIO]
@ -168,7 +168,7 @@ class MediaDescriptor():
# Target track configuration (from DB)
#tracks = self.getAllTracks()
tracks = self.__getReorderedTrackDescriptors()
tracks = self.getReorderedTrackDescriptors()
numTracks = len(tracks)
# Current track configuration (of file)

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

@ -23,7 +23,7 @@ class PatternController():
pattern = str(patternDescriptor['pattern']))
s.add(pattern)
s.commit()
return pattern.getId()
return int(pattern.getId())
else:
return None

@ -36,7 +36,7 @@ class ShowController():
if q.count():
return q.all()
else:
return None
return []
except Exception as ex:
raise click.ClickException(f"ShowController.getAllShows(): {repr(ex)}")

@ -132,8 +132,6 @@ class ShowsScreen(Screen):
def on_mount(self) -> None:
allShows = self.__sc.getAllShows()
if allShows is not None:
for show in self.__sc.getAllShows():
row = (int(show.id), show.name, show.year) # Convert each element to a string before adding
self.table.add_row(*map(str, row))

Loading…
Cancel
Save