|
|
@ -20,6 +20,8 @@ from ffx.track_type import TrackType
|
|
|
|
|
|
|
|
|
|
|
|
from ffx.track_disposition import TrackDisposition
|
|
|
|
from ffx.track_disposition import TrackDisposition
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from textual.widgets._data_table import CellDoesNotExist
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Screen[dict[int, str, int]]
|
|
|
|
# Screen[dict[int, str, int]]
|
|
|
|
class PatternDetailsScreen(Screen):
|
|
|
|
class PatternDetailsScreen(Screen):
|
|
|
@ -234,6 +236,58 @@ class PatternDetailsScreen(Screen):
|
|
|
|
return str(self.query_one("#pattern_input", Input).value)
|
|
|
|
return str(self.query_one("#pattern_input", Input).value)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getSelectedAudioTrackId(self):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if not self.pattern_obj:
|
|
|
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Fetch the currently selected row when 'Enter' is pressed
|
|
|
|
|
|
|
|
#selected_row_index = self.table.cursor_row
|
|
|
|
|
|
|
|
row_key, col_key = self.audioStreamsTable.coordinate_to_cell_key(self.audioStreamsTable.cursor_coordinate)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if row_key is not None:
|
|
|
|
|
|
|
|
selected_track_data = self.audioStreamsTable.get_row(row_key)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
subIndex = int(selected_track_data[0])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return self.__tc.findTrack(self.pattern_obj['id'], TrackType.AUDIO, subIndex)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
except CellDoesNotExist:
|
|
|
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getSelectedSubtitleTrackId(self):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if not self.pattern_obj:
|
|
|
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Fetch the currently selected row when 'Enter' is pressed
|
|
|
|
|
|
|
|
#selected_row_index = self.table.cursor_row
|
|
|
|
|
|
|
|
row_key, col_key = self.subtitleStreamsTable.coordinate_to_cell_key(self.subtitleStreamsTable.cursor_coordinate)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if row_key is not None:
|
|
|
|
|
|
|
|
selected_track_data = self.subtitleStreamsTable.get_row(row_key)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
subIndex = int(selected_track_data[0])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return self.__tc.findTrack(self.pattern_obj['id'], TrackType.SUBTITLE, subIndex)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
except CellDoesNotExist:
|
|
|
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Event handler for button press
|
|
|
|
# Event handler for button press
|
|
|
|
def on_button_pressed(self, event: Button.Pressed) -> None:
|
|
|
|
def on_button_pressed(self, event: Button.Pressed) -> None:
|
|
|
|
# Check if the button pressed is the one we are interested in
|
|
|
|
# Check if the button pressed is the one we are interested in
|
|
|
@ -259,19 +313,21 @@ class PatternDetailsScreen(Screen):
|
|
|
|
# Save pattern when just created before adding streams
|
|
|
|
# Save pattern when just created before adding streams
|
|
|
|
if self.pattern_obj:
|
|
|
|
if self.pattern_obj:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#self.pattern_obj
|
|
|
|
|
|
|
|
|
|
|
|
if event.button.id == "button_add_audio_stream":
|
|
|
|
if event.button.id == "button_add_audio_stream":
|
|
|
|
self.app.push_screen(TrackDetailsScreen(trackType = TrackType.AUDIO, patternId = self.pattern_obj['id'], subIndex = len(self.audioStreamsTable.rows)), self.handle_add_stream)
|
|
|
|
self.app.push_screen(TrackDetailsScreen(trackType = TrackType.AUDIO, patternId = self.pattern_obj['id'], subIndex = len(self.audioStreamsTable.rows)), self.handle_add_stream)
|
|
|
|
if event.button.id == "button_edit_audio_stream":
|
|
|
|
if event.button.id == "button_edit_audio_stream":
|
|
|
|
self.app.push_screen(TrackDetailsScreen(trackType = TrackType.AUDIO, patternId = self.pattern_obj['id']), self.handle_edit_stream)
|
|
|
|
self.app.push_screen(TrackDetailsScreen(trackId = self.getSelectedAudioTrackId()), self.handle_edit_stream)
|
|
|
|
if event.button.id == "button_delete_audio_stream":
|
|
|
|
if event.button.id == "button_delete_audio_stream":
|
|
|
|
self.app.push_screen(TrackDeleteScreen(trackType = TrackType.AUDIO, patternId = self.pattern_obj['id']), self.handle_delete_stream)
|
|
|
|
self.app.push_screen(TrackDeleteScreen(trackId = self.getSelectedAudioTrackId()), self.handle_delete_stream)
|
|
|
|
|
|
|
|
|
|
|
|
if event.button.id == "button_add_subtitle_stream":
|
|
|
|
if event.button.id == "button_add_subtitle_stream":
|
|
|
|
self.app.push_screen(TrackDetailsScreen(trackType = TrackType.SUBTITLE, patternId = self.pattern_obj['id'], subIndex = len(self.subtitleStreamsTable.rows)), self.handle_add_stream)
|
|
|
|
self.app.push_screen(TrackDetailsScreen(trackType = TrackType.SUBTITLE, patternId = self.pattern_obj['id'], subIndex = len(self.subtitleStreamsTable.rows)), self.handle_add_stream)
|
|
|
|
if event.button.id == "button_edit_subtitle_stream":
|
|
|
|
if event.button.id == "button_edit_subtitle_stream":
|
|
|
|
self.app.push_screen(TrackDetailsScreen(trackType = TrackType.SUBTITLE, patternId = self.pattern_obj['id']), self.handle_edit_stream)
|
|
|
|
self.app.push_screen(TrackDetailsScreen(trackId = self.getSelectedSubtitleTrackId()), self.handle_edit_stream)
|
|
|
|
if event.button.id == "button_delete_subtitle_stream":
|
|
|
|
if event.button.id == "button_delete_subtitle_stream":
|
|
|
|
self.app.push_screen(TrackDeleteScreen(trackType = TrackType.SUBTITLE, patternId = self.pattern_obj['id']), self.handle_delete_stream)
|
|
|
|
self.app.push_screen(TrackDeleteScreen(trackId = self.getSelectedSubtitleTrackId()), self.handle_delete_stream)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def handle_add_stream(self, trackDescriptor):
|
|
|
|
def handle_add_stream(self, trackDescriptor):
|
|
|
|