From bb9944d086332ed0b8d6064316225e901c456bd7 Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Fri, 2 Aug 2024 21:34:41 +0200 Subject: change 'viewsheet' bindings to 'view' --- src/app.rs | 2 +- src/config/mod.rs | 1 + src/config/theme/mod.rs | 10 +++--- src/config/theme/sheetview/bar.rs | 9 ----- src/config/theme/sheetview/mod.rs | 74 --------------------------------------- src/config/theme/view/bar.rs | 9 +++++ src/config/theme/view/mod.rs | 74 +++++++++++++++++++++++++++++++++++++++ src/lua/mod.rs | 6 ++-- src/sheet/luaref.rs | 6 ++-- src/state/mod.rs | 6 ++-- src/state/view/bar.rs | 4 +-- src/state/view/mod.rs | 6 ++-- src/widgets/sheetview/mod.rs | 38 ++++++++++---------- 13 files changed, 123 insertions(+), 122 deletions(-) delete mode 100644 src/config/theme/sheetview/bar.rs delete mode 100644 src/config/theme/sheetview/mod.rs create mode 100644 src/config/theme/view/bar.rs create mode 100644 src/config/theme/view/mod.rs (limited to 'src') diff --git a/src/app.rs b/src/app.rs index e93748f..2e956eb 100644 --- a/src/app.rs +++ b/src/app.rs @@ -30,7 +30,7 @@ impl App { pub fn new() -> Self { let sheet_id = Register::create(10, 50); GlobalState::instance_mut() - .sheetview + .view .set_active_sheet(Some(sheet_id)); Self { diff --git a/src/config/mod.rs b/src/config/mod.rs index b01be62..4f8ad7d 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -6,6 +6,7 @@ use self::theme::Theme; pub mod constants; pub mod theme; +pub mod keymap; #[derive(Debug, Default)] pub struct GlobalConfig { diff --git a/src/config/theme/mod.rs b/src/config/theme/mod.rs index b714e86..0f5f94a 100644 --- a/src/config/theme/mod.rs +++ b/src/config/theme/mod.rs @@ -1,24 +1,24 @@ use mlua::UserData; -use self::{editor::EditorTheme, sheetview::SheetViewTheme}; +use self::{editor::EditorTheme, view::SheetViewTheme}; use super::DUMMY_CONFIG; mod bar; pub mod editor; -pub mod sheetview; +pub mod view; pub mod style; #[derive(Clone, Debug, Default)] pub struct Theme { - pub sheetview: SheetViewTheme, + pub view: SheetViewTheme, pub editor: EditorTheme, } impl Theme { pub const fn new() -> Self { Self { - sheetview: SheetViewTheme::new(), + view: SheetViewTheme::new(), editor: EditorTheme::new(), } } @@ -26,7 +26,7 @@ impl Theme { impl UserData for Theme { fn add_fields<'lua, F: mlua::prelude::LuaUserDataFields<'lua, Self>>(fields: &mut F) { - fields.add_field_function_get("sheetview", |_, _| Ok(DUMMY_CONFIG.theme.sheetview)); + fields.add_field_function_get("view", |_, _| Ok(DUMMY_CONFIG.theme.view)); fields.add_field_function_get("editor", |_, _| Ok(DUMMY_CONFIG.theme.editor)) } diff --git a/src/config/theme/sheetview/bar.rs b/src/config/theme/sheetview/bar.rs deleted file mode 100644 index b23f785..0000000 --- a/src/config/theme/sheetview/bar.rs +++ /dev/null @@ -1,9 +0,0 @@ -use super::super::bar::BarTheme; -use crate::{config::GlobalConfig, state::view::mode::Mode}; - -BarTheme!( - SheetViewBarTheme, - Mode, - GlobalConfig::instance().theme.sheetview.bar, - GlobalConfig::instance_mut().theme.sheetview.bar -); diff --git a/src/config/theme/sheetview/mod.rs b/src/config/theme/sheetview/mod.rs deleted file mode 100644 index fc999ca..0000000 --- a/src/config/theme/sheetview/mod.rs +++ /dev/null @@ -1,74 +0,0 @@ -use mlua::UserData; -use ratatui::style::Color; - -use crate::{config::{GlobalConfig, DUMMY_CONFIG}, lua::evalsto::EvalTo, sheet::cell::CellRef}; - -use self::bar::SheetViewBarTheme; - -use super::style::Style; - -pub mod bar; - -#[derive(Debug, Clone, Default)] -pub struct SheetViewTheme { - pub cursor: EvalTo, - pub selection: EvalTo, - pub cell: EvalTo, - pub background: EvalTo, - pub bar: SheetViewBarTheme, -} - -impl SheetViewTheme { - pub const fn new() -> Self { - Self { - cursor: EvalTo::Value(Style::new().fg(Color::Black).bg(Color::White)), - selection: EvalTo::Value(Style::new().fg(Color::White).bg(Color::DarkGray)), - cell: EvalTo::Value(Style::new().fg(Color::White).bg(Color::Black)), - background: EvalTo::Value(Style::new().bg(Color::Black)), - bar: SheetViewBarTheme::new(), - } - } -} - -macro_rules! cfg { - () => { - GlobalConfig::instance().theme.sheetview - }; -} - -macro_rules! cfg_mut { - () => { - GlobalConfig::instance_mut().theme.sheetview - }; -} - -impl UserData for SheetViewTheme { - fn add_fields<'lua, F: mlua::prelude::LuaUserDataFields<'lua, Self>>(fields: &mut F) { - fields.add_field_function_get("cursor", |_, _| Ok(cfg!().cursor.clone())); - - fields.add_field_function_set("cursor", |_, _, pair: EvalTo| { - cfg_mut!().cursor = pair; - Ok(()) - }); - - fields.add_field_function_get("selection", |_, _| Ok(cfg!().selection.clone())); - fields.add_field_function_set("selection", |_, _, pair: EvalTo| { - cfg_mut!().selection = pair; - Ok(()) - }); - - fields.add_field_function_get("cell", |_, _| Ok(cfg!().cell.clone())); - fields.add_field_function_set("cell", |_, _, cell: EvalTo| { - cfg_mut!().cell = cell; - Ok(()) - }); - - fields.add_field_function_get("background", |_, _| Ok(cfg!().background.clone())); - fields.add_field_function_set("background", |_, _, background: EvalTo| { - cfg_mut!().background = background; - Ok(()) - }); - - fields.add_field_function_get("bar", |_, _| Ok(DUMMY_CONFIG.theme.sheetview.bar)) - } -} diff --git a/src/config/theme/view/bar.rs b/src/config/theme/view/bar.rs new file mode 100644 index 0000000..7fab31a --- /dev/null +++ b/src/config/theme/view/bar.rs @@ -0,0 +1,9 @@ +use super::super::bar::BarTheme; +use crate::{config::GlobalConfig, state::view::mode::Mode}; + +BarTheme!( + SheetViewBarTheme, + Mode, + GlobalConfig::instance().theme.view.bar, + GlobalConfig::instance_mut().theme.view.bar +); diff --git a/src/config/theme/view/mod.rs b/src/config/theme/view/mod.rs new file mode 100644 index 0000000..e88e9ad --- /dev/null +++ b/src/config/theme/view/mod.rs @@ -0,0 +1,74 @@ +use mlua::UserData; +use ratatui::style::Color; + +use crate::{config::{GlobalConfig, DUMMY_CONFIG}, lua::evalsto::EvalTo, sheet::cell::CellRef}; + +use self::bar::SheetViewBarTheme; + +use super::style::Style; + +pub mod bar; + +#[derive(Debug, Clone, Default)] +pub struct SheetViewTheme { + pub cursor: EvalTo, + pub selection: EvalTo, + pub cell: EvalTo, + pub background: EvalTo, + pub bar: SheetViewBarTheme, +} + +impl SheetViewTheme { + pub const fn new() -> Self { + Self { + cursor: EvalTo::Value(Style::new().fg(Color::Black).bg(Color::White)), + selection: EvalTo::Value(Style::new().fg(Color::White).bg(Color::DarkGray)), + cell: EvalTo::Value(Style::new().fg(Color::White).bg(Color::Black)), + background: EvalTo::Value(Style::new().bg(Color::Black)), + bar: SheetViewBarTheme::new(), + } + } +} + +macro_rules! cfg { + () => { + GlobalConfig::instance().theme.view + }; +} + +macro_rules! cfg_mut { + () => { + GlobalConfig::instance_mut().theme.view + }; +} + +impl UserData for SheetViewTheme { + fn add_fields<'lua, F: mlua::prelude::LuaUserDataFields<'lua, Self>>(fields: &mut F) { + fields.add_field_function_get("cursor", |_, _| Ok(cfg!().cursor.clone())); + + fields.add_field_function_set("cursor", |_, _, pair: EvalTo| { + cfg_mut!().cursor = pair; + Ok(()) + }); + + fields.add_field_function_get("selection", |_, _| Ok(cfg!().selection.clone())); + fields.add_field_function_set("selection", |_, _, pair: EvalTo| { + cfg_mut!().selection = pair; + Ok(()) + }); + + fields.add_field_function_get("cell", |_, _| Ok(cfg!().cell.clone())); + fields.add_field_function_set("cell", |_, _, cell: EvalTo| { + cfg_mut!().cell = cell; + Ok(()) + }); + + fields.add_field_function_get("background", |_, _| Ok(cfg!().background.clone())); + fields.add_field_function_set("background", |_, _, background: EvalTo| { + cfg_mut!().background = background; + Ok(()) + }); + + fields.add_field_function_get("bar", |_, _| Ok(DUMMY_CONFIG.theme.view.bar)) + } +} diff --git a/src/lua/mod.rs b/src/lua/mod.rs index 7d61e5b..e10d83b 100644 --- a/src/lua/mod.rs +++ b/src/lua/mod.rs @@ -8,7 +8,7 @@ use mlua::prelude::*; use crate::{ config::{ - theme::{sheetview::SheetViewTheme, Theme}, + theme::{view::SheetViewTheme, Theme}, GlobalConfig, }, sheet::cell::CellRef, @@ -62,9 +62,9 @@ fn print(_: &Lua, args: LuaMultiValue) -> LuaResult<()> { CellRef => ud.borrow::(), GlobalConfig => GlobalConfig::instance(), Theme => GlobalConfig::instance().theme, - SheetViewTheme => GlobalConfig::instance().theme.sheetview, + SheetViewTheme => GlobalConfig::instance().theme.view, GlobalState => GlobalState::instance(), - SheetViewState => GlobalState::instance().sheetview, + SheetViewState => GlobalState::instance().view, ); } else { writer.write(format!("{:#?}", arg)); diff --git a/src/sheet/luaref.rs b/src/sheet/luaref.rs index 5fb6bed..1a2fd5f 100644 --- a/src/sheet/luaref.rs +++ b/src/sheet/luaref.rs @@ -44,7 +44,7 @@ impl LuaUserData for SheetLuaRef { methods.add_method_mut("map", |_, luaref, func: LuaFunction| { let range: Vec<_> = { let state = GlobalState::instance(); - let lock = state.sheetview.active_sheet().unwrap(); + let lock = state.view.active_sheet().unwrap(); let sheet = lock.read().unwrap(); if sheet.id() != luaref.id() { @@ -53,8 +53,8 @@ impl LuaUserData for SheetLuaRef { let (width, height) = (sheet.width(), sheet.height()); - if state.sheetview.selection_anchor.is_some() { - state.sheetview.selection() + if state.view.selection_anchor.is_some() { + state.view.selection() } else { let mut cells = Vec::new(); for row in 0..height { diff --git a/src/state/mod.rs b/src/state/mod.rs index a461d58..3b5d3c5 100644 --- a/src/state/mod.rs +++ b/src/state/mod.rs @@ -12,7 +12,7 @@ mod bar; #[derive(Debug, Default)] pub struct GlobalState { - pub sheetview: view::SheetViewState, + pub view: view::SheetViewState, pub editor: editor::EditorState, pub active_window: window::Window, pub log: log::LogState, @@ -24,7 +24,7 @@ const DUMMY_STATE: GlobalState = GlobalState::new(); impl GlobalState { const fn new() -> Self { Self { - sheetview: view::SheetViewState::new(), + view: view::SheetViewState::new(), editor: editor::EditorState::new(), log: LogState::new(), active_window: window::Window::View, @@ -52,7 +52,7 @@ impl GlobalState { impl UserData for GlobalState { fn add_fields<'lua, F: UserDataFields<'lua, Self>>(fields: &mut F) { - fields.add_field_function_get("view", |_, _| Ok(DUMMY_STATE.sheetview)); + fields.add_field_function_get("view", |_, _| Ok(DUMMY_STATE.view)); fields.add_field_function_get("editor", |_, _| Ok(DUMMY_STATE.editor)); fields.add_field_function_get("active_window", |_, _| { Ok(GlobalState::instance().active_window) diff --git a/src/state/view/bar.rs b/src/state/view/bar.rs index f3d1e46..57898f5 100644 --- a/src/state/view/bar.rs +++ b/src/state/view/bar.rs @@ -5,6 +5,6 @@ use super::mode::Mode; BarState!( SheetViewBarState, Mode, - GlobalState::instance().sheetview.bar, - GlobalState::instance_mut().sheetview.bar + GlobalState::instance().view.bar, + GlobalState::instance_mut().view.bar ); diff --git a/src/state/view/mod.rs b/src/state/view/mod.rs index 1825128..a63b6ed 100644 --- a/src/state/view/mod.rs +++ b/src/state/view/mod.rs @@ -121,13 +121,13 @@ impl SheetViewState { macro_rules! cfg { () => { - GlobalState::instance().sheetview + GlobalState::instance().view }; } macro_rules! cfg_mut { () => { - GlobalState::instance_mut().sheetview + GlobalState::instance_mut().view }; } @@ -173,7 +173,7 @@ impl UserData for SheetViewState { }); fields.add_field_function_get("bar", |_, _| { - Ok(DUMMY_STATE.sheetview.bar) + Ok(DUMMY_STATE.view.bar) }) } diff --git a/src/widgets/sheetview/mod.rs b/src/widgets/sheetview/mod.rs index 202bb70..6bd8408 100644 --- a/src/widgets/sheetview/mod.rs +++ b/src/widgets/sheetview/mod.rs @@ -6,7 +6,7 @@ use ratatui::{ }; use crate::{ - config::{theme::sheetview::bar::SheetViewBarTheme, GlobalConfig}, + config::{theme::view::bar::SheetViewBarTheme, GlobalConfig}, cursor::CursorMove, lua, sheet::cell::Cell, @@ -32,26 +32,26 @@ impl SheetView { } fn set_mode(&self, mode: Mode) { - GlobalState::instance_mut().sheetview.mode = mode; + GlobalState::instance_mut().view.mode = mode; } fn move_cursor(&self, cm: CursorMove) { GlobalState::instance_mut() - .sheetview + .view .cursor .move_checked(cm) } fn start_selection(&self) { let mut state = GlobalState::instance_mut(); - state.sheetview.selection_anchor = Some((state.sheetview.cursor.y(), state.sheetview.cursor.x())); - state.sheetview.mode = Mode::Visual; + state.view.selection_anchor = Some((state.view.cursor.y(), state.view.cursor.x())); + state.view.mode = Mode::Visual; } fn stop_selection(&self) { let mut state = GlobalState::instance_mut(); - state.sheetview.selection_anchor = None; - state.sheetview.mode = Mode::Normal; + state.view.selection_anchor = None; + state.view.mode = Mode::Normal; } fn open_editor(&self) { @@ -68,7 +68,7 @@ end)"#, } pub fn handle_key_event(&mut self, event: KeyEvent) { - let mode = { GlobalState::instance().sheetview.mode }; + let mode = { GlobalState::instance().view.mode }; match mode { Mode::Normal => match event.code { KeyCode::Char('j') => self.move_cursor(CursorMove::Down(1)), @@ -90,11 +90,11 @@ end)"#, Mode::Insert => match event.code { KeyCode::Enter => { let mut state = GlobalState::instance_mut(); - let lock = state.sheetview.active_sheet().unwrap(); + let lock = state.view.active_sheet().unwrap(); let mut sheet = lock.write().unwrap(); state - .sheetview + .view .selection_or_cursor() .into_iter() .for_each(|(r, c)| { @@ -107,11 +107,11 @@ end)"#, }) }); - state.sheetview.cancel_mode(); + state.view.cancel_mode(); self.bar.set_input_mode(false); } KeyCode::Esc => { - GlobalState::instance_mut().sheetview.cancel_mode(); + GlobalState::instance_mut().view.cancel_mode(); self.bar.set_input_mode(false); } _ => self.bar.handle_keyevent(event), @@ -139,11 +139,11 @@ end)"#, // TODO: push errors to buffer } - GlobalState::instance_mut().sheetview.cancel_mode(); + GlobalState::instance_mut().view.cancel_mode(); self.bar.set_input_mode(false); } KeyCode::Esc => { - GlobalState::instance_mut().sheetview.cancel_mode(); + GlobalState::instance_mut().view.cancel_mode(); self.bar.set_input_mode(false); } _ => self.bar.handle_keyevent(event), @@ -158,12 +158,12 @@ impl Widget for &mut SheetView { Self: Sized, { let mode = { - let theme = GlobalConfig::instance().theme.sheetview.clone(); + let theme = GlobalConfig::instance().theme.view.clone(); let state = GlobalState::instance(); - let lock = state.sheetview.active_sheet().unwrap(); + let lock = state.view.active_sheet().unwrap(); let sheet = lock.read().unwrap(); - let cursor = &state.sheetview.cursor; + let cursor = &state.view.cursor; let sheet_area_inner = self.bar.area(area); @@ -204,7 +204,7 @@ impl Widget for &mut SheetView { .get(cell_ref, &lua::get()) .unwrap_or_default() .apply(cell.to_line()) - } else if state.sheetview.selection_contains(cell_pos_y, cell_pos_x) { + } else if state.view.selection_contains(cell_pos_y, cell_pos_x) { theme .selection .get(cell_ref, &lua::get()) @@ -231,7 +231,7 @@ impl Widget for &mut SheetView { } } - state.sheetview.mode + state.view.mode }; SheetViewBarState::apply(&mut self.bar, mode, &lua::get()); -- cgit v1.2.3-70-g09d2