egui_charts/ui/widget_bar/panels/object_tree/
actions.rs1#[derive(Clone, Debug, PartialEq, Default)]
7#[non_exhaustive]
8pub enum ObjectTreeAction {
9 #[default]
11 None,
12
13 Select(usize),
16 AddToSelection(usize),
18 RangeSelect(usize),
20 ClearSelection,
22 SelectAll,
24
25 ToggleVisibility(usize),
28 ShowAll,
30 HideAll,
32 HideSelected,
34
35 ToggleLock(usize),
38 LockAll,
40 UnlockAll,
42
43 Delete(usize),
46 DeleteSelected,
48 Duplicate(usize),
50 DuplicateSelected,
52
53 OpenProperties(usize),
56 Rename(usize, String),
58 ChangeColor(usize, egui::Color32),
60
61 BringToFront(usize),
64 SendToBack(usize),
66 MoveUp(usize),
68 MoveDown(usize),
70 MoveToPane(usize, crate::widget::PaneId),
72
73 CreateFolder(Vec<String>, String),
76 MoveToFolder(Vec<usize>, Vec<String>),
78 SetFolderVisible(Vec<String>, bool),
80 SetFolderLocked(Vec<String>, bool),
82
83 ZoomTo(usize),
86
87 OpenIndicatorSettings(usize),
90 RemoveIndicator(usize),
92
93 RemoveAllDrawings,
96 RemoveAllIndicators,
98}
99
100impl ObjectTreeAction {
101 pub fn is_none(&self) -> bool {
103 matches!(self, Self::None)
104 }
105
106 pub fn is_selection_action(&self) -> bool {
108 matches!(
109 self,
110 Self::Select(_)
111 | Self::AddToSelection(_)
112 | Self::RangeSelect(_)
113 | Self::ClearSelection
114 | Self::SelectAll
115 )
116 }
117
118 pub fn is_modification_action(&self) -> bool {
120 matches!(
121 self,
122 Self::Delete(_)
123 | Self::DeleteSelected
124 | Self::Duplicate(_)
125 | Self::DuplicateSelected
126 | Self::Rename(_, _)
127 | Self::ChangeColor(_, _)
128 | Self::BringToFront(_)
129 | Self::SendToBack(_)
130 | Self::MoveUp(_)
131 | Self::MoveDown(_)
132 | Self::MoveToPane(_, _)
133 | Self::CreateFolder(_, _)
134 | Self::MoveToFolder(_, _)
135 | Self::SetFolderVisible(_, _)
136 | Self::SetFolderLocked(_, _)
137 | Self::RemoveIndicator(_)
138 | Self::RemoveAllDrawings
139 | Self::RemoveAllIndicators
140 )
141 }
142
143 pub fn requires_confirmation(&self) -> bool {
145 matches!(
146 self,
147 Self::DeleteSelected | Self::RemoveAllDrawings | Self::RemoveAllIndicators
148 )
149 }
150
151 pub fn description(&self) -> String {
153 match self {
154 Self::None => "No action".to_string(),
155 Self::Select(id) => format!("Select object {id}"),
156 Self::Delete(id) => format!("Delete object {id}"),
157 Self::DeleteSelected => "Delete selected objects".to_string(),
158 Self::Duplicate(id) => format!("Duplicate object {id}"),
159 Self::ToggleVisibility(id) => format!("Toggle visibility for {id}"),
160 Self::ToggleLock(id) => format!("Toggle lock for {id}"),
161 Self::Rename(id, name) => format!("Rename {id} to '{name}'"),
162 Self::BringToFront(id) => format!("Bring {id} to front"),
163 Self::SendToBack(id) => format!("Send {id} to back"),
164 Self::ZoomTo(id) => format!("Zoom to object {id}"),
165 Self::RemoveAllDrawings => "Remove all drawings".to_string(),
166 Self::RemoveAllIndicators => "Remove all indicators".to_string(),
167 _ => format!("{self:?}"),
168 }
169 }
170}