use std::vec::Vec; use crate::themes::ThemeInfo; use crate::messages::WindowMessage; use crate::window_manager_types::DrawInstructions; pub mod toggle_button; pub mod highlight_button; pub mod paragraph; pub mod press_button; pub trait Component { fn handle_message(&mut self, message: WindowMessage) -> Option; fn draw(&self, theme_info: &ThemeInfo) -> Vec; //properties //focusing is a way for the *window* to know what component to send input, presses, etc //focusing for components is purely to give a visual representation fn focusable(&self) -> bool; fn clickable(&self) -> bool; //fn pressable(&self) -> bool; //touch fn name(&self) -> &String; //should be unique }