egui/egui_demo_lib/src/apps/demo/grid_demo.rs

100 lines
3.8 KiB
Rust
Raw Normal View History

2021-12-17 17:39:15 +00:00
use egui::Color32;
2022-01-09 20:56:58 +00:00
use egui_extras::{GridBuilder, Padding, Size};
2021-12-17 17:39:15 +00:00
/// Shows off a table with dynamic layout
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
#[derive(Default)]
pub struct GridDemo {}
impl super::Demo for GridDemo {
fn name(&self) -> &'static str {
"▣ Grid Demo"
}
fn show(&mut self, ctx: &egui::Context, open: &mut bool) {
2021-12-17 17:39:15 +00:00
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 GridDemo {
fn ui(&mut self, ui: &mut egui::Ui) {
GridBuilder::new(ui, Padding::new(0.0, 5.0))
.size(Size::Absolute(50.0))
.size(Size::Remainder)
.size(Size::RelativeMinimum {
relative: 0.5,
minimum: 60.0,
})
.vertical(|mut grid| {
grid.cell(|ui| {
ui.painter()
.rect_filled(ui.available_rect_before_wrap(), 0.0, Color32::BLUE);
});
grid.grid(|builder| {
builder.sizes(Size::Remainder, 2).horizontal(|mut grid| {
grid.cell(|ui| {
ui.painter().rect_filled(
ui.available_rect_before_wrap(),
0.0,
Color32::RED,
);
2021-12-17 17:39:15 +00:00
});
grid.grid(|builder| {
builder.sizes(Size::Remainder, 3).vertical(|mut grid| {
2021-12-17 17:39:15 +00:00
grid.empty();
grid.cell(|ui| {
ui.painter().rect_filled(
ui.available_rect_before_wrap(),
0.0,
Color32::YELLOW,
2021-12-17 17:39:15 +00:00
);
});
});
});
2021-12-17 17:39:15 +00:00
});
});
grid.grid(|builder| {
builder
.size(Size::Remainder)
.size(Size::Absolute(50.0))
.size(Size::Remainder)
.size(Size::Absolute(70.0))
.horizontal(|mut grid| {
grid.empty();
grid.grid(|builder| {
builder
.size(Size::Remainder)
.size(Size::Absolute(50.0))
.size(Size::Remainder)
.vertical(|mut grid| {
grid.empty();
grid.cell(|ui| {
ui.painter().rect_filled(
ui.available_rect_before_wrap(),
0.0,
Color32::GOLD,
);
});
});
});
grid.empty();
grid.cell(|ui| {
ui.painter().rect_filled(
ui.available_rect_before_wrap(),
0.0,
Color32::GREEN,
);
});
});
});
});
2021-12-17 17:39:15 +00:00
}
}