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

@ -1,9 +1,11 @@
# 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 .show import Base
from ffx.track_type import TrackType
class Track(Base):
"""
@ -20,7 +22,7 @@ class Track(Base):
# v1.x
id = Column(Integer, primary_key=True)
track_type = Column(Integer)
track_type = Column(Enum[TrackType])
# v1.x
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_delete_screen import TrackDeleteScreen
from ffx.track_type import TrackType
# Screen[dict[int, str, int]]
class PatternDetailsScreen(Screen):
@ -212,18 +213,18 @@ class PatternDetailsScreen(Screen):
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":
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":
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":
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":
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":
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):

@ -8,9 +8,11 @@ from textual.containers import Grid, Horizontal
from ffx.model.pattern import Pattern
from .show_controller import ShowController
from .pattern_controller import PatternController
# from .show_controller import ShowController
# from .pattern_controller import PatternController
from .track_controller import TrackController
from .track_type import TrackType
# Screen[dict[int, str, int]]
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__()
self.context = self.app.getContext()
self.Session = self.context['database_session'] # convenience
self.__pc = PatternController(context = self.context)
self.__sc = ShowController(context = self.context)
self.__tc = TrackController(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.show_obj = self.__sc.getShowDesciptor(showId) if showId 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.trackType = trackType
self.track_obj = {}
def on_mount(self):
if self.show_obj:
self.query_one("#showlabel", Static).update(f"{self.show_obj['id']} - {self.show_obj['name']} ({self.show_obj['year']})")
if self.pattern_obj:
self.query_one("#patternlabel", Static).update(str(self.pattern_obj['pattern']))
pass
# if self.show_obj:
# self.query_one("#showlabel", Static).update(f"{self.show_obj['id']} - {self.show_obj['name']} ({self.show_obj['year']})")
# if self.pattern_obj:
# self.query_one("#patternlabel", Static).update(str(self.pattern_obj['pattern']))
def compose(self):
typeLabel = TrackDeleteScreen.TRACK_TYPE_LABELS[int(self.trackType.value)-1]
yield Header()
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("from show")
yield Static("", id="showlabel")
# yield Static("", classes="two")
#
# yield Static("Pattern")
# yield Static("", id="patternlabel")
#
# yield Static("", classes="two")
#
# yield Static("from show")
# yield Static("", id="showlabel")
yield Static("", classes="two")
@ -95,20 +111,20 @@ class TrackDeleteScreen(Screen):
# Event handler for button press
def on_button_pressed(self, event: Button.Pressed) -> None:
if event.button.id == "delete_button":
if self.__pc.deletePattern(self.pattern_obj['id']):
screenResult = {}
screenResult['show_id'] = self.show_obj['id']
screenResult['pattern'] = self.pattern_obj['pattern']
self.dismiss(screenResult)
else:
#TODO: Meldung
self.app.pop_screen()
# if event.button.id == "delete_button":
#
# if self.__pc.deletePattern(self.pattern_obj['id']):
#
# screenResult = {}
# screenResult['show_id'] = self.show_obj['id']
# screenResult['pattern'] = self.pattern_obj['pattern']
#
# self.dismiss(screenResult)
#
# else:
# #TODO: Meldung
# self.app.pop_screen()
#
if event.button.id == "cancel_button":
self.app.pop_screen()

@ -62,7 +62,7 @@ class TrackDetailsScreen(Screen):
}
"""
STREAM_TYPE_LABELS = [
TRACK_TYPE_LABELS = [
'video',
'audio',
'subtitle'
@ -144,7 +144,7 @@ class TrackDetailsScreen(Screen):
#
# 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()

Loading…
Cancel
Save