macro_rules! impl_input_widgets {
() => {
fn create_line_edit(
&self,
parent: ObjectId,
text: &str,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId {
let widget_id = self.alloc_widget_id();
let mut state = self.state.lock().unwrap_or_else(|poisoned| poisoned.into_inner());
state.texts.insert(widget_id, text.to_string());
state.enabled.insert(widget_id, true);
state.visible.insert(widget_id, true);
state.ime_enabled.insert(widget_id, true); state.accessibility_names.insert(widget_id, text.to_string());
state.widget_properties.insert(
widget_id,
CustomWidgetProperties {
parent: Some(parent),
x,
y,
width,
height,
widget_kind: WidgetKind::LineEdit,
},
);
widget_id
}
fn create_slider(
&self,
parent: ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId {
let widget_id = self.alloc_widget_id();
let mut state = self.state.lock().unwrap_or_else(|poisoned| poisoned.into_inner());
state.enabled.insert(widget_id, true);
state.visible.insert(widget_id, true);
state.ime_enabled.insert(widget_id, false);
state.accessibility_names.insert(widget_id, "Slider".to_string());
state.widget_properties.insert(
widget_id,
CustomWidgetProperties {
parent: Some(parent),
x,
y,
width,
height,
widget_kind: WidgetKind::Slider,
},
);
widget_id
}
fn create_progress_bar(
&self,
parent: ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId {
let widget_id = self.alloc_widget_id();
let mut state = self.state.lock().unwrap_or_else(|poisoned| poisoned.into_inner());
state.enabled.insert(widget_id, true);
state.visible.insert(widget_id, true);
state.ime_enabled.insert(widget_id, false);
state.accessibility_names.insert(widget_id, "ProgressBar".to_string());
state.widget_properties.insert(
widget_id,
CustomWidgetProperties {
parent: Some(parent),
x,
y,
width,
height,
widget_kind: WidgetKind::ProgressBar,
},
);
widget_id
}
fn create_combo_box(
&self,
parent: ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId {
let widget_id = self.alloc_widget_id();
let mut state = self.state.lock().unwrap_or_else(|poisoned| poisoned.into_inner());
state.enabled.insert(widget_id, true);
state.visible.insert(widget_id, true);
state.ime_enabled.insert(widget_id, false);
state.accessibility_names.insert(widget_id, "ComboBox".to_string());
state.widget_properties.insert(
widget_id,
CustomWidgetProperties {
parent: Some(parent),
x,
y,
width,
height,
widget_kind: WidgetKind::ComboBox,
},
);
widget_id
}
fn create_list_box(
&self,
parent: ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId {
let widget_id = self.alloc_widget_id();
let mut state = self.state.lock().unwrap_or_else(|poisoned| poisoned.into_inner());
state.enabled.insert(widget_id, true);
state.visible.insert(widget_id, true);
state.ime_enabled.insert(widget_id, false);
state.accessibility_names.insert(widget_id, "ListBox".to_string());
state.widget_properties.insert(
widget_id,
CustomWidgetProperties {
parent: Some(parent),
x,
y,
width,
height,
widget_kind: WidgetKind::ListBox,
},
);
widget_id
}
fn create_scroll_bar(
&self,
parent: ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId {
let widget_id = self.alloc_widget_id();
let mut state = self.state.lock().unwrap_or_else(|poisoned| poisoned.into_inner());
state.enabled.insert(widget_id, true);
state.visible.insert(widget_id, true);
state.ime_enabled.insert(widget_id, false);
state.accessibility_names.insert(widget_id, "ScrollBar".to_string());
state.widget_properties.insert(
widget_id,
CustomWidgetProperties {
parent: Some(parent),
x,
y,
width,
height,
widget_kind: WidgetKind::ScrollBar,
},
);
widget_id
}
fn create_spin_box(
&self,
parent: ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId {
let widget_id = self.alloc_widget_id();
let mut state = self.state.lock().unwrap_or_else(|poisoned| poisoned.into_inner());
state.texts.insert(widget_id, "0".to_string());
state.enabled.insert(widget_id, true);
state.visible.insert(widget_id, true);
state.ime_enabled.insert(widget_id, true); state.accessibility_names.insert(widget_id, "SpinBox".to_string());
state.widget_properties.insert(
widget_id,
CustomWidgetProperties {
parent: Some(parent),
x,
y,
width,
height,
widget_kind: WidgetKind::SpinBox,
},
);
widget_id
}
#[cfg(not(feature = "mini"))]
fn create_text_edit(
&self,
parent: ObjectId,
text: &str,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId {
let widget_id = self.alloc_widget_id();
let mut state = self.state.lock().unwrap_or_else(|poisoned| poisoned.into_inner());
state.texts.insert(widget_id, text.to_string());
state.enabled.insert(widget_id, true);
state.visible.insert(widget_id, true);
state.ime_enabled.insert(widget_id, true); state.accessibility_names.insert(widget_id, text.to_string());
state.widget_properties.insert(
widget_id,
CustomWidgetProperties {
parent: Some(parent),
x,
y,
width,
height,
widget_kind: WidgetKind::TextEdit,
},
);
widget_id
}
#[cfg(not(feature = "mini"))]
fn create_rich_edit(
&self,
parent: ObjectId,
text: &str,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId {
let widget_id = self.alloc_widget_id();
let mut state = self.state.lock().unwrap_or_else(|poisoned| poisoned.into_inner());
state.texts.insert(widget_id, text.to_string());
state.enabled.insert(widget_id, true);
state.visible.insert(widget_id, true);
state.ime_enabled.insert(widget_id, true); state.accessibility_names.insert(widget_id, text.to_string());
state.widget_properties.insert(
widget_id,
CustomWidgetProperties {
parent: Some(parent),
x,
y,
width,
height,
widget_kind: WidgetKind::RichEdit,
},
);
widget_id
}
#[cfg(not(feature = "mini"))]
fn create_check_list_box(
&self,
parent: ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId {
let widget_id = self.alloc_widget_id();
let mut state = self.state.lock().unwrap_or_else(|poisoned| poisoned.into_inner());
state.enabled.insert(widget_id, true);
state.visible.insert(widget_id, true);
state.ime_enabled.insert(widget_id, false);
state.accessibility_names.insert(widget_id, "CheckListBox".to_string());
state.widget_properties.insert(
widget_id,
CustomWidgetProperties {
parent: Some(parent),
x,
y,
width,
height,
widget_kind: WidgetKind::CheckListBox,
},
);
widget_id
}
#[cfg(not(feature = "mini"))]
fn create_double_spin_box(
&self,
parent: ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId {
let widget_id = self.alloc_widget_id();
let mut state = self.state.lock().unwrap_or_else(|poisoned| poisoned.into_inner());
state.texts.insert(widget_id, "0.0".to_string());
state.enabled.insert(widget_id, true);
state.visible.insert(widget_id, true);
state.ime_enabled.insert(widget_id, true);
state.accessibility_names.insert(widget_id, "DoubleSpinBox".to_string());
state.widget_properties.insert(
widget_id,
CustomWidgetProperties {
parent: Some(parent),
x,
y,
width,
height,
widget_kind: WidgetKind::DoubleSpinBox,
},
);
widget_id
}
#[cfg(not(feature = "mini"))]
fn create_dial(
&self,
parent: ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId {
let widget_id = self.alloc_widget_id();
let mut state = self.state.lock().unwrap_or_else(|poisoned| poisoned.into_inner());
state.enabled.insert(widget_id, true);
state.visible.insert(widget_id, true);
state.ime_enabled.insert(widget_id, false);
state.accessibility_names.insert(widget_id, "Dial".to_string());
state.widget_properties.insert(
widget_id,
CustomWidgetProperties {
parent: Some(parent),
x,
y,
width,
height,
widget_kind: WidgetKind::Dial,
},
);
widget_id
}
#[cfg(not(feature = "mini"))]
fn create_command_link(
&self,
parent: ObjectId,
text: &str,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId {
let widget_id = self.alloc_widget_id();
let mut state = self.state.lock().unwrap_or_else(|poisoned| poisoned.into_inner());
state.texts.insert(widget_id, text.to_string());
state.enabled.insert(widget_id, true);
state.visible.insert(widget_id, true);
state.ime_enabled.insert(widget_id, false);
state.accessibility_names.insert(widget_id, text.to_string());
state.widget_properties.insert(
widget_id,
CustomWidgetProperties {
parent: Some(parent),
x,
y,
width,
height,
widget_kind: WidgetKind::CommandLink,
},
);
widget_id
}
#[cfg(not(feature = "mini"))]
fn create_font_combo_box(
&self,
parent: ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId {
let widget_id = self.alloc_widget_id();
let mut state = self.state.lock().unwrap_or_else(|poisoned| poisoned.into_inner());
state.enabled.insert(widget_id, true);
state.visible.insert(widget_id, true);
state.ime_enabled.insert(widget_id, false);
state.accessibility_names.insert(widget_id, "FontComboBox".to_string());
state.widget_properties.insert(
widget_id,
CustomWidgetProperties {
parent: Some(parent),
x,
y,
width,
height,
widget_kind: WidgetKind::FontComboBox,
},
);
widget_id
}
};
}