diff options
author | Sebastian Thiel <sthiel@thoughtworks.com> | 2019-06-14 15:14:11 +0800 |
---|---|---|
committer | Sebastian Thiel <sthiel@thoughtworks.com> | 2019-06-14 15:14:11 +0800 |
commit | 60ba3e7f5216030e7dd4a12355de6ac78999d8e1 (patch) | |
tree | ada171df8437817b60eff10a7e99e9c8570529b6 /src/interactive/widgets/mark.rs | |
parent | c67abaec3c573dbfaf31be22693220a49a67b262 (diff) |
first sketch of the delete-draw-loop
Diffstat (limited to 'src/interactive/widgets/mark.rs')
-rw-r--r-- | src/interactive/widgets/mark.rs | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/interactive/widgets/mark.rs b/src/interactive/widgets/mark.rs index 47ae798..d78672b 100644 --- a/src/interactive/widgets/mark.rs +++ b/src/interactive/widgets/mark.rs @@ -24,6 +24,10 @@ use tui::{ use tui_react::{List, ListProps}; use unicode_segmentation::UnicodeSegmentation; +pub enum MarkMode { + Delete, +} + pub type EntryMarkMap = BTreeMap<TreeIndex, EntryMark>; pub struct EntryMark { pub size: u64, @@ -84,18 +88,29 @@ impl MarkPane { pub fn marked(&self) -> &EntryMarkMap { &self.marked } - pub fn key(mut self, key: Key) -> Option<Self> { + pub fn key(mut self, key: Key) -> Option<(Self, Option<MarkMode>)> { + let action = None; match key { - Char('d') | Char(' ') => return self.remove_selected(), + Ctrl('R') => return self.prepare_deletion(), + Char('d') | Char(' ') => return self.remove_selected().map(|s| (s, action)), Ctrl('u') | PageUp => self.change_selection(CursorDirection::PageUp), Char('k') | Up => self.change_selection(CursorDirection::Up), Char('j') | Down => self.change_selection(CursorDirection::Down), Ctrl('d') | PageDown => self.change_selection(CursorDirection::PageDown), _ => {} }; - Some(self) + Some((self, action)) } + pub(crate) fn next_entry_for_deletion(&mut self) -> Option<usize> { + None + } + pub(crate) fn delete_entry(self, _index: usize) -> Option<Self> { + Some(self) + } + fn prepare_deletion(self) -> Option<(Self, Option<MarkMode>)> { + Some((self, Some(MarkMode::Delete))) + } fn remove_selected(mut self) -> Option<Self> { if let Some(mut selected) = self.selected { let (idx, se_len) = { |