mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-10 21:56:42 +01:00
wip: refactor pt.12, separate tek_snd
This commit is contained in:
parent
47c9cd2fe8
commit
2be7aee002
28 changed files with 955 additions and 766 deletions
|
|
@ -1,26 +1,28 @@
|
|||
use crate::*;
|
||||
|
||||
pub struct App<T, E, C, U, A, S>
|
||||
pub struct AppContainer<T, E, C, U, A, S>
|
||||
where
|
||||
T: Send + Sync,
|
||||
E: Engine,
|
||||
C: Command<T>,
|
||||
U: From<Arc<RwLock<T>>> + Widget<Engine = E> + Handle<E>,
|
||||
A: From<Arc<RwLock<T>>> + Audio,
|
||||
S: From<Arc<RwLock<T>>> + StatusBar<E>
|
||||
{
|
||||
cursor: (usize, usize),
|
||||
entered: bool,
|
||||
menu_bar: Option<MenuBar<E, T, C>>,
|
||||
status_bar: Option<S>,
|
||||
history: Vec<C>,
|
||||
size: Measure<E>,
|
||||
ui: U,
|
||||
audio: A,
|
||||
model: Arc<RwLock<T>>,
|
||||
pub cursor: (usize, usize),
|
||||
pub entered: bool,
|
||||
pub menu_bar: Option<MenuBar<E, T, C>>,
|
||||
pub status_bar: Option<S>,
|
||||
pub history: Vec<C>,
|
||||
pub size: Measure<E>,
|
||||
pub ui: U,
|
||||
pub audio: A,
|
||||
pub model: Arc<RwLock<T>>,
|
||||
}
|
||||
|
||||
impl<T, E, C, U, A, S> From<T> for App<T, E, C, U, A, S>
|
||||
impl<T, E, C, U, A, S> From<T> for AppContainer<T, E, C, U, A, S>
|
||||
where
|
||||
T: Send + Sync,
|
||||
E: Engine,
|
||||
C: Command<T>,
|
||||
U: From<Arc<RwLock<T>>> + Widget<Engine = E> + Handle<E>,
|
||||
|
|
@ -42,3 +44,27 @@ where
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T, C, U, A, S> Content for AppContainer<T, Tui, C, U, A, S>
|
||||
where
|
||||
T: Send + Sync,
|
||||
C: Command<T>,
|
||||
U: From<Arc<RwLock<T>>> + Widget<Engine = Tui> + Handle<Tui>,
|
||||
A: From<Arc<RwLock<T>>> + Audio,
|
||||
S: From<Arc<RwLock<T>>> + StatusBar<Tui>
|
||||
{
|
||||
type Engine = Tui;
|
||||
fn content (&self) -> impl Widget<Engine = Tui> {
|
||||
Split::down(
|
||||
if self.menu_bar.is_some() { 1 } else { 0 },
|
||||
row!(menu in self.menu_bar.menus.iter() => {
|
||||
row!(" ", menu.title.as_str(), " ")
|
||||
}),
|
||||
Split::up(
|
||||
if self.status_bar.is_some() { 1 } else { 0 },
|
||||
widget(&self.status_bar),
|
||||
self.ui
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue