better column resizing

This commit is contained in:
🪞👃🪞 2025-04-06 19:09:44 +03:00
parent 44a2108585
commit 4de94beafb
9 changed files with 403 additions and 359 deletions

View file

@ -1,21 +1,23 @@
use crate::*;
mod column; pub use self::column::*;
mod entry; pub use self::entry::*;
mod metadata; pub use self::metadata::*;
mod task; pub use self::task::*;
mod column; pub use self::column::*;
mod entry; pub use self::entry::*;
mod task; pub use self::task::*;
/// The application state.
pub struct Taggart {
pub _root: PathBuf,
pub entries: Vec<Entry>,
pub cursor: usize,
pub offset: usize,
pub column: usize,
pub columns: Columns<fn(&Entry)->Option<Arc<str>>, fn(&mut Self, usize, &str)>,
pub display: Measure<TuiOut>,
pub tasks: Vec<Task>,
pub mode: Option<Mode>,
pub _root: PathBuf,
pub entries: Vec<Entry>,
pub cursor: usize,
pub offset: usize,
pub column: usize,
pub columns: Columns<fn(&Entry)->Option<Arc<str>>, fn(&mut Self, usize, &str)>,
pub display: Measure<TuiOut>,
pub tasks: Vec<Task>,
/// State of modal dialog of editing field
pub mode: Option<Mode>,
/// Count of modified items
pub modified: usize,
}
#[derive(Debug)]
@ -38,6 +40,7 @@ impl Taggart {
columns: Columns::default(),
tasks: vec![],
entries,
modified: 0
})
}
/// Make sure cursor is always in view
@ -58,4 +61,15 @@ impl Taggart {
self.column = self.columns.0.len().saturating_sub(1)
}
}
/// Count modified entries
pub(crate) fn count_modified (&mut self) -> usize {
let mut modified = 0;
for entry in self.entries.iter() {
if entry.is_modified() {
modified += 1;
}
}
self.modified = modified;
self.modified
}
}