use crate::ui::ffi::*;
use crate::ui::widget::widget_fn;
-extern "C" {
- fn ui_button_create(obj: *const UiObject, args: *const UiButtonArgs);
- fn ui_togglebutton_create(obj: *const UiObject, args: *const UiToggleArgs);
- fn ui_checkbox_create(obj: *const UiObject, args: *const UiToggleArgs);
- fn ui_switch_create(obj: *const UiObject, args: *const UiToggleArgs);
- fn ui_radiobutton_create(obj: *const UiObject, args: *const UiToggleArgs);
- fn ui_linkbutton_create(obj: *const UiObject, args: *const UiLinkButtonArgs);
-
- fn ui_button_args_new() -> *mut UiButtonArgs;
- fn ui_button_args_set_fill(args: *mut UiButtonArgs, fill: c_int);
- fn ui_button_args_set_hexpand(args: *mut UiButtonArgs, value: c_int);
- fn ui_button_args_set_vexpand(args: *mut UiButtonArgs, value: c_int);
- fn ui_button_args_set_hfill(args: *mut UiButtonArgs, value: c_int);
- fn ui_button_args_set_vfill(args: *mut UiButtonArgs, value: c_int);
- fn ui_button_args_set_override_defaults(args: *mut UiButtonArgs, value: c_int);
- fn ui_button_args_set_margin(args: *mut UiButtonArgs, value: c_int);
- fn ui_button_args_set_margin_left(args: *mut UiButtonArgs, value: c_int);
- fn ui_button_args_set_margin_right(args: *mut UiButtonArgs, value: c_int);
- fn ui_button_args_set_margin_top(args: *mut UiButtonArgs, value: c_int);
- fn ui_button_args_set_margin_bottom(args: *mut UiButtonArgs, value: c_int);
- fn ui_button_args_set_colspan(args: *mut UiButtonArgs, value: c_int);
- fn ui_button_args_set_rowspan(args: *mut UiButtonArgs, value: c_int);
- fn ui_button_args_set_name(args: *mut UiButtonArgs, name: *const c_char);
- fn ui_button_args_set_style_class(args: *mut UiButtonArgs, classname: *const c_char);
- fn ui_button_args_set_label(args: *mut UiButtonArgs, label: *const c_char);
- fn ui_button_args_set_icon(args: *mut UiButtonArgs, icon: *const c_char);
- fn ui_button_args_set_tooltip(args: *mut UiButtonArgs, tooltip: *const c_char);
- fn ui_button_args_set_labeltype(args: *mut UiButtonArgs, ltype: c_int);
- fn ui_button_args_set_onclick(args: *mut UiButtonArgs, callback: UiCallback);
- fn ui_button_args_set_onclickdata(args: *mut UiButtonArgs, data: *mut c_void);
- fn ui_button_args_set_states(args: *mut UiButtonArgs, states: *const c_int, numstates: c_int);
- fn ui_button_args_set_visibility_states(args: *mut UiButtonArgs, states: *const c_int, numstates: c_int);
- fn ui_button_args_free(args: *mut UiButtonArgs);
-
- fn ui_toggle_args_new() -> *mut UiToggleArgs;
- fn ui_toggle_args_set_fill(args: *mut UiToggleArgs, fill: c_int);
- fn ui_toggle_args_set_hexpand(args: *mut UiToggleArgs, value: c_int);
- fn ui_toggle_args_set_vexpand(args: *mut UiToggleArgs, value: c_int);
- fn ui_toggle_args_set_hfill(args: *mut UiToggleArgs, value: c_int);
- fn ui_toggle_args_set_vfill(args: *mut UiToggleArgs, value: c_int);
- fn ui_toggle_args_set_override_defaults(args: *mut UiToggleArgs, value: c_int);
- fn ui_toggle_args_set_margin(args: *mut UiToggleArgs, value: c_int);
- fn ui_toggle_args_set_margin_left(args: *mut UiToggleArgs, value: c_int);
- fn ui_toggle_args_set_margin_right(args: *mut UiToggleArgs, value: c_int);
- fn ui_toggle_args_set_margin_top(args: *mut UiToggleArgs, value: c_int);
- fn ui_toggle_args_set_margin_bottom(args: *mut UiToggleArgs, value: c_int);
- fn ui_toggle_args_set_colspan(args: *mut UiToggleArgs, value: c_int);
- fn ui_toggle_args_set_rowspan(args: *mut UiToggleArgs, value: c_int);
- fn ui_toggle_args_set_name(args: *mut UiToggleArgs, name: *const c_char);
- fn ui_toggle_args_set_style_class(args: *mut UiToggleArgs, classname: *const c_char);
- fn ui_toggle_args_set_label(args: *mut UiToggleArgs, label: *const c_char);
- fn ui_toggle_args_set_icon(args: *mut UiToggleArgs, icon: *const c_char);
- fn ui_toggle_args_set_tooltip(args: *mut UiToggleArgs, tooltip: *const c_char);
- fn ui_toggle_args_set_labeltype(args: *mut UiToggleArgs, ltype: c_int);
- fn ui_toggle_args_set_onchange(args: *mut UiToggleArgs, callback: UiCallback);
- fn ui_toggle_args_set_onchangedata(args: *mut UiToggleArgs, data: *mut c_void);
- fn ui_toggle_args_set_varname(args: *mut UiToggleArgs, varname: *const c_char);
- fn ui_toggle_args_set_value(args: *mut UiToggleArgs, ivalue: *mut UiInteger);
- fn ui_toggle_args_set_enablestate(args: *mut UiToggleArgs, state: c_int);
- fn ui_toggle_args_set_states(args: *mut UiToggleArgs, states: *const c_int, numstates: c_int);
- fn ui_toggle_args_set_visibility_states(args: *mut UiToggleArgs, states: *const c_int, numstates: c_int);
- fn ui_toggle_args_free(args: *mut UiToggleArgs);
-}
-
pub struct ButtonBuilder {
args: *mut UiButtonArgs,
obj: *const UiObject
}
// TODO: callback, states
-}
\ No newline at end of file
+}
+
+
+extern "C" {
+ fn ui_button_create(obj: *const UiObject, args: *const UiButtonArgs);
+ fn ui_togglebutton_create(obj: *const UiObject, args: *const UiToggleArgs);
+ fn ui_checkbox_create(obj: *const UiObject, args: *const UiToggleArgs);
+ fn ui_switch_create(obj: *const UiObject, args: *const UiToggleArgs);
+ fn ui_radiobutton_create(obj: *const UiObject, args: *const UiToggleArgs);
+ fn ui_linkbutton_create(obj: *const UiObject, args: *const UiLinkButtonArgs);
+
+ fn ui_button_args_new() -> *mut UiButtonArgs;
+ fn ui_button_args_set_fill(args: *mut UiButtonArgs, fill: c_int);
+ fn ui_button_args_set_hexpand(args: *mut UiButtonArgs, value: c_int);
+ fn ui_button_args_set_vexpand(args: *mut UiButtonArgs, value: c_int);
+ fn ui_button_args_set_hfill(args: *mut UiButtonArgs, value: c_int);
+ fn ui_button_args_set_vfill(args: *mut UiButtonArgs, value: c_int);
+ fn ui_button_args_set_override_defaults(args: *mut UiButtonArgs, value: c_int);
+ fn ui_button_args_set_margin(args: *mut UiButtonArgs, value: c_int);
+ fn ui_button_args_set_margin_left(args: *mut UiButtonArgs, value: c_int);
+ fn ui_button_args_set_margin_right(args: *mut UiButtonArgs, value: c_int);
+ fn ui_button_args_set_margin_top(args: *mut UiButtonArgs, value: c_int);
+ fn ui_button_args_set_margin_bottom(args: *mut UiButtonArgs, value: c_int);
+ fn ui_button_args_set_colspan(args: *mut UiButtonArgs, value: c_int);
+ fn ui_button_args_set_rowspan(args: *mut UiButtonArgs, value: c_int);
+ fn ui_button_args_set_name(args: *mut UiButtonArgs, name: *const c_char);
+ fn ui_button_args_set_style_class(args: *mut UiButtonArgs, classname: *const c_char);
+ fn ui_button_args_set_label(args: *mut UiButtonArgs, label: *const c_char);
+ fn ui_button_args_set_icon(args: *mut UiButtonArgs, icon: *const c_char);
+ fn ui_button_args_set_tooltip(args: *mut UiButtonArgs, tooltip: *const c_char);
+ fn ui_button_args_set_labeltype(args: *mut UiButtonArgs, ltype: c_int);
+ fn ui_button_args_set_onclick(args: *mut UiButtonArgs, callback: UiCallback);
+ fn ui_button_args_set_onclickdata(args: *mut UiButtonArgs, data: *mut c_void);
+ fn ui_button_args_set_states(args: *mut UiButtonArgs, states: *const c_int, numstates: c_int);
+ fn ui_button_args_set_visibility_states(args: *mut UiButtonArgs, states: *const c_int, numstates: c_int);
+ fn ui_button_args_free(args: *mut UiButtonArgs);
+
+ fn ui_toggle_args_new() -> *mut UiToggleArgs;
+ fn ui_toggle_args_set_fill(args: *mut UiToggleArgs, fill: c_int);
+ fn ui_toggle_args_set_hexpand(args: *mut UiToggleArgs, value: c_int);
+ fn ui_toggle_args_set_vexpand(args: *mut UiToggleArgs, value: c_int);
+ fn ui_toggle_args_set_hfill(args: *mut UiToggleArgs, value: c_int);
+ fn ui_toggle_args_set_vfill(args: *mut UiToggleArgs, value: c_int);
+ fn ui_toggle_args_set_override_defaults(args: *mut UiToggleArgs, value: c_int);
+ fn ui_toggle_args_set_margin(args: *mut UiToggleArgs, value: c_int);
+ fn ui_toggle_args_set_margin_left(args: *mut UiToggleArgs, value: c_int);
+ fn ui_toggle_args_set_margin_right(args: *mut UiToggleArgs, value: c_int);
+ fn ui_toggle_args_set_margin_top(args: *mut UiToggleArgs, value: c_int);
+ fn ui_toggle_args_set_margin_bottom(args: *mut UiToggleArgs, value: c_int);
+ fn ui_toggle_args_set_colspan(args: *mut UiToggleArgs, value: c_int);
+ fn ui_toggle_args_set_rowspan(args: *mut UiToggleArgs, value: c_int);
+ fn ui_toggle_args_set_name(args: *mut UiToggleArgs, name: *const c_char);
+ fn ui_toggle_args_set_style_class(args: *mut UiToggleArgs, classname: *const c_char);
+ fn ui_toggle_args_set_label(args: *mut UiToggleArgs, label: *const c_char);
+ fn ui_toggle_args_set_icon(args: *mut UiToggleArgs, icon: *const c_char);
+ fn ui_toggle_args_set_tooltip(args: *mut UiToggleArgs, tooltip: *const c_char);
+ fn ui_toggle_args_set_labeltype(args: *mut UiToggleArgs, ltype: c_int);
+ fn ui_toggle_args_set_onchange(args: *mut UiToggleArgs, callback: UiCallback);
+ fn ui_toggle_args_set_onchangedata(args: *mut UiToggleArgs, data: *mut c_void);
+ fn ui_toggle_args_set_varname(args: *mut UiToggleArgs, varname: *const c_char);
+ fn ui_toggle_args_set_value(args: *mut UiToggleArgs, ivalue: *mut UiInteger);
+ fn ui_toggle_args_set_enablestate(args: *mut UiToggleArgs, state: c_int);
+ fn ui_toggle_args_set_states(args: *mut UiToggleArgs, states: *const c_int, numstates: c_int);
+ fn ui_toggle_args_set_visibility_states(args: *mut UiToggleArgs, states: *const c_int, numstates: c_int);
+ fn ui_toggle_args_free(args: *mut UiToggleArgs);
+}
--- /dev/null
+#![allow(dead_code)]
+#[allow(unused_imports)]
+
+use std::ffi::{c_char, c_int, c_void};
+use std::ffi::CString;
+use crate::ui::{toolkit};
+use crate::ui::ffi::*;
+use crate::ui::widget::widget_fn;
+
+
+pub struct TextAreaBuilder {
+ args: *mut UiTextAreaArgs,
+ obj: *const UiObject
+}
+
+impl toolkit::UiObject {
+ widget_fn!(textarea, textarea_builder, TextAreaBuilder);
+
+ pub fn textarea_builder(&self) -> TextAreaBuilder {
+ unsafe {
+ let args = ui_textarea_args_new();
+ TextAreaBuilder { args: args, obj: self.ptr }
+ }
+ }
+}
+
+impl Drop for TextAreaBuilder {
+ fn drop(&mut self) {
+ unsafe {
+ ui_textarea_args_free(self.args);
+ }
+ }
+}
+
+impl TextAreaBuilder {
+ pub fn create(&mut self) {
+ unsafe {
+ ui_textarea_create(self.obj, self.args);
+ }
+ }
+
+ pub fn fill(&mut self, fill: bool) -> &mut Self {
+ unsafe {
+ ui_textarea_args_set_fill(self.args, if fill { 1 } else { 0 });
+ }
+ self
+ }
+
+ pub fn hexpand(&mut self, value: bool) -> &mut Self {
+ unsafe {
+ ui_textarea_args_set_hexpand(self.args, if value { 1 } else { 0 });
+ }
+ self
+ }
+
+ pub fn vexpand(&mut self, value: bool) -> &mut Self {
+ unsafe {
+ ui_textarea_args_set_vexpand(self.args, if value { 1 } else { 0 });
+ }
+ self
+ }
+
+ pub fn hfill(&mut self, value: bool) -> &mut Self {
+ unsafe {
+ ui_textarea_args_set_hfill(self.args, if value { 1 } else { 0 });
+ }
+ self
+ }
+
+ pub fn vfill(&mut self, value: bool) -> &mut Self {
+ unsafe {
+ ui_textarea_args_set_vfill(self.args, if value { 1 } else { 0 });
+ }
+ self
+ }
+
+ pub fn override_defaults(&mut self, value: bool) -> &mut Self {
+ unsafe {
+ ui_textarea_args_set_override_defaults(self.args, if value { 1 } else { 0 });
+ }
+ self
+ }
+
+ pub fn margin(&mut self, value: i32) -> &mut Self {
+ unsafe {
+ ui_textarea_args_set_margin(self.args, value);
+ }
+ self
+ }
+
+ pub fn margin_left(&mut self, value: i32) -> &mut Self {
+ unsafe {
+ ui_textarea_args_set_margin_left(self.args, value);
+ }
+ self
+ }
+
+ pub fn margin_right(&mut self, value: i32) -> &mut Self {
+ unsafe {
+ ui_textarea_args_set_margin_right(self.args, value);
+ }
+ self
+ }
+
+ pub fn margin_top(&mut self, value: i32) -> &mut Self {
+ unsafe {
+ ui_textarea_args_set_margin_top(self.args, value);
+ }
+ self
+ }
+
+ pub fn margin_bottom(&mut self, value: i32) -> &mut Self {
+ unsafe {
+ ui_textarea_args_set_margin_bottom(self.args, value);
+ }
+ self
+ }
+
+ pub fn colspan(&mut self, value: i32) -> &mut Self {
+ unsafe {
+ ui_textarea_args_set_colspan(self.args, value);
+ }
+ self
+ }
+
+ pub fn rowspan(&mut self, value: i32) -> &mut Self {
+ unsafe {
+ ui_textarea_args_set_rowspan(self.args, value);
+ }
+ self
+ }
+
+ pub fn name(&mut self, value: &str) -> &mut Self {
+ let cstr = CString::new(value).unwrap();
+ unsafe {
+ ui_textarea_args_set_name(self.args, cstr.as_ptr());
+ }
+ self
+ }
+
+ pub fn style_class(&mut self, value: &str) -> &mut Self {
+ let cstr = CString::new(value).unwrap();
+ unsafe {
+ ui_textarea_args_set_style_class(self.args, cstr.as_ptr());
+ }
+ self
+ }
+
+ pub fn varname(&mut self, varname: &str) -> &mut Self {
+ let cstr = CString::new(varname).unwrap();
+ unsafe {
+ ui_textarea_args_set_varname(self.args, cstr.as_ptr());
+ }
+ self
+ }
+
+ pub fn value(&mut self, value: &toolkit::UiText) {
+ unsafe {
+ ui_textarea_args_set_value(self.args, value.ptr);
+ }
+ }
+
+ // TODO: callback, states
+}
+
+
+
+extern "C" {
+ fn ui_textarea_create(obj: *const UiObject, args: *const UiTextAreaArgs);
+ fn ui_textfield_create(obj: *const UiObject, args: *const UiTextFieldArgs);
+ fn ui_frameless_textfield_create(obj: *const UiObject, args: *const UiTextFieldArgs);
+ fn ui_passwordfield_create(obj: *const UiObject, args: *const UiTextFieldArgs);
+
+ fn ui_textfield_args_new() -> *mut UiTextFieldArgs;
+ fn ui_textfield_args_set_fill(args: *mut UiTextFieldArgs, fill: c_int);
+ fn ui_textfield_args_set_hexpand(args: *mut UiTextFieldArgs, value: c_int);
+ fn ui_textfield_args_set_vexpand(args: *mut UiTextFieldArgs, value: c_int);
+ fn ui_textfield_args_set_hfill(args: *mut UiTextFieldArgs, value: c_int);
+ fn ui_textfield_args_set_vfill(args: *mut UiTextFieldArgs, value: c_int);
+ fn ui_textfield_args_set_override_defaults(args: *mut UiTextFieldArgs, value: c_int);
+ fn ui_textfield_args_set_margin(args: *mut UiTextFieldArgs, value: c_int);
+ fn ui_textfield_args_set_margin_left(args: *mut UiTextFieldArgs, value: c_int);
+ fn ui_textfield_args_set_margin_right(args: *mut UiTextFieldArgs, value: c_int);
+ fn ui_textfield_args_set_margin_top(args: *mut UiTextFieldArgs, value: c_int);
+ fn ui_textfield_args_set_margin_bottom(args: *mut UiTextFieldArgs, value: c_int);
+ fn ui_textfield_args_set_colspan(args: *mut UiTextFieldArgs, value: c_int);
+ fn ui_textfield_args_set_rowspan(args: *mut UiTextFieldArgs, value: c_int);
+ fn ui_textfield_args_set_name(args: *mut UiTextFieldArgs, name: *const c_char);
+ fn ui_textfield_args_set_style_class(args: *mut UiTextFieldArgs, classname: *const c_char);
+ fn ui_textfield_args_set_varname(args: *mut UiTextFieldArgs, varname: *const c_char);
+ fn ui_textfield_args_set_value(args: *mut UiTextAreaArgs, ivalue: *mut UiString);
+ fn ui_textfield_args_set_onchange(args: *mut UiTextFieldArgs, callback: UiCallback);
+ fn ui_textfield_args_set_onchangedata(args: *mut UiTextFieldArgs, data: *mut c_void);
+ fn ui_textfield_args_set_states(args: *mut UiTextFieldArgs, states: *const c_int, numstates: c_int);
+ fn ui_textfield_args_set_visibility_states(args: *mut UiTextFieldArgs, states: *const c_int, numstates: c_int);
+ fn ui_textfield_args_free(args: *mut UiTextFieldArgs);
+
+ fn ui_textarea_args_new() -> *mut UiTextAreaArgs;
+ fn ui_textarea_args_set_fill(args: *mut UiTextAreaArgs, fill: c_int);
+ fn ui_textarea_args_set_hexpand(args: *mut UiTextAreaArgs, value: c_int);
+ fn ui_textarea_args_set_vexpand(args: *mut UiTextAreaArgs, value: c_int);
+ fn ui_textarea_args_set_hfill(args: *mut UiTextAreaArgs, value: c_int);
+ fn ui_textarea_args_set_vfill(args: *mut UiTextAreaArgs, value: c_int);
+ fn ui_textarea_args_set_override_defaults(args: *mut UiTextAreaArgs, value: c_int);
+ fn ui_textarea_args_set_margin(args: *mut UiTextAreaArgs, value: c_int);
+ fn ui_textarea_args_set_margin_left(args: *mut UiTextAreaArgs, value: c_int);
+ fn ui_textarea_args_set_margin_right(args: *mut UiTextAreaArgs, value: c_int);
+ fn ui_textarea_args_set_margin_top(args: *mut UiTextAreaArgs, value: c_int);
+ fn ui_textarea_args_set_margin_bottom(args: *mut UiTextAreaArgs, value: c_int);
+ fn ui_textarea_args_set_colspan(args: *mut UiTextAreaArgs, value: c_int);
+ fn ui_textarea_args_set_rowspan(args: *mut UiTextAreaArgs, value: c_int);
+ fn ui_textarea_args_set_name(args: *mut UiTextAreaArgs, name: *const c_char);
+ fn ui_textarea_args_set_style_class(args: *mut UiTextAreaArgs, classname: *const c_char);
+ fn ui_textarea_args_set_onchange(args: *mut UiTextAreaArgs, callback: UiCallback);
+ fn ui_textarea_args_set_onchangedata(args: *mut UiTextAreaArgs, data: *mut c_void);
+ fn ui_textarea_args_set_varname(args: *mut UiTextAreaArgs, varname: *const c_char);
+ fn ui_textarea_args_set_value(args: *mut UiTextAreaArgs, ivalue: *mut UiText);
+ fn ui_textarea_args_set_states(args: *mut UiTextAreaArgs, states: *const c_int, numstates: c_int);
+ fn ui_textarea_args_set_visibility_states(args: *mut UiTextAreaArgs, states: *const c_int, numstates: c_int);
+ fn ui_textarea_args_free(args: *mut UiTextAreaArgs);
+}
\ No newline at end of file