diff options
Diffstat (limited to 'src/config/theme/sheetview.rs')
| -rw-r--r-- | src/config/theme/sheetview.rs | 39 |
1 files changed, 16 insertions, 23 deletions
diff --git a/src/config/theme/sheetview.rs b/src/config/theme/sheetview.rs index de5751a..5590349 100644 --- a/src/config/theme/sheetview.rs +++ b/src/config/theme/sheetview.rs @@ -1,26 +1,23 @@ -use mlua::{IntoLua, Table, UserData}; +use mlua::{IntoLua, UserData}; use ratatui::style::Color; -use crate::config::GlobalConfig; +use crate::{config::{evalsto::EvalTo, GlobalConfig}, sheet::cell::CellRef}; -use super::colorpair::ColorPair; +use super::style::Style; -#[derive(Clone)] +#[derive(Debug, Clone)] pub struct SheetViewTheme { - pub cursor: ColorPair, - pub selection: ColorPair, - pub cell: (ColorPair, ColorPair), + pub cursor: Style, + pub selection: Style, + pub cell: EvalTo<Style, CellRef>, } impl SheetViewTheme { pub const fn new() -> Self { Self { - cursor: ColorPair::new(Color::Black, Color::White), - selection: ColorPair::new(Color::White, Color::DarkGray), - cell: ( - ColorPair::new(Color::White, Color::Black), - ColorPair::new(Color::White, Color::DarkGray), - ), + cursor: Style::new().fg(Color::Black).bg(Color::White), + selection: Style::new().fg(Color::White).bg(Color::DarkGray), + cell: EvalTo::Value(Style::new().fg(Color::White).bg(Color::Black)), } } } @@ -38,31 +35,27 @@ macro_rules! cfg_mut { } impl UserData for SheetViewTheme { - fn add_fields<'lua, F: mlua::prelude::LuaUserDataFields<'lua, Self>>(fields: &mut F) { + 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: ColorPair| { + fields.add_field_function_set("cursor", |_, _, pair: Style| { cfg_mut!().cursor = pair; Ok(()) }); fields.add_field_function_get("selection", |_, _| Ok(cfg!().selection.clone())); - fields.add_field_function_set("selection", |_, _, pair: ColorPair| { + fields.add_field_function_set("selection", |_, _, pair: Style| { cfg_mut!().selection = pair; Ok(()) }); fields.add_field_function_get("cell", |lua, _| { - let table = lua.create_table()?; - let sel = cfg!().cell.clone(); - table.set(1, sel.0)?; - table.set(2, sel.1)?; - Ok(table.into_lua(lua)?) + Ok(cfg!().cell.clone().into_lua(lua)?) }); - fields.add_field_function_set("cell", |_, _, pair: Table| { - cfg_mut!().cell = (pair.get(1)?, pair.get(2)?); + fields.add_field_function_set("cell", |_, _, cell: EvalTo<Style, CellRef>| { + cfg_mut!().cell = cell; Ok(()) }); } |