aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2023-02-01 09:46:17 -0330
committerSam Anthony <sam@samanthony.xyz>2023-02-01 09:46:17 -0330
commitebf889219bbba702df0e7756c78268eb5437c30a (patch)
tree1e326bee7939bfcbb1ed42c6d81e9c5af8098646
parentcdb67db4ab688dc93f28fefa2281616a00160c65 (diff)
downloadpfc-ebf889219bbba702df0e7756c78268eb5437c30a.zip
refactor
-rw-r--r--src/lib.rs2
-rw-r--r--src/main.rs38
-rw-r--r--src/ui.rs32
3 files changed, 40 insertions, 32 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 6e363b3..527ddb8 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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(())
+}