#[macro_use]
mod macros {
#[macro_export]
macro_rules! default_widget_properties {
() => {
fn get_config(&mut self) -> &mut WidgetConfig {
&mut self.config
}
fn get_system_properties(&mut self) -> &mut HashMap<i32, String> {
&mut self.system_properties
}
fn get_callbacks(&mut self) -> &mut CallbackRegistry {
&mut self.callback_registry
}
}
}
macro_rules! default_widget_callbacks {
() => {
fn tick_callback(&mut self, _widgets: &[WidgetContainer], _layouts: &[LayoutContainer]) {
if self.get_callbacks().has_on_tick() {
if let Some(mut cb) = self.get_callbacks().on_tick.take() {
cb(self, _widgets, _layouts);
self.get_callbacks().on_tick = Some(cb);
}
}
}
fn mouse_entered_callback(&mut self, _widgets: &[WidgetContainer], _layouts: &[LayoutContainer]) {
if self.get_callbacks().has_on_mouse_entered() {
if let Some(mut cb) = self.get_callbacks().on_mouse_entered.take() {
cb(self, _widgets, _layouts);
self.get_callbacks().on_mouse_entered = Some(cb);
}
}
}
fn mouse_exited_callback(&mut self, _widgets: &[WidgetContainer], _layouts: &[LayoutContainer]) {
if self.get_callbacks().has_on_mouse_exited() {
if let Some(mut cb) = self.get_callbacks().on_mouse_exited.take() {
cb(self, _widgets, _layouts);
self.get_callbacks().on_mouse_exited = Some(cb);
}
}
}
fn mouse_moved_callback(&mut self, _widgets: &[WidgetContainer], _layouts: &[LayoutContainer], _points: Points) {
if self.get_callbacks().has_on_mouse_moved() {
if let Some(mut cb) = self.get_callbacks().on_mouse_moved.take() {
cb(self, _widgets, _layouts, _points);
self.get_callbacks().on_mouse_moved = Some(cb);
}
}
}
fn mouse_scrolled_callback(&mut self, _widgets: &[WidgetContainer], _layouts: &[LayoutContainer], _points: Points) {
if self.get_callbacks().has_on_mouse_scrolled() {
if let Some(mut cb) = self.get_callbacks().on_mouse_scrolled.take() {
cb(self, _widgets, _layouts, _points);
self.get_callbacks().on_mouse_scrolled = Some(cb);
}
}
}
fn button_clicked_callback(&mut self, _widgets: &[WidgetContainer], _layouts: &[LayoutContainer], _button: u8, _clicks: u8, _state: bool) {
if self.get_callbacks().has_on_mouse_clicked() {
if let Some(mut cb) = self.get_callbacks().on_mouse_clicked.take() {
cb(self, _widgets, _layouts, _button, _clicks, _state);
self.get_callbacks().on_mouse_clicked = Some(cb);
}
}
}
}
}
macro_rules! default_widget_functions {
() => {
fn as_any(&mut self) -> &mut dyn Any {
self
}
}
}
}
pub mod widgets;
pub mod render;
pub mod layouts;