mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
wip: layout
This commit is contained in:
parent
ac865824cc
commit
d627d257ad
13 changed files with 220 additions and 131 deletions
|
|
@ -36,7 +36,7 @@ pub fn run (device: impl Device + Send + Sync + 'static) -> Result<(), Box<dyn E
|
|||
if event::poll(poll).is_ok() {
|
||||
let event = event::read().unwrap();
|
||||
match event {
|
||||
crossterm::event::Event::Key(KeyEvent {
|
||||
Event::Key(KeyEvent {
|
||||
code: KeyCode::Char('c'),
|
||||
modifiers: KeyModifiers::CONTROL,
|
||||
..
|
||||
|
|
@ -53,7 +53,6 @@ pub fn run (device: impl Device + Send + Sync + 'static) -> Result<(), Box<dyn E
|
|||
stdout().execute(EnterAlternateScreen)?;
|
||||
enable_raw_mode()?;
|
||||
let mut terminal = ratatui::Terminal::new(CrosstermBackend::new(stdout()))?;
|
||||
let sleep = std::time::Duration::from_millis(16);
|
||||
//better_panic::install();
|
||||
let better_panic_handler = better_panic::Settings::auto()
|
||||
.verbosity(better_panic::Verbosity::Full)
|
||||
|
|
@ -70,6 +69,7 @@ pub fn run (device: impl Device + Send + Sync + 'static) -> Result<(), Box<dyn E
|
|||
//writeln!(std::io::stderr(), "{:?}", ::backtrace::Backtrace::new())
|
||||
//.unwrap();
|
||||
}));
|
||||
let sleep = std::time::Duration::from_millis(16);
|
||||
loop {
|
||||
terminal.draw(|frame|{
|
||||
let area = frame.size();
|
||||
|
|
@ -93,15 +93,15 @@ pub trait Device: Send + Sync {
|
|||
fn handle (&mut self, _event: &EngineEvent) -> Usually<()> {
|
||||
Ok(())
|
||||
}
|
||||
fn render (&self, _buffer: &mut Buffer, _area: Rect) -> Usually<(u16, u16)> {
|
||||
Ok((0,0))
|
||||
fn render (&self, _buffer: &mut Buffer, _area: Rect) -> Usually<Rect> {
|
||||
Ok(Rect { x: 0, y: 0, width: 0, height: 0 })
|
||||
}
|
||||
fn process (&mut self, _client: Client, _scope: ProcessScope) {}
|
||||
}
|
||||
|
||||
pub struct DynamicDevice<T> {
|
||||
pub state: Mutex<T>,
|
||||
pub render: Mutex<Box<dyn FnMut(&T, &mut Buffer, Rect)->Usually<(u16, u16)> + Send>>,
|
||||
pub render: Mutex<Box<dyn FnMut(&T, &mut Buffer, Rect)->Usually<Rect> + Send>>,
|
||||
pub handle: Mutex<Box<dyn FnMut(&mut T, &EngineEvent)->Usually<()> + Send>>,
|
||||
pub process: Mutex<Box<dyn FnMut(&mut T) + Send>>
|
||||
}
|
||||
|
|
@ -113,7 +113,7 @@ impl<T> DynamicDevice<T> {
|
|||
process: P,
|
||||
state: T
|
||||
) -> Self where
|
||||
R: FnMut(&T, &mut Buffer, Rect)->Usually<(u16, u16)> + Send + 'static,
|
||||
R: FnMut(&T, &mut Buffer, Rect)->Usually<Rect> + Send + 'static,
|
||||
H: FnMut(&mut T, &EngineEvent) -> Result<(), Box<dyn Error>> + Send + 'static,
|
||||
P: FnMut(&mut T) + Send + 'static
|
||||
{
|
||||
|
|
@ -133,7 +133,7 @@ impl<T: Send + Sync> Device for DynamicDevice<T> {
|
|||
fn handle (&mut self, event: &EngineEvent) -> Usually<()> {
|
||||
self.handle.lock().unwrap()(&mut *self.state.lock().unwrap(), event)
|
||||
}
|
||||
fn render (&self, buf: &mut Buffer, area: Rect) -> Usually<(u16, u16)> {
|
||||
fn render (&self, buf: &mut Buffer, area: Rect) -> Usually<Rect> {
|
||||
self.render.lock().unwrap()(&*self.state.lock().unwrap(), buf, area)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue