click-textual
Maveno 1 year ago
parent 87ccb7e8a6
commit 7cc6efb9f1

@ -79,6 +79,7 @@ class PatternController():
def getPatternDict(self, pattern): def getPatternDict(self, pattern):
patternDescriptor = {} patternDescriptor = {}
patternDescriptor['id'] = int(pattern.id)
patternDescriptor['pattern'] = str(pattern.pattern) patternDescriptor['pattern'] = str(pattern.pattern)
patternDescriptor['show_id'] = int(pattern.show_id) patternDescriptor['show_id'] = int(pattern.show_id)
return patternDescriptor return patternDescriptor

@ -1,4 +1,4 @@
import click import click, re
from textual import events from textual import events
from textual.app import App, ComposeResult from textual.app import App, ComposeResult
@ -29,8 +29,8 @@ class PatternDetailsScreen(Screen):
CSS = """ CSS = """
Grid { Grid {
grid-size: 5 11; grid-size: 5 12;
grid-rows: 2 2 2 2 6 2 2 6 2 2 2; grid-rows: 2 2 2 2 2 6 2 2 6 2 2 2;
grid-columns: 25 25 25 25 25; grid-columns: 25 25 25 25 25;
height: 100%; height: 100%;
width: 100%; width: 100%;
@ -79,7 +79,6 @@ class PatternDetailsScreen(Screen):
self.__sc = ShowController(context = self.context) self.__sc = ShowController(context = self.context)
self.__tc = TrackController(context = self.context) self.__tc = TrackController(context = self.context)
self.pattern_id = patternId
self.pattern_obj = self.__pc.getPatternDescriptor(patternId) if patternId is not None else {} self.pattern_obj = self.__pc.getPatternDescriptor(patternId) if patternId is not None else {}
self.show_obj = self.__sc.getShowDesciptor(showId) if showId is not None else {} self.show_obj = self.__sc.getShowDesciptor(showId) if showId is not None else {}
@ -108,9 +107,9 @@ class PatternDetailsScreen(Screen):
self.audioStreamsTable.clear() self.audioStreamsTable.clear()
trackIds = self.__tc.findAllTracks(self.pattern_id) #! id missing trackIds = self.__tc.findAllTracks(self.pattern_obj['id'])
for audioTrackId in trackIds['audio']: for audioTrackId in trackIds[TrackType.AUDIO.label()]:
ad = self.__tc.getTrackDescriptor(audioTrackId) ad = self.__tc.getTrackDescriptor(audioTrackId)
dispoList = ad['disposition_list'] dispoList = ad['disposition_list']
@ -126,24 +125,24 @@ class PatternDetailsScreen(Screen):
def updateSubtitleTracks(self): def updateSubtitleTracks(self):
self.audioStreamsTable.clear() self.subtitleStreamsTable.clear()
trackIds = self.__tc.findAllTracks(self.pattern_id) trackIds = self.__tc.findAllTracks(self.pattern_obj['id'])
for audioTrackId in trackIds['audio']: for subtitleTrackId in trackIds[TrackType.SUBTITLE.label()]:
ad = self.__tc.getTrackDescriptor(audioTrackId) sd = self.__tc.getTrackDescriptor(subtitleTrackId)
dispoList = ad['disposition_list'] dispoList = sd['disposition_list']
row = (ad['sub_index'], row = (sd['sub_index'],
" ", " ",
ad['language'].label(), sd['language'].label(),
ad['title'], sd['title'],
'Yes' if TrackDisposition.DEFAULT in dispoList else 'No', 'Yes' if TrackDisposition.DEFAULT in dispoList else 'No',
'Yes' if TrackDisposition.FORCED in dispoList else 'No') 'Yes' if TrackDisposition.FORCED in dispoList else 'No')
self.audioStreamsTable.add_row(*map(str, row)) self.subtitleStreamsTable.add_row(*map(str, row))
def on_mount(self): def on_mount(self):
@ -198,7 +197,8 @@ class PatternDetailsScreen(Screen):
# 2 # 2
yield Static("from show") yield Static("from show")
yield Static("", id="showlabel") yield Static("", id="showlabel", classes="three")
yield Button("Substitute pattern", id="patternbutton")
# 3 # 3
yield Static(" ", classes="five") yield Static(" ", classes="five")
@ -315,15 +315,11 @@ class PatternDetailsScreen(Screen):
if self.pattern_obj: if self.pattern_obj:
if self.pattern_id is None: if self.__pc.updatePattern(self.pattern_obj['id'], patternDescriptor):
self.dismiss(patternDescriptor)
else:
#TODO: Meldung #TODO: Meldung
self.app.pop_screen() self.app.pop_screen()
else:
if self.__pc.updatePattern(self.pattern_id, patternDescriptor):
self.dismiss(patternDescriptor)
else:
#TODO: Meldung
self.app.pop_screen()
else: else:
if self.__pc.addPattern(patternDescriptor): if self.__pc.addPattern(patternDescriptor):
@ -345,24 +341,35 @@ class PatternDetailsScreen(Screen):
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_track) self.app.push_screen(TrackDetailsScreen(trackType = TrackType.AUDIO, patternId = self.pattern_obj['id'], subIndex = len(self.audioStreamsTable.rows)), self.handle_add_track)
if event.button.id == "button_edit_audio_stream":
self.app.push_screen(TrackDetailsScreen(trackId = self.getSelectedAudioTrackId()), self.handle_edit_track)
selectedAudioTrackId = self.getSelectedAudioTrackId() selectedAudioTrackId = self.getSelectedAudioTrackId()
if selectedAudioTrackId is not None: if selectedAudioTrackId is not None:
if event.button.id == "button_edit_audio_stream":
self.app.push_screen(TrackDetailsScreen(trackId = selectedAudioTrackId), self.handle_edit_track)
if event.button.id == "button_delete_audio_stream": if event.button.id == "button_delete_audio_stream":
self.app.push_screen(TrackDeleteScreen(trackId = selectedAudioTrackId), self.handle_delete_track) self.app.push_screen(TrackDeleteScreen(trackId = selectedAudioTrackId), self.handle_delete_track)
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_track) self.app.push_screen(TrackDetailsScreen(trackType = TrackType.SUBTITLE, patternId = self.pattern_obj['id'], subIndex = len(self.subtitleStreamsTable.rows)), self.handle_add_track)
if event.button.id == "button_edit_subtitle_stream":
self.app.push_screen(TrackDetailsScreen(trackId = self.getSelectedSubtitleTrackId()), self.handle_edit_track)
selectedSubtitleTrackId = self.getSelectedSubtitleTrackId() selectedSubtitleTrackId = self.getSelectedSubtitleTrackId()
if selectedSubtitleTrackId is not None: if selectedSubtitleTrackId is not None:
if event.button.id == "button_edit_subtitle_stream":
self.app.push_screen(TrackDetailsScreen(trackId = selectedSubtitleTrackId), self.handle_edit_track)
if event.button.id == "button_delete_subtitle_stream": if event.button.id == "button_delete_subtitle_stream":
self.app.push_screen(TrackDeleteScreen(trackId = selectedSubtitleTrackId), self.handle_delete_track) self.app.push_screen(TrackDeleteScreen(trackId = selectedSubtitleTrackId), 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)
def handle_add_track(self, trackDescriptor): def handle_add_track(self, trackDescriptor):

@ -120,6 +120,7 @@ class TrackController():
def getTrackDict(self, track): def getTrackDict(self, track):
trackDescriptor = {} trackDescriptor = {}
trackDescriptor['id'] = int(track.id)
trackDescriptor['pattern_id'] = int(track.pattern_id) trackDescriptor['pattern_id'] = int(track.pattern_id)
trackDescriptor['type'] = TrackType(track.track_type) trackDescriptor['type'] = TrackType(track.track_type)
trackDescriptor['sub_index'] = int(track.sub_index) trackDescriptor['sub_index'] = int(track.sub_index)

Loading…
Cancel
Save