UI edit audio layout

click-textual
Maveno 12 months ago
parent 747ff41ad3
commit 260c605201

@ -4,29 +4,39 @@ from .track_type import TrackType
class AudioLayout(Enum):
LAYOUT_STEREO = {"layout": "stereo", "index": 1}
LAYOUT_5_1 = {"layout": "5.1(side)", "index": 2}
LAYOUT_6_1 = {"layout": "6.1", "index": 3}
LAYOUT_7_1 = {"layout": "7.1", "index": 4} #TODO: Does this exist?
LAYOUT_STEREO = {"label": "stereo", "index": 1}
LAYOUT_5_1 = {"label": "5.1(side)", "index": 2}
LAYOUT_6_1 = {"label": "6.1", "index": 3}
LAYOUT_7_1 = {"label": "7.1", "index": 4} #TODO: Does this exist?
LAYOUT_6CH = {"layout": "6ch", "index": 5}
LAYOUT_6CH = {"label": "6ch", "index": 5}
LAYOUT_UNDEFINED = {"layout": "undefined", "index": 0}
LAYOUT_UNDEFINED = {"label": "undefined", "index": 0}
def label(self):
"""Returns the layout as string"""
return self.value['layout']
"""Returns the audio layout as string"""
return str(self.value['label'])
def index(self):
"""Returns the layout as string"""
return self.value['index']
"""Returns the audio layout as integer"""
return int(self.value['index'])
@staticmethod
def fromLabel(label : str):
try:
return [a for a in AudioLayout if a.value['label'] == str(label)][0]
except:
raise click.ClickException('fromLabel failed')
return AudioLayout.LAYOUT_UNDEFINED
@staticmethod
def fromIndex(index : int):
try:
return [a for a in AudioLayout if a.index() == int(index)][0]
return [a for a in AudioLayout if a.value['index'] == int(index)][0]
except:
raise click.ClickException('fromIndex failed')
return AudioLayout.LAYOUT_UNDEFINED
@staticmethod

@ -194,7 +194,7 @@ class PatternDetailsScreen(Screen):
self.column_key_track_index = self.tracksTable.add_column("Index", width=5)
self.column_key_track_type = self.tracksTable.add_column("Type", width=10)
self.column_key_track_sub_index = self.tracksTable.add_column("Subindex", width=5)
self.column_key_track_layout = self.tracksTable.add_column("Layout", width=10)
self.column_key_track_audio_layout = self.tracksTable.add_column("Layout", width=10)
self.column_key_track_language = self.tracksTable.add_column("Language", width=15)
self.column_key_track_title = self.tracksTable.add_column("Title", width=48)
self.column_key_track_default = self.tracksTable.add_column("Default", width=8)
@ -426,6 +426,7 @@ class PatternDetailsScreen(Screen):
row_key, col_key = self.tracksTable.coordinate_to_cell_key(self.tracksTable.cursor_coordinate)
self.tracksTable.update_cell(row_key, self.column_key_track_audio_layout, trackDescriptor.getAudioLayout().label())
self.tracksTable.update_cell(row_key, self.column_key_track_language, trackDescriptor.getLanguage().label())
self.tracksTable.update_cell(row_key, self.column_key_track_title, trackDescriptor.getTitle())
self.tracksTable.update_cell(row_key, self.column_key_track_default, 'Yes' if TrackDisposition.DEFAULT in trackDescriptor.getDispositionSet() else 'No')

@ -65,6 +65,9 @@ class TrackController():
track : Track = q.first()
track.track_type = int(trackDescriptor.getType().index())
track.audio_layout = int(trackDescriptor.getAudioLayout().index())
track.disposition_flags = int(TrackDisposition.toFlags(trackDescriptor.getDispositionSet()))
descriptorTagKeys = trackDescriptor.getTags()

@ -33,8 +33,8 @@ class TrackDetailsScreen(Screen):
CSS = """
Grid {
grid-size: 5 21;
grid-rows: 2 2 2 2 2 3 2 2 3 2 2 2 2 2 6 2 2 6 2 2 2;
grid-size: 5 24;
grid-rows: 2 2 2 2 2 3 3 2 2 3 2 2 2 2 2 6 2 2 6 2 2 2;
grid-columns: 25 25 25 25 125;
height: 100%;
width: 100%;
@ -99,12 +99,14 @@ class TrackDetailsScreen(Screen):
self.__isNew = trackDescriptor is None
if self.__isNew:
self.__trackType = trackType
self.__audioLayout = AudioLayout.LAYOUT_UNDEFINED
self.__index = index
self.__subIndex = subIndex
self.__trackDescriptor : TrackDescriptor = None
self.__pattern : Pattern = self.__pc.getPattern(patternId) if patternId is not None else {}
else:
self.__trackType = trackDescriptor.getType()
self.__audioLayout = trackDescriptor.getAudioLayout()
self.__index = trackDescriptor.getIndex()
self.__subIndex = trackDescriptor.getSubIndex()
self.__trackDescriptor : TrackDescriptor = trackDescriptor
@ -139,6 +141,8 @@ class TrackDetailsScreen(Screen):
if self.__trackType is not None:
self.query_one("#type_select", Select).value = self.__trackType.label()
if self.__trackType == TrackType.AUDIO:
self.query_one("#audio_layout_select", Select).value = self.__audioLayout.label()
for d in TrackDisposition:
@ -195,6 +199,10 @@ class TrackDetailsScreen(Screen):
yield Select.from_values([t.label() for t in TrackType], classes="four", id="type_select")
# 7
yield Static("Audio Layout")
yield Select.from_values([t.label() for t in AudioLayout], classes="four", id="audio_layout_select")
# 8
yield Static(" ", classes="five")
# 9
@ -266,6 +274,7 @@ class TrackDetailsScreen(Screen):
kwargs[TrackDescriptor.SUB_INDEX_KEY] = self.__subIndex #!
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = TrackType.fromLabel(self.query_one("#type_select", Select).value)
kwargs[TrackDescriptor.AUDIO_LAYOUT_KEY] = AudioLayout.fromLabel(self.query_one("#audio_layout_select", Select).value)
trackTags = {}
language = self.query_one("#language_select", Select).value
@ -282,8 +291,6 @@ class TrackDetailsScreen(Screen):
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.AUDIO_LAYOUT_KEY] = AudioLayout.LAYOUT_UNDEFINED
return TrackDescriptor(**kwargs)
@ -341,7 +348,7 @@ class TrackDetailsScreen(Screen):
or (TrackDisposition.FORCED in trackDescriptor.getDispositionSet() and numForcedTracks)):
self.query_one("#messagestatic", Static).update("Cannot add another stream with disposition flag 'debug' or 'forced' set")
else:
self.query_one("#messagestatic", Static).update(" ")

@ -22,16 +22,16 @@ class TrackType(Enum):
return int(self.value['index'])
@staticmethod
def fromLabel(label):
tlist = [t for t in TrackType if t.value['label'] == label]
def fromLabel(label : str):
tlist = [t for t in TrackType if t.value['label'] == str(label)]
if tlist:
return tlist[0]
else:
return TrackType.UNKNOWN
@staticmethod
def fromIndex(index):
tlist = [t for t in TrackType if t.value['index'] == index]
def fromIndex(index : int):
tlist = [t for t in TrackType if t.value['index'] == int(index)]
if tlist:
return tlist[0]
else:

Loading…
Cancel
Save