rework descriptors raw

click-textual
Maveno 1 year ago
parent 1c9f67e47a
commit 7d7e43c6f0

@ -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,39 +108,43 @@ class PatternDetailsScreen(Screen):
self.audioStreamsTable.clear() self.audioStreamsTable.clear()
audioTracks = self.__tc.findAudioTracks(self.__pattern.getId()) if self.__pattern is not None:
for at in audioTracks: audioTracks = self.__tc.findAudioTracks(self.__pattern.getId())
dispoSet = at.getDispositionSet() for at in audioTracks:
row = (at.getSubIndex(), dispoSet = at.getDispositionSet()
" ",
at.getLanguage().label(),
at.getTitle(),
'Yes' if TrackDisposition.DEFAULT in dispoSet else 'No',
'Yes' if TrackDisposition.FORCED in dispoSet else 'No')
self.audioStreamsTable.add_row(*map(str, row)) row = (at.getSubIndex(),
" ",
at.getLanguage().label(),
at.getTitle(),
'Yes' if TrackDisposition.DEFAULT in dispoSet else 'No',
'Yes' if TrackDisposition.FORCED in dispoSet else 'No')
self.audioStreamsTable.add_row(*map(str, row))
def updateSubtitleTracks(self): def updateSubtitleTracks(self):
self.subtitleStreamsTable.clear() self.subtitleStreamsTable.clear()
subtitleTracks = self.__tc.findSubtitleTracks(self.__pattern.getId()) if self.__pattern is not None:
for st in subtitleTracks: subtitleTracks = self.__tc.findSubtitleTracks(self.__pattern.getId())
dispoSet = st.getDispositionSet() for st in subtitleTracks:
row = (st.getSubIndex(), dispoSet = st.getDispositionSet()
" ",
st.getLanguage().label(),
st.getTitle(),
'Yes' if TrackDisposition.DEFAULT in dispoSet else 'No',
'Yes' if TrackDisposition.FORCED in dispoSet else 'No')
self.subtitleStreamsTable.add_row(*map(str, row)) row = (st.getSubIndex(),
" ",
st.getLanguage().label(),
st.getTitle(),
'Yes' if TrackDisposition.DEFAULT in dispoSet else 'No',
'Yes' if TrackDisposition.FORCED in dispoSet else 'No')
self.subtitleStreamsTable.add_row(*map(str, row))
def on_mount(self): def on_mount(self):
@ -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 == int(trackDescriptor['pattern_id']), Track.track_type == trackDescriptor['type'].value).order_by(Track.sub_index) q_siblings = s.query(Track).filter(Track.pattern_id == track.getPatternId(), Track.track_type == track.getType().index()).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,26 +127,20 @@ 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:
dispositionIsSet = (self.__trackDescriptor is not None
and d in self.__trackDescriptor.getDispositionSet())
dispositionIsSet = (self.__trackDescriptor is not None dispositionOption = (d.label(), d.index(), dispositionIsSet)
and d in self.__trackDescriptor.getDispositionSet()) self.query_one("#dispositions_selection_list", SelectionList).add_option(dispositionOption)
dispositionOption = (d.label(), d.index(), dispositionIsSet) if self.__trackDescriptor is not None:
self.query_one("#dispositions_selection_list", SelectionList).add_option(dispositionOption)
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()])

Loading…
Cancel
Save