use crate::core::ObjectId;
#[cfg(not(alloc_frugal))]
pub(crate) fn widget_is_checkable(widget_id: ObjectId) -> bool {
crate::widget::runtime::widget_is_checkable(widget_id)
}
#[cfg(alloc_frugal)]
pub(crate) fn widget_is_checkable(_widget_id: ObjectId) -> bool {
false
}
#[macro_export]
macro_rules! impl_platform_state_properties {
() => {
fn set_widget_text(&self, widget_id: $crate::core::ObjectId, text: &str) {
let _ = self.state.set_text(widget_id, text);
}
fn get_widget_text(&self, widget_id: $crate::core::ObjectId) -> $crate::compat::String {
self.state.text(widget_id)
}
fn set_widget_geometry(
&self,
widget_id: $crate::core::ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) {
self.state.set_geometry(widget_id, x, y, width, height);
}
fn set_widget_enabled(&self, widget_id: $crate::core::ObjectId, enabled: bool) {
self.state.set_enabled(widget_id, enabled);
}
fn is_widget_enabled(&self, widget_id: $crate::core::ObjectId) -> bool {
self.state.enabled(widget_id)
}
fn set_widget_visible(&self, widget_id: $crate::core::ObjectId, visible: bool) {
self.state.set_visible(widget_id, visible);
}
fn show_widget(&self, widget_id: $crate::core::ObjectId) {
self.state.set_visible(widget_id, true);
}
fn hide_widget(&self, widget_id: $crate::core::ObjectId) {
self.state.set_visible(widget_id, false);
}
fn is_widget_visible(&self, widget_id: $crate::core::ObjectId) -> bool {
self.state.visible(widget_id)
}
fn set_widget_value(&self, widget_id: $crate::core::ObjectId, value: f64) -> bool {
if !self.state.contains_widget(widget_id) {
return false;
}
self.state.set_value(widget_id, value)
}
fn widget_value(&self, widget_id: $crate::core::ObjectId) -> Option<f64> {
self.state.value(widget_id)
}
fn set_widget_range(&self, widget_id: $crate::core::ObjectId, min: f64, max: f64) -> bool {
if !self.state.contains_widget(widget_id) {
return false;
}
self.state.set_range(widget_id, min, max)
}
fn widget_range(&self, widget_id: $crate::core::ObjectId) -> Option<(f64, f64)> {
self.state.range(widget_id)
}
fn set_widget_step(&self, widget_id: $crate::core::ObjectId, step: f64) -> bool {
if !self.state.contains_widget(widget_id) {
return false;
}
self.state.set_step(widget_id, step)
}
fn widget_step(&self, widget_id: $crate::core::ObjectId) -> Option<f64> {
self.state.step(widget_id)
}
fn set_widget_selected_index(
&self,
widget_id: $crate::core::ObjectId,
index: Option<usize>,
) -> bool {
if !self.state.contains_widget(widget_id) {
return false;
}
self.state.set_selected_index(widget_id, index)
}
fn widget_selected_index(&self, widget_id: $crate::core::ObjectId) -> Option<usize> {
self.state.selected_index(widget_id)
}
fn set_widget_selection(
&self,
widget_id: $crate::core::ObjectId,
start: u32,
end: u32,
) -> bool {
self.state.set_selection(widget_id, start, end)
}
fn widget_selection(&self, widget_id: $crate::core::ObjectId) -> Option<(u32, u32)> {
self.state.selection(widget_id)
}
fn set_widget_checked(&self, widget_id: $crate::core::ObjectId, checked: bool) -> bool {
if !self.state.contains_widget(widget_id) {
return false;
}
self.state.set_checked(widget_id, checked)
}
fn is_widget_checked(&self, widget_id: $crate::core::ObjectId) -> Option<bool> {
self.state.checked(widget_id)
}
fn set_widget_tristate(&self, widget_id: $crate::core::ObjectId, enabled: bool) -> bool {
if !self.state.contains_widget(widget_id) {
return false;
}
if !$crate::platform::state_impl::widget_is_checkable(widget_id) {
return false;
}
self.state.set_tristate(widget_id, enabled)
}
fn is_widget_tristate(&self, widget_id: $crate::core::ObjectId) -> Option<bool> {
if !$crate::platform::state_impl::widget_is_checkable(widget_id) {
return None;
}
self.state.tristate(widget_id)
}
fn set_widget_group(&self, widget_id: $crate::core::ObjectId, group: &str) -> bool {
if !self.state.contains_widget(widget_id) {
return false;
}
self.state.set_group(widget_id, group)
}
fn widget_group(
&self,
widget_id: $crate::core::ObjectId,
) -> Option<$crate::compat::String> {
self.state.group(widget_id)
}
fn set_widget_placeholder(&self, widget_id: $crate::core::ObjectId, text: &str) -> bool {
self.state.set_placeholder(widget_id, text)
}
fn widget_placeholder(
&self,
widget_id: $crate::core::ObjectId,
) -> Option<$crate::compat::String> {
self.state.placeholder(widget_id)
}
fn set_widget_echo_mode(
&self,
widget_id: $crate::core::ObjectId,
mode: $crate::platform::EchoMode,
) -> bool {
self.state.set_echo_mode(widget_id, mode)
}
fn widget_echo_mode(
&self,
widget_id: $crate::core::ObjectId,
) -> Option<$crate::platform::EchoMode> {
self.state.echo_mode(widget_id)
}
fn set_widget_read_only(&self, widget_id: $crate::core::ObjectId, read_only: bool) -> bool {
if !self.state.contains_widget(widget_id) {
return false;
}
self.state.set_read_only(widget_id, read_only)
}
fn is_widget_read_only(&self, widget_id: $crate::core::ObjectId) -> Option<bool> {
self.state.read_only(widget_id)
}
fn set_widget_max_length(
&self,
widget_id: $crate::core::ObjectId,
max_length: u32,
) -> bool {
if !self.state.contains_widget(widget_id) {
return false;
}
self.state.set_max_length(widget_id, max_length)
}
fn widget_max_length(&self, widget_id: $crate::core::ObjectId) -> Option<u32> {
self.state.max_length(widget_id)
}
fn set_widget_indeterminate(
&self,
widget_id: $crate::core::ObjectId,
indeterminate: bool,
) -> bool {
if !self.state.contains_widget(widget_id) {
return false;
}
self.state.set_indeterminate(widget_id, indeterminate)
}
fn is_widget_indeterminate(&self, widget_id: $crate::core::ObjectId) -> Option<bool> {
self.state.indeterminate(widget_id)
}
fn set_slider_orientation(
&self,
widget_id: $crate::core::ObjectId,
orientation: $crate::core::Orientation,
) -> bool {
if !self.state.contains_widget(widget_id) {
return false;
}
self.state.set_orientation(widget_id, orientation)
}
fn slider_orientation(
&self,
widget_id: $crate::core::ObjectId,
) -> Option<$crate::core::Orientation> {
self.state.orientation(widget_id)
}
fn set_widget_scroll_position(
&self,
widget_id: $crate::core::ObjectId,
x: i32,
y: i32,
) -> bool {
if !self.state.contains_widget(widget_id) {
return false;
}
self.state.set_scroll(widget_id, x, y)
}
fn widget_scroll_position(&self, widget_id: $crate::core::ObjectId) -> Option<(i32, i32)> {
self.state.scroll(widget_id)
}
fn set_window_state(
&self,
widget_id: $crate::core::ObjectId,
flag: $crate::platform::WindowStateFlag,
on: bool,
) -> bool {
self.state.set_window_state(widget_id, flag, on)
}
fn is_window_in_state(
&self,
widget_id: $crate::core::ObjectId,
flag: $crate::platform::WindowStateFlag,
) -> Option<bool> {
self.state.window_state(widget_id, flag)
}
fn set_window_min_size(
&self,
widget_id: $crate::core::ObjectId,
width: u32,
height: u32,
) -> bool {
self.state.set_window_min_size(widget_id, width, height)
}
fn window_min_size(&self, widget_id: $crate::core::ObjectId) -> Option<(u32, u32)> {
self.state.window_min_size(widget_id)
}
fn set_window_icon(&self, widget_id: $crate::core::ObjectId, path: &str) -> bool {
self.state.set_window_icon(widget_id, path)
}
fn window_icon(&self, widget_id: $crate::core::ObjectId) -> Option<$crate::compat::String> {
self.state.window_icon(widget_id)
}
fn set_widget_ime_enabled(&self, widget_id: $crate::core::ObjectId, enabled: bool) -> bool {
self.state.set_ime_enabled(widget_id, enabled)
}
fn is_widget_ime_enabled(&self, widget_id: $crate::core::ObjectId) -> bool {
self.state.ime_enabled(widget_id)
}
fn set_widget_accessibility_name(
&self,
widget_id: $crate::core::ObjectId,
name: &str,
) -> bool {
self.state.set_accessibility_name(widget_id, name)
}
fn get_widget_accessibility_name(
&self,
widget_id: $crate::core::ObjectId,
) -> $crate::compat::String {
self.state.accessibility_name(widget_id)
}
fn begin_drag(
&self,
source_widget_id: $crate::core::ObjectId,
mime: &str,
payload: &[u8],
) -> bool {
self.state.begin_drag(source_widget_id, mime, payload)
}
fn poll_drop_event(&self) -> Option<$crate::platform::DropEvent> {
self.state.pop_drop_event()
}
fn inject_drop_event(&self, event: $crate::platform::DropEvent) -> bool {
self.state.inject_drop_event(event)
}
};
}