From c1e3bf720989c50e63dc3a787200738583f17ced Mon Sep 17 00:00:00 2001 From: chris west Date: Sat, 11 Jan 2020 13:57:46 -0800 Subject: [PATCH] wide mode is now session-wide --- src/menu.rs | 16 ++++++++-------- src/text.rs | 12 ++++++------ src/ui.rs | 6 +++++- src/ui/view.rs | 4 ++-- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/menu.rs b/src/menu.rs index 5acd831..8071465 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -1,5 +1,8 @@ -use crate::gopher::{self, Type}; use crate::ui::{Action, Key, View, MAX_COLS, SCROLL_LINES}; +use crate::{ + config::Config, + gopher::{self, Type}, +}; use std::fmt; use termion::{clear, cursor}; @@ -53,8 +56,8 @@ impl View for Menu { self.raw.to_string() } - fn render(&self) -> String { - self.render_lines() + fn render(&mut self, cfg: &Config) -> String { + self.render_lines(cfg) } fn respond(&mut self, key: Key) -> Action { @@ -149,7 +152,8 @@ impl Menu { Some((x as u16, y as u16)) } - fn render_lines(&self) -> String { + fn render_lines(&mut self, cfg: &Config) -> String { + self.wide = cfg.wide; let mut out = String::new(); let iter = self.lines.iter().skip(self.scroll).take(self.rows() - 1); let indent = self.indent(); @@ -655,10 +659,6 @@ impl Menu { self.input.clear(); self.redraw_input() } - Key::Char('w') | Key::Ctrl('w') => { - self.wide = !self.wide; - Action::Redraw - } Key::Backspace | Key::Delete => { if self.searching { self.input.pop(); diff --git a/src/text.rs b/src/text.rs index b52ae32..f2c8839 100644 --- a/src/text.rs +++ b/src/text.rs @@ -1,4 +1,7 @@ -use crate::ui::{Action, Key, View, MAX_COLS, SCROLL_LINES}; +use crate::{ + config::Config, + ui::{Action, Key, View, MAX_COLS, SCROLL_LINES}, +}; use std::fmt; use termion::clear; @@ -51,10 +54,6 @@ impl View for Text { self.scroll = self.final_scroll(); Action::Redraw } - Key::Char('w') | Key::Ctrl('w') => { - self.wide = !self.wide; - Action::Redraw - } Key::Down | Key::Ctrl('n') | Key::Char('n') | Key::Ctrl('j') | Key::Char('j') => { if self.scroll < self.final_scroll() { self.scroll += 1; @@ -94,7 +93,8 @@ impl View for Text { } } - fn render(&self) -> String { + fn render(&mut self, cfg: &Config) -> String { + self.wide = cfg.wide; let (cols, rows) = self.size; let mut out = String::new(); let longest = if self.longest > MAX_COLS { diff --git a/src/ui.rs b/src/ui.rs index 46bdab3..c4d74eb 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -276,7 +276,7 @@ impl UI { if !self.views.is_empty() && self.focused < self.views.len() { if let Some(page) = self.views.get_mut(self.focused) { page.term_size(cols as usize, rows as usize); - return Ok(page.render()); + return Ok(page.render(&self.config)); } } Err(error!( @@ -560,6 +560,10 @@ impl UI { self.set_status(format!("Copied {} to clipboard.", url)); } } + 'w' => { + self.config.wide = !self.config.wide; + self.dirty = true; + } 'q' => self.running = false, '\n' => (), c => return Err(error!("Unknown keypress: {}", c)), diff --git a/src/ui/view.rs b/src/ui/view.rs index 52754ed..b276b87 100644 --- a/src/ui/view.rs +++ b/src/ui/view.rs @@ -1,9 +1,9 @@ -use crate::ui; +use crate::{config::Config, ui}; use std::fmt; pub trait View: fmt::Display { fn respond(&mut self, key: ui::Key) -> ui::Action; - fn render(&self) -> String; + fn render(&mut self, cfg: &Config) -> String; fn is_tls(&self) -> bool; fn is_tor(&self) -> bool; fn url(&self) -> String;