wip: styling: resusable toggle func

This commit is contained in:
Jeremy Wall 2025-02-26 20:14:22 -05:00
parent ba5ea3c627
commit 4623a911f4

View File

@ -670,10 +670,14 @@ impl<'ws> Workspace<'ws> {
self.state.char_queue.clear();
}
KeyCode::Char('b') if key.modifiers.contains(KeyModifiers::CONTROL) => {
self.toggle_bold()?;
let address = self.book.location.clone();
let style = self.book.get_cell_style(self.book.current_sheet, &address).map(|s| s.font.b);
self.toggle_bool_style(style, "font.b", &address)?;
}
KeyCode::Char('i') if key.modifiers.contains(KeyModifiers::CONTROL) => {
self.toggle_italic()?;
let address = self.book.location.clone();
let style = self.book.get_cell_style(self.book.current_sheet, &address).map(|s| s.font.i);
self.toggle_bool_style(style, "font.i", &address)?;
}
KeyCode::Char(d) if d.is_ascii_digit() => {
self.handle_numeric_prefix(d);
@ -846,34 +850,14 @@ impl<'ws> Workspace<'ws> {
return Ok(None);
}
fn toggle_italic(&mut self) -> Result<(), anyhow::Error> {
let address = self.book.location.clone();
let value = if let Some(style) = self.book.get_cell_style(self.book.current_sheet, &address) {
if style.font.i { "false" } else { "true" }
fn toggle_bool_style(&mut self, current_val: Option<bool>, path: &str, address: &Address) -> Result<(), anyhow::Error> {
let value = if let Some(b_val) = current_val {
if b_val { "false" } else { "true" }
} else {
"true"
};
self.book.set_cell_style(
&[("font.i", value)],
&Area {
sheet: self.book.current_sheet,
row: address.row as i32,
column: address.col as i32,
width: 1,
height: 1,
})?;
Ok(())
}
fn toggle_bold(&mut self) -> Result<(), anyhow::Error> {
let address = self.book.location.clone();
let value = if let Some(style) = self.book.get_cell_style(self.book.current_sheet, &address) {
if style.font.b { "false" } else { "true" }
} else {
"true"
};
self.book.set_cell_style(
&[("font.b", value)],
&[(path, value)],
&Area {
sheet: self.book.current_sheet,
row: address.row as i32,