summaryrefslogtreecommitdiff
path: root/src/config/theme/sheetview.rs
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2024-08-01 20:13:55 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2024-08-01 20:13:55 +0200
commita807d4e6fb96c4d8b8585b7dbb862e53486562ec (patch)
tree92481d73423fd925f4dd034d68cbfd2e30e216d5 /src/config/theme/sheetview.rs
parent417cee4eeeaf7516dfeb59cdbe34fed18f30e0f7 (diff)
add evalsto
Diffstat (limited to 'src/config/theme/sheetview.rs')
-rw-r--r--src/config/theme/sheetview.rs39
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(())
});
}