mirror of
https://github.com/emilk/egui.git
synced 2026-09-01 22:30:03 -04:00
* Part of https://github.com/emilk/egui/issues/4705 `egui_plot` can now be found at https://github.com/emilk/egui_plot
78 lines
2.3 KiB
Rust
78 lines
2.3 KiB
Rust
#[derive(Clone, Default, PartialEq, Eq)]
|
|
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
|
pub struct ContextMenus {}
|
|
|
|
impl crate::Demo for ContextMenus {
|
|
fn name(&self) -> &'static str {
|
|
"☰ Context Menus"
|
|
}
|
|
|
|
fn show(&mut self, ctx: &egui::Context, open: &mut bool) {
|
|
use crate::View;
|
|
egui::Window::new(self.name())
|
|
.vscroll(false)
|
|
.resizable(false)
|
|
.open(open)
|
|
.show(ctx, |ui| self.ui(ui));
|
|
}
|
|
}
|
|
|
|
impl crate::View for ContextMenus {
|
|
fn ui(&mut self, ui: &mut egui::Ui) {
|
|
ui.horizontal(|ui| {
|
|
ui.menu_button("Click for menu", Self::nested_menus);
|
|
|
|
ui.button("Right-click for menu")
|
|
.context_menu(Self::nested_menus);
|
|
|
|
if ui.ctx().is_context_menu_open() {
|
|
ui.label("Context menu is open");
|
|
} else {
|
|
ui.label("Context menu is closed");
|
|
}
|
|
});
|
|
|
|
ui.vertical_centered(|ui| {
|
|
ui.add(crate::egui_github_link_file!());
|
|
});
|
|
}
|
|
}
|
|
|
|
impl ContextMenus {
|
|
fn nested_menus(ui: &mut egui::Ui) {
|
|
ui.set_max_width(200.0); // To make sure we wrap long text
|
|
|
|
if ui.button("Open…").clicked() {
|
|
ui.close_menu();
|
|
}
|
|
ui.menu_button("SubMenu", |ui| {
|
|
ui.menu_button("SubMenu", |ui| {
|
|
if ui.button("Open…").clicked() {
|
|
ui.close_menu();
|
|
}
|
|
let _ = ui.button("Item");
|
|
});
|
|
ui.menu_button("SubMenu", |ui| {
|
|
if ui.button("Open…").clicked() {
|
|
ui.close_menu();
|
|
}
|
|
let _ = ui.button("Item");
|
|
});
|
|
let _ = ui.button("Item");
|
|
if ui.button("Open…").clicked() {
|
|
ui.close_menu();
|
|
}
|
|
});
|
|
ui.menu_button("SubMenu", |ui| {
|
|
let _ = ui.button("Item1");
|
|
let _ = ui.button("Item2");
|
|
let _ = ui.button("Item3");
|
|
let _ = ui.button("Item4");
|
|
if ui.button("Open…").clicked() {
|
|
ui.close_menu();
|
|
}
|
|
});
|
|
let _ = ui.button("Very long text for this item that should be wrapped");
|
|
}
|
|
}
|