2021-01-11 19:58:36 +00:00
|
|
|
#[derive(Debug, PartialEq)]
|
|
|
|
#[cfg_attr(feature = "persistence", derive(serde::Deserialize, serde::Serialize))]
|
|
|
|
enum Enum {
|
|
|
|
First,
|
|
|
|
Second,
|
|
|
|
Third,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cfg_attr(feature = "persistence", derive(serde::Deserialize, serde::Serialize))]
|
|
|
|
pub struct WidgetGallery {
|
|
|
|
boolean: bool,
|
|
|
|
radio: Enum,
|
|
|
|
scalar: f32,
|
|
|
|
string: String,
|
|
|
|
color: egui::Color32,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl Default for WidgetGallery {
|
|
|
|
fn default() -> Self {
|
|
|
|
Self {
|
|
|
|
boolean: false,
|
|
|
|
radio: Enum::First,
|
|
|
|
scalar: 42.0,
|
|
|
|
string: "Hello World!".to_owned(),
|
2021-01-13 22:00:56 +00:00
|
|
|
color: (egui::Rgba::from(egui::Color32::LIGHT_BLUE) * 0.5).into(),
|
2021-01-11 19:58:36 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl super::Demo for WidgetGallery {
|
|
|
|
fn name(&self) -> &str {
|
|
|
|
"🗄 Widget Gallery"
|
|
|
|
}
|
|
|
|
|
|
|
|
fn show(&mut self, ctx: &egui::CtxRef, open: &mut bool) {
|
2021-01-14 22:25:51 +00:00
|
|
|
egui::Window::new(self.name())
|
|
|
|
.open(open)
|
|
|
|
.resizable(false)
|
|
|
|
.show(ctx, |ui| {
|
|
|
|
use super::View;
|
|
|
|
self.ui(ui);
|
|
|
|
});
|
2021-01-11 19:58:36 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl super::View for WidgetGallery {
|
|
|
|
fn ui(&mut self, ui: &mut egui::Ui) {
|
|
|
|
let Self {
|
|
|
|
boolean,
|
|
|
|
radio,
|
|
|
|
scalar,
|
|
|
|
string,
|
|
|
|
color,
|
|
|
|
} = self;
|
|
|
|
|
2021-01-15 18:47:58 +00:00
|
|
|
let grid = egui::Grid::new("my_grid")
|
|
|
|
.striped(true)
|
|
|
|
.spacing([40.0, 4.0]);
|
2021-01-14 22:36:23 +00:00
|
|
|
grid.show(ui, |ui| {
|
2021-01-11 19:58:36 +00:00
|
|
|
ui.label("Label:");
|
|
|
|
ui.label("Welcome to the widget gallery!");
|
|
|
|
ui.end_row();
|
|
|
|
|
2021-01-11 20:07:17 +00:00
|
|
|
ui.label("Hyperlink:");
|
|
|
|
ui.add(egui::Hyperlink::new("https://github.com/emilk/egui").text(" Egui home page"));
|
|
|
|
ui.end_row();
|
|
|
|
|
2021-01-11 19:58:36 +00:00
|
|
|
ui.label("Text Input:");
|
|
|
|
ui.text_edit_singleline(string);
|
|
|
|
ui.end_row();
|
|
|
|
|
|
|
|
ui.label("Checkbox:");
|
|
|
|
ui.checkbox(boolean, "Checkbox");
|
|
|
|
ui.end_row();
|
|
|
|
|
|
|
|
ui.label("Radio buttons:");
|
|
|
|
ui.horizontal(|ui| {
|
|
|
|
ui.radio_value(radio, Enum::First, "First");
|
|
|
|
ui.radio_value(radio, Enum::Second, "Second");
|
|
|
|
ui.radio_value(radio, Enum::Third, "Third");
|
|
|
|
});
|
|
|
|
ui.end_row();
|
|
|
|
|
2021-01-11 20:07:17 +00:00
|
|
|
ui.label("SelectableLabel:");
|
|
|
|
ui.horizontal(|ui| {
|
|
|
|
ui.selectable_value(radio, Enum::First, "First");
|
|
|
|
ui.selectable_value(radio, Enum::Second, "Second");
|
|
|
|
ui.selectable_value(radio, Enum::Third, "Third");
|
|
|
|
});
|
|
|
|
ui.end_row();
|
|
|
|
|
2021-01-11 19:58:36 +00:00
|
|
|
ui.label("ComboBox:");
|
|
|
|
egui::combo_box_with_label(ui, "Take your pick", format!("{:?}", radio), |ui| {
|
|
|
|
ui.selectable_value(radio, Enum::First, "First");
|
|
|
|
ui.selectable_value(radio, Enum::Second, "Second");
|
|
|
|
ui.selectable_value(radio, Enum::Third, "Third");
|
|
|
|
});
|
|
|
|
ui.end_row();
|
|
|
|
|
|
|
|
ui.label("Slider:");
|
|
|
|
ui.add(egui::Slider::f32(scalar, 0.0..=100.0).text("value"));
|
|
|
|
ui.end_row();
|
|
|
|
|
|
|
|
ui.label("DragValue:");
|
|
|
|
ui.add(egui::DragValue::f32(scalar).speed(1.0));
|
|
|
|
ui.end_row();
|
|
|
|
|
|
|
|
ui.label("Color picker:");
|
|
|
|
ui.color_edit_button_srgba(color);
|
|
|
|
ui.end_row();
|
|
|
|
|
|
|
|
ui.label("Image:");
|
|
|
|
ui.image(egui::TextureId::Egui, [24.0, 16.0])
|
|
|
|
.on_hover_text("The font texture");
|
|
|
|
ui.end_row();
|
|
|
|
|
|
|
|
ui.label("Button:");
|
|
|
|
if ui.button("Toggle boolean").clicked {
|
|
|
|
*boolean = !*boolean;
|
|
|
|
}
|
|
|
|
ui.end_row();
|
|
|
|
|
|
|
|
ui.label("ImageButton:");
|
|
|
|
if ui
|
|
|
|
.add(egui::ImageButton::new(egui::TextureId::Egui, [24.0, 16.0]))
|
|
|
|
.clicked
|
|
|
|
{
|
|
|
|
*boolean = !*boolean;
|
|
|
|
}
|
|
|
|
ui.end_row();
|
2021-01-11 20:07:17 +00:00
|
|
|
|
|
|
|
ui.label("Separator:");
|
2021-01-16 10:34:59 +00:00
|
|
|
ui.separator();
|
2021-01-11 20:07:17 +00:00
|
|
|
ui.end_row();
|
2021-01-14 22:25:51 +00:00
|
|
|
|
|
|
|
ui.label("CollapsingHeader:");
|
|
|
|
ui.collapsing("Click to see what is hidden!", |ui| {
|
|
|
|
ui.horizontal_wrapped_for_text(egui::TextStyle::Body, |ui| {
|
|
|
|
ui.label(
|
2021-01-15 18:47:58 +00:00
|
|
|
"Not much, as it turns out - but here is a gold star for you for checking:",
|
2021-01-14 22:25:51 +00:00
|
|
|
);
|
|
|
|
ui.colored_label(egui::Color32::GOLD, "☆");
|
|
|
|
});
|
|
|
|
});
|
|
|
|
ui.end_row();
|
2021-01-11 19:58:36 +00:00
|
|
|
});
|
|
|
|
|
2021-01-14 22:25:51 +00:00
|
|
|
ui.separator();
|
2021-01-11 22:50:50 +00:00
|
|
|
ui.vertical_centered(|ui| {
|
|
|
|
ui.add(crate::__egui_github_link_file!());
|
|
|
|
});
|
2021-01-11 19:58:36 +00:00
|
|
|
}
|
|
|
|
}
|