mirror of
https://github.com/emilk/egui.git
synced 2026-09-01 06:10:06 -04:00
Add Group container
This commit is contained in:
@@ -80,6 +80,7 @@ impl Default for DemoGroups {
|
||||
Box::<super::extra_viewport::ExtraViewport>::default(),
|
||||
Box::<super::font_book::FontBook>::default(),
|
||||
Box::<super::frame_demo::FrameDemo>::default(),
|
||||
Box::<super::group_demo::GroupDemo>::default(),
|
||||
Box::<super::highlighting::Highlighting>::default(),
|
||||
Box::<super::interactive_container::InteractiveContainerDemo>::default(),
|
||||
Box::<super::MiscDemoWindow>::default(),
|
||||
|
||||
76
crates/egui_demo_lib/src/demo/group_demo.rs
Normal file
76
crates/egui_demo_lib/src/demo/group_demo.rs
Normal file
@@ -0,0 +1,76 @@
|
||||
use egui::{Align, Align2, Group, ScrollArea};
|
||||
|
||||
#[derive(PartialEq)]
|
||||
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
||||
#[cfg_attr(feature = "serde", serde(default))]
|
||||
pub struct GroupDemo {
|
||||
align_x: Align,
|
||||
align_y: Align,
|
||||
}
|
||||
|
||||
impl Default for GroupDemo {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
align_x: Align::Center,
|
||||
align_y: Align::Center,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl crate::Demo for GroupDemo {
|
||||
fn name(&self) -> &'static str {
|
||||
"Group"
|
||||
}
|
||||
|
||||
fn show(&mut self, ui: &mut egui::Ui, open: &mut bool) {
|
||||
egui::Window::new(self.name())
|
||||
.open(open)
|
||||
.default_width(300.0)
|
||||
.default_height(300.0)
|
||||
.resizable(true)
|
||||
.constrain_to(ui.available_rect_before_wrap())
|
||||
.show(ui, |ui| {
|
||||
use crate::View as _;
|
||||
self.ui(ui);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
impl crate::View for GroupDemo {
|
||||
fn ui(&mut self, ui: &mut egui::Ui) {
|
||||
ui.vertical_centered(|ui| {
|
||||
ui.add(crate::egui_github_link_file!());
|
||||
});
|
||||
|
||||
ui.horizontal(|ui| {
|
||||
ui.label("Horizontal:");
|
||||
ui.selectable_value(&mut self.align_x, Align::Min, "Left");
|
||||
ui.selectable_value(&mut self.align_x, Align::Center, "Center");
|
||||
ui.selectable_value(&mut self.align_x, Align::Max, "Right");
|
||||
});
|
||||
|
||||
ui.horizontal(|ui| {
|
||||
ui.label("Vertical:");
|
||||
ui.selectable_value(&mut self.align_y, Align::Min, "Top");
|
||||
ui.selectable_value(&mut self.align_y, Align::Center, "Center");
|
||||
ui.selectable_value(&mut self.align_y, Align::Max, "Bottom");
|
||||
});
|
||||
|
||||
ui.separator();
|
||||
|
||||
let align2 = Align2([self.align_x, self.align_y]);
|
||||
|
||||
|
||||
Group::new("demo_group").align2(align2).ui(ui, |ui| {
|
||||
ui.label("Hello!");
|
||||
let _ = ui.button("A button");
|
||||
ui.label("More text");
|
||||
ScrollArea::vertical().max_height(50.0).show(ui, |ui| {
|
||||
for _ in 0..100 {
|
||||
ui.label("Even more text");
|
||||
}
|
||||
});
|
||||
});
|
||||
ui.set_height(ui.available_height());
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ pub mod drag_and_drop;
|
||||
pub mod extra_viewport;
|
||||
pub mod font_book;
|
||||
pub mod frame_demo;
|
||||
pub mod group_demo;
|
||||
pub mod highlighting;
|
||||
pub mod interactive_container;
|
||||
pub mod misc_demo_window;
|
||||
|
||||
Reference in New Issue
Block a user