use crate::{FlexInstance, FlexItem};
pub trait FlexWidget {
type Response;
fn default_item() -> FlexItem<'static> {
FlexItem::new()
}
fn flex_ui(self, item: FlexItem, flex_instance: &mut FlexInstance) -> Self::Response;
}
#[expect(deprecated)]
mod egui_widgets {
use super::FlexWidget;
use crate::{FlexInstance, FlexItem};
use egui::widgets::{
Button, Checkbox, DragValue, Hyperlink, Image, ImageButton, Label, Link, ProgressBar,
RadioButton, Slider, Spinner, TextEdit,
};
macro_rules! impl_widget {
($($widget:ty),*) => {
$(
impl FlexWidget for $widget {
type Response = egui::Response;
fn flex_ui(self, item: FlexItem, instance: &mut FlexInstance) -> Self::Response {
instance.add_widget(item, self).inner
}
}
)*
};
}
impl_widget!(
Button<'_>,
Label,
Checkbox<'_>,
Image<'_>,
DragValue<'_>,
Hyperlink,
ImageButton<'_>,
ProgressBar,
RadioButton<'_>,
Link,
Slider<'_>,
TextEdit<'_>,
Spinner
);
}