use crate::control_backend::types::ControlBackendKind;
use crate::core::ObjectId;
use crate::platform::{WidgetTriggerEvent, WidgetTriggerKind};
pub trait ControlBackend: Send + Sync {
fn backend_name(&self) -> &'static str;
fn kind(&self) -> ControlBackendKind;
#[allow(clippy::too_many_arguments)]
fn create_widget(
&self,
_kind: &str,
_parent: ObjectId,
_text: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_window(&self, title: &str, x: i32, y: i32, width: u32, height: u32) -> ObjectId;
fn create_button(
&self,
parent: ObjectId,
text: &str,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId;
fn create_checkbox(
&self,
parent: ObjectId,
text: &str,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId;
fn create_line_edit(
&self,
parent: ObjectId,
text: &str,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId;
fn create_label(
&self,
parent: ObjectId,
text: &str,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId;
fn create_radio_button(
&self,
parent: ObjectId,
text: &str,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId;
fn create_slider(&self, parent: ObjectId, x: i32, y: i32, width: u32, height: u32) -> ObjectId;
fn create_progress_bar(
&self,
parent: ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId;
fn create_combo_box(
&self,
parent: ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId;
fn combo_box_add_item(&self, _widget_id: ObjectId, _text: &str) -> bool {
false
}
fn combo_box_clear_items(&self, _widget_id: ObjectId) -> bool {
false
}
fn create_list_box(
&self,
parent: ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId;
fn list_box_add_item(&self, _widget_id: ObjectId, _text: &str) -> bool {
false
}
fn list_box_remove_item(&self, _widget_id: ObjectId, _index: usize) -> bool {
false
}
fn list_box_clear_items(&self, _widget_id: ObjectId) -> bool {
false
}
fn create_panel(&self, parent: ObjectId, x: i32, y: i32, width: u32, height: u32) -> ObjectId;
fn create_menu_bar(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_menu(
&self,
_parent: ObjectId,
_text: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn attach_menu_bar_to_window(&self, _window: ObjectId, _menu_bar: ObjectId) -> bool {
false
}
fn menu_add_item(
&self,
_parent_menu: ObjectId,
_text: &str,
_shortcut: Option<&str>,
) -> ObjectId {
0
}
fn create_tool_bar(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_status_bar(
&self,
_parent: ObjectId,
_text: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_dialog(
&self,
_parent: ObjectId,
_title: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
#[allow(clippy::too_many_arguments)]
fn create_message_box(
&self,
_parent: ObjectId,
_title: &str,
_text: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_file_dialog(
&self,
_parent: ObjectId,
_title: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_color_dialog(
&self,
_parent: ObjectId,
_title: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_font_dialog(
&self,
_parent: ObjectId,
_title: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_popup_window(
&self,
_parent: ObjectId,
_title: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_text_edit(
&self,
_parent: ObjectId,
_text: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_rich_edit(
&self,
_parent: ObjectId,
_text: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_spin_box(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_list_view(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_tree_view(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_scroll_bar(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_scroll_area(
&self,
parent: ObjectId,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId;
fn create_dock_panel(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_group_box(
&self,
parent: ObjectId,
title: &str,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId;
fn create_tab_widget(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_splitter(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_stack_widget(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_mdi_area(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_canvas(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_table(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_grid(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_chart(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_toggle_button(
&self,
parent: ObjectId,
text: &str,
x: i32,
y: i32,
width: u32,
height: u32,
) -> ObjectId;
fn create_check_list_box(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_double_spin_box(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_dial(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_wizard(
&self,
_parent: ObjectId,
_title: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_date_picker(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_time_picker(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_date_time_picker(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_directory_dialog(
&self,
_parent: ObjectId,
_title: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_data_view(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_property_grid(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_toolbox(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_collapsible_pane(
&self,
_parent: ObjectId,
_title: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_dock_widget(
&self,
_parent: ObjectId,
_title: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_web_view(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_activity_indicator(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_calendar(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_column_view(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_undo_view(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_command_link(
&self,
_parent: ObjectId,
_text: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_lcd_number(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_font_combo_box(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_web_engine_view(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_web_engine_page(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_web_engine_settings(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_web_engine_download_item(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_web_engine_cookie_store(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_web_engine_web_channel(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_web_engine_find_text_result(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_web_engine_notification(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_web_engine_script_dialog(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_web_engine_context_menu_request(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_action(
&self,
_parent: ObjectId,
_text: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_tool_button(
&self,
_parent: ObjectId,
_text: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_tool_box(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_context_menu(
&self,
_parent: ObjectId,
_text: &str,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_freeform_shape(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_tab_bar(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_pie_menu(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn create_ribbon_bar(
&self,
_parent: ObjectId,
_x: i32,
_y: i32,
_width: u32,
_height: u32,
) -> ObjectId {
0
}
fn poll_menu_triggered(&self) -> Option<ObjectId> {
None
}
fn inject_menu_trigger(&self, _menu_item_id: ObjectId) -> bool {
false
}
fn poll_widget_triggered(&self) -> Option<ObjectId> {
self.poll_widget_trigger_event().map(|event| event.widget_id)
}
fn poll_widget_trigger_event(&self) -> Option<WidgetTriggerEvent> {
None
}
fn inject_widget_trigger_event(&self, _widget_id: ObjectId, _kind: WidgetTriggerKind) -> bool {
false
}
fn set_widget_text(&self, widget_id: ObjectId, text: &str);
fn get_widget_text(&self, widget_id: ObjectId) -> String;
fn show_widget(&self, widget_id: ObjectId) {
self.set_widget_visible(widget_id, true);
}
fn hide_widget(&self, widget_id: ObjectId) {
self.set_widget_visible(widget_id, false);
}
fn set_widget_enabled(&self, widget_id: ObjectId, enabled: bool);
fn is_widget_enabled(&self, widget_id: ObjectId) -> bool;
fn set_widget_visible(&self, widget_id: ObjectId, visible: bool);
fn is_widget_visible(&self, widget_id: ObjectId) -> bool;
fn set_widget_geometry(&self, widget_id: ObjectId, x: i32, y: i32, width: u32, height: u32);
fn get_widget_geometry(&self, _widget_id: ObjectId) -> Option<(i32, i32, u32, u32)> {
None
}
fn set_widget_ime_enabled(&self, widget_id: ObjectId, enabled: bool) -> bool;
fn is_widget_ime_enabled(&self, widget_id: ObjectId) -> bool;
fn set_widget_accessibility_name(&self, widget_id: ObjectId, name: &str) -> bool;
fn get_widget_accessibility_name(&self, widget_id: ObjectId) -> String;
fn set_clipboard_text(&self, _text: &str) -> bool {
false
}
fn get_clipboard_text(&self) -> String {
String::new()
}
fn begin_drag(&self, _source: ObjectId, _mime_type: &str, _payload: &[u8]) -> bool {
false
}
fn poll_drop_event(&self) -> Option<crate::platform::DropEvent> {
None
}
fn inject_drop_event(&self, _event: crate::platform::DropEvent) -> bool {
false
}
}