};
}
+#[macro_export]
+macro_rules! content_togglebutton {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, content_togglebutton, $($tt)*)
+ };
+}
+
#[macro_export]
macro_rules! linkbutton {
($parent:expr, $($tt:tt)*) => {
create: ToggleButtonCreate
}
+pub struct ContentToggleBuilder<'a, T> {
+ args: *mut UiContentToggleArgs,
+ obj: &'a mut toolkit::UiObject<T>,
+}
+
pub struct LinkButtonBuilder<'a, T> {
args: *mut UiLinkButtonArgs,
obj: &'a mut toolkit::UiObject<T>,
}
}
+ pub fn content_togglebutton<'a>(&'a mut self) -> ContentToggleBuilder<'a, T> {
+ unsafe {
+ let args = ui_content_toggle_args_new();
+ ContentToggleBuilder { args: args, obj: self }
+ }
+ }
+
pub fn linkbutton<'a>(&'a mut self) -> LinkButtonBuilder<'a, T> {
unsafe {
let args = ui_linkbutton_args_new();
}
}
+impl<'a, T> ContentToggleBuilder<'a, T> {
+ pub fn create(&mut self) -> Button {
+ unsafe {
+ Button { ptr: ui_content_togglebutton_create(self.obj.ptr, self.args) }
+ }
+ }
+
+ pub fn fill(&mut self, fill: bool) -> &mut Self {
+ unsafe {
+ ui_content_toggle_args_set_fill(self.args, fill as c_int);
+ }
+ self
+ }
+
+ pub fn hexpand(&mut self, value: bool) -> &mut Self {
+ unsafe {
+ ui_content_toggle_args_set_hexpand(self.args, value as c_int);
+ }
+ self
+ }
+
+ pub fn vexpand(&mut self, value: bool) -> &mut Self {
+ unsafe {
+ ui_content_toggle_args_set_vexpand(self.args, value as c_int);
+ }
+ self
+ }
+
+ pub fn hfill(&mut self, value: bool) -> &mut Self {
+ unsafe {
+ ui_content_toggle_args_set_hfill(self.args, value as c_int);
+ }
+ self
+ }
+
+ pub fn vfill(&mut self, value: bool) -> &mut Self {
+ unsafe {
+ ui_content_toggle_args_set_vfill(self.args, value as c_int);
+ }
+ self
+ }
+
+ pub fn override_defaults(&mut self, value: bool) -> &mut Self {
+ unsafe {
+ ui_content_toggle_args_set_override_defaults(self.args, value as c_int);
+ }
+ self
+ }
+
+ pub fn margin(&mut self, value: i32) -> &mut Self {
+ unsafe {
+ ui_content_toggle_args_set_margin(self.args, value);
+ }
+ self
+ }
+
+ pub fn margin_left(&mut self, value: i32) -> &mut Self {
+ unsafe {
+ ui_content_toggle_args_set_margin_left(self.args, value);
+ }
+ self
+ }
+
+ pub fn margin_right(&mut self, value: i32) -> &mut Self {
+ unsafe {
+ ui_content_toggle_args_set_margin_right(self.args, value);
+ }
+ self
+ }
+
+ pub fn margin_top(&mut self, value: i32) -> &mut Self {
+ unsafe {
+ ui_content_toggle_args_set_margin_top(self.args, value);
+ }
+ self
+ }
+
+ pub fn margin_bottom(&mut self, value: i32) -> &mut Self {
+ unsafe {
+ ui_content_toggle_args_set_margin_bottom(self.args, value);
+ }
+ self
+ }
+
+ pub fn colspan(&mut self, value: i32) -> &mut Self {
+ unsafe {
+ ui_content_toggle_args_set_colspan(self.args, value);
+ }
+ self
+ }
+
+ pub fn rowspan(&mut self, value: i32) -> &mut Self {
+ unsafe {
+ ui_content_toggle_args_set_rowspan(self.args, value);
+ }
+ self
+ }
+
+ pub fn name(&mut self, value: &str) -> &mut Self {
+ let cstr = CString::new(value).unwrap();
+ unsafe {
+ ui_content_toggle_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_content_toggle_args_set_style_class(self.args, cstr.as_ptr());
+ }
+ self
+ }
+
+ pub fn label0(&mut self, label: &str) -> &mut Self {
+ let cstr = CString::new(label).unwrap();
+ unsafe {
+ ui_content_toggle_args_set_label0(self.args, cstr.as_ptr());
+ }
+ self
+ }
+
+ pub fn icon0(&mut self, icon: &str) -> &mut Self {
+ let cstr = CString::new(icon).unwrap();
+ unsafe {
+ ui_content_toggle_args_set_icon0(self.args, cstr.as_ptr());
+ }
+ self
+ }
+
+ pub fn tooltip0(&mut self, tooltip: &str) -> &mut Self {
+ let cstr = CString::new(tooltip).unwrap();
+ unsafe {
+ ui_content_toggle_args_set_tooltip0(self.args, cstr.as_ptr());
+ }
+ self
+ }
+
+ pub fn label1(&mut self, label: &str) -> &mut Self {
+ let cstr = CString::new(label).unwrap();
+ unsafe {
+ ui_content_toggle_args_set_label1(self.args, cstr.as_ptr());
+ }
+ self
+ }
+
+ pub fn icon1(&mut self, icon: &str) -> &mut Self {
+ let cstr = CString::new(icon).unwrap();
+ unsafe {
+ ui_content_toggle_args_set_icon1(self.args, cstr.as_ptr());
+ }
+ self
+ }
+
+ pub fn tooltip1(&mut self, tooltip: &str) -> &mut Self {
+ let cstr = CString::new(tooltip).unwrap();
+ unsafe {
+ ui_content_toggle_args_set_tooltip1(self.args, cstr.as_ptr());
+ }
+ self
+ }
+
+ pub fn labeltype(&mut self, ltype: LabelType) -> &mut Self {
+ let lt = ltype as i32;
+ unsafe {
+ ui_content_toggle_args_set_labeltype(self.args, lt);
+ }
+ self
+ }
+
+ pub fn varname(&mut self, varname: &str) -> &mut Self {
+ let cstr = CString::new(varname).unwrap();
+ unsafe {
+ ui_content_toggle_args_set_varname(self.args, cstr.as_ptr());
+ }
+ self
+ }
+
+ pub fn value(&mut self, value: &toolkit::UiInteger) {
+ unsafe {
+ ui_content_toggle_args_set_value(self.args, value.ptr);
+ }
+ }
+
+ pub fn onchange<F>(&mut self, f: F) -> &mut Self
+ where F: FnMut(&mut event::Event<T>) + 'static {
+ let wrapper = Box::new(EventWrapper::new(f) );
+ let ptr = self.obj.ctx.reg_box(wrapper);
+ unsafe {
+ ui_content_toggle_args_set_onchange(self.args, Some(event::event_wrapper::<T>));
+ ui_content_toggle_args_set_onchangedata(self.args, ptr as *mut c_void);
+ }
+ self
+ }
+
+ pub fn action(&mut self, action: &str) -> &mut Self {
+ let cstr = CString::new(action).unwrap();
+ unsafe {
+ ui_content_toggle_args_set_action(self.args, cstr.as_ptr());
+ }
+ self
+ }
+
+ pub fn visibility_states<S: Copy + Into<i32>>(&mut self, states: &[S]) -> &mut Self {
+ let states: Vec<i32> = states.iter().copied().map(Into::into).collect();
+ unsafe {
+ ui_content_toggle_args_set_visibility_states(self.args, states.as_ptr(), states.len() as c_int);
+ }
+ self
+ }
+
+ pub fn states<S: Copy + Into<i32>>(&mut self, states: &[S]) -> &mut Self {
+ let states: Vec<i32> = states.iter().copied().map(Into::into).collect();
+ unsafe {
+ ui_content_toggle_args_set_states(self.args, states.as_ptr(), states.len() as c_int);
+ }
+ self
+ }
+}
+
impl<'a, T> LinkButtonBuilder<'a, T> {
pub fn create(&mut self) -> LinkButton {
unsafe {
fn ui_switch_create(obj: *const UiObject, args: *const UiToggleArgs) -> *mut c_void;
fn ui_radiobutton_create(obj: *const UiObject, args: *const UiToggleArgs) -> *mut c_void;
fn ui_linkbutton_create(obj: *const UiObject, args: *const UiLinkButtonArgs) -> *mut c_void;
+ fn ui_content_togglebutton_create(obj: *const UiObject, args: *const UiContentToggleArgs) -> *mut c_void;
fn ui_button_args_new() -> *mut UiButtonArgs;
fn ui_button_args_set_fill(args: *mut UiButtonArgs, fill: 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);
+ fn ui_content_toggle_args_new() -> *mut UiContentToggleArgs;
+ fn ui_content_toggle_args_set_fill(args: *mut UiContentToggleArgs, fill: c_int);
+ fn ui_content_toggle_args_set_hexpand(args: *mut UiContentToggleArgs, value: c_int);
+ fn ui_content_toggle_args_set_vexpand(args: *mut UiContentToggleArgs, value: c_int);
+ fn ui_content_toggle_args_set_hfill(args: *mut UiContentToggleArgs, value: c_int);
+ fn ui_content_toggle_args_set_vfill(args: *mut UiContentToggleArgs, value: c_int);
+ fn ui_content_toggle_args_set_override_defaults(args: *mut UiContentToggleArgs, value: c_int);
+ fn ui_content_toggle_args_set_margin(args: *mut UiContentToggleArgs, value: c_int);
+ fn ui_content_toggle_args_set_margin_left(args: *mut UiContentToggleArgs, value: c_int);
+ fn ui_content_toggle_args_set_margin_right(args: *mut UiContentToggleArgs, value: c_int);
+ fn ui_content_toggle_args_set_margin_top(args: *mut UiContentToggleArgs, value: c_int);
+ fn ui_content_toggle_args_set_margin_bottom(args: *mut UiContentToggleArgs, value: c_int);
+ fn ui_content_toggle_args_set_colspan(args: *mut UiContentToggleArgs, value: c_int);
+ fn ui_content_toggle_args_set_rowspan(args: *mut UiContentToggleArgs, value: c_int);
+ fn ui_content_toggle_args_set_name(args: *mut UiContentToggleArgs, name: *const c_char);
+ fn ui_content_toggle_args_set_style_class(args: *mut UiContentToggleArgs, classname: *const c_char);
+ fn ui_content_toggle_args_set_label0(args: *mut UiContentToggleArgs, label: *const c_char);
+ fn ui_content_toggle_args_set_icon0(args: *mut UiContentToggleArgs, icon: *const c_char);
+ fn ui_content_toggle_args_set_tooltip0(args: *mut UiContentToggleArgs, tooltip: *const c_char);
+ fn ui_content_toggle_args_set_label1(args: *mut UiContentToggleArgs, label: *const c_char);
+ fn ui_content_toggle_args_set_icon1(args: *mut UiContentToggleArgs, icon: *const c_char);
+ fn ui_content_toggle_args_set_tooltip1(args: *mut UiContentToggleArgs, tooltip: *const c_char);
+ fn ui_content_toggle_args_set_labeltype(args: *mut UiContentToggleArgs, ltype: c_int);
+ fn ui_content_toggle_args_set_onchange(args: *mut UiContentToggleArgs, callback: UiCallback);
+ fn ui_content_toggle_args_set_onchangedata(args: *mut UiContentToggleArgs, data: *mut c_void);
+ fn ui_content_toggle_args_set_action(args: *mut UiContentToggleArgs, action: *const c_char);
+ fn ui_content_toggle_args_set_varname(args: *mut UiContentToggleArgs, varname: *const c_char);
+ fn ui_content_toggle_args_set_value(args: *mut UiContentToggleArgs, ivalue: *mut UiInteger);
+ fn ui_content_toggle_args_set_enablestate(args: *mut UiContentToggleArgs, state: c_int);
+ fn ui_content_toggle_args_set_states(args: *mut UiContentToggleArgs, states: *const c_int, numstates: c_int);
+ fn ui_content_toggle_args_set_visibility_states(args: *mut UiContentToggleArgs, states: *const c_int, numstates: c_int);
+ fn ui_content_toggle_args_free(args: *mut UiContentToggleArgs);
+
fn ui_linkbutton_args_new() -> *mut UiLinkButtonArgs;
fn ui_linkbutton_args_set_fill(args: *mut UiLinkButtonArgs, fill: c_int);
fn ui_linkbutton_args_set_hexpand(args: *mut UiLinkButtonArgs, value: c_int);