diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-08-18 13:49:12 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-08-18 13:49:12 -0400 |
commit | 5d1f28420fe4ddef520a309dedaf98bd26694998 (patch) | |
tree | 94eecfb4e6dd9f0374f80b363394c4753a3cb769 | |
parent | f988796521e4a4dcecee3ec0fe53363a7c7273c9 (diff) | |
download | ynab-api-5d1f28420fe4ddef520a309dedaf98bd26694998.tar.gz ynab-api-5d1f28420fe4ddef520a309dedaf98bd26694998.zip |
improve some event handling
-rw-r--r-- | src/views/txn_table.rs | 86 |
1 files changed, 53 insertions, 33 deletions
diff --git a/src/views/txn_table.rs b/src/views/txn_table.rs index 8e73475..493d12f 100644 --- a/src/views/txn_table.rs +++ b/src/views/txn_table.rs @@ -1,4 +1,4 @@ -use cursive::view::{Identifiable, ViewWrapper}; +use cursive::view::{Identifiable, View, ViewWrapper}; #[derive(Clone, Copy, Eq, Hash, PartialEq)] enum TxnColumn { @@ -137,38 +137,58 @@ impl TableView { }); render_selected_total(s); }) - .on_event('h', |s| { - s.on_event(cursive::event::Event::Key( - cursive::event::Key::Left, - )) - }) - .on_event('j', |s| { - s.on_event(cursive::event::Event::Key( - cursive::event::Key::Down, - )) - }) - .on_event('k', |s| { - s.on_event(cursive::event::Event::Key( - cursive::event::Key::Up, - )) - }) - .on_event('l', |s| { - s.on_event(cursive::event::Event::Key( - cursive::event::Key::Right, - )) - }) - .on_event('g', move |s| { - s.call_on_id(&id, |v: &mut TxnTableView| { - v.set_selected_row(0); - }) - .unwrap(); - }) - .on_event('G', move |s| { - s.call_on_id(&id, |v: &mut TxnTableView| { - v.set_selected_row(v.len() - 1); - }) - .unwrap(); - }) + .on_event_inner( + 'h', + |v: &mut cursive::views::IdView<TxnTableView>, _| { + v.on_event(cursive::event::Event::Key( + cursive::event::Key::Left, + )); + None + }, + ) + .on_event_inner( + 'j', + |v: &mut cursive::views::IdView<TxnTableView>, _| { + v.on_event(cursive::event::Event::Key( + cursive::event::Key::Down, + )); + None + }, + ) + .on_event_inner( + 'k', + |v: &mut cursive::views::IdView<TxnTableView>, _| { + v.on_event(cursive::event::Event::Key( + cursive::event::Key::Up, + )); + None + }, + ) + .on_event_inner( + 'l', + |v: &mut cursive::views::IdView<TxnTableView>, _| { + v.on_event(cursive::event::Event::Key( + cursive::event::Key::Right, + )); + None + }, + ) + .on_event_inner( + 'g', + |v: &mut cursive::views::IdView<TxnTableView>, _| { + v.get_mut().set_selected_row(0); + None + }, + ) + .on_event_inner( + 'G', + |v: &mut cursive::views::IdView<TxnTableView>, _| { + let mut v = v.get_mut(); + let last_row = v.len() - 1; + v.set_selected_row(last_row); + None + }, + ) .on_event('r', move |s| { let budget: &mut crate::ynab::Budget = s.user_data().unwrap(); budget.refresh(); |