close #36
This commit is contained in:
@@ -42,7 +42,7 @@ impl Widget for &App {
|
|||||||
let (x_max, y_max) = self.screen.how_many_cells_fit_in(&area, &self.vars);
|
let (x_max, y_max) = self.screen.how_many_cells_fit_in(&area, &self.vars);
|
||||||
|
|
||||||
let is_selected = |x: usize, y: usize| -> bool {
|
let is_selected = |x: usize, y: usize| -> bool {
|
||||||
if let Mode::Visual((mut x1, mut y1)) = self.mode {
|
if let Mode::Visual((mut x1, mut y1)) | Mode::VisualCmd((mut x1, mut y1), _)= self.mode {
|
||||||
let (mut x2, mut y2) = self.grid.cursor();
|
let (mut x2, mut y2) = self.grid.cursor();
|
||||||
x1 += 1;
|
x1 += 1;
|
||||||
y1 += 1;
|
y1 += 1;
|
||||||
@@ -80,10 +80,6 @@ impl Widget for &App {
|
|||||||
y_idx = y as usize - 1 + self.screen.scroll_y();
|
y_idx = y as usize - 1 + self.screen.scroll_y();
|
||||||
}
|
}
|
||||||
|
|
||||||
if is_selected(x.into(), y.into()) {
|
|
||||||
style = style.fg(Color::LightMagenta).bg(Color::Blue);
|
|
||||||
}
|
|
||||||
|
|
||||||
const ORANGE1: Color = Color::Rgb(200, 160, 0);
|
const ORANGE1: Color = Color::Rgb(200, 160, 0);
|
||||||
const ORANGE2: Color = Color::Rgb(180, 130, 0);
|
const ORANGE2: Color = Color::Rgb(180, 130, 0);
|
||||||
|
|
||||||
@@ -171,6 +167,10 @@ impl Widget for &App {
|
|||||||
}
|
}
|
||||||
None => should_render = false,
|
None => should_render = false,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if is_selected(x.into(), y.into()) {
|
||||||
|
style = style.bg(Color::Blue);
|
||||||
|
}
|
||||||
if (x_idx, y_idx) == self.grid.cursor() {
|
if (x_idx, y_idx) == self.grid.cursor() {
|
||||||
should_render = true;
|
should_render = true;
|
||||||
style = Style::new().fg(Color::Black).bg(Color::White);
|
style = Style::new().fg(Color::Black).bg(Color::White);
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
use std::{
|
use std::{
|
||||||
cmp::{max, min}, fmt::Display, fs, path::PathBuf
|
cmp::{max, min},
|
||||||
|
fmt::Display,
|
||||||
|
fs,
|
||||||
|
path::PathBuf,
|
||||||
};
|
};
|
||||||
|
|
||||||
use ratatui::{
|
use ratatui::{
|
||||||
@@ -12,7 +15,7 @@ use crate::app::{
|
|||||||
app::App,
|
app::App,
|
||||||
error_msg::StatusMessage,
|
error_msg::StatusMessage,
|
||||||
logic::{
|
logic::{
|
||||||
calc::{CSV_EXT, CUSTOM_EXT, LEN},
|
calc::{CSV_EXT, CUSTOM_EXT, Grid, LEN},
|
||||||
cell::CellType,
|
cell::CellType,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -146,14 +149,31 @@ impl Mode {
|
|||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let Mode::VisualCmd(pos, editor ) = &mut app.mode {
|
if let Mode::VisualCmd(pos, editor) = &mut app.mode {
|
||||||
let cmd = &editor.as_string()[1..];
|
let cmd = &editor.as_string()[1..];
|
||||||
let args = cmd.split_ascii_whitespace().collect::<Vec<&str>>();
|
let args = cmd.split_ascii_whitespace().collect::<Vec<&str>>();
|
||||||
if args.is_empty() {
|
if args.is_empty() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
match args[0] {
|
match args[0] {
|
||||||
"foo" => {}
|
"export" => {
|
||||||
|
if let Some(arg1) = args.get(1) {
|
||||||
|
let (x1, y1) = pos;
|
||||||
|
let (x1, y1) = (*x1, *y1);
|
||||||
|
let (x2, y2) = app.grid.cursor();
|
||||||
|
let (low_x, hi_x) = if x1 < x2 { (x1, x2) } else { (x2, x1) };
|
||||||
|
let (low_y, hi_y) = if y1 < y2 { (y1, y2) } else { (y2, y1) };
|
||||||
|
|
||||||
|
let mut g = Grid::new();
|
||||||
|
for (i, x) in (low_x..=hi_x).enumerate() {
|
||||||
|
for (j, y) in (low_y..=hi_y).enumerate() {
|
||||||
|
g.set_cell_raw((i, j), app.grid.get_cell_raw(x, y).clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g.save_to(arg1).expect("Failure");
|
||||||
|
}
|
||||||
|
app.mode = Mode::Normal
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -343,10 +363,10 @@ impl Mode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Keys are process in the handle_event method in App for these
|
// Keys are process in the handle_event method in App for these
|
||||||
Mode::Insert(_chord) => {}
|
Mode::Insert(_chord) => {}
|
||||||
Mode::Command(_chord) => {}
|
Mode::Command(_chord) => {}
|
||||||
Mode::VisualCmd(_pos, _chord ) => {}
|
Mode::VisualCmd(_pos, _chord) => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user