1
0
mirror of https://github.com/emilk/egui.git synced 2026-06-27 07:03:14 -04:00

add basic table demo

This commit is contained in:
René Rössler
2021-12-17 16:11:34 +01:00
parent c097b38558
commit 6fce5a4c5d
5 changed files with 63 additions and 0 deletions

1
Cargo.lock generated
View File

@@ -916,6 +916,7 @@ dependencies = [
"criterion",
"egui",
"egui_datepicker",
"egui_dynamic_grid",
"ehttp",
"enum-map",
"epi",

View File

@@ -20,6 +20,7 @@ all-features = true
[dependencies]
egui = { version = "0.15.0", path = "../egui", default-features = false }
epi = { version = "0.15.0", path = "../epi" }
egui_dynamic_grid = { version = "0.15.0", path = "../egui_dynamic_grid" }
egui_datepicker = { version = "0.15.0", path = "../egui_datepicker", optional = true }
chrono = { version = "0.4", features = ["js-sys", "wasmbind"], optional = true }

View File

@@ -28,6 +28,7 @@ impl Default for Demos {
Box::new(super::plot_demo::PlotDemo::default()),
Box::new(super::scrolling::Scrolling::default()),
Box::new(super::sliders::Sliders::default()),
Box::new(super::table_demo::TableDemo::default()),
Box::new(super::widget_gallery::WidgetGallery::default()),
Box::new(super::window_options::WindowOptions::default()),
Box::new(super::tests::WindowResizeTest::default()),

View File

@@ -20,6 +20,7 @@ pub mod password;
pub mod plot_demo;
pub mod scrolling;
pub mod sliders;
pub mod table_demo;
pub mod tests;
pub mod toggle_switch;
pub mod widget_gallery;

View File

@@ -0,0 +1,59 @@
use egui_dynamic_grid::{Padding, Size, TableBuilder};
/// Shows off a table with dynamic layout
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
#[derive(Default)]
pub struct TableDemo {}
impl super::Demo for TableDemo {
fn name(&self) -> &'static str {
"☰ Table"
}
fn show(&mut self, ctx: &egui::CtxRef, open: &mut bool) {
egui::Window::new(self.name())
.open(open)
.resizable(true)
.default_width(300.0)
.show(ctx, |ui| {
use super::View as _;
self.ui(ui);
});
}
}
impl super::View for TableDemo {
fn ui(&mut self, ui: &mut egui::Ui) {
TableBuilder::new(ui, Padding::new(2.0, 5.0))
.striped(true)
.column(Size::Absolute(100.0))
.column(Size::RemainderMinimum(150.0))
.column(Size::Absolute(50.0))
.header(50.0, |mut header| {
header.col(|ui| {
ui.label("Left");
});
header.col(|ui| {
ui.label("Middle");
});
header.col(|ui| {
ui.label("Right");
});
})
.body(|mut body| {
for i in 1..100 {
body.row(40.0, |mut row| {
row.col(|ui| {
ui.label(format!("{}", i));
});
row.col(|ui| {
ui.label(format!("{}", i));
});
row.col(|ui| {
ui.label(format!("{}", i));
});
});
}
});
}
}