use std::any::Any;
use backend::backend::{BackendHandle, BroadcastMessage, NoteId};
-use ui_rs::{action, ui_actions, UiModel};
+use ui_rs::{action, button, ui_actions, UiModel};
use ui_rs::ui::*;
use crate::{App, AppStates};
use entity::collection::{Model as Collection, Node};
t.varname("note_nodename");
t.onchange_action("note_nodename_change");
});
- obj.button(|b|{
- b.label("Open");
- b.action("open_extern");
- });
+ button!(obj, label = "Open", action = "open_extern");
});
}
);
use crate::ui::ffi::*;
use crate::ui::widget::*;
+
+#[macro_export]
+macro_rules! button {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, button_builder, $($tt)*)
+ };
+}
+
+#[macro_export]
+macro_rules! togglebutton {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, togglebutton_builder, $($tt)*)
+ };
+}
+
+#[macro_export]
+macro_rules! checkbox {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, checkbox_builder, $($tt)*)
+ };
+}
+
+#[macro_export]
+macro_rules! switch {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, switch_builder, $($tt)*)
+ };
+}
+
+#[macro_export]
+macro_rules! radiobutton {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, radiobutton_builder, $($tt)*)
+ };
+}
+
+
pub struct Button {
ptr: *mut c_void
}
use crate::ui::ffi::{UiButtonArgs, UiLabelArgs, UiObject, UiString, UiToggleArgs};
use crate::ui::widget::{widget_fn, Widget};
+
+#[macro_export]
+macro_rules! label {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, label_builder, $($tt)*)
+ };
+}
+
+#[macro_export]
+macro_rules! llabel {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, llabel_builder, $($tt)*)
+ };
+}
+
+#[macro_export]
+macro_rules! rlabel {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, rlabel_builder, $($tt)*)
+ };
+}
+
pub struct Label {
ptr: *mut c_void
}
use std::mem;
use crate::ui::widget::{widget_typed_fn, Widget};
+#[macro_export]
+macro_rules! listview {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, listview_builder, $($tt)*)
+ };
+}
+
+#[macro_export]
+macro_rules! dropdown {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, dropdown_builder, $($tt)*)
+ };
+}
+
+#[macro_export]
+macro_rules! tableview {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, tableview_builder, $($tt)*)
+ };
+}
+
+#[macro_export]
+macro_rules! sourcelist {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, sourcelist_builder, $($tt)*)
+ };
+}
+
pub struct ListView {
ptr: *mut c_void
use crate::ui::widget::{widget_fn, Widget};
+#[macro_export]
+macro_rules! textarea {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, textarea_builder, $($tt)*)
+ };
+}
+
+#[macro_export]
+macro_rules! textfield {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, textfield_builder, $($tt)*)
+ };
+}
+
+#[macro_export]
+macro_rules! passwordfield {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, passwordfield_builder, $($tt)*)
+ };
+}
+
+#[macro_export]
+macro_rules! frameless_textfield {
+ ($parent:expr, $($tt:tt)*) => {
+ $crate::widget!($parent, frameless_textfield_builder, $($tt)*)
+ };
+}
+
+
/* -------------------------------- TextArea -------------------------------- */
pub struct TextArea {
}
+#[macro_export]
+macro_rules! widget {
+ (
+ $parent:expr,
+ $widget:ident
+ $(, $name:ident = $value:expr )*
+ $(,)?
+ ) => {{
+ let mut builder = $parent.$widget();
+ let builder = builder
+ $(.$name($value))*;
+ builder.create()
+ }};
+}
+
+
+
/* ------------------------------ C functions ----------------------------- */
unsafe extern "C" {