summaryrefslogtreecommitdiffstats
path: root/src/interactive/widgets/mark.rs
diff options
context:
space:
mode:
authorSebastian Thiel <sthiel@thoughtworks.com>2019-06-14 15:14:11 +0800
committerSebastian Thiel <sthiel@thoughtworks.com>2019-06-14 15:14:11 +0800
commit60ba3e7f5216030e7dd4a12355de6ac78999d8e1 (patch)
treeada171df8437817b60eff10a7e99e9c8570529b6 /src/interactive/widgets/mark.rs
parentc67abaec3c573dbfaf31be22693220a49a67b262 (diff)
first sketch of the delete-draw-loop
Diffstat (limited to 'src/interactive/widgets/mark.rs')
-rw-r--r--src/interactive/widgets/mark.rs21
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) = {