from textual.app import App, ComposeResult from textual.widgets import Footer, Tab, Tabs, Header from ui.widgets.sidebar import Sidebar from ui.widgets.timeline import Timeline, TimelineRow from ui.widgets.project_settings import ProjectSettings from ui.widgets.channel import Channel from project import ProjectChannel class AppUI(App): CSS_PATH = "../assets/style.tcss" theme = "tokyo-night" def __init__(self, project): super().__init__() self.zoom_level = 0.05 self.last_zoom_level = self.zoom_level self.project = project def create_channel(self, name: str): self.query_one("#channels").mount(Channel( len(self.project.channels), name, ), before=-1) self.query_one("#rows").mount(TimelineRow()) self.project.channels.append(ProjectChannel( name )) def compose(self) -> ComposeResult: with Tabs(id="top-menu"): yield Tab("File") yield Tab("Edit") yield Tab("View") yield Tab("Help") yield Sidebar() yield Timeline() yield ProjectSettings() yield Footer()