]> uap-core.de Git - note.git/commitdiff
remove _builder suffix main
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 26 Jul 2026 09:24:31 +0000 (11:24 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 26 Jul 2026 09:24:31 +0000 (11:24 +0200)
application/note/src/newnotebook.rs
application/note/src/window.rs
ui-rs/src/ui/application.rs
ui-rs/src/ui/button.rs
ui-rs/src/ui/container.rs
ui-rs/src/ui/label.rs
ui-rs/src/ui/list.rs
ui-rs/src/ui/text.rs
ui-rs/src/ui/window.rs

index 78e25f06248e4e90a8ebe3c4c97ae56c6e447e5a..376f509ede2283f9a4c9859f28ce86c4fdc4ad6f 100644 (file)
@@ -87,7 +87,7 @@ pub fn new_notebook_dialog<T>(parent: &UiObject<T>, groups: &Vec<Collection>, ba
         groups: Default::default(),
     };
 
-    parent.dialogwindow_builder()
+    parent.dialogwindow()
         .title("Add Notebook")
         .modal(true)
         .show_closebutton(false)
index 5f518d4cb480da1cb1477336d5c56aabc3fa01b3..3c01d765a21f9781a5d0ca910a9e73e72ae91b85 100644 (file)
@@ -194,7 +194,7 @@ pub fn create_window(app: &App, ctx: &AppContext<MainWindow>) -> UiObject<MainWi
         // it is suppressed
         obj.ctx.set_state(AppStates::NoteEnableNew as i32);
 
-        obj.sidebar_builder().create(|obj|{
+        obj.sidebar().create(|obj|{
             sourcelist!(obj,
                 fill = true, value = &data.notebooks,
                 getvalue = |elm,_row,item|{
@@ -223,7 +223,7 @@ pub fn create_window(app: &App, ctx: &AppContext<MainWindow>) -> UiObject<MainWi
             );
         });
 
-        obj.left_panel_builder().create(|obj|{
+        obj.left_panel().create(|obj|{
             let mut model = TableModel::new();
             model.add_column("Name", ColumnType::String, -1);
             model.add_column("Last Modified", ColumnType::String, 0);
@@ -237,7 +237,7 @@ pub fn create_window(app: &App, ctx: &AppContext<MainWindow>) -> UiObject<MainWi
                 onactivate_action = "note_activated");
         });
 
-        obj.right_panel_builder().create(|obj|{
+        obj.right_panel().create(|obj|{
             tabview!(obj, fill = true, tabview_type = TabViewType::Invisible, varname = "note_type", |tabview|{
                 tabview.tab("empty", |_obj| {});
 
index 0ba86f2cf5fb16bc20f8c334962d9cc01e2090c5..d723a904fdc1d79c1563a852eb13ec22702aad4e 100644 (file)
@@ -31,6 +31,7 @@
 use std::ffi::{c_char, c_int, c_void, CString};
 use std::marker::PhantomData;
 use ui_rs_derive::UiModel;
+use crate::dialog;
 use crate::ui::ffi::{UiCallback, UiEvent};
 use crate::ui::{call_mainthread, dialog, toolkit, ui_call_mainthread, ui_global_context, UiActions, UiContext, UiModel};
 
@@ -141,11 +142,7 @@ struct ErrApp<'a> {
 
 impl<'a> Application<NoAppData> for ErrApp<'a> {
     fn on_startup(&mut self, _app: &AppContext<NoAppData>) {
-        dialog(|d| {
-            d.title(self.title);
-            d.content(self.message);
-            d.button1_label("OK");
-        });
+        dialog!(title = self.title, content = self.message, button1_label = "OK");
     }
 }
 
index fba6f0602e9a8bcc19c01bfa57626ab4352b55fc..62c1daf4cd669840e61429b8cde9d8841d28278f 100644 (file)
@@ -40,35 +40,42 @@ use crate::ui::widget::*;
 #[macro_export]
 macro_rules! button {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, button_builder, $($tt)*)
+        $crate::widget!($parent, button, $($tt)*)
     };
 }
 
 #[macro_export]
 macro_rules! togglebutton {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, togglebutton_builder, $($tt)*)
+        $crate::widget!($parent, togglebutton, $($tt)*)
     };
 }
 
 #[macro_export]
 macro_rules! checkbox {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, checkbox_builder, $($tt)*)
+        $crate::widget!($parent, checkbox, $($tt)*)
     };
 }
 
 #[macro_export]
 macro_rules! switch {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, switch_builder, $($tt)*)
+        $crate::widget!($parent, switch, $($tt)*)
     };
 }
 
 #[macro_export]
 macro_rules! radiobutton {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, radiobutton_builder, $($tt)*)
+        $crate::widget!($parent, radiobutton, $($tt)*)
+    };
+}
+
+#[macro_export]
+macro_rules! linkbutton {
+    ($parent:expr, $($tt:tt)*) => {
+        $crate::widget!($parent, linkbutton, $($tt)*)
     };
 }
 
@@ -135,14 +142,14 @@ pub enum LinkButtonType {
 pub type ToggleButtonCreate = fn(*const UiObject, *const UiToggleArgs) -> *mut c_void;
 
 impl<T> toolkit::UiObject<T> {
-    pub fn button_builder<'a>(&'a mut self) -> ButtonBuilder<'a, T> {
+    pub fn button<'a>(&'a mut self) -> ButtonBuilder<'a, T> {
         unsafe {
             let args = ui_button_args_new();
             ButtonBuilder { args: args, obj: self }
         }
     }
 
-    pub fn togglebutton_builder<'a>(&'a mut self) -> ToggleBuilder<'a, T> {
+    pub fn togglebutton<'a>(&'a mut self) -> ToggleBuilder<'a, T> {
         unsafe {
             let args = ui_toggle_args_new();
             ToggleBuilder { args: args, obj: self, create: togglebutton_create }
@@ -151,26 +158,33 @@ impl<T> toolkit::UiObject<T> {
 
 
 
-    pub fn checkbox_builder<'a>(&'a mut self) -> ToggleBuilder<'a, T> {
+    pub fn checkbox<'a>(&'a mut self) -> ToggleBuilder<'a, T> {
         unsafe {
             let args = ui_toggle_args_new();
             ToggleBuilder { args: args, obj: self, create: checkbox_create }
         }
     }
 
-    pub fn switch_builder<'a>(&'a mut self) -> ToggleBuilder<'a, T> {
+    pub fn switch<'a>(&'a mut self) -> ToggleBuilder<'a, T> {
         unsafe {
             let args = ui_toggle_args_new();
             ToggleBuilder { args: args, obj: self, create: switch_create }
         }
     }
 
-    pub fn radiobutton_builder<'a>(&'a mut self) -> ToggleBuilder<'a, T> {
+    pub fn radiobutton<'a>(&'a mut self) -> ToggleBuilder<'a, T> {
         unsafe {
             let args = ui_toggle_args_new();
             ToggleBuilder { args: args, obj: self, create: radiobutton_create }
         }
     }
+
+    pub fn linkbutton<'a>(&'a mut self) -> LinkButtonBuilder<'a, T> {
+        unsafe {
+            let args = ui_linkbutton_args_new();
+            LinkButtonBuilder { args: args, obj: self }
+        }
+    }
 }
 
 fn togglebutton_create<'a>(obj: *const UiObject, args: *const UiToggleArgs) -> *mut c_void {
index 5dca705f677c51eb296adac04146168aa43b4bfe..389776983dab5ed88b266417b487283f4a4b1293 100644 (file)
@@ -42,7 +42,7 @@ macro_rules! vbox {
         ,
         |$child:ident| $body:block
     ) => {{
-        $parent.hbox_builder()
+        $parent.hbox()
             $(.$name($value))*
             .create(|$child| $body)
     }};
@@ -56,7 +56,7 @@ macro_rules! hbox {
         ,
         |$child:ident| $body:block
     ) => {{
-        $parent.hbox_builder()
+        $parent.hbox()
             $(.$name($value))*
             .create(|$child| $body)
     }};
@@ -70,7 +70,7 @@ macro_rules! grid {
         ,
         |$child:ident| $body:block
     ) => {{
-        $parent.grid_builder()
+        $parent.grid()
             $(.$name($value))*
             .create(|$child| $body)
     }};
@@ -84,7 +84,7 @@ macro_rules! frame {
         ,
         |$child:ident| $body:block
     ) => {{
-        $parent.frame_builder()
+        $parent.frame()
             $(.$name($value))*
             .create(|$child| $body)
     }};
@@ -98,7 +98,7 @@ macro_rules! expander {
         ,
         |$child:ident| $body:block
     ) => {{
-        $parent.expander_builder()
+        $parent.expander()
             $(.$name($value))*
             .create(|$child| $body)
     }};
@@ -112,7 +112,7 @@ macro_rules! scrolledwindow {
         ,
         |$child:ident| $body:block
     ) => {{
-        $parent.scrolledwindow_builder()
+        $parent.scrolledwindow()
             $(.$name($value))*
             .create(|$child| $body)
     }};
@@ -126,7 +126,7 @@ macro_rules! hsplitpane {
         ,
         |$child:ident| $body:block
     ) => {{
-        $parent.hsplitpane_builder()
+        $parent.hsplitpane()
             $(.$name($value))*
             .create(|$child| $body)
     }};
@@ -140,7 +140,7 @@ macro_rules! vsplitpane {
         ,
         |$child:ident| $body:block
     ) => {{
-        $parent.vsplitpane_builder()
+        $parent.vsplitpane()
             $(.$name($value))*
             .create(|$child| $body)
     }};
@@ -154,7 +154,7 @@ macro_rules! sidebar {
         ,
         |$child:ident| $body:block
     ) => {{
-        $parent.sidebar_builder()
+        $parent.sidebar()
             $(.$name($value))*
             .create(|$child| $body)
     }};
@@ -168,7 +168,7 @@ macro_rules! left_panel {
         ,
         |$child:ident| $body:block
     ) => {{
-        $parent.left_panel_builder()
+        $parent.left_panel()
             $(.$name($value))*
             .create(|$child| $body)
     }};
@@ -182,7 +182,7 @@ macro_rules! right_panel {
         ,
         |$child:ident| $body:block
     ) => {{
-        $parent.right_panel_builder()
+        $parent.right_panel()
             $(.$name($value))*
             .create(|$child| $body)
     }};
@@ -196,7 +196,7 @@ macro_rules! tabview {
         ,
         |$child:ident| $body:block
     ) => {{
-        $parent.tabview_builder()
+        $parent.tabview()
             $(.$name($value))*
             .create(|$child| $body)
     }};
@@ -204,20 +204,6 @@ macro_rules! tabview {
 
 
 
-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)
-        where
-            F: Fn(&mut $builder_ty<'_, T>),
-            U: FnOnce(&mut toolkit::UiObject<T>)
-        {
-            let mut builder = self.$builder_fn();
-            build(&mut builder);
-            builder.create(ui);
-        }
-    };
-}
-
 pub enum SubContainer {
     VBox = 0,
     HBox = 1,
@@ -265,11 +251,7 @@ fn grid_create(obj: *mut UiObject, args: *const UiContainerArgs) {
 }
 
 impl<T> toolkit::UiObject<T> {
-    container_fn!(vbox, vbox_builder, ContainerBuilder);
-    container_fn!(hbox, hbox_builder, ContainerBuilder);
-    container_fn!(grid, grid_builder, ContainerBuilder);
-
-    pub fn vbox_builder(&mut self) -> ContainerBuilder<'_, T>
+    pub fn vbox(&mut self) -> ContainerBuilder<'_, T>
     {
         unsafe {
             let args = ui_container_args_new();
@@ -281,7 +263,7 @@ impl<T> toolkit::UiObject<T> {
         }
     }
 
-    pub fn hbox_builder(&mut self) -> ContainerBuilder<'_, T>
+    pub fn hbox(&mut self) -> ContainerBuilder<'_, T>
     {
         unsafe {
             let args = ui_container_args_new();
@@ -293,7 +275,7 @@ impl<T> toolkit::UiObject<T> {
         }
     }
 
-    pub fn grid_builder(&mut self) -> ContainerBuilder<'_, T>
+    pub fn grid(&mut self) -> ContainerBuilder<'_, T>
     {
         unsafe {
             let args = ui_container_args_new();
@@ -526,11 +508,7 @@ fn scrolledwindow_create(obj: *mut UiObject, args: *const UiFrameArgs) {
 }
 
 impl<T> toolkit::UiObject<T> {
-    container_fn!(frame, frame_builder, FrameBuilder);
-    container_fn!(expander, expander_builder, FrameBuilder);
-    container_fn!(scrolledwindow, scrolledwindow_builder, FrameBuilder);
-
-    pub fn frame_builder(&mut self) -> FrameBuilder<'_, T>
+    pub fn frame(&mut self) -> FrameBuilder<'_, T>
     {
         unsafe {
             let args = ui_frame_args_new();
@@ -542,7 +520,7 @@ impl<T> toolkit::UiObject<T> {
         }
     }
 
-    pub fn expander_builder(&mut self) -> FrameBuilder<'_, T>
+    pub fn expander(&mut self) -> FrameBuilder<'_, T>
     {
         unsafe {
             let args = ui_frame_args_new();
@@ -554,7 +532,7 @@ impl<T> toolkit::UiObject<T> {
         }
     }
 
-    pub fn scrolledwindow_builder(&mut self) -> FrameBuilder<'_, T>
+    pub fn scrolledwindow(&mut self) -> FrameBuilder<'_, T>
     {
         unsafe {
             let args = ui_frame_args_new();
@@ -769,10 +747,7 @@ fn vsplitpane_create(obj: *mut UiObject, args: *const UiSplitPaneArgs) {
 
 
 impl<T> toolkit::UiObject<T> {
-    container_fn!(hsplitpane, hsplitpane_builder, SplitPaneBuilder);
-    container_fn!(vsplitpane, vsplitpane_builder, SplitPaneBuilder);
-
-    pub fn hsplitpane_builder(&mut self) -> SplitPaneBuilder<'_, T>
+    pub fn hsplitpane(&mut self) -> SplitPaneBuilder<'_, T>
     {
         unsafe {
             let args = ui_splitpane_args_new();
@@ -784,7 +759,7 @@ impl<T> toolkit::UiObject<T> {
         }
     }
 
-    pub fn vsplitpane_builder(&mut self) -> SplitPaneBuilder<'_, T>
+    pub fn vsplitpane(&mut self) -> SplitPaneBuilder<'_, T>
     {
         unsafe {
             let args = ui_splitpane_args_new();
@@ -984,9 +959,7 @@ fn right_panel_create(obj: *mut UiObject, args: *const UiSidebarArgs) {
 
 
 impl<T> toolkit::UiObject<T> {
-    container_fn!(sidebar, sidebar_builder, SidebarBuilder);
-
-    pub fn sidebar_builder(&mut self) -> SidebarBuilder<'_, T>
+    pub fn sidebar(&mut self) -> SidebarBuilder<'_, T>
     {
         unsafe {
             let args = ui_sidebar_args_new();
@@ -998,7 +971,7 @@ impl<T> toolkit::UiObject<T> {
         }
     }
 
-    pub fn left_panel_builder(&mut self) -> SidebarBuilder<'_, T>
+    pub fn left_panel(&mut self) -> SidebarBuilder<'_, T>
     {
         unsafe {
             let args = ui_sidebar_args_new();
@@ -1010,7 +983,7 @@ impl<T> toolkit::UiObject<T> {
         }
     }
 
-    pub fn right_panel_builder(&mut self) -> SidebarBuilder<'_, T>
+    pub fn right_panel(&mut self) -> SidebarBuilder<'_, T>
     {
         unsafe {
             let args = ui_sidebar_args_new();
@@ -1132,16 +1105,7 @@ impl<'a, T> TabBuilder<'a, T> {
 }
 
 impl<T> toolkit::UiObject<T> {
-    pub fn tabview<F, U>(&mut self, build: F, ui: U)
-    where
-    F: Fn(&mut TabViewBuilder<T>),
-    U: FnOnce(&mut TabBuilder<T>) {
-        let mut builder = self.tabview_builder();
-        build(&mut builder);
-        builder.create(ui);
-    }
-
-    pub fn tabview_builder(&mut self) -> TabViewBuilder<'_, T>
+    pub fn tabview(&mut self) -> TabViewBuilder<'_, T>
     {
         unsafe {
             let args = ui_tabview_args_new();
index 0ff069489a6a82285d66f73ba5d004dd5b5e297d..094345ccf6f135b4474a8d8ff524b53c15d31ca4 100644 (file)
@@ -7,21 +7,21 @@ use crate::ui::widget::{Widget};
 #[macro_export]
 macro_rules! label {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, label_builder, $($tt)*)
+        $crate::widget!($parent, label, $($tt)*)
     };
 }
 
 #[macro_export]
 macro_rules! llabel {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, llabel_builder, $($tt)*)
+        $crate::widget!($parent, llabel, $($tt)*)
     };
 }
 
 #[macro_export]
 macro_rules! rlabel {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, rlabel_builder, $($tt)*)
+        $crate::widget!($parent, rlabel, $($tt)*)
     };
 }
 
@@ -58,21 +58,21 @@ pub enum Alignment {
 }
 
 impl<T> toolkit::UiObject<T> {
-    pub fn label_builder<'a>(&'a mut self) -> LabelBuilder<'a, T> {
+    pub fn label<'a>(&'a mut self) -> LabelBuilder<'a, T> {
         unsafe {
             let args = ui_label_args_new();
             LabelBuilder { args: args, obj: self, create: label_create }
         }
     }
 
-    pub fn llabel_builder<'a>(&'a mut self) -> LabelBuilder<'a, T> {
+    pub fn llabel<'a>(&'a mut self) -> LabelBuilder<'a, T> {
         unsafe {
             let args = ui_label_args_new();
             LabelBuilder { args: args, obj: self, create: llabel_create }
         }
     }
 
-    pub fn rlabel_builder<'a>(&'a mut self) -> LabelBuilder<'a, T> {
+    pub fn rlabel<'a>(&'a mut self) -> LabelBuilder<'a, T> {
         unsafe {
             let args = ui_label_args_new();
             LabelBuilder { args: args, obj: self, create: rlabel_create }
index 78dedbb9a6670e8b9d96fbaff7a09cc84e2d4fd6..fc55a269107779b33b64a155918c74a88adaf2da 100644 (file)
@@ -39,28 +39,28 @@ use crate::ui::widget::{Widget};
 #[macro_export]
 macro_rules! listview {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, listview_builder, $($tt)*)
+        $crate::widget!($parent, listview, $($tt)*)
     };
 }
 
 #[macro_export]
 macro_rules! dropdown {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, dropdown_builder, $($tt)*)
+        $crate::widget!($parent, dropdown, $($tt)*)
     };
 }
 
 #[macro_export]
 macro_rules! tableview {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, tableview_builder, $($tt)*)
+        $crate::widget!($parent, tableview, $($tt)*)
     };
 }
 
 #[macro_export]
 macro_rules! sourcelist {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, sourcelist_builder, $($tt)*)
+        $crate::widget!($parent, sourcelist, $($tt)*)
     };
 }
 
@@ -138,28 +138,28 @@ pub enum ColumnType {
 pub type ListBuilderCreate = fn(*const UiObject, *const UiListArgs) -> ListView;
 
 impl<T> toolkit::UiObject<T> {
-    pub fn listview_builder<'a, E>(&'a mut self) -> ListViewBuilder<'a, T, E> {
+    pub fn listview<'a, E>(&'a mut self) -> ListViewBuilder<'a, T, E> {
         unsafe {
             let args = ui_list_args_new();
             ListViewBuilder { args: args, obj: self, create: list_create, has_getvalue_func: false, _marker: PhantomData }
         }
     }
 
-    pub fn dropdown_builder<'a, E>(&'a mut self) -> ListViewBuilder<'a, T, E> {
+    pub fn dropdown<'a, E>(&'a mut self) -> ListViewBuilder<'a, T, E> {
         unsafe {
             let args = ui_list_args_new();
             ListViewBuilder { args: args, obj: self, create: dropdown_create, has_getvalue_func: false, _marker: PhantomData }
         }
     }
 
-    pub fn tableview_builder<'a, E>(&'a mut self) -> TableViewBuilder<'a, T, E> {
+    pub fn tableview<'a, E>(&'a mut self) -> TableViewBuilder<'a, T, E> {
         unsafe {
             let args = ui_list_args_new();
             TableViewBuilder { args: args, obj: self, create: tableview_create, model: std::ptr::null_mut(), has_getvalue_func: false, _marker: PhantomData }
         }
     }
     
-    pub fn sourcelist_builder<'a, E>(&'a mut self) -> SourceListBuilder<'a, T, E> {
+    pub fn sourcelist<'a, E>(&'a mut self) -> SourceListBuilder<'a, T, E> {
         unsafe {
             let args = ui_sourcelist_args_new();
             SourceListBuilder { args: args, obj: self, _marker: PhantomData }
index 7a8c4430f24498d09805490ae180fef62106f5dc..cbbe19edf17966764b2e74d16001369ac76f8c2f 100644 (file)
@@ -38,28 +38,28 @@ use crate::ui::widget::{Widget};
 #[macro_export]
 macro_rules! textarea {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, textarea_builder, $($tt)*)
+        $crate::widget!($parent, textarea, $($tt)*)
     };
 }
 
 #[macro_export]
 macro_rules! textfield {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, textfield_builder, $($tt)*)
+        $crate::widget!($parent, textfield, $($tt)*)
     };
 }
 
 #[macro_export]
 macro_rules! passwordfield {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, passwordfield_builder, $($tt)*)
+        $crate::widget!($parent, passwordfield, $($tt)*)
     };
 }
 
 #[macro_export]
 macro_rules! frameless_textfield {
     ($parent:expr, $($tt:tt)*) => {
-        $crate::widget!($parent, frameless_textfield_builder, $($tt)*)
+        $crate::widget!($parent, frameless_textfield, $($tt)*)
     };
 }
 
@@ -126,7 +126,7 @@ pub struct TextAreaBuilder<'a, T> {
 }
 
 impl<T> toolkit::UiObject<T> {
-    pub fn textarea_builder<'a>(&'a mut self) -> TextAreaBuilder<'a, T> {
+    pub fn textarea<'a>(&'a mut self) -> TextAreaBuilder<'a, T> {
         unsafe {
             let args = ui_textarea_args_new();
             TextAreaBuilder { args: args, obj: self }
@@ -423,21 +423,21 @@ pub fn frameless_textfield_create(obj: *const UiObject, args: *const UiTextField
 }
 
 impl<T> toolkit::UiObject<T> {
-    pub fn textfield_builder<'a>(&'a mut self) -> TextFieldBuilder<'a, T> {
+    pub fn textfield<'a>(&'a mut self) -> TextFieldBuilder<'a, T> {
         unsafe {
             let args = ui_textfield_args_new();
             TextFieldBuilder { args: args, obj: self, create: textfield_create }
         }
     }
 
-    pub fn passwordfield_builder<'a>(&'a mut self) -> TextFieldBuilder<'a, T> {
+    pub fn passwordfield<'a>(&'a mut self) -> TextFieldBuilder<'a, T> {
         unsafe {
             let args = ui_textfield_args_new();
             TextFieldBuilder { args: args, obj: self, create: passwordfield_create }
         }
     }
 
-    pub fn frameless_textfield_builder<'a>(&'a mut self) -> TextFieldBuilder<'a, T> {
+    pub fn frameless_textfield<'a>(&'a mut self) -> TextFieldBuilder<'a, T> {
         unsafe {
             let args = ui_textfield_args_new();
             TextFieldBuilder { args: args, obj: self, create: frameless_textfield_create }
index 9c08b99d98c8ba388f91083cd358aed88fde17eb..aba6bc7c3a7792fea243ca3146aa6665102e39e5 100644 (file)
@@ -35,6 +35,31 @@ use std::marker::PhantomData;
 use crate::ui::{destroy_boxed, event, event_wrapper_oneshot, ffi, toolkit, ui_object_ref, ui_update_action_bindings, AppContext, EventWrapper, NoAppData, UiActions, UiModel};
 use crate::ui::ffi::{UiButtonArgs, UiCallback, UiContext, UiDestructor, UiDialogArgs, UiDialogWindowArgs, UiObject};
 
+
+#[macro_export]
+macro_rules! dialog {
+    (
+        $($name:ident = $value:expr),* $(,)?
+    ) => {{
+        dialog()
+            $(.$name($value))*
+            .create()
+    }};
+}
+
+#[macro_export]
+macro_rules! child_dialog {
+    (
+        $parent:expr,
+        $(, $name:ident = $value:expr )*
+        $(,)?
+    ) => {{
+        parent_dialog();
+            $(.$name($value))*
+            .create()
+    }};
+}
+
 impl<T> toolkit::UiObject<T> {
     pub fn show(&self) {
         unsafe {
@@ -410,7 +435,7 @@ impl<T: UiModel + UiActions> DialogWindowBuilder<T> {
 
 
 impl<T> toolkit::UiObject<T> {
-    pub fn dialog_builder(&self) -> DialogBuilder<T> {
+    pub fn dialog(&self) -> DialogBuilder<T> {
         DialogBuilder {
             args: unsafe { ui_dialog_args_new() },
             parent: self.ptr,
@@ -418,16 +443,7 @@ impl<T> toolkit::UiObject<T> {
         }
     }
 
-    pub fn dialog<F>(&mut self, build: F)
-    where
-    F: Fn(&mut DialogBuilder<T>),
-    {
-        let mut builder = self.dialog_builder();
-        build(&mut builder);
-        builder.create();
-    }
-
-    pub fn dialogwindow_builder<D>(&self) -> DialogWindowBuilder<D> {
+    pub fn dialogwindow<D>(&self) -> DialogWindowBuilder<D> {
         unsafe {
             DialogWindowBuilder {
                 args: ui_dialogwindow_args_new(),
@@ -454,7 +470,7 @@ impl<T> toolkit::UiObject<T> {
     }
 }
 
-pub fn dialog_builder() -> DialogBuilder<NoAppData> {
+pub fn dialog() -> DialogBuilder<NoAppData> {
     DialogBuilder {
         args: unsafe { ui_dialog_args_new() },
         parent: std::ptr::null_mut(),
@@ -462,15 +478,6 @@ pub fn dialog_builder() -> DialogBuilder<NoAppData> {
     }
 }
 
-pub fn dialog<F>(build: F)
-where
-    F: Fn(&mut DialogBuilder<NoAppData>),
-{
-    let mut builder = dialog_builder();
-    build(&mut builder);
-    builder.create();
-}
-
 fn openfile_dialog<T, F>(obj: &toolkit::UiObject<T>, mode: c_uint, f: F)
 where F: FnMut(&mut event::Event<T>) + 'static {
     let b: Box<EventWrapper<T>> = Box::new(EventWrapper { callback: Box::new(f) });