pub type ToggleButtonCreate = fn(*const UiObject, *const UiToggleArgs) -> *mut c_void;
impl<T> toolkit::UiObject<T> {
- widget_fn!(button, button_builder, ButtonBuilder);
- widget_fn!(togglebutton, togglebutton_builder, ToggleBuilder);
- widget_fn!(checkbox, checkbox_builder, ToggleBuilder);
- widget_fn!(switch, switch_builder, ToggleBuilder);
- widget_fn!(radiobutton, radiobutton_builder, ToggleBuilder);
+ 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 {
}
impl<T> toolkit::UiObject<T> {
- widget_fn!(textarea, textarea_builder, TextAreaBuilder);
+ widget_fn!(textarea, textarea_builder, TextAreaBuilder, TextArea);
pub fn textarea_builder<'a>(&'a mut self) -> TextAreaBuilder<'a, T> {
unsafe {
}
impl<T> toolkit::UiObject<T> {
- widget_fn!(textfield, textfield_builder, TextFieldBuilder);
- widget_fn!(passwordfield, passwordfield_builder, TextFieldBuilder);
- widget_fn!(frameless_textfield, frameless_textfield_builder, TextFieldBuilder);
+ 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 {
/// }
///
macro_rules! widget_fn {
- ($fn_name:ident, $builder_fn:ident, $builder_ty:ident) => {
- pub fn $fn_name<F>(&mut self, build: F)
+ ($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();
+ builder.create()
}
};
}
}
}
- widget_fn!(dialog, dialog_builder, DialogBuilder);
+ 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();
+ }
}