]> uap-core.de Git - note.git/commitdiff
remove closure based widget builder methods main
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sat, 25 Jul 2026 14:29:50 +0000 (16:29 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sat, 25 Jul 2026 14:29:50 +0000 (16:29 +0200)
ui-rs/src/ui/button.rs
ui-rs/src/ui/label.rs
ui-rs/src/ui/list.rs
ui-rs/src/ui/text.rs
ui-rs/src/ui/widget.rs
ui-rs/src/ui/window.rs

index b8ed0e453e52bc6ffd7f6d8f7bdfb8b1a1967108..fba6f0602e9a8bcc19c01bfa57626ab4352b55fc 100644 (file)
@@ -135,12 +135,6 @@ pub enum LinkButtonType {
 pub type ToggleButtonCreate = fn(*const UiObject, *const UiToggleArgs) -> *mut c_void;
 
 impl<T> toolkit::UiObject<T> {
-    widget_fn!(button, button_builder, ButtonBuilder, Button);
-    widget_fn!(togglebutton, togglebutton_builder, ToggleBuilder, ToggleButton);
-    widget_fn!(checkbox, checkbox_builder, ToggleBuilder, ToggleButton);
-    widget_fn!(switch, switch_builder, ToggleBuilder, ToggleButton);
-    widget_fn!(radiobutton, radiobutton_builder, ToggleBuilder, ToggleButton);
-
     pub fn button_builder<'a>(&'a mut self) -> ButtonBuilder<'a, T> {
         unsafe {
             let args = ui_button_args_new();
index dc0c107bafa677239b76fb044e44bee9eaa13413..0ff069489a6a82285d66f73ba5d004dd5b5e297d 100644 (file)
@@ -1,7 +1,7 @@
 use std::ffi::{c_char, c_int, c_void, CString};
 use crate::ui::{ffi, toolkit, Button, ButtonBuilder};
 use crate::ui::ffi::{UiButtonArgs, UiLabelArgs, UiObject, UiString, UiToggleArgs};
-use crate::ui::widget::{widget_fn, Widget};
+use crate::ui::widget::{Widget};
 
 
 #[macro_export]
@@ -58,10 +58,6 @@ pub enum Alignment {
 }
 
 impl<T> toolkit::UiObject<T> {
-    widget_fn!(label, label_builder, LabelBuilder, Label);
-    widget_fn!(llabel, llabel_builder, LabelBuilder, Label);
-    widget_fn!(rlabel, rlabel_builder, LabelBuilder, Label);
-
     pub fn label_builder<'a>(&'a mut self) -> LabelBuilder<'a, T> {
         unsafe {
             let args = ui_label_args_new();
index 37c1f3a79badc51c522f0826fe4a81e718e723f8..78dedbb9a6670e8b9d96fbaff7a09cc84e2d4fd6 100644 (file)
@@ -34,7 +34,7 @@ use std::ffi::{c_char, c_int, c_void};
 use std::ffi::CString;
 use std::marker::PhantomData;
 use std::mem;
-use crate::ui::widget::{widget_typed_fn, Widget};
+use crate::ui::widget::{Widget};
 
 #[macro_export]
 macro_rules! listview {
@@ -138,10 +138,6 @@ pub enum ColumnType {
 pub type ListBuilderCreate = fn(*const UiObject, *const UiListArgs) -> ListView;
 
 impl<T> toolkit::UiObject<T> {
-    widget_typed_fn!(listview, listview_builder, ListViewBuilder);
-    widget_typed_fn!(tableview, tableview_builder, TableViewBuilder);
-    widget_typed_fn!(sourcelist, sourcelist_builder, SourceListBuilder);
-
     pub fn listview_builder<'a, E>(&'a mut self) -> ListViewBuilder<'a, T, E> {
         unsafe {
             let args = ui_list_args_new();
index 31d78270fc0575518684e72c12dec5c9afe83b06..7a8c4430f24498d09805490ae180fef62106f5dc 100644 (file)
@@ -32,7 +32,7 @@ use std::ffi::{c_char, c_int, c_void};
 use std::ffi::CString;
 use crate::ui::{event, toolkit, EventWrapper};
 use crate::ui::ffi::*;
-use crate::ui::widget::{widget_fn, Widget};
+use crate::ui::widget::{Widget};
 
 
 #[macro_export]
@@ -126,8 +126,6 @@ pub struct TextAreaBuilder<'a, T> {
 }
 
 impl<T> toolkit::UiObject<T> {
-    widget_fn!(textarea, textarea_builder, TextAreaBuilder, TextArea);
-
     pub fn textarea_builder<'a>(&'a mut self) -> TextAreaBuilder<'a, T> {
         unsafe {
             let args = ui_textarea_args_new();
@@ -425,10 +423,6 @@ pub fn frameless_textfield_create(obj: *const UiObject, args: *const UiTextField
 }
 
 impl<T> toolkit::UiObject<T> {
-    widget_fn!(textfield, textfield_builder, TextFieldBuilder, TextField);
-    widget_fn!(passwordfield, passwordfield_builder, TextFieldBuilder, TextField);
-    widget_fn!(frameless_textfield, frameless_textfield_builder, TextFieldBuilder, TextField);
-
     pub fn textfield_builder<'a>(&'a mut self) -> TextFieldBuilder<'a, T> {
         unsafe {
             let args = ui_textfield_args_new();
index ec37de614759f08ddfc54238863adc8bcbe6d2c9..cfc6e0c4304f348f040832ed89228fd5f2c540f7 100644 (file)
@@ -28,6 +28,8 @@
 
 #![allow(dead_code)]
 
+use std::ffi::{c_int, c_void};
+
 pub trait Widget {
     fn get_widget(&self) -> *mut c_void;
 
@@ -83,53 +85,4 @@ unsafe extern "C" {
     fn ui_widget_set_visible(widget: *mut c_void, enable: c_int);
 }
 
-/* ------------------------ internal helper macros ------------------------ */
-
-///
-/// Create a closure-based widget creation function
-///
-/// # Example:
-///
-///     pub fn button_builder(&self) -> ButtonBuilder { ... }
-///     widget_fn!(button, button_builder, ButtonBuilder);
-///
-/// This creates a function
-///
-///     pub fn button(&self, build: F)
-///
-/// That can be used like:
-///
-///     obj.button(|b| {
-///         b.label("Hello");
-///     }
-///
-macro_rules! widget_fn {
-    ($fn_name:ident, $builder_fn:ident, $builder_ty:ident, $widget:ident) => {
-        pub fn $fn_name<F>(&mut self, build: F) -> $widget
-        where
-            F: Fn(&mut $builder_ty<T>),
-        {
-            let mut builder = self.$builder_fn();
-            build(&mut builder);
-            builder.create()
-        }
-    };
-}
-
-macro_rules! widget_typed_fn {
-    ($fn_name:ident, $builder_fn:ident, $builder_ty:ident) => {
-        pub fn $fn_name<F, E>(&mut self, build: F)
-        where
-            F: Fn(&mut $builder_ty<T, E>),
-        {
-            let mut builder = self.$builder_fn();
-            build(&mut builder);
-            builder.create();
-        }
-    };
-}
-
-use std::ffi::{c_int, c_void};
-pub(super) use widget_fn;
-pub(super) use widget_typed_fn;
 
index bc28e3a4ec585191895c982e2180eee6f3dab846..9c08b99d98c8ba388f91083cd358aed88fde17eb 100644 (file)
@@ -34,7 +34,6 @@ use std::ffi::{c_uint, CString};
 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};
-use crate::ui::widget::widget_fn;
 
 impl<T> toolkit::UiObject<T> {
     pub fn show(&self) {