Skip to main content

danceinterpreter_rs/ui/
mod.rs

1use iced::widget::Text;
2use iced::widget::text::Shaping;
3use iced::widget::{container, text, tooltip};
4use iced::{Element, Font, Length, Pixels, Renderer, Theme};
5
6pub mod config_window;
7pub mod song_window;
8pub mod widget;
9
10/// Wraps a widget in a tooltip with a readable styled container.
11pub fn with_tooltip<'a, Message: 'a>(
12    content: impl Into<Element<'a, Message>>,
13    label: impl text::IntoFragment<'a>,
14) -> Element<'a, Message> {
15    tooltip(
16        content,
17        container(text(label)).padding([4, 8]).style(|t: &Theme| {
18            container::Style::default()
19                .background(t.extended_palette().background.strong.color)
20                .border(iced::border::rounded(4))
21        }),
22        tooltip::Position::Bottom,
23    )
24    .gap(4)
25    .into()
26}
27
28pub fn material_icon_sized(id: &'_ str, size: impl Into<Pixels>) -> Text<'_, Theme, Renderer> {
29    Text::new(id)
30        .font(Font::with_name("Material Symbols Outlined"))
31        .size(size)
32        .shaping(Shaping::Advanced)
33        .width(Length::Shrink)
34}
35
36pub fn material_icon(id: &'_ str) -> Text<'_, Theme, Renderer> {
37    Text::new(id)
38        .font(Font::with_name("Material Symbols Outlined"))
39        .shaping(Shaping::Advanced)
40        .width(Length::Shrink)
41}