2022-03-31 19:13:25 +00:00
|
|
|
use egui::Color32;
|
|
|
|
use egui_extras::{Size, StripBuilder};
|
|
|
|
|
|
|
|
/// Shows off a table with dynamic layout
|
|
|
|
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
|
|
|
#[derive(Default)]
|
|
|
|
pub struct StripDemo {}
|
|
|
|
|
|
|
|
impl super::Demo for StripDemo {
|
|
|
|
fn name(&self) -> &'static str {
|
|
|
|
"▣ Strip Demo"
|
|
|
|
}
|
|
|
|
|
|
|
|
fn show(&mut self, ctx: &egui::Context, open: &mut bool) {
|
|
|
|
egui::Window::new(self.name())
|
|
|
|
.open(open)
|
|
|
|
.resizable(true)
|
|
|
|
.default_width(400.0)
|
|
|
|
.show(ctx, |ui| {
|
|
|
|
use super::View as _;
|
|
|
|
self.ui(ui);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl super::View for StripDemo {
|
|
|
|
fn ui(&mut self, ui: &mut egui::Ui) {
|
2022-04-30 18:18:59 +00:00
|
|
|
let dark_mode = ui.visuals().dark_mode;
|
|
|
|
let faded_color = ui.visuals().window_fill();
|
|
|
|
let faded_color = |color: Color32| -> Color32 {
|
|
|
|
use egui::Rgba;
|
|
|
|
let t = if dark_mode { 0.95 } else { 0.8 };
|
|
|
|
egui::lerp(Rgba::from(color)..=Rgba::from(faded_color), t).into()
|
|
|
|
};
|
|
|
|
|
2022-03-31 19:13:25 +00:00
|
|
|
StripBuilder::new(ui)
|
2022-04-01 10:01:00 +00:00
|
|
|
.size(Size::exact(50.0))
|
|
|
|
.size(Size::remainder())
|
|
|
|
.size(Size::relative(0.5).at_least(60.0))
|
|
|
|
.size(Size::exact(10.0))
|
2022-03-31 19:13:25 +00:00
|
|
|
.vertical(|mut strip| {
|
2022-04-01 13:27:42 +00:00
|
|
|
strip.cell(|ui| {
|
2022-04-30 18:18:59 +00:00
|
|
|
ui.painter().rect_filled(
|
|
|
|
ui.available_rect_before_wrap(),
|
|
|
|
0.0,
|
|
|
|
faded_color(Color32::BLUE),
|
|
|
|
);
|
|
|
|
ui.label("width: 100%\nheight: 50px");
|
2022-03-31 19:13:25 +00:00
|
|
|
});
|
|
|
|
strip.strip(|builder| {
|
2022-04-01 10:01:00 +00:00
|
|
|
builder.sizes(Size::remainder(), 2).horizontal(|mut strip| {
|
2022-04-01 13:27:42 +00:00
|
|
|
strip.cell(|ui| {
|
2022-03-31 19:13:25 +00:00
|
|
|
ui.painter().rect_filled(
|
|
|
|
ui.available_rect_before_wrap(),
|
|
|
|
0.0,
|
2022-04-30 18:18:59 +00:00
|
|
|
faded_color(Color32::RED),
|
2022-03-31 19:13:25 +00:00
|
|
|
);
|
2022-04-30 18:18:59 +00:00
|
|
|
ui.label("width: 50%\nheight: remaining");
|
2022-03-31 19:13:25 +00:00
|
|
|
});
|
|
|
|
strip.strip(|builder| {
|
2022-04-01 10:01:00 +00:00
|
|
|
builder.sizes(Size::remainder(), 3).vertical(|mut strip| {
|
2022-03-31 19:13:25 +00:00
|
|
|
strip.empty();
|
2022-04-01 13:27:42 +00:00
|
|
|
strip.cell(|ui| {
|
2022-03-31 19:13:25 +00:00
|
|
|
ui.painter().rect_filled(
|
|
|
|
ui.available_rect_before_wrap(),
|
|
|
|
0.0,
|
2022-04-30 18:18:59 +00:00
|
|
|
faded_color(Color32::YELLOW),
|
2022-03-31 19:13:25 +00:00
|
|
|
);
|
2022-04-30 18:18:59 +00:00
|
|
|
ui.label("width: 50%\nheight: 1/3 of the red region");
|
2022-03-31 19:13:25 +00:00
|
|
|
});
|
2022-04-30 18:18:59 +00:00
|
|
|
strip.empty();
|
2022-03-31 19:13:25 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
strip.strip(|builder| {
|
|
|
|
builder
|
2022-04-01 10:01:00 +00:00
|
|
|
.size(Size::remainder())
|
2022-04-30 18:18:59 +00:00
|
|
|
.size(Size::exact(120.0))
|
2022-04-01 10:01:00 +00:00
|
|
|
.size(Size::remainder())
|
|
|
|
.size(Size::exact(70.0))
|
2022-03-31 19:13:25 +00:00
|
|
|
.horizontal(|mut strip| {
|
|
|
|
strip.empty();
|
|
|
|
strip.strip(|builder| {
|
|
|
|
builder
|
2022-04-01 10:01:00 +00:00
|
|
|
.size(Size::remainder())
|
|
|
|
.size(Size::exact(60.0))
|
|
|
|
.size(Size::remainder())
|
2022-03-31 19:13:25 +00:00
|
|
|
.vertical(|mut strip| {
|
|
|
|
strip.empty();
|
2022-04-01 13:27:42 +00:00
|
|
|
strip.cell(|ui| {
|
2022-03-31 19:13:25 +00:00
|
|
|
ui.painter().rect_filled(
|
|
|
|
ui.available_rect_before_wrap(),
|
|
|
|
0.0,
|
2022-04-30 18:18:59 +00:00
|
|
|
faded_color(Color32::GOLD),
|
2022-03-31 19:13:25 +00:00
|
|
|
);
|
2022-04-30 18:18:59 +00:00
|
|
|
ui.label("width: 120px\nheight: 60px");
|
2022-03-31 19:13:25 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
strip.empty();
|
2022-04-01 13:27:42 +00:00
|
|
|
strip.cell(|ui| {
|
2022-03-31 19:13:25 +00:00
|
|
|
ui.painter().rect_filled(
|
|
|
|
ui.available_rect_before_wrap(),
|
|
|
|
0.0,
|
2022-04-30 18:18:59 +00:00
|
|
|
faded_color(Color32::GREEN),
|
2022-03-31 19:13:25 +00:00
|
|
|
);
|
2022-04-30 18:18:59 +00:00
|
|
|
ui.label("width: 70px\n\nheight: 50%, but at least 60px.");
|
2022-03-31 19:13:25 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
2022-04-01 13:27:42 +00:00
|
|
|
strip.cell(|ui| {
|
2022-03-31 19:13:25 +00:00
|
|
|
ui.vertical_centered(|ui| {
|
2022-04-25 20:01:32 +00:00
|
|
|
ui.add(crate::egui_github_link_file!());
|
2022-03-31 19:13:25 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|