rework descriptors raw
This commit is contained in:
@@ -11,6 +11,7 @@ from ffx.iso_language import IsoLanguage
|
|||||||
from ffx.track_disposition import TrackDisposition
|
from ffx.track_disposition import TrackDisposition
|
||||||
from ffx.track_descriptor import TrackDescriptor
|
from ffx.track_descriptor import TrackDescriptor
|
||||||
|
|
||||||
|
import click
|
||||||
|
|
||||||
class Track(Base):
|
class Track(Base):
|
||||||
"""
|
"""
|
||||||
@@ -145,26 +146,6 @@ class Track(Base):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
# def getDescriptor(self):
|
|
||||||
#
|
|
||||||
# descriptor = {}
|
|
||||||
# descriptor['id'] = int(self.id)
|
|
||||||
# descriptor['pattern_id'] = int(self.pattern_id)
|
|
||||||
# descriptor['type'] = TrackType(self.track_type)
|
|
||||||
# descriptor['sub_index'] = int(self.sub_index)
|
|
||||||
#
|
|
||||||
# descriptor['language'] = IsoLanguage.findThreeLetter(self.language)
|
|
||||||
# descriptor['title'] = str(self.title)
|
|
||||||
#
|
|
||||||
# descriptor['disposition_list'] = TrackDisposition.toList(self.disposition_flags)
|
|
||||||
#
|
|
||||||
# descriptor['tags'] = {}
|
|
||||||
# for t in self.track_tags:
|
|
||||||
# descriptor['tags'][str(t.key)] = str(t.value)
|
|
||||||
#
|
|
||||||
# return descriptor
|
|
||||||
|
|
||||||
|
|
||||||
def getId(self):
|
def getId(self):
|
||||||
return int(self.id)
|
return int(self.id)
|
||||||
|
|
||||||
@@ -172,7 +153,7 @@ class Track(Base):
|
|||||||
return int(self.pattern_id)
|
return int(self.pattern_id)
|
||||||
|
|
||||||
def getType(self):
|
def getType(self):
|
||||||
return TrackType(self.track_type)
|
return TrackType.fromIndex(self.track_type)
|
||||||
|
|
||||||
def getSubIndex(self):
|
def getSubIndex(self):
|
||||||
return int(self.sub_index)
|
return int(self.sub_index)
|
||||||
@@ -189,4 +170,4 @@ class Track(Base):
|
|||||||
return TrackDisposition.toSet(self.disposition_flags)
|
return TrackDisposition.toSet(self.disposition_flags)
|
||||||
|
|
||||||
def getTags(self):
|
def getTags(self):
|
||||||
return {str(k.value):str(v.value) for (k,v) in self.track_tags}
|
return {str(t.key):str(t.value) for t in self.track_tags}
|
||||||
|
|||||||
@@ -79,7 +79,10 @@ class PatternController():
|
|||||||
s.close()
|
s.close()
|
||||||
|
|
||||||
|
|
||||||
def getPattern(self, patternId):
|
def getPattern(self, patternId : int):
|
||||||
|
|
||||||
|
if type(patternId) is not int:
|
||||||
|
raise ValueError(f"PatternController.getPattern(): Argument patternId is required to be of type int")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
s = self.Session()
|
s = self.Session()
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ from .track_delete_screen import TrackDeleteScreen
|
|||||||
from ffx.track_type import TrackType
|
from ffx.track_type import TrackType
|
||||||
|
|
||||||
from ffx.track_disposition import TrackDisposition
|
from ffx.track_disposition import TrackDisposition
|
||||||
|
from ffx.track_descriptor import TrackDescriptor
|
||||||
|
|
||||||
from textual.widgets._data_table import CellDoesNotExist
|
from textual.widgets._data_table import CellDoesNotExist
|
||||||
|
|
||||||
@@ -79,7 +80,7 @@ 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 = self.__pc.getPattern(patternId)
|
self.__pattern = self.__pc.getPattern(patternId) if patternId is not None else None
|
||||||
|
|
||||||
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 {}
|
||||||
|
|
||||||
@@ -107,6 +108,8 @@ class PatternDetailsScreen(Screen):
|
|||||||
|
|
||||||
self.audioStreamsTable.clear()
|
self.audioStreamsTable.clear()
|
||||||
|
|
||||||
|
if self.__pattern is not None:
|
||||||
|
|
||||||
audioTracks = self.__tc.findAudioTracks(self.__pattern.getId())
|
audioTracks = self.__tc.findAudioTracks(self.__pattern.getId())
|
||||||
|
|
||||||
for at in audioTracks:
|
for at in audioTracks:
|
||||||
@@ -126,6 +129,8 @@ class PatternDetailsScreen(Screen):
|
|||||||
|
|
||||||
self.subtitleStreamsTable.clear()
|
self.subtitleStreamsTable.clear()
|
||||||
|
|
||||||
|
if self.__pattern is not None:
|
||||||
|
|
||||||
subtitleTracks = self.__tc.findSubtitleTracks(self.__pattern.getId())
|
subtitleTracks = self.__tc.findSubtitleTracks(self.__pattern.getId())
|
||||||
|
|
||||||
for st in subtitleTracks:
|
for st in subtitleTracks:
|
||||||
@@ -249,7 +254,7 @@ class PatternDetailsScreen(Screen):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
def getSelectedAudioTrack(self):
|
def getSelectedAudioTrackDescriptor(self):
|
||||||
|
|
||||||
if not self.__pattern:
|
if not self.__pattern:
|
||||||
return None
|
return None
|
||||||
@@ -265,7 +270,18 @@ class PatternDetailsScreen(Screen):
|
|||||||
|
|
||||||
subIndex = int(selected_track_data[0])
|
subIndex = int(selected_track_data[0])
|
||||||
|
|
||||||
return self.__tc.findTrack(self.__pattern.getId(), TrackType.AUDIO, subIndex)
|
audioTrack = self.__tc.findTrack(self.__pattern.getId(), TrackType.AUDIO, subIndex)
|
||||||
|
|
||||||
|
kwargs = {}
|
||||||
|
|
||||||
|
kwargs[TrackDescriptor.PATTERN_ID_KEY] = self.__pattern.getId()
|
||||||
|
kwargs[TrackDescriptor.SUB_INDEX_KEY] = subIndex
|
||||||
|
|
||||||
|
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = TrackType.AUDIO
|
||||||
|
kwargs[TrackDescriptor.DISPOSITION_SET_KEY] = audioTrack.getDispositionSet()
|
||||||
|
kwargs[TrackDescriptor.TAGS_KEY] = audioTrack.getTags()
|
||||||
|
|
||||||
|
return TrackDescriptor(**kwargs)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
@@ -274,7 +290,7 @@ class PatternDetailsScreen(Screen):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def getSelectedSubtitleTrack(self):
|
def getSelectedSubtitleTrackDescriptor(self):
|
||||||
|
|
||||||
if not self.__pattern is None:
|
if not self.__pattern is None:
|
||||||
return None
|
return None
|
||||||
@@ -290,7 +306,18 @@ class PatternDetailsScreen(Screen):
|
|||||||
|
|
||||||
subIndex = int(selected_track_data[0])
|
subIndex = int(selected_track_data[0])
|
||||||
|
|
||||||
return self.__tc.findTrack(self.__pattern.getId(), TrackType.SUBTITLE, subIndex)
|
subtitleTrack = self.__tc.findTrack(self.__pattern.getId(), TrackType.SUBTITLE, subIndex)
|
||||||
|
|
||||||
|
kwargs = {}
|
||||||
|
|
||||||
|
kwargs[TrackDescriptor.PATTERN_ID_KEY] = self.__pattern.getId()
|
||||||
|
kwargs[TrackDescriptor.SUB_INDEX_KEY] = subIndex
|
||||||
|
|
||||||
|
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = TrackType.SUBTITLE
|
||||||
|
kwargs[TrackDescriptor.DISPOSITION_SET_KEY] = subtitleTrack.getDispositionSet()
|
||||||
|
kwargs[TrackDescriptor.TAGS_KEY] = subtitleTrack.getTags()
|
||||||
|
|
||||||
|
return TrackDescriptor(**kwargs)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
@@ -333,27 +360,26 @@ class PatternDetailsScreen(Screen):
|
|||||||
# Save pattern when just created before adding streams
|
# Save pattern when just created before adding streams
|
||||||
if self.__pattern is not None:
|
if self.__pattern is not None:
|
||||||
|
|
||||||
#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.getId(), subIndex = len(self.audioStreamsTable.rows)), self.handle_add_track)
|
self.app.push_screen(TrackDetailsScreen(trackType = TrackType.AUDIO, patternId = self.__pattern.getId(), subIndex = len(self.audioStreamsTable.rows)), self.handle_add_track)
|
||||||
|
|
||||||
selectedAudioTrack = self.getSelectedAudioTrack()
|
selectedAudioTrack = self.getSelectedAudioTrackDescriptor()
|
||||||
if selectedAudioTrack is not None:
|
if selectedAudioTrack is not None:
|
||||||
if event.button.id == "button_edit_audio_stream":
|
if event.button.id == "button_edit_audio_stream":
|
||||||
self.app.push_screen(TrackDetailsScreen(track = selectedAudioTrack), self.handle_edit_track)
|
|
||||||
|
self.app.push_screen(TrackDetailsScreen(trackDescriptor = selectedAudioTrack), 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(trackI= selectedAudioTrack), self.handle_delete_track)
|
self.app.push_screen(TrackDeleteScreen(trackDescriptor = selectedAudioTrack), 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.getId(), subIndex = len(self.subtitleStreamsTable.rows)), self.handle_add_track)
|
self.app.push_screen(TrackDetailsScreen(trackType = TrackType.SUBTITLE, patternId = self.__pattern.getId(), subIndex = len(self.subtitleStreamsTable.rows)), self.handle_add_track)
|
||||||
|
|
||||||
selectedSubtitleTrack = self.getSelectedSubtitleTrack()
|
selectedSubtitleTrack = self.getSelectedSubtitleTrackDescriptor()
|
||||||
if selectedSubtitleTrack is not None:
|
if selectedSubtitleTrack is not None:
|
||||||
if event.button.id == "button_edit_subtitle_stream":
|
if event.button.id == "button_edit_subtitle_stream":
|
||||||
self.app.push_screen(TrackDetailsScreen(track = selectedSubtitleTrack), self.handle_edit_track)
|
self.app.push_screen(TrackDetailsScreen(trackDescriptor = selectedSubtitleTrack), 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(track = selectedSubtitleTrack), self.handle_delete_track)
|
self.app.push_screen(TrackDeleteScreen(trackDescriptor = selectedSubtitleTrack), self.handle_delete_track)
|
||||||
|
|
||||||
if event.button.id == "patternbutton":
|
if event.button.id == "patternbutton":
|
||||||
|
|
||||||
@@ -398,38 +424,38 @@ class PatternDetailsScreen(Screen):
|
|||||||
self.subtitleStreamsTable.add_row(*map(str, row))
|
self.subtitleStreamsTable.add_row(*map(str, row))
|
||||||
|
|
||||||
|
|
||||||
def handle_edit_track(self, trackDescriptor):
|
def handle_edit_track(self, trackDescriptor : TrackDescriptor):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if trackDescriptor['type'] == TrackType.AUDIO:
|
if trackDescriptor.getType() == TrackType.AUDIO:
|
||||||
|
|
||||||
row_key, col_key = self.audioStreamsTable.coordinate_to_cell_key(self.audioStreamsTable.cursor_coordinate)
|
row_key, col_key = self.audioStreamsTable.coordinate_to_cell_key(self.audioStreamsTable.cursor_coordinate)
|
||||||
|
|
||||||
self.audioStreamsTable.update_cell(row_key, self.column_key_audio_language, trackDescriptor['language'].label())
|
self.audioStreamsTable.update_cell(row_key, self.column_key_audio_language, trackDescriptor.getLanguage().label())
|
||||||
self.audioStreamsTable.update_cell(row_key, self.column_key_audio_title, trackDescriptor['title'])
|
self.audioStreamsTable.update_cell(row_key, self.column_key_audio_title, trackDescriptor.getTitle())
|
||||||
self.audioStreamsTable.update_cell(row_key, self.column_key_audio_default, 'Yes' if TrackDisposition.DEFAULT in trackDescriptor['disposition_list'] else 'No')
|
self.audioStreamsTable.update_cell(row_key, self.column_key_audio_default, 'Yes' if TrackDisposition.DEFAULT in trackDescriptor.getDispositionSet() else 'No')
|
||||||
self.audioStreamsTable.update_cell(row_key, self.column_key_audio_forced, 'Yes' if TrackDisposition.FORCED in trackDescriptor['disposition_list'] else 'No')
|
self.audioStreamsTable.update_cell(row_key, self.column_key_audio_forced, 'Yes' if TrackDisposition.FORCED in trackDescriptor.getDispositionSet() else 'No')
|
||||||
|
|
||||||
if trackDescriptor['type'] == TrackType.SUBTITLE:
|
if trackDescriptor.getType() == TrackType.SUBTITLE:
|
||||||
|
|
||||||
row_key, col_key = self.subtitleStreamsTable.coordinate_to_cell_key(self.subtitleStreamsTable.cursor_coordinate)
|
row_key, col_key = self.subtitleStreamsTable.coordinate_to_cell_key(self.subtitleStreamsTable.cursor_coordinate)
|
||||||
|
|
||||||
self.subtitleStreamsTable.update_cell(row_key, self.column_key_subtitle_language, trackDescriptor['language'].label())
|
self.subtitleStreamsTable.update_cell(row_key, self.column_key_subtitle_language, trackDescriptor.getLanguage().label())
|
||||||
self.subtitleStreamsTable.update_cell(row_key, self.column_key_subtitle_title, trackDescriptor['title'])
|
self.subtitleStreamsTable.update_cell(row_key, self.column_key_subtitle_title, trackDescriptor.getTitle())
|
||||||
self.subtitleStreamsTable.update_cell(row_key, self.column_key_subtitle_default, 'Yes' if TrackDisposition.DEFAULT in trackDescriptor['disposition_list'] else 'No')
|
self.subtitleStreamsTable.update_cell(row_key, self.column_key_subtitle_default, 'Yes' if TrackDisposition.DEFAULT in trackDescriptor.getDispositionSet() else 'No')
|
||||||
self.subtitleStreamsTable.update_cell(row_key, self.column_key_subtitle_forced, 'Yes' if TrackDisposition.FORCED in trackDescriptor['disposition_list'] else 'No')
|
self.subtitleStreamsTable.update_cell(row_key, self.column_key_subtitle_forced, 'Yes' if TrackDisposition.FORCED in trackDescriptor.getDispositionSet() else 'No')
|
||||||
|
|
||||||
except CellDoesNotExist:
|
except CellDoesNotExist:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def handle_delete_track(self, trackDescriptor):
|
def handle_delete_track(self, trackDescriptor : TrackDescriptor):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if trackDescriptor['type'] == TrackType.AUDIO:
|
if trackDescriptor.getType() == TrackType.AUDIO:
|
||||||
self.updateAudioTracks()
|
self.updateAudioTracks()
|
||||||
|
|
||||||
if trackDescriptor['type'] == TrackType.SUBTITLE:
|
if trackDescriptor.getType() == TrackType.SUBTITLE:
|
||||||
self.updateSubtitleTracks()
|
self.updateSubtitleTracks()
|
||||||
|
|
||||||
except CellDoesNotExist:
|
except CellDoesNotExist:
|
||||||
|
|||||||
@@ -126,11 +126,11 @@ class TrackController():
|
|||||||
s.close()
|
s.close()
|
||||||
|
|
||||||
|
|
||||||
def findTrack(self, patternId, trackType : TrackType, subIndex):
|
def findTrack(self, patternId : int, trackType : TrackType, subIndex : int):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
s = self.Session()
|
s = self.Session()
|
||||||
q = s.query(Track).filter(Track.pattern_id == int(patternId), Track.track_type == trackType.value, Track.sub_index == int(subIndex))
|
q = s.query(Track).filter(Track.pattern_id == int(patternId), Track.track_type == trackType.index(), Track.sub_index == int(subIndex))
|
||||||
|
|
||||||
if q.count():
|
if q.count():
|
||||||
#track = q.first()
|
#track = q.first()
|
||||||
@@ -144,26 +144,6 @@ class TrackController():
|
|||||||
finally:
|
finally:
|
||||||
s.close()
|
s.close()
|
||||||
|
|
||||||
|
|
||||||
# def getTrackDescriptor(self, trackId):
|
|
||||||
#
|
|
||||||
# try:
|
|
||||||
# s = self.Session()
|
|
||||||
# q = s.query(Track).filter(Track.id == int(trackId))
|
|
||||||
#
|
|
||||||
# if q.count():
|
|
||||||
# track = q.first()
|
|
||||||
# #return self.getTrackDict(track)
|
|
||||||
# return track.getDescriptor()
|
|
||||||
# else:
|
|
||||||
# return {}
|
|
||||||
#
|
|
||||||
# except Exception as ex:
|
|
||||||
# raise click.ClickException(f"TrackController.getTrackDescriptor(): {repr(ex)}")
|
|
||||||
# finally:
|
|
||||||
# s.close()
|
|
||||||
|
|
||||||
|
|
||||||
def deleteTrack(self, trackId):
|
def deleteTrack(self, trackId):
|
||||||
try:
|
try:
|
||||||
s = self.Session()
|
s = self.Session()
|
||||||
@@ -171,15 +151,15 @@ class TrackController():
|
|||||||
|
|
||||||
if q.count():
|
if q.count():
|
||||||
|
|
||||||
trackDescriptor = self.getTrackDict(q.first())
|
#trackDescriptor = self.getTrackDict(q.first())
|
||||||
|
track = q.first()
|
||||||
|
|
||||||
|
q_siblings = s.query(Track).filter(Track.pattern_id == track.getPatternId(), Track.track_type == track.getType().index()).order_by(Track.sub_index)
|
||||||
q_siblings = s.query(Track).filter(Track.pattern_id == int(trackDescriptor['pattern_id']), Track.track_type == trackDescriptor['type'].value).order_by(Track.sub_index)
|
|
||||||
|
|
||||||
subIndex = 0
|
subIndex = 0
|
||||||
for track in q_siblings.all():
|
for track in q_siblings.all():
|
||||||
|
|
||||||
if track.sub_index == trackDescriptor['sub_index']:
|
if track.sub_index == track.getSubIndex():
|
||||||
s.delete(track)
|
s.delete(track)
|
||||||
else:
|
else:
|
||||||
track.sub_index = subIndex
|
track.sub_index = subIndex
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ from textual.widgets import Header, Footer, Placeholder, Label, ListView, ListIt
|
|||||||
from textual.containers import Grid, Horizontal
|
from textual.containers import Grid, Horizontal
|
||||||
|
|
||||||
from ffx.model.pattern import Pattern
|
from ffx.model.pattern import Pattern
|
||||||
|
from ffx.track_descriptor import TrackDescriptor
|
||||||
|
|
||||||
# from .show_controller import ShowController
|
# from .show_controller import ShowController
|
||||||
# from .pattern_controller import PatternController
|
# from .pattern_controller import PatternController
|
||||||
@@ -54,26 +55,26 @@ class TrackDeleteScreen(Screen):
|
|||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, trackId = None):
|
def __init__(self, trackDescriptor : TrackDescriptor):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
self.context = self.app.getContext()
|
self.context = self.app.getContext()
|
||||||
self.Session = self.context['database']['session'] # convenience
|
self.Session = self.context['database']['session'] # convenience
|
||||||
|
|
||||||
if trackId is None:
|
if type(trackDescriptor) is not TrackDescriptor:
|
||||||
raise click.ClickException('TrackDeleteScreen.init(): trackId is required to be set')
|
raise click.ClickException('TrackDeleteScreen.init(): trackDescriptor is required to be of type TrackDescriptor')
|
||||||
|
|
||||||
self.__tc = TrackController(context = self.context)
|
self.__tc = TrackController(context = self.context)
|
||||||
|
|
||||||
self.track_obj = self.__tc.getTrackDescriptor(trackId)
|
self.__trackDescriptor = trackDescriptor
|
||||||
|
|
||||||
|
|
||||||
def on_mount(self):
|
def on_mount(self):
|
||||||
|
|
||||||
self.query_one("#subindexlabel", Static).update(str(self.track_obj['sub_index']))
|
self.query_one("#subindexlabel", Static).update(str(self.__trackDescriptor.getSubIndex()))
|
||||||
self.query_one("#patternlabel", Static).update(str(self.track_obj['pattern_id']))
|
self.query_one("#patternlabel", Static).update(str(self.__trackDescriptor.getPatternId()))
|
||||||
self.query_one("#languagelabel", Static).update(str(self.track_obj['language'].label()))
|
self.query_one("#languagelabel", Static).update(str(self.__trackDescriptor.getLanguage().label()))
|
||||||
self.query_one("#titlelabel", Static).update(str(str(self.track_obj['title'])))
|
self.query_one("#titlelabel", Static).update(str(str(self.__trackDescriptor.getTitle())))
|
||||||
|
|
||||||
|
|
||||||
def compose(self):
|
def compose(self):
|
||||||
@@ -83,7 +84,7 @@ class TrackDeleteScreen(Screen):
|
|||||||
with Grid():
|
with Grid():
|
||||||
|
|
||||||
#1
|
#1
|
||||||
yield Static(f"Are you sure to delete the following {self.track_obj['type'].label()} track?", id="toplabel", classes="four")
|
yield Static(f"Are you sure to delete the following {self.__trackDescriptor.getType().label()} track?", id="toplabel", classes="four")
|
||||||
|
|
||||||
#2
|
#2
|
||||||
yield Static("sub index")
|
yield Static("sub index")
|
||||||
@@ -122,12 +123,15 @@ class TrackDeleteScreen(Screen):
|
|||||||
|
|
||||||
if event.button.id == "delete_button":
|
if event.button.id == "delete_button":
|
||||||
|
|
||||||
trackId = self.__tc.findTrack(self.track_obj['pattern_id'], self.track_obj['type'], self.track_obj['sub_index'])
|
track = self.__tc.findTrack(self.__trackDescriptor.getPatternId(), self.__trackDescriptor.getType(), self.__trackDescriptor.getSubIndex())
|
||||||
|
|
||||||
if trackId is not None:
|
if track is None:
|
||||||
|
raise click.ClickException(f"Track is none: patternId={self.__trackDescriptor.getPatternId()} type={self.__trackDescriptor.getType()} subIndex={self.__trackDescriptor.getSubIndex()}")
|
||||||
|
|
||||||
if self.__tc.deleteTrack(trackId):
|
if track is not None:
|
||||||
self.dismiss(self.track_obj)
|
|
||||||
|
if self.__tc.deleteTrack(track.getId()):
|
||||||
|
self.dismiss(self.__trackDescriptor)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
#TODO: Meldung
|
#TODO: Meldung
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ class TrackDescriptor():
|
|||||||
if 'language' in self.__trackTags.keys():
|
if 'language' in self.__trackTags.keys():
|
||||||
return IsoLanguage.findThreeLetter(self.__trackTags['language'])
|
return IsoLanguage.findThreeLetter(self.__trackTags['language'])
|
||||||
else:
|
else:
|
||||||
return IsoLanguage.UNKNOWN
|
return IsoLanguage.UNDEFINED
|
||||||
|
|
||||||
def getTitle(self):
|
def getTitle(self):
|
||||||
if 'title' in self.__trackTags.keys():
|
if 'title' in self.__trackTags.keys():
|
||||||
|
|||||||
@@ -116,27 +116,6 @@ class TrackDetailsScreen(Screen):
|
|||||||
self.__trackDescriptor = trackDescriptor
|
self.__trackDescriptor = trackDescriptor
|
||||||
self.__pattern = self.__pc.getPattern(self.__trackDescriptor.getPatternId())
|
self.__pattern = self.__pc.getPattern(self.__trackDescriptor.getPatternId())
|
||||||
|
|
||||||
# self.__trackDescriptor = trackDescriptor
|
|
||||||
# self.__trackType = 0
|
|
||||||
# self.__subIndex = 0
|
|
||||||
# self.__patternDescriptor = 0
|
|
||||||
|
|
||||||
# if self.track_obj:
|
|
||||||
# self.trackType = self.track_obj['type']
|
|
||||||
# self.subIndex = self.track_obj['sub_index']
|
|
||||||
# self.pattern_obj = self.__pc.getPatternDescriptor(self.track_obj['pattern_id'])
|
|
||||||
# self.track_obj['is_new'] = False
|
|
||||||
# else:
|
|
||||||
# self.trackType = trackType
|
|
||||||
# self.subIndex = subIndex
|
|
||||||
# self.pattern_obj = self.__pc.getPatternDescriptor(patternId) if patternId is not None else {}
|
|
||||||
# self.track_obj['is_new'] = True
|
|
||||||
|
|
||||||
# if self.trackType is None:
|
|
||||||
# raise click.ClickException('Track type is required to be set')
|
|
||||||
# if self.subIndex is None:
|
|
||||||
# raise click.ClickException('Sub index for track is required to be set')
|
|
||||||
|
|
||||||
|
|
||||||
def on_mount(self):
|
def on_mount(self):
|
||||||
|
|
||||||
@@ -148,7 +127,6 @@ class TrackDetailsScreen(Screen):
|
|||||||
self.query_one("#subindexlabel", Static).update(str(self.__subIndex))
|
self.query_one("#subindexlabel", Static).update(str(self.__subIndex))
|
||||||
|
|
||||||
|
|
||||||
if self.__trackDescriptor is not None:
|
|
||||||
|
|
||||||
for d in TrackDisposition:
|
for d in TrackDisposition:
|
||||||
|
|
||||||
@@ -158,16 +136,11 @@ class TrackDetailsScreen(Screen):
|
|||||||
dispositionOption = (d.label(), d.index(), dispositionIsSet)
|
dispositionOption = (d.label(), d.index(), dispositionIsSet)
|
||||||
self.query_one("#dispositions_selection_list", SelectionList).add_option(dispositionOption)
|
self.query_one("#dispositions_selection_list", SelectionList).add_option(dispositionOption)
|
||||||
|
|
||||||
|
if self.__trackDescriptor is not None:
|
||||||
|
|
||||||
self.query_one("#language_select", Select).value = self.__trackDescriptor.getLanguage().label()
|
self.query_one("#language_select", Select).value = self.__trackDescriptor.getLanguage().label()
|
||||||
self.query_one("#title_input", Input).value = self.__trackDescriptor.getTitle()
|
self.query_one("#title_input", Input).value = self.__trackDescriptor.getTitle()
|
||||||
|
|
||||||
# if 'language' in self.track_obj.keys():
|
|
||||||
# self.query_one("#language_select", Select).value = self.track_obj['language'].label()
|
|
||||||
#
|
|
||||||
# if 'title' in self.track_obj.keys():
|
|
||||||
# self.query_one("#title_input", Input).value = str(self.track_obj['title'])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def compose(self):
|
def compose(self):
|
||||||
|
|
||||||
@@ -267,7 +240,16 @@ class TrackDetailsScreen(Screen):
|
|||||||
kwargs[TrackDescriptor.SUB_INDEX_KEY] = self.__subIndex
|
kwargs[TrackDescriptor.SUB_INDEX_KEY] = self.__subIndex
|
||||||
|
|
||||||
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = self.__trackType
|
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = self.__trackType
|
||||||
kwargs[TrackDescriptor.TAGS_KEY] = {}
|
|
||||||
|
trackTags = {}
|
||||||
|
language = self.query_one("#language_select", Select).value
|
||||||
|
# raise click.ClickException(f"language={language}")
|
||||||
|
if language:
|
||||||
|
trackTags['language'] = IsoLanguage.find(language).threeLetter()
|
||||||
|
title = self.query_one("#title_input", Input).value
|
||||||
|
if title:
|
||||||
|
trackTags['title'] = title
|
||||||
|
kwargs[TrackDescriptor.TAGS_KEY] = trackTags
|
||||||
|
|
||||||
dispositionFlags = sum([2**f for f in self.query_one("#dispositions_selection_list", SelectionList).selected])
|
dispositionFlags = sum([2**f for f in self.query_one("#dispositions_selection_list", SelectionList).selected])
|
||||||
kwargs[TrackDescriptor.DISPOSITION_SET_KEY] = TrackDisposition.toSet(dispositionFlags)
|
kwargs[TrackDescriptor.DISPOSITION_SET_KEY] = TrackDisposition.toSet(dispositionFlags)
|
||||||
@@ -294,10 +276,6 @@ class TrackDetailsScreen(Screen):
|
|||||||
else:
|
else:
|
||||||
trackList = []
|
trackList = []
|
||||||
|
|
||||||
# descriptorList = [d for d in (self.__tc.getTrackDescriptor(t) for t in trackList)
|
|
||||||
# if d['type'] == self.__trackType
|
|
||||||
# and d['sub_index'] != self.__subIndex]
|
|
||||||
|
|
||||||
siblingTrackList = [t for t in trackList if t.getType() == self.__trackType and t.getSubIndex() != self.__subIndex]
|
siblingTrackList = [t for t in trackList if t.getType() == self.__trackType and t.getSubIndex() != self.__subIndex]
|
||||||
|
|
||||||
numDefaultTracks = len([t for t in siblingTrackList if TrackDisposition.DEFAULT in t.getDispositionSet()])
|
numDefaultTracks = len([t for t in siblingTrackList if TrackDisposition.DEFAULT in t.getDispositionSet()])
|
||||||
|
|||||||
Reference in New Issue
Block a user