Skip to content

Commit

Permalink
Experiment: fix nested Rhai menus
Browse files Browse the repository at this point in the history
  • Loading branch information
justinpombrio committed Apr 16, 2024
1 parent 1e0a3f4 commit f436b5a
Showing 1 changed file with 21 additions and 8 deletions.
29 changes: 21 additions & 8 deletions examples/rhai/script_loop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ impl Runtime {
self.keymaps.get_mut(keymap).unwrap().insert(key, keyprog);
}

fn enter_menu(&mut self, menu: &str) {
fn open_menu(&mut self, menu: &str) {
self.active_menu = menu.to_owned();
}

Expand Down Expand Up @@ -110,7 +110,7 @@ fn register_runtime_methods(module: &mut Module) {
active_menu: "Default".to_owned(),
}));

register!(module, runtime.enter_menu(menu: &str));
register!(module, runtime.open_menu(menu: &str));
register!(module, runtime.close_menu());
register!(module, runtime.bind_key(keymap: &str, key: char, close_menu: bool, prog: FnPtr));
register!(module, runtime.block_for_keyprog());
Expand All @@ -131,11 +131,14 @@ pub fn main() {

let prelude_script = "
fn block() {
let keyprog = s::block_for_keyprog();
if keyprog.close_menu {
s::close_menu();
loop {
let keyprog = s::block_for_keyprog();
if keyprog.close_menu {
s::close_menu();
return call(keyprog.prog);
}
call(keyprog.prog);
}
call(keyprog.prog)
}
fn escape() {
Expand All @@ -145,13 +148,22 @@ pub fn main() {

let init_script = "
// Default Menu
s::bind_key(`Default`, 'c', true, || s::enter_menu(`Counter`));
s::bind_key(`Default`, 'c', true, || s::open_menu(`Counter`));
s::bind_key(`Default`, 'i', true, || {
s::enter_menu(`Node`);
s::open_menu(`Node`);
let node = block();
// return to main loop
print(` Inserting node of type ${node}`);
});
s::bind_key(`Default`, 'r', true, || {
s::open_menu(`Counter`);
let count = block();
s::open_menu(`Node`);
let node = block();
for _i in 0..count {
print(` Inserting node of type ${node}`);
}
});
s::bind_key(`Default`, 'q', true, || s::escape());
s::bind_key(`Default`, 'e', true, || s::exit());
Expand All @@ -161,6 +173,7 @@ pub fn main() {
print(` a pressed ${count} times`);
count += 1;
});
s::bind_key(`Counter`, 'd', true, || count);
s::bind_key(`Counter`, 'q', true, || s::escape());
s::bind_key(`Counter`, 'e', true, || s::exit());
Expand Down

0 comments on commit f436b5a

Please sign in to comment.