From 818408455e6282b7478ba9066a93d9fb80febed5 Mon Sep 17 00:00:00 2001 From: ChristianVisintin Date: Sat, 21 Nov 2020 20:53:29 +0100 Subject: [PATCH] Added terminal to Context --- src/ui/context.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/ui/context.rs b/src/ui/context.rs index 049c3d8..d250aa3 100644 --- a/src/ui/context.rs +++ b/src/ui/context.rs @@ -24,10 +24,22 @@ */ // Dependencies +extern crate crossterm; +extern crate tui; + +// Locals use super::input::InputHandler; use crate::filetransfer::FileTransfer; use crate::host::Localhost; +// Includes +use crossterm::execute; +use crossterm::event::EnableMouseCapture; +use crossterm::terminal::{EnterAlternateScreen}; +use std::io::{stdout, Stdout, Write}; +use tui::backend::CrosstermBackend; +use tui::Terminal; + /// ## Context /// /// Context holds data structures used by the ui @@ -35,6 +47,7 @@ pub struct Context { pub scp_client: Box, pub local: Localhost, pub(crate) input_hnd: InputHandler, + pub(crate) terminal: Terminal>, } impl Context { @@ -42,10 +55,14 @@ impl Context { /// /// Instantiates a new Context pub fn new(scp_client: Box, local: Localhost) -> Context { + // Create terminal + let mut stdout = stdout(); + assert!(execute!(stdout, EnterAlternateScreen, EnableMouseCapture).is_ok()); Context { scp_client: scp_client, local: local, input_hnd: InputHandler::new(), + terminal: Terminal::new(CrosstermBackend::new(stdout)).unwrap() } } }