From: Olaf Wintermann Date: Fri, 24 Jul 2026 19:08:53 +0000 (+0200) Subject: add new macros for creating containers X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=9f98227d436b6108b1a51b9c0aa8bb05954b4da3;p=note.git add new macros for creating containers --- diff --git a/application/note/src/window.rs b/application/note/src/window.rs index 0c6aac4..fed3a66 100644 --- a/application/note/src/window.rs +++ b/application/note/src/window.rs @@ -28,7 +28,7 @@ use std::any::Any; use backend::backend::{BackendHandle, BroadcastMessage, NoteId}; -use ui_rs::{action, button, ui_actions, UiModel}; +use ui_rs::{action, button, hbox, ui_actions, UiModel}; use ui_rs::ui::*; use crate::{App, AppStates}; use entity::collection::{Model as Collection, Node}; @@ -307,6 +307,10 @@ pub fn create_window(app: &App, ctx: &AppContext) -> UiObject {{ + $parent.hbox_builder() + $(.$name($value))* + .create(|$child| $body) + }}; +} + +#[macro_export] +macro_rules! hbox { + ( + $parent:expr + $(, $name:ident = $value:expr )* + , + |$child:ident| $body:block + ) => {{ + $parent.hbox_builder() + $(.$name($value))* + .create(|$child| $body) + }}; +} + +#[macro_export] +macro_rules! grid { + ( + $parent:expr + $(, $name:ident = $value:expr )* + , + |$child:ident| $body:block + ) => {{ + $parent.grid_builder() + $(.$name($value))* + .create(|$child| $body) + }}; +} + +#[macro_export] +macro_rules! frame { + ( + $parent:expr + $(, $name:ident = $value:expr )* + , + |$child:ident| $body:block + ) => {{ + $parent.frame_builder() + $(.$name($value))* + .create(|$child| $body) + }}; +} + +#[macro_export] +macro_rules! expander { + ( + $parent:expr + $(, $name:ident = $value:expr )* + , + |$child:ident| $body:block + ) => {{ + $parent.expander_builder() + $(.$name($value))* + .create(|$child| $body) + }}; +} + +#[macro_export] +macro_rules! scrolledwindow { + ( + $parent:expr + $(, $name:ident = $value:expr )* + , + |$child:ident| $body:block + ) => {{ + $parent.scrolledwindow_builder() + $(.$name($value))* + .create(|$child| $body) + }}; +} + +#[macro_export] +macro_rules! hsplitpane { + ( + $parent:expr + $(, $name:ident = $value:expr )* + , + |$child:ident| $body:block + ) => {{ + $parent.hsplitpane_builder() + $(.$name($value))* + .create(|$child| $body) + }}; +} + +#[macro_export] +macro_rules! vsplitpane { + ( + $parent:expr + $(, $name:ident = $value:expr )* + , + |$child:ident| $body:block + ) => {{ + $parent.vsplitpane_builder() + $(.$name($value))* + .create(|$child| $body) + }}; +} + +#[macro_export] +macro_rules! sidebar { + ( + $parent:expr + $(, $name:ident = $value:expr )* + , + |$child:ident| $body:block + ) => {{ + $parent.sidebar_builder() + $(.$name($value))* + .create(|$child| $body) + }}; +} + +#[macro_export] +macro_rules! left_panel { + ( + $parent:expr + $(, $name:ident = $value:expr )* + , + |$child:ident| $body:block + ) => {{ + $parent.left_panel_builder() + $(.$name($value))* + .create(|$child| $body) + }}; +} + +#[macro_export] +macro_rules! right_panel { + ( + $parent:expr + $(, $name:ident = $value:expr )* + , + |$child:ident| $body:block + ) => {{ + $parent.right_panel_builder() + $(.$name($value))* + .create(|$child| $body) + }}; +} + macro_rules! container_fn { ($fn_name:ident, $builder_fn:ident, $builder_ty:ident) => { pub fn $fn_name(&mut self, build: F, ui: U) diff --git a/ui-rs/src/ui/widget.rs b/ui-rs/src/ui/widget.rs index b4d9bf9..ec37de6 100644 --- a/ui-rs/src/ui/widget.rs +++ b/ui-rs/src/ui/widget.rs @@ -66,9 +66,9 @@ macro_rules! widget { $(,)? ) => {{ let mut builder = $parent.$widget(); - let builder = builder + let mut builder = builder $(.$name($value))*; - builder.create() + builder.create() }}; }