iced_widget/pane_grid/
controls.rs

1use crate::container;
2use crate::core::{self, Element};
3
4/// The controls of a [`Pane`].
5///
6/// [`Pane`]: super::Pane
7pub struct Controls<'a, Message, Theme = crate::Theme, Renderer = crate::Renderer>
8where
9    Theme: container::Catalog,
10    Renderer: core::Renderer,
11{
12    pub(super) full: Element<'a, Message, Theme, Renderer>,
13    pub(super) compact: Option<Element<'a, Message, Theme, Renderer>>,
14}
15
16impl<'a, Message, Theme, Renderer> Controls<'a, Message, Theme, Renderer>
17where
18    Theme: container::Catalog,
19    Renderer: core::Renderer,
20{
21    /// Creates a new [`Controls`] with the given content.
22    pub fn new(content: impl Into<Element<'a, Message, Theme, Renderer>>) -> Self {
23        Self {
24            full: content.into(),
25            compact: None,
26        }
27    }
28
29    /// Creates a new [`Controls`] with a full and compact variant.
30    /// If there is not enough room to show the full variant without overlap,
31    /// then the compact variant will be shown instead.
32    pub fn dynamic(
33        full: impl Into<Element<'a, Message, Theme, Renderer>>,
34        compact: impl Into<Element<'a, Message, Theme, Renderer>>,
35    ) -> Self {
36        Self {
37            full: full.into(),
38            compact: Some(compact.into()),
39        }
40    }
41}
42
43impl<'a, Message, Theme, Renderer> From<Element<'a, Message, Theme, Renderer>>
44    for Controls<'a, Message, Theme, Renderer>
45where
46    Theme: container::Catalog,
47    Renderer: core::Renderer,
48{
49    fn from(value: Element<'a, Message, Theme, Renderer>) -> Self {
50        Self::new(value)
51    }
52}