mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +01:00
wip: namespaces
This commit is contained in:
parent
525a455f7a
commit
f2d6e7724b
4 changed files with 174 additions and 169 deletions
|
|
@ -40,6 +40,12 @@ use std::collections::BTreeMap;
|
|||
use std::fmt::Write;
|
||||
use ::tengri::tui::ratatui::prelude::Position;
|
||||
use xdg::BaseDirectories;
|
||||
mod app_dsl; pub use self::app_dsl::*;
|
||||
macro_rules!dsl_sym(
|
||||
(|$state:ident:$State:ty| -> $type:ty {$($lit:literal => $exp:expr),* $(,)?})=>{
|
||||
impl<'t> DslSymNs<'t, $type> for $State {
|
||||
const NS: DslNs<'t, fn (&'t $State)->$type> =
|
||||
DslNs(&[$(($lit, |$state: &$State|$exp)),*]); } });
|
||||
mod app_view; pub use self::app_view::*;
|
||||
mod app_ctrl; pub use self::app_ctrl::*;
|
||||
mod app_jack; pub use self::app_jack::*;
|
||||
|
|
@ -202,20 +208,13 @@ impl Profile {
|
|||
}
|
||||
}
|
||||
/// Various possible dialog modes.
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub enum Dialog {
|
||||
#[default] None,
|
||||
Help(usize),
|
||||
Menu(usize),
|
||||
Device(usize),
|
||||
Message(Arc<str>),
|
||||
Browser(BrowserTarget, Arc<Browser>),
|
||||
Options,
|
||||
}
|
||||
impl App {
|
||||
pub fn update_clock (&self) {
|
||||
ViewCache::update_clock(&self.project.clock.view_cache, self.clock(), self.size.w() > 80)
|
||||
}
|
||||
pub fn focused_editor (&self) -> bool {
|
||||
false
|
||||
}
|
||||
}
|
||||
has!(Jack<'static>: |self: App|self.jack);
|
||||
has!(Pool: |self: App|self.pool);
|
||||
|
|
@ -242,12 +241,30 @@ fn unquote (x: &str) -> &str {
|
|||
//chars.next_back();
|
||||
chars.as_str()
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub enum Dialog {
|
||||
#[default] None,
|
||||
Help(usize),
|
||||
Menu(usize),
|
||||
Device(usize),
|
||||
Message(Arc<str>),
|
||||
Browser(BrowserTarget, Arc<Browser>),
|
||||
Options,
|
||||
}
|
||||
|
||||
impl Dialog {
|
||||
fn menu_selected (&self) -> Option<usize> {
|
||||
if let Self::Menu(selected) = self { Some(*selected) } else { None }
|
||||
}
|
||||
fn device_selected (&self) -> Option<usize> {
|
||||
if let Self::Device(selected) = self { Some(*selected) } else { None }
|
||||
fn device_kind (&self) -> Option<usize> {
|
||||
if let Self::Device(index) = self { Some(*index) } else { None }
|
||||
}
|
||||
fn device_kind_next (&self) -> Option<usize> {
|
||||
self.device_kind().map(|index|(index + 1) % device_kinds().len())
|
||||
}
|
||||
fn device_kind_prev (&self) -> Option<usize> {
|
||||
self.device_kind().map(|index|index.overflowing_sub(1).0.min(device_kinds().len().saturating_sub(1)))
|
||||
}
|
||||
fn message (&self) -> Option<&str> {
|
||||
todo!()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue