Skip to content

Commit d077bec

Browse files
authored
Use egui atoms in help view (#10224)
### Related - atomics landed in egui (emilk/egui#5830) ### What Updates egui to latest master and uses atoms in the help view, removing the icon_text macro since it was basically atomics lite Seems like the snapshots the only thing that changed is the three dot icon slightly moved. But it seems a bit clearer now, so that's a win.
1 parent 1c3c4b6 commit d077bec

30 files changed

+137
-242
lines changed

Cargo.lock

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2901,7 +2901,7 @@ checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53"
29012901
[[package]]
29022902
name = "ecolor"
29032903
version = "0.31.1"
2904-
source = "git+https://github.com/emilk/egui.git?branch=main#54fded362dfc82f0ea188a110fc950d9adbb2f13"
2904+
source = "git+https://github.com/emilk/egui.git?branch=main#5194c0df3ef162ec6e2df9bb29bbe944d6d68aa9"
29052905
dependencies = [
29062906
"bytemuck",
29072907
"color-hex",
@@ -2918,7 +2918,7 @@ checksum = "18aade80d5e09429040243ce1143ddc08a92d7a22820ac512610410a4dd5214f"
29182918
[[package]]
29192919
name = "eframe"
29202920
version = "0.31.1"
2921-
source = "git+https://github.com/emilk/egui.git?branch=main#54fded362dfc82f0ea188a110fc950d9adbb2f13"
2921+
source = "git+https://github.com/emilk/egui.git?branch=main#5194c0df3ef162ec6e2df9bb29bbe944d6d68aa9"
29222922
dependencies = [
29232923
"ahash",
29242924
"bytemuck",
@@ -2958,7 +2958,7 @@ dependencies = [
29582958
[[package]]
29592959
name = "egui"
29602960
version = "0.31.1"
2961-
source = "git+https://github.com/emilk/egui.git?branch=main#54fded362dfc82f0ea188a110fc950d9adbb2f13"
2961+
source = "git+https://github.com/emilk/egui.git?branch=main#5194c0df3ef162ec6e2df9bb29bbe944d6d68aa9"
29622962
dependencies = [
29632963
"accesskit",
29642964
"ahash",
@@ -2978,7 +2978,7 @@ dependencies = [
29782978
[[package]]
29792979
name = "egui-wgpu"
29802980
version = "0.31.1"
2981-
source = "git+https://github.com/emilk/egui.git?branch=main#54fded362dfc82f0ea188a110fc950d9adbb2f13"
2981+
source = "git+https://github.com/emilk/egui.git?branch=main#5194c0df3ef162ec6e2df9bb29bbe944d6d68aa9"
29822982
dependencies = [
29832983
"ahash",
29842984
"bytemuck",
@@ -2997,7 +2997,7 @@ dependencies = [
29972997
[[package]]
29982998
name = "egui-winit"
29992999
version = "0.31.1"
3000-
source = "git+https://github.com/emilk/egui.git?branch=main#54fded362dfc82f0ea188a110fc950d9adbb2f13"
3000+
source = "git+https://github.com/emilk/egui.git?branch=main#5194c0df3ef162ec6e2df9bb29bbe944d6d68aa9"
30013001
dependencies = [
30023002
"accesskit_winit",
30033003
"ahash",
@@ -3061,7 +3061,7 @@ dependencies = [
30613061
[[package]]
30623062
name = "egui_extras"
30633063
version = "0.31.1"
3064-
source = "git+https://github.com/emilk/egui.git?branch=main#54fded362dfc82f0ea188a110fc950d9adbb2f13"
3064+
source = "git+https://github.com/emilk/egui.git?branch=main#5194c0df3ef162ec6e2df9bb29bbe944d6d68aa9"
30653065
dependencies = [
30663066
"ahash",
30673067
"egui",
@@ -3078,7 +3078,7 @@ dependencies = [
30783078
[[package]]
30793079
name = "egui_glow"
30803080
version = "0.31.1"
3081-
source = "git+https://github.com/emilk/egui.git?branch=main#54fded362dfc82f0ea188a110fc950d9adbb2f13"
3081+
source = "git+https://github.com/emilk/egui.git?branch=main#5194c0df3ef162ec6e2df9bb29bbe944d6d68aa9"
30823082
dependencies = [
30833083
"ahash",
30843084
"bytemuck",
@@ -3095,7 +3095,7 @@ dependencies = [
30953095
[[package]]
30963096
name = "egui_kittest"
30973097
version = "0.31.1"
3098-
source = "git+https://github.com/emilk/egui.git?branch=main#54fded362dfc82f0ea188a110fc950d9adbb2f13"
3098+
source = "git+https://github.com/emilk/egui.git?branch=main#5194c0df3ef162ec6e2df9bb29bbe944d6d68aa9"
30993099
dependencies = [
31003100
"dify",
31013101
"eframe",
@@ -3166,7 +3166,7 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
31663166
[[package]]
31673167
name = "emath"
31683168
version = "0.31.1"
3169-
source = "git+https://github.com/emilk/egui.git?branch=main#54fded362dfc82f0ea188a110fc950d9adbb2f13"
3169+
source = "git+https://github.com/emilk/egui.git?branch=main#5194c0df3ef162ec6e2df9bb29bbe944d6d68aa9"
31703170
dependencies = [
31713171
"bytemuck",
31723172
"serde",
@@ -3283,7 +3283,7 @@ dependencies = [
32833283
[[package]]
32843284
name = "epaint"
32853285
version = "0.31.1"
3286-
source = "git+https://github.com/emilk/egui.git?branch=main#54fded362dfc82f0ea188a110fc950d9adbb2f13"
3286+
source = "git+https://github.com/emilk/egui.git?branch=main#5194c0df3ef162ec6e2df9bb29bbe944d6d68aa9"
32873287
dependencies = [
32883288
"ab_glyph",
32893289
"ahash",
@@ -3302,7 +3302,7 @@ dependencies = [
33023302
[[package]]
33033303
name = "epaint_default_fonts"
33043304
version = "0.31.1"
3305-
source = "git+https://github.com/emilk/egui.git?branch=main#54fded362dfc82f0ea188a110fc950d9adbb2f13"
3305+
source = "git+https://github.com/emilk/egui.git?branch=main#5194c0df3ef162ec6e2df9bb29bbe944d6d68aa9"
33063306

33073307
[[package]]
33083308
name = "equivalent"

crates/viewer/re_time_panel/src/data_density_graph.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -423,10 +423,10 @@ pub fn data_density_graph_ui(
423423
// TODO(jprochazk): check chunk.num_rows() and chunk.timeline.is_sorted()
424424
// if too many rows and unsorted, show some generic error tooltip (=too much data)
425425
Tooltip::new(
426-
egui::Id::new("data_tooltip"),
427426
ui.ctx().clone(),
428-
egui::PopupAnchor::Pointer,
429427
ui.layer_id(),
428+
egui::Id::new("data_tooltip"),
429+
egui::PopupAnchor::Pointer,
430430
)
431431
.gap(12.0)
432432
.show(|ui| {

crates/viewer/re_time_panel/src/time_panel.rs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use re_log_types::{
1616
};
1717
use re_types::blueprint::components::PanelState;
1818
use re_types_core::ComponentDescriptor;
19-
use re_ui::{ContextExt as _, Help, UiExt as _, filter_widget, icon_text, icons, list_item};
19+
use re_ui::{ContextExt as _, Help, UiExt as _, filter_widget, icons, list_item};
2020
use re_ui::{IconText, filter_widget::format_matching_text};
2121
use re_viewer_context::{
2222
CollapseScope, HoverHighlight, Item, ItemCollection, ItemContext, RecordingConfig, TimeControl,
@@ -1490,21 +1490,18 @@ fn help(os: egui::os::OperatingSystem) -> Help {
14901490
.control("Play/Pause", "Space")
14911491
.control(
14921492
"Move time cursor",
1493-
icon_text!(icons::LEFT_MOUSE_CLICK, "+", "drag time scale"),
1493+
(icons::LEFT_MOUSE_CLICK, "+", "drag time scale"),
14941494
)
14951495
.control(
14961496
"Select time segment",
1497-
icon_text!(icons::SHIFT, "+", "drag time scale"),
1498-
)
1499-
.control(
1500-
"Pan",
1501-
icon_text!(icons::LEFT_MOUSE_CLICK, "+", "drag event canvas"),
1497+
(icons::SHIFT, "+", "drag time scale"),
15021498
)
1499+
.control("Pan", (icons::LEFT_MOUSE_CLICK, "+", "drag event canvas"))
15031500
.control(
15041501
"Zoom",
15051502
IconText::from_modifiers_and(os, Modifiers::COMMAND, icons::SCROLL),
15061503
)
1507-
.control("Reset view", icon_text!("double", icons::LEFT_MOUSE_CLICK))
1504+
.control("Reset view", ("double", icons::LEFT_MOUSE_CLICK))
15081505
}
15091506

15101507
fn help_button(ui: &mut egui::Ui) {
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading

crates/viewer/re_ui/examples/re_ui_example/main.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use re_ui::{
99
filter_widget::FilterState, list_item,
1010
};
1111
use re_ui::{IconText, filter_widget::format_matching_text};
12-
use re_ui::{icon_text, icons, notifications};
12+
use re_ui::{icons, notifications};
1313

1414
/// Sender that queues up the execution of a command.
1515
pub struct CommandSender(std::sync::mpsc::Sender<UICommand>);
@@ -494,7 +494,7 @@ impl egui_tiles::Behavior<Tab> for MyTileTreeBehavior {
494494
ui.label("Help").on_hover_ui(|ui| {
495495
Help::new("Help example")
496496
.docs_link("https://rerun.io/docs/reference/types/views/map_view")
497-
.control("Pan", icon_text!(icons::LEFT_MOUSE_CLICK, "+", "drag"))
497+
.control("Pan", (icons::LEFT_MOUSE_CLICK, "+", "drag"))
498498
.control(
499499
"Zoom",
500500
IconText::from_modifiers_and(
@@ -503,7 +503,7 @@ impl egui_tiles::Behavior<Tab> for MyTileTreeBehavior {
503503
icons::SCROLL,
504504
),
505505
)
506-
.control("Reset view", icon_text!("double", icons::LEFT_MOUSE_CLICK))
506+
.control("Reset view", ("double", icons::LEFT_MOUSE_CLICK))
507507
.ui(ui);
508508
});
509509

crates/viewer/re_ui/src/help.rs

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
use egui::{OpenUrl, RichText, Sense, TextStyle, Ui, UiBuilder};
1+
use egui::{AtomLayout, Atoms, IntoAtoms, OpenUrl, RichText, Sense, TextStyle, Ui, UiBuilder};
22

3-
use crate::{
4-
UiExt as _,
5-
icon_text::{IconText, IconTextItem},
6-
icons,
7-
};
3+
use crate::{UiExt as _, icons};
84

95
/// A help popup where you can show markdown text and controls as a table.
106
#[derive(Debug, Clone)]
@@ -25,13 +21,13 @@ enum HelpSection {
2521
#[derive(Debug, Clone)]
2622
pub struct ControlRow {
2723
text: String,
28-
items: IconText,
24+
items: Atoms<'static>,
2925
}
3026

3127
impl ControlRow {
3228
/// Create a new control row.
3329
#[allow(clippy::needless_pass_by_value)]
34-
pub fn new(text: impl ToString, items: IconText) -> Self {
30+
pub fn new(text: impl ToString, items: Atoms<'static>) -> Self {
3531
Self {
3632
text: text.to_string(),
3733
items,
@@ -92,18 +88,18 @@ impl Help {
9288
///
9389
/// Split any + or / into an extra `IconTextItem`, like this:
9490
/// ```rust
95-
/// re_ui::Help::new("Example").control("Pan", re_ui::icon_text!("click", "+", "drag"));
91+
/// re_ui::Help::new("Example").control("Pan", ("click", "+", "drag"));
9692
/// ```
9793
#[allow(clippy::needless_pass_by_value)]
9894
#[inline]
99-
pub fn control(mut self, label: impl ToString, items: impl Into<IconText>) -> Self {
95+
pub fn control(mut self, label: impl ToString, items: impl IntoAtoms<'static>) -> Self {
10096
if let Some(HelpSection::Controls(controls)) = self.sections.last_mut() {
101-
controls.push(ControlRow::new(label, items.into()));
97+
controls.push(ControlRow::new(label, items.into_atoms()));
10298
} else {
10399
self.sections
104100
.push(HelpSection::Controls(vec![ControlRow::new(
105101
label,
106-
items.into(),
102+
items.into_atoms(),
107103
)]));
108104
}
109105
self
@@ -193,7 +189,7 @@ fn section_ui(ui: &mut Ui, section: HelpSection) {
193189
ui.markdown_ui(&md);
194190
}
195191
HelpSection::Controls(controls) => {
196-
for row in controls {
192+
for mut row in controls {
197193
egui::Sides::new().spacing(12.0).show(
198194
ui,
199195
|ui| {
@@ -202,19 +198,10 @@ fn section_ui(ui: &mut Ui, section: HelpSection) {
202198
|ui| {
203199
let color = ui.visuals().widgets.inactive.text_color();
204200
ui.set_height(tokens.small_icon_size.y);
205-
ui.spacing_mut().item_spacing.x = 2.0;
206201
ui.style_mut().override_text_style = Some(TextStyle::Monospace);
207202
ui.visuals_mut().override_text_color = Some(color);
208-
for item in row.items.0.into_iter().rev() {
209-
match item {
210-
IconTextItem::Icon(icon) => {
211-
ui.small_icon(&icon, Some(color));
212-
}
213-
IconTextItem::Text(text) => {
214-
ui.label(text);
215-
}
216-
}
217-
}
203+
row.items.map_images(|i| i.tint(color));
204+
AtomLayout::new(row.items).gap(2.0).show(ui);
218205
},
219206
);
220207
}

0 commit comments

Comments
 (0)