diff --git a/rpn_rs_gui/src/app.rs b/rpn_rs_gui/src/app.rs index d056d62..0af6a93 100644 --- a/rpn_rs_gui/src/app.rs +++ b/rpn_rs_gui/src/app.rs @@ -1,3 +1,4 @@ +use egui::Key; use rpn_rs::calc::Calculator; /// We derive Deserialize/Serialize so we can persist app state on shutdown. @@ -82,7 +83,7 @@ impl eframe::App for TemplateApp { *value += 1.0; } - ui.label(format!("{:?}",self.calculator.stack.iter().next())); + ui.label(format!("{:?}", self.calculator.stack.iter().next())); // ui.add(ui.text_edit_singleline(self.calculator.stack.iter().next().map(|_| String::from("e")).unwrap_or_default())); @@ -115,11 +116,78 @@ impl eframe::App for TemplateApp { // format!("Keys pressed: {:?}", i.key_pressed(egui::Key::I) ) // })); - ui.label(ui.input(|i| { - format!("Keys pressed: {:?}", i.keys_down ) - })); + ui.input(|i| { + if i.events.is_empty() { + return; + } - // ui.label(format!("Keys pressed: {:?}", InputState.keys_down)) + for e in i.events.iter() { + match e { + egui::Event::Text(t) => { + self.calculator.take_input(t.chars().next().unwrap()); + } + egui::Event::Key { + key: Key::ArrowLeft, + pressed: true, + .. + } => { + self.calculator.take_input('<'); + } + egui::Event::Key { + key: Key::ArrowRight, + pressed: true, + .. + } => { + self.calculator.take_input('>'); + } + egui::Event::Key { + key: Key::Enter, + pressed: true, + .. + } => { + self.calculator.take_input(' '); + } + + egui::Event::Copy => continue, + egui::Event::Cut => continue, + egui::Event::Paste(_) => continue, + egui::Event::Key { + key, + pressed, + repeat, + modifiers, + } => continue, + egui::Event::PointerMoved(_) => continue, + egui::Event::PointerButton { + pos, + button, + pressed, + modifiers, + } => continue, + egui::Event::PointerGone => continue, + egui::Event::Scroll(_) => continue, + egui::Event::Zoom(_) => continue, + egui::Event::CompositionStart => continue, + egui::Event::CompositionUpdate(_) => continue, + egui::Event::CompositionEnd(_) => continue, + egui::Event::Touch { + device_id, + id, + phase, + pos, + force, + } => continue, + egui::Event::AccessKitActionRequest(_) => continue, + } + } + + eprintln!("Got events: {:#?}", i.events); + + // format!("Keys pressed: {:?}", i.keys_down) + }); + + ui.label(format!("Calc details: {:#?}", self.calculator.stack)); + ui.label(format!("Entry buffer: {}", self.calculator.get_l())); egui::warn_if_debug_build(ui); });