From b1074bd8313d029cb52ff10291c70c7868e503e1 Mon Sep 17 00:00:00 2001 From: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Date: Sat, 17 Jan 2026 00:35:29 +0200 Subject: [PATCH] fix: compiles/runs (emptily) --- app/tek.rs | 128 ++++++++++++++++++++++++++--------------------------- 1 file changed, 63 insertions(+), 65 deletions(-) diff --git a/app/tek.rs b/app/tek.rs index 190cf83a..82ee7dda 100644 --- a/app/tek.rs +++ b/app/tek.rs @@ -41,6 +41,7 @@ }; pub mod model { + use super::{*, gui::*}; /// Total state #[derive(Default, Debug)] pub struct App { /// Base color. @@ -110,34 +111,39 @@ pub mod model { /// Input bindings are only returned if this evaluates to true #[derive(Clone)] pub struct Condition( - Arcbool + Send + Sync>> - ); - - #[derive(Debug, Copy, Clone)] - pub enum Axis { X, Y, Z, I } - /// Various possible dialog modes. - #[derive(Debug, Clone, Default, PartialEq)] pub enum Dialog { - #[default] None, - Help(usize), - Menu(usize, MenuItems), - Device(usize), - Message(Arc), - Browse(BrowseTarget, Arc), - Options, - } - #[derive(Debug, Clone, Default, PartialEq)] pub struct MenuItems( - pub Arc<[MenuItem]> - ); - #[derive(Clone)] pub struct MenuItem( - /// Label - pub Arc, - /// Callback - pub ArcUsually<()> + Send + Sync>> + pub Arcbool + Send + Sync>> ); + def_command!(AppCommand: |app: App| { + Nop => Ok(None), + Confirm => Ok(match &app.dialog { + Dialog::Menu(index, items) => { + let callback = items.0[*index].1.clone(); + callback(app)?; + None + }, + _ => todo!(), + }), + Cancel => todo!(), // TODO delegate: + Inc { axis: Axis } => Ok(match (&app.dialog, axis) { + (Dialog::None, _) => todo!(), + (Dialog::Menu(_, _), Axis::Y) => AppCommand::SetDialog { dialog: app.dialog.menu_next() } + .execute(app)?, + _ => todo!() + }), + Dec { axis: Axis } => Ok(match (&app.dialog, axis) { + (Dialog::None, _) => None, + (Dialog::Menu(_, _), Axis::Y) => AppCommand::SetDialog { dialog: app.dialog.menu_prev() } + .execute(app)?, + _ => todo!() + }), + SetDialog { dialog: Dialog } => { + swap_value(&mut app.dialog, dialog, |dialog|Self::SetDialog { dialog }) + }, + }); } pub mod core { - use super::{*, model::*}; + use super::{*, model::*, gui::*}; impl App { pub fn update_clock (&self) { ViewCache::update_clock(&self.project.clock.view_cache, self.clock(), self.size.w() > 80) @@ -389,10 +395,9 @@ pub mod core { } } pub mod ns { + use super::{*, model::*, gui::*}; // Allow source to be read as Literal string - dsl_ns!(App: Arc { - literal = |dsl|Ok(dsl.src()?.map(|x|x.into())); - }); + dsl_ns!(App: Arc { literal = |dsl|Ok(dsl.src()?.map(|x|x.into())); }); // Provide boolean values. dsl_ns!(App: bool { // TODO literal = ... @@ -406,14 +411,10 @@ pub mod ns { ":focused/pool/export" => matches!(app.pool.mode, Some(PoolMode::Export(..))), ":focused/pool/rename" => matches!(app.pool.mode, Some(PoolMode::Rename(..))), ":focused/pool/length" => matches!(app.pool.mode, Some(PoolMode::Length(..))), - ":focused/clip" => !app.editor_focused() && matches!(app.selection(), - Selection::TrackClip{..}), - ":focused/track" => !app.editor_focused() && matches!(app.selection(), - Selection::Track(..)), - ":focused/scene" => !app.editor_focused() && matches!(app.selection(), - Selection::Scene(..)), - ":focused/mix" => !app.editor_focused() && matches!(app.selection(), - Selection::Mix), + ":focused/clip" => !app.editor_focused() && matches!(app.selection(), Selection::TrackClip{..}), + ":focused/track" => !app.editor_focused() && matches!(app.selection(), Selection::Track(..)), + ":focused/scene" => !app.editor_focused() && matches!(app.selection(), Selection::Scene(..)), + ":focused/mix" => !app.editor_focused() && matches!(app.selection(), Selection::Mix), }; }); // TODO: provide colors here @@ -533,36 +534,9 @@ pub mod ns { "cancel" => AppCommand::Cancel, }); } - def_command!(AppCommand: |app: App| { - Nop => Ok(None), - Confirm => Ok(match &app.dialog { - Dialog::Menu(index, items) => { - let callback = items.0[*index].1.clone(); - callback(app)?; - None - }, - _ => todo!(), - }), - Cancel => todo!(), // TODO delegate: - Inc { axis: Axis } => Ok(match (&app.dialog, axis) { - (Dialog::None, _) => todo!(), - (Dialog::Menu(_, _), Axis::Y) => AppCommand::SetDialog { dialog: app.dialog.menu_next() } - .execute(app)?, - _ => todo!() - }), - Dec { axis: Axis } => Ok(match (&app.dialog, axis) { - (Dialog::None, _) => None, - (Dialog::Menu(_, _), Axis::Y) => AppCommand::SetDialog { dialog: app.dialog.menu_prev() } - .execute(app)?, - _ => todo!() - }), - SetDialog { dialog: Dialog } => { - swap_value(&mut app.dialog, dialog, |dialog|Self::SetDialog { dialog }) - }, - }); } pub mod tui { - use super::{*, model::*}; + use super::{*, model::*, gui::*}; handle!(TuiIn: |self: App, input|{ let mut commands = vec![]; for id in self.mode.keys.iter() { @@ -731,6 +705,28 @@ pub mod tui { } } pub mod gui { + use super::{*, model::*}; + #[derive(Debug, Copy, Clone)] + pub enum Axis { X, Y, Z, I } + /// Various possible dialog modes. + #[derive(Debug, Clone, Default, PartialEq)] pub enum Dialog { + #[default] None, + Help(usize), + Menu(usize, MenuItems), + Device(usize), + Message(Arc), + Browse(BrowseTarget, Arc), + Options, + } + #[derive(Debug, Clone, Default, PartialEq)] pub struct MenuItems( + pub Arc<[MenuItem]> + ); + #[derive(Clone)] pub struct MenuItem( + /// Label + pub Arc, + /// Callback + pub ArcUsually<()> + Send + Sync>> + ); impl Dialog { pub fn welcome () -> Self { Self::Menu(1, MenuItems([ @@ -764,6 +760,7 @@ pub mod gui { } } pub mod audio { + use super::{*, model::*}; audio!( |self: App, client, scope|{ let t0 = self.perf.get_t0(); @@ -813,7 +810,7 @@ pub mod audio { ); } pub mod glue { - use super::{*, model::*}; + use super::{*, model::*, gui::*}; has!(Jack<'static>: |self: App|self.jack); has!(Pool: |self: App|self.pool); has!(Dialog: |self: App|self.dialog); @@ -850,7 +847,7 @@ pub mod glue { } /// Command-line configuration. #[cfg(feature = "cli")] pub mod cli { - use super::{*, model::*}; + use super::{*, model::*, gui::*}; use clap::{self, Parser, Subcommand}; /// CLI banner. const HEADER: &'static str = r#" @@ -973,6 +970,7 @@ pub mod glue { } /// Command-line entrypoint. #[cfg(feature = "cli")] pub fn main () -> Usually<()> { + use clap::Parser; crate::cli::Cli::parse().run() }