finishing this pr

This commit is contained in:
Jack Mac 2021-10-13 12:41:23 -04:00 committed by Jonathan Spira
parent 311a31d74c
commit 88a352f76b
3 changed files with 35 additions and 55 deletions

View File

@ -24,7 +24,7 @@
- Added `add_polyline` method to `DrawListMut`, which binds to Dear ImGui's `AddPolyline` and `AddConvexPolyFilled`
- BREAKING: `MenuItem::new` now takes `&ui`, but has been deprecated. Instead, use `ui.menu_item`.
- BREAKING: `MenuItem::new` now takes `&ui`, but has been deprecated. Instead, use `ui.menu_item`. Additionally, a `ui.menu_item_config` has been created to access the builder pattern on `MenuItem`.
## [0.8.0] - 2021-09-17

View File

@ -342,22 +342,22 @@ fn show_test_window(ui: &Ui, state: &mut State, opened: &mut bool) {
menu.end();
}
if let Some(_t) = ui.begin_menu("Examples") {
ui.menu_item_selected_ref("Main menu bar", &mut state.show_app_main_menu_bar);
ui.menu_item_selected_ref("Console", &mut state.show_app_console);
ui.menu_item_selected_ref("Log", &mut state.show_app_log);
ui.menu_item_selected_ref("Simple layout", &mut state.show_app_layout);
ui.menu_item_selected_ref("Property editor", &mut state.show_app_property_editor);
ui.menu_item_selected_ref("Long text display", &mut state.show_app_long_text);
ui.menu_item_selected_ref("Auto-resizing window", &mut state.show_app_auto_resize);
ui.menu_item_selected_ref("Constrained-resizing window", &mut state.show_app_constrained_resize);
ui.menu_item_selected_ref("Simple overlay", &mut state.show_app_fixed_overlay);
ui.menu_item_selected_ref("Manipulating window title", &mut state.show_app_manipulating_window_title);
ui.menu_item_selected_ref("Custom Rendering", &mut state.show_app_custom_rendering);
ui.menu_item_config("Main menu bar").build_with_ref(&mut state.show_app_main_menu_bar);
ui.menu_item_config("Console").build_with_ref(&mut state.show_app_console);
ui.menu_item_config("Log").build_with_ref(&mut state.show_app_log);
ui.menu_item_config("Simple layout").build_with_ref(&mut state.show_app_layout);
ui.menu_item_config("Property editor").build_with_ref(&mut state.show_app_property_editor);
ui.menu_item_config("Long text display").build_with_ref(&mut state.show_app_long_text);
ui.menu_item_config("Auto-resizing window").build_with_ref(&mut state.show_app_auto_resize);
ui.menu_item_config("Constrained-resizing window").build_with_ref(&mut state.show_app_constrained_resize);
ui.menu_item_config("Simple overlay").build_with_ref(&mut state.show_app_fixed_overlay);
ui.menu_item_config("Manipulating window title").build_with_ref(&mut state.show_app_manipulating_window_title);
ui.menu_item_config("Custom Rendering").build_with_ref(&mut state.show_app_custom_rendering);
}
if let Some(_menu) = ui.begin_menu("Help") {
ui.menu_item_selected_ref("Metrics", &mut state.show_app_metrics);
ui.menu_item_selected_ref("Style Editor", &mut state.show_app_style_editor);
ui.menu_item_selected_ref("About ImGui", &mut state.show_app_about);
ui.menu_item_config("Metrics").build_with_ref(&mut state.show_app_metrics);
ui.menu_item_config("Style Editor").build_with_ref(&mut state.show_app_style_editor);
ui.menu_item_config("About ImGui").build_with_ref(&mut state.show_app_about);
}
}
ui.spacing();
@ -826,15 +826,15 @@ fn show_example_app_main_menu_bar(ui: &Ui, state: &mut State) {
menu.end();
}
if let Some(menu) = ui.begin_menu("Edit") {
ui.menu_item_shortcut("Undo", "CTRL+Z");
ui.menu_item_config("Undo").shortcut("CTRL+Z").build();
ui.menu_item_config("Redo")
.shortcut("CTRL+Y")
.enabled(false)
.build();
ui.separator();
ui.menu_item_shortcut("Cut", "CTRL+X");
ui.menu_item_shortcut("Copy", "CTRL+C");
ui.menu_item_shortcut("Paste", "CTRL+V");
ui.menu_item_config("Cut").shortcut("CTRL+X").build();
ui.menu_item_config("Copy").shortcut("CTRL+C").build();
ui.menu_item_config("Paste").shortcut("CTRL+V").build();
menu.end();
}
menu_bar.end();
@ -842,9 +842,9 @@ fn show_example_app_main_menu_bar(ui: &Ui, state: &mut State) {
}
fn show_example_menu_file(ui: &Ui, state: &mut FileMenuState) {
ui.menu_item_enabled("(dummy_menu)", false);
ui.menu_item_config("(dummy_menu)").enabled(false).build();
ui.menu_item("New");
ui.menu_item_shortcut("Open", "Ctrl+O");
ui.menu_item_config("Open").shortcut("Ctrl+O").build();
if let Some(_menu) = ui.begin_menu("Open Recent") {
ui.menu_item("fish_hat.c");
ui.menu_item("fish_hat.inl");
@ -859,11 +859,12 @@ fn show_example_menu_file(ui: &Ui, state: &mut FileMenuState) {
}
}
}
ui.menu_item_shortcut("Save", "Ctrl+S");
ui.menu_item_config("Save").shortcut("Ctrl+S").build();
ui.menu_item("Save As..");
ui.separator();
if let Some(_menu) = ui.begin_menu("Options") {
ui.menu_item_selected_ref("Enabled", &mut state.enabled);
ui.menu_item_config("Enabled")
.build_with_ref(&mut state.enabled);
ui.child_window("child")
.size([0.0, 60.0])
@ -886,8 +887,8 @@ fn show_example_menu_file(ui: &Ui, state: &mut FileMenuState) {
}
}
assert!(ui.begin_menu_with_enabled("Disabled", false).is_none());
ui.menu_item_selected("Checked", true);
ui.menu_item_shortcut("Quit", "Alt+F4");
ui.menu_item_config("Checked").selected(true).build();
ui.menu_item_config("Quit").shortcut("Alt+F4").build();
}
fn show_example_app_auto_resize(ui: &Ui, state: &mut AutoResizeState, opened: &mut bool) {

View File

@ -110,43 +110,22 @@ impl Ui {
/// Creates a menu item with the given label, returning `true` if it was pressed.
///
/// If you want to configure this `menu_item` by setting `selection`, or `enablement`,
/// use [`menu_item_config`].
///
/// Note: a `menu_item` is the actual button/selectable within a Menu.
///
/// [`menu_item_config`]: Self::menu_item_config
#[doc(alias = "MenuItem")]
pub fn menu_item(&self, label: impl AsRef<str>) -> bool {
self.menu_item_config(label).build()
}
/// Creates a menu item with the given label and enablement, returning `true` if it was pressed.
/// Creates a menu item builder, with further methods on it as needed. Use [`menu_item`]
/// for simple Menu Items with no features on them.
///
/// Note: a `menu_item` is the actual button/selectable within a Menu.
pub fn menu_item_enabled(&self, label: impl AsRef<str>, enabled: bool) -> bool {
self.menu_item_config(label).enabled(enabled).build()
}
/// Creates a menu item with the given label and selection, returning `true` if it was pressed.
///
/// Note: a `menu_item` is the actual button/selectable within a Menu.
pub fn menu_item_selected(&self, label: impl AsRef<str>, selected: bool) -> bool {
self.menu_item_config(label).selected(selected).build()
}
/// Creates a menu item with the given label and selection, returning `true` if it was pressed,
/// while mutating `selected` to the correct state.
///
/// Note: a `menu_item` is the actual button/selectable within a Menu.
pub fn menu_item_selected_ref(&self, label: impl AsRef<str>, selected: &mut bool) -> bool {
self.menu_item_config(label).build_with_ref(selected)
}
/// Creates a menu item with the given label and shortcut, returning `true` if it was pressed.
///
/// Note: a `menu_item` is the actual button/selectable within a Menu.
pub fn menu_item_shortcut(&self, label: impl AsRef<str>, shortcut: impl AsRef<str>) -> bool {
self.menu_item_config(label).shortcut(shortcut).build()
}
// Creates a menu item builder, with further methods on it as needed.
//
// Note: a `menu_item` is the actual button/selectable within a Menu.
#[doc(alias = "MenuItem")]
pub fn menu_item_config<L: AsRef<str>>(&self, label: L) -> MenuItem<'_, L> {
MenuItem {
label,