some minor updates

This commit is contained in:
2024-11-30 06:46:48 +01:00
parent 69d2943bb3
commit f10e216d9c
6 changed files with 38 additions and 126 deletions
+5 -2
View File
@@ -34,8 +34,8 @@ pub mod utils;
pub mod prelude {
pub use crate::ui::Color::*;
pub use crate::ui::Number::*;
pub use crate::ui::Font::*;
pub use crate::ui::Number::*;
pub use crate::{self as osui, css, ersx, launch, rsx, ui::*, Handler};
pub use crate::{call, Children, Element, ElementCore, ElementWidget};
pub use crate::{style, Document, RenderResult, RenderWriter};
@@ -114,7 +114,7 @@ impl Document {
}
}
}
pub fn rebuild(&self) {
pub fn restart(&self) {
if !self.running.is_null() {
unsafe {
*self.running = Some(true);
@@ -151,6 +151,9 @@ impl Document {
utils::flush();
}
}
pub fn draw(&mut self, element: &mut Element) {
self.element = element;
}
}
impl Default for Children {
+2 -18
View File
@@ -1,21 +1,5 @@
use osui::prelude::*;
use osui::{examples::examples, prelude::*};
fn main() {
launch!(app());
}
// A simple counter
fn app() -> Element {
rsx! {
// Create a button with a on_click handler
button { on_click: Handler::new(move |btn: &mut Button, _, document| {
if let Some(count) = document.get_element_by_id::<DataHolder<u32>>("count") {
count.data += 1;
btn.children.set_text(&count.data.to_string());
}
}), "0" }
// Store the data (in this case count)
data_holder as u32 { id: "count" }
}
launch!(examples());
}
+28 -15
View File
@@ -1,4 +1,16 @@
#[macro_export]
macro_rules! check_expr {
(|| $code:block) => {
$crate::Handler::new(move |_, _, _| $code)
};
(|$($inner:tt)*| $code:block) => {
$crate::Handler::new(move |$($inner)*| $code)
};
($expr:expr) => {
$expr
};
}
#[macro_export]
macro_rules! parse_rsx_param {
($elem:expr, for ($($for:tt)*) $code:block $($rest:tt)*) => {
if $elem.children.is_none() {$elem.children = $crate::Children::Children(Vec::new(), 0)}
@@ -10,33 +22,33 @@ macro_rules! parse_rsx_param {
osui::parse_rsx_param!($elem, $($rest)*);
};
($elem:expr, $($k:ident).+: $v:expr) => {
$elem.$($k).+ = $v;
($elem:expr, $($k:ident).+: fn($($params:tt)*) $code:block $(, $($rest:tt)*)?) => {
$elem.$($k).+ = $crate::Handler::new(|$($params)*| $code);
osui::parse_rsx_param!($elem, $($($rest)*)?);
};
($elem:expr, $($k:ident).+: $v:expr, $($rest:tt)*) => {
$elem.$($k).+ = $v;
osui::parse_rsx_param!($elem, $($rest)*);
($elem:expr, $($k:ident).+: $v:expr $(, $($rest:tt)*)?) => {
$elem.$($k).+ = $crate::check_expr!($v);
osui::parse_rsx_param!($elem, $($($rest)*)?);
};
($elem:expr, $p:path) => {
($elem:expr, $p:path) => {
$p;
};
($elem:expr, $($k:ident).+, $($rest:tt)*) => {
$elem.$($k).+;
$elem.$($k).+ = true;
osui::parse_rsx_param!($elem, $($rest)*);
};
($elem:expr, $($k:ident).+., $($rest:tt)*) => {
$elem.$($k).
+.;
$elem.$($k).+.;
osui::parse_rsx_param!($elem, $($rest)*);
};
($elem:expr, $($k:ident).+.: $v:expr) => {
$elem.$($k).+. = $v;
$elem.$($k).+. = $crate::check_expr!($v);
};
($elem:expr, $($k:ident).+.: $v:expr, $($rest:tt)*) => {
$elem.$($k).+. = $v;
osui::parse_rsx_param!($elem, $($rest)*);
($elem:expr, $($k:ident).+.: $v:expr, $(, $($rest:tt)*)?) => {
$elem.$($k).+. = $crate::check_expr!($v);
osui::parse_rsx_param!($elem, $($($rest)*)?);
};
($elem:expr, $code:block $($rest:tt)*) => {
@@ -64,14 +76,15 @@ macro_rules! parse_rsx_param {
};
($elem:expr, $text:expr) => {
if $elem.children.is_none() {$elem.children = $crate::Children::Text(format!($text))}
$elem.children.set_text_force(&format!($text))
};
($elem:expr, $text:expr, $($inner:tt)*) => {
if $elem.children.is_none() {$elem.children = $crate::Children::Text(format!($text, $($inner)*))}
$elem.children.set_text_force(&format!($text, $($inner)*))
};
($elem:expr, ) => {};
($elem:expr) => {};
}
#[macro_export]
+2 -1
View File
@@ -108,7 +108,8 @@ impl Frame {
}
crate::ui::Number::Pe(p) => y = (self.frame.len() * p) / 100,
crate::ui::Number::Center => {
y = (self.frame.len() - output.0.matches('\n').count() + 1) / 2
let content_height = output.0.lines().count();
y = (self.frame.len() - content_height) / 2;
}
crate::ui::Number::Auto => {
for (i, n) in self.used.iter().enumerate() {