mirror of
https://github.com/rustdesk/rustdesk.git
synced 2024-12-19 14:37:51 +08:00
61 lines
1.6 KiB
Rust
61 lines
1.6 KiB
Rust
//! 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 `<html>`.
|
|
|
|
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();
|
|
}
|