diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2023-02-01 09:46:17 -0330 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2023-02-01 09:46:17 -0330 |
| commit | ebf889219bbba702df0e7756c78268eb5437c30a (patch) | |
| tree | 1e326bee7939bfcbb1ed42c6d81e9c5af8098646 | |
| parent | cdb67db4ab688dc93f28fefa2281616a00160c65 (diff) | |
| download | pfc-ebf889219bbba702df0e7756c78268eb5437c30a.zip | |
refactor
| -rw-r--r-- | src/lib.rs | 2 | ||||
| -rw-r--r-- | src/main.rs | 38 | ||||
| -rw-r--r-- | src/ui.rs | 32 |
3 files changed, 40 insertions, 32 deletions
@@ -1,3 +1,5 @@ +pub mod ui; + enum Token { Operand(f64), Operator(Operator), diff --git a/src/main.rs b/src/main.rs index 85e95ea..d6bf2d9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,18 +1,14 @@ -use crossterm::{ - event::{ - self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, KeyEvent, KeyModifiers, - }, - execute, - terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, -}; +use crossterm::event::{self, Event, KeyCode, KeyEvent, KeyModifiers}; use std::io; use tui::{ - backend::{Backend, CrosstermBackend}, + backend::Backend, layout::{Constraint, Direction, Layout}, widgets::Paragraph, Frame, Terminal, }; +use pfc::ui; + enum Signal { None, Exit, @@ -52,34 +48,12 @@ impl App { fn main() -> io::Result<()> { let app = App::default(); - let mut terminal = init_terminal()?; + let mut terminal = ui::init_terminal()?; let result = run(app, &mut terminal); - cleanup_terminal(terminal)?; + ui::cleanup_terminal(terminal)?; result } -fn init_terminal() -> Result<Terminal<CrosstermBackend<io::Stdout>>, io::Error> { - enable_raw_mode()?; - let mut stdout = io::stdout(); - execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?; - let backend = CrosstermBackend::new(stdout); - Terminal::new(backend) -} - -fn cleanup_terminal<B>(mut terminal: Terminal<B>) -> Result<(), io::Error> -where - B: Backend + io::Write, -{ - disable_raw_mode()?; - execute!( - terminal.backend_mut(), - LeaveAlternateScreen, - DisableMouseCapture, - )?; - terminal.show_cursor()?; - Ok(()) -} - fn run<B: Backend>(mut app: App, terminal: &mut Terminal<B>) -> io::Result<()> { loop { terminal.draw(|f| app.draw(f))?; diff --git a/src/ui.rs b/src/ui.rs new file mode 100644 index 0000000..9133f1c --- /dev/null +++ b/src/ui.rs @@ -0,0 +1,32 @@ +use crossterm::{ + event::{DisableMouseCapture, EnableMouseCapture}, + execute, + terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, +}; +use std::io; +use tui::{ + backend::{Backend, CrosstermBackend}, + Terminal, +}; + +pub fn init_terminal() -> Result<Terminal<CrosstermBackend<io::Stdout>>, io::Error> { + enable_raw_mode()?; + let mut stdout = io::stdout(); + execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?; + let backend = CrosstermBackend::new(stdout); + Terminal::new(backend) +} + +pub fn cleanup_terminal<B>(mut terminal: Terminal<B>) -> Result<(), io::Error> +where + B: Backend + io::Write, +{ + disable_raw_mode()?; + execute!( + terminal.backend_mut(), + LeaveAlternateScreen, + DisableMouseCapture, + )?; + terminal.show_cursor()?; + Ok(()) +} |