//! Fire event Sciter sample. #![allow(unused_variables)] #![allow(non_snake_case)] extern crate sciter; use sciter::Element; use self::sciter::dom::event::*; use self::sciter::dom::HELEMENT; use self::sciter::value::Value; struct FireEvent; impl sciter::EventHandler for FireEvent { fn on_event(&mut self, root: HELEMENT, source: HELEMENT, target: HELEMENT, code: BEHAVIOR_EVENTS, phase: PHASE_MASK, reason: EventReason) -> bool { if phase != PHASE_MASK::BUBBLING { return false; } if code == BEHAVIOR_EVENTS::BUTTON_CLICK { // `root` points to attached element, usually it is an ``. let root = Element::from(root).root(); let message = root.find_first("#message").unwrap().expect("div#message not found"); let source = Element::from(source); println!("our root is {:?}, message is {:?} and source is {:?}", root, message, source); if let Some(id) = source.get_attribute("id") { if id == "send" { // just send a simple event source.send_event(BEHAVIOR_EVENTS::CHANGE, None, Some(message.as_ptr())).expect("Failed to send event"); return true; } else if id == "fire" { // fire event with specified params let data = Value::from("Rusty param"); source.fire_event(BEHAVIOR_EVENTS::CHANGE, None, Some(message.as_ptr()), false, Some(data)).expect("Failed to fire event"); return true; } }; }; false } } fn main() { let html = include_bytes!("fire_event.htm"); let mut frame = sciter::Window::new(); frame.event_handler(FireEvent); frame.load_html(html, Some("example://fire_event.htm")); frame.run_app(); }