]> uap-core.de Git - note.git/commitdiff
add new macros for creating containers
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 24 Jul 2026 19:08:53 +0000 (21:08 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 24 Jul 2026 19:08:53 +0000 (21:08 +0200)
application/note/src/window.rs
ui-rs/src/ui/container.rs
ui-rs/src/ui/widget.rs

index 0c6aac4ab6719c78934d444b7c8fbe5db602f923..fed3a66a6fca134a71d86dd76d4e26ce99900c13 100644 (file)
@@ -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<MainWindow>) -> UiObject<MainWi
                                     });
                                     button!(obj, label = "Open", action = "open_extern");
                                 });
+
+                                hbox!(obj, spacing = 10, |obj| {
+
+                                });
                             }
                         );
                     });
index 04580525b03c471e716b5dcda19ed158403508e9..c2025a6bb2a3b47f1259b9a8df81a8dcf55cf994 100644 (file)
@@ -34,6 +34,160 @@ use std::ffi::CString;
 use crate::ui::ffi::*;
 use crate::ui::{toolkit};
 
+#[macro_export]
+macro_rules! vbox {
+    (
+        $parent:expr
+        $(, $name:ident = $value:expr )*
+        ,
+        |$child:ident| $body:block
+    ) => {{
+        $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<F, U>(&mut self, build: F, ui: U)
index b4d9bf9c8337e1b49a9e6de3e1679a26d807db2a..ec37de614759f08ddfc54238863adc8bcbe6d2c9 100644 (file)
@@ -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()
     }};
 }