click-textual
Javanaut 1 year ago
parent a5d568ba34
commit 9f22c70e89

@ -1,9 +1,11 @@
# from typing import List # from typing import List
from sqlalchemy import create_engine, Column, Integer, String, ForeignKey from sqlalchemy import create_engine, Column, Integer, String, ForeignKey, Enum
from sqlalchemy.orm import relationship, declarative_base, sessionmaker from sqlalchemy.orm import relationship, declarative_base, sessionmaker
from .show import Base from .show import Base
from ffx.track_type import TrackType
class Track(Base): class Track(Base):
""" """
@ -20,7 +22,7 @@ class Track(Base):
# v1.x # v1.x
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
track_type = Column(Integer) track_type = Column(Enum[TrackType])
# v1.x # v1.x
pattern_id = Column(Integer, ForeignKey('patterns.id', ondelete="CASCADE")) pattern_id = Column(Integer, ForeignKey('patterns.id', ondelete="CASCADE"))

@ -15,6 +15,7 @@ from .show_controller import ShowController
from .track_details_screen import TrackDetailsScreen from .track_details_screen import TrackDetailsScreen
from .track_delete_screen import TrackDeleteScreen from .track_delete_screen import TrackDeleteScreen
from ffx.track_type import TrackType
# Screen[dict[int, str, int]] # Screen[dict[int, str, int]]
class PatternDetailsScreen(Screen): class PatternDetailsScreen(Screen):
@ -212,18 +213,18 @@ class PatternDetailsScreen(Screen):
if event.button.id == "button_add_audio_stream": if event.button.id == "button_add_audio_stream":
self.app.push_screen(TrackDetailsScreen(2), self.handle_add_stream) self.app.push_screen(TrackDetailsScreen(TrackType.AUDIO), 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(2), self.handle_edit_stream) self.app.push_screen(TrackDetailsScreen(TrackType.AUDIO), 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(), self.handle_delete_stream) self.app.push_screen(TrackDeleteScreen(TrackType.AUDIO), 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(3), self.handle_add_stream) self.app.push_screen(TrackDetailsScreen(TrackType.SUBTITLE), 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(3), self.handle_edit_stream) self.app.push_screen(TrackDetailsScreen(TrackType.SUBTITLE), 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(), self.handle_delete_stream) self.app.push_screen(TrackDeleteScreen(TrackType.SUBTITLE), self.handle_delete_stream)
def handle_add_stream(self): def handle_add_stream(self):

@ -8,9 +8,11 @@ from textual.containers import Grid, Horizontal
from ffx.model.pattern import Pattern from ffx.model.pattern import Pattern
from .show_controller import ShowController # from .show_controller import ShowController
from .pattern_controller import PatternController # from .pattern_controller import PatternController
from .track_controller import TrackController
from .track_type import TrackType
# Screen[dict[int, str, int]] # Screen[dict[int, str, int]]
class TrackDeleteScreen(Screen): class TrackDeleteScreen(Screen):
@ -46,43 +48,57 @@ class TrackDeleteScreen(Screen):
} }
""" """
def __init__(self, patternId = None, showId = None): TRACK_TYPE_LABELS = [
'video',
'audio',
'subtitle'
]
def __init__(self, trackType : TrackType, trackId = None):
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
self.__pc = PatternController(context = self.context) self.__tc = TrackController(context = self.context)
self.__sc = ShowController(context = self.context) # self.__pc = PatternController(context = self.context)
# self.__sc = ShowController(context = self.context)
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 {}
self.trackType = trackType
self.track_obj = {}
def on_mount(self): def on_mount(self):
if self.show_obj: pass
self.query_one("#showlabel", Static).update(f"{self.show_obj['id']} - {self.show_obj['name']} ({self.show_obj['year']})") # if self.show_obj:
if self.pattern_obj: # self.query_one("#showlabel", Static).update(f"{self.show_obj['id']} - {self.show_obj['name']} ({self.show_obj['year']})")
self.query_one("#patternlabel", Static).update(str(self.pattern_obj['pattern'])) # if self.pattern_obj:
# self.query_one("#patternlabel", Static).update(str(self.pattern_obj['pattern']))
def compose(self): def compose(self):
typeLabel = TrackDeleteScreen.TRACK_TYPE_LABELS[int(self.trackType.value)-1]
yield Header() yield Header()
with Grid(): with Grid():
yield Static("Are you sure to delete the following filename pattern?", id="toplabel", classes="two") yield Static(f"Are you sure to delete the following {typeLabel} stream?", id="toplabel", classes="two")
yield Static("", classes="two")
yield Static("Pattern")
yield Static("", id="patternlabel")
yield Static("", classes="two") # yield Static("", classes="two")
#
yield Static("from show") # yield Static("Pattern")
yield Static("", id="showlabel") # yield Static("", id="patternlabel")
#
# yield Static("", classes="two")
#
# yield Static("from show")
# yield Static("", id="showlabel")
yield Static("", classes="two") yield Static("", classes="two")
@ -95,20 +111,20 @@ class TrackDeleteScreen(Screen):
# 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:
if event.button.id == "delete_button": # if event.button.id == "delete_button":
#
if self.__pc.deletePattern(self.pattern_obj['id']): # if self.__pc.deletePattern(self.pattern_obj['id']):
#
screenResult = {} # screenResult = {}
screenResult['show_id'] = self.show_obj['id'] # screenResult['show_id'] = self.show_obj['id']
screenResult['pattern'] = self.pattern_obj['pattern'] # screenResult['pattern'] = self.pattern_obj['pattern']
#
self.dismiss(screenResult) # self.dismiss(screenResult)
#
else: # else:
#TODO: Meldung # #TODO: Meldung
self.app.pop_screen() # self.app.pop_screen()
#
if event.button.id == "cancel_button": if event.button.id == "cancel_button":
self.app.pop_screen() self.app.pop_screen()

@ -62,7 +62,7 @@ class TrackDetailsScreen(Screen):
} }
""" """
STREAM_TYPE_LABELS = [ TRACK_TYPE_LABELS = [
'video', 'video',
'audio', 'audio',
'subtitle' 'subtitle'
@ -144,7 +144,7 @@ class TrackDetailsScreen(Screen):
# #
# self.subtitleStreamsTable.cursor_type = 'row' # self.subtitleStreamsTable.cursor_type = 'row'
typeLabel = TrackDetailsScreen.STREAM_TYPE_LABELS[self.trackType-1] typeLabel = TrackDetailsScreen.TRACK_TYPE_LABELS[int(self.trackType.value)-1]
yield Header() yield Header()

Loading…
Cancel
Save