icee 0.1.0-alpha0.2

A CSS-like style system for the iced ui framework.
Documentation
use super::IceeWidget;

use crate::StyleSheet;
use crate::WithStyleSheet;

impl<'a, Message, Theme, Renderer> WithStyleSheet<'a>
    for iced::widget::Button<'a, Message, Theme, Renderer>
where
    Message: Clone + 'static,
    Theme: iced::widget::button::StyleSheet + 'static,
    <Theme as iced::widget::button::StyleSheet>::Style: From<crate::Rules>,
    Renderer: iced::advanced::text::Renderer + 'static,
{
    type Output = IceeWidget<'a, Message, Theme, Renderer>;

    fn with_stylesheet_id(self, stylesheet: &'a StyleSheet, id: &'static str) -> Self::Output {
        let rules = stylesheet.rules("button", Some(id));
        let any = rules.any();

        let mut element = self.style(rules.clone());

        if let Some(width) = any.width() {
            element = element.width(width);
        }

        if let Some(height) = any.height() {
            element = element.height(height);
        }

        IceeWidget {
            element: element.into(),
            rules,
        }
    }

    fn with_stylesheet(self, stylesheet: &'a StyleSheet) -> Self::Output {
        let rules = stylesheet.rules("button", None);

        IceeWidget {
            element: self.into(),
            rules,
        }
    }
}