add clear method
This commit is contained in:
parent
d52311cafa
commit
ffed15e697
19
src/nvim.rs
19
src/nvim.rs
@ -15,6 +15,8 @@ pub trait RedrawEvents {
|
||||
fn on_cursor_goto(&mut self, row: u64, col: u64);
|
||||
|
||||
fn on_put(&mut self, text: &str);
|
||||
|
||||
fn on_clear(&mut self);
|
||||
}
|
||||
|
||||
macro_rules! try_str {
|
||||
@ -84,26 +86,33 @@ fn nvim_cb(ui: &SharedUi, method: &str, params: Vec<Value>) {
|
||||
fn call(ui: &SharedUi, method: &str, args: Vec<Value>) {
|
||||
match method {
|
||||
"cursor_goto" => {
|
||||
safe_call(ui.clone(), move |ui| {
|
||||
safe_call(ui, move |ui| {
|
||||
ui.borrow_mut().on_cursor_goto(try_int!(args[0]), try_int!(args[1]));
|
||||
Ok(())
|
||||
})
|
||||
},
|
||||
}
|
||||
"put" => {
|
||||
safe_call(ui.clone(), move |ui| {
|
||||
safe_call(ui, move |ui| {
|
||||
ui.borrow_mut().on_put(try_str!(args[0]));
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
"clear" => {
|
||||
safe_call(ui, move |ui| {
|
||||
ui.borrow_mut().on_clear();
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
_ => println!("Event {}", method),
|
||||
};
|
||||
}
|
||||
|
||||
fn safe_call<F>(mutex: SharedUi, cb: F)
|
||||
fn safe_call<F>(ui: &SharedUi, cb: F)
|
||||
where F: Fn(&UiMutex<Ui>) -> result::Result<(), String> + 'static + Send
|
||||
{
|
||||
let sent_ui = ui.clone();
|
||||
glib::idle_add(move || {
|
||||
if let Err(msg) = cb(&*mutex) {
|
||||
if let Err(msg) = cb(&*sent_ui) {
|
||||
println!("Error call function: {}", msg);
|
||||
}
|
||||
glib::Continue(false)
|
||||
|
@ -86,5 +86,9 @@ impl RedrawEvents for Ui {
|
||||
fn on_put(&mut self, text: &str) {
|
||||
self.model.put(text);
|
||||
}
|
||||
|
||||
fn on_clear(&mut self) {
|
||||
self.model.clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,10 @@ impl Cell {
|
||||
pub fn new(ch: char) -> Cell {
|
||||
Cell { ch: ch }
|
||||
}
|
||||
|
||||
fn clear(&mut self) {
|
||||
self.ch = ' ';
|
||||
}
|
||||
}
|
||||
|
||||
pub struct UiModel {
|
||||
@ -48,4 +52,12 @@ impl UiModel {
|
||||
self.model[self.cur_row][self.cur_col].ch = text.chars().last().unwrap();
|
||||
self.cur_col += 1;
|
||||
}
|
||||
|
||||
pub fn clear(&mut self) {
|
||||
for row in 0..self.rows {
|
||||
for col in 0..self.columns {
|
||||
self.model[row][col].clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user