egui_charts/ui/drawing_toolbar/utilities/
hide_menu.rs1use crate::icons::icons;
11use crate::ui::drawing_toolbar::DrawingToolbarAction;
12use crate::ui::drawing_toolbar::components::draw_tool_button;
13use crate::ui::drawing_toolbar::state::ToolbarState;
14use crate::ui::drawing_toolbar::submenu_builder::SubmenuBuilder;
15use egui::{Response, Ui};
16
17pub struct HideMenu;
19
20impl HideMenu {
21 pub fn show(ui: &mut Ui) -> Response {
23 draw_tool_button(ui, &icons::EYE, "Hide objects", false)
24 }
25
26 pub fn show_submenu(
29 ui: &mut Ui,
30 trading: bool,
31 state: &ToolbarState,
32 ) -> Option<DrawingToolbarAction> {
33 let mut builder = SubmenuBuilder::new(ui)
34 .add_text_item_with_action("Hide drawings", "Hide all drawing tools from chart", || {
35 Some(DrawingToolbarAction::HideAllDrawings)
36 })
37 .checked(state.hide_drawings)
38 .add_text_item_with_action("Hide indicators", "Hide all indicators from chart", || {
39 Some(DrawingToolbarAction::HideAllIndicators)
40 })
41 .checked(state.hide_indicators);
42 if trading {
43 builder = builder
44 .add_text_item_with_action(
45 "Hide positions",
46 "Hide all positions from chart",
47 || Some(DrawingToolbarAction::HideAllPoss),
48 )
49 .checked(state.hide_positions)
50 .add_text_item_with_action("Hide orders", "Hide all orders from chart", || {
51 Some(DrawingToolbarAction::HideAllOrders)
52 })
53 .checked(state.hide_orders);
54 }
55 let tooltip = if trading {
56 "Hide drawings, indicators, positions and orders"
57 } else {
58 "Hide drawings and indicators"
59 };
60 builder
61 .add_text_item_with_action("Hide all", tooltip, || Some(DrawingToolbarAction::HideAll))
62 .show()
63 }
64}