diff --git a/bin/ffx/media_details_screen.py b/bin/ffx/media_details_screen.py index 9dc5622..d389933 100644 --- a/bin/ffx/media_details_screen.py +++ b/bin/ffx/media_details_screen.py @@ -159,7 +159,10 @@ class MediaDetailsScreen(Screen): # Enumerating differences between media descriptors # from file (=current) vs from stored in database (=target) - self.__mediaDifferences = self.__targetMediaDescriptor.compare(self.__currentMediaDescriptor) if self.__currentPattern is not None else {} + try: + self.__mediaDifferences = self.__targetMediaDescriptor.compare(self.__currentMediaDescriptor) if self.__currentPattern is not None else {} + except ValueError: + self.__mediaDifferences = {} def updateDifferences(self): @@ -417,6 +420,43 @@ class MediaDetailsScreen(Screen): self.query_one("#pattern_input", Input).value = pattern.replace(patternMatch.group(1), INDICATOR_PATTERN) + if event.button.id == "select_default_button": + selectedTrack = self.getSelectedTrackDescriptor() + self.__currentMediaDescriptor.setDefaultSubTrack(selectedTrack.getType(), selectedTrack.getSubIndex()) + self.updateTracks() + + if event.button.id == "select_forced_button": + selectedTrack = self.getSelectedTrackDescriptor(selectedTrack.getType(), selectedTrack.getSubIndex()) + self.__currentMediaDescriptor.setForcedSubTrack(selectedTrack.getType(), selectedTrack.getSubIndex()) + self.updateTracks() + + + def getSelectedTrackDescriptor(self): + + if not self.__pattern: + return None + + try: + + # Fetch the currently selected row when 'Enter' is pressed + #selected_row_index = self.table.cursor_row + row_key, col_key = self.tracksTable.coordinate_to_cell_key(self.tracksTable.cursor_coordinate) + + if row_key is not None: + selected_track_data = self.tracksTable.get_row(row_key) + + trackIndex = int(selected_track_data[0]) + trackSubIndex = int(selected_track_data[2]) + + return self.__tc.getTrack(self.__pattern.getId(), trackIndex).getDescriptor(subIndex=trackSubIndex) + + else: + return None + + except CellDoesNotExist: + return None + + def getSelectedShow(self): try: