1use crate::traits::widget_base::WidgetBase;
2use crate::enums::{AlignContent, Style};
3use crate::traits::WidgetExt;
4
5pub trait GroupExt: WidgetExt {
6 fn begin(&self) {
7 self.inner().begin()
8 }
9 fn end(&self) {
10 self.inner().end()
11 }
12 fn clear(&self) {
13 self.inner().set_inner_html("");
14 }
15 fn add<W: WidgetExt>(&self, widget: &W) where Self: Sized {
16 self.inner().append(&widget.inner());
17 }
18 fn remove<W: WidgetExt>(&self, widget: &W) where Self: Sized {
19 self.inner().remove(&widget.inner());
20 }
21 fn set_align_content(&self, align: AlignContent) {
22 self.inner().set_style(Style::AlignContent, align.to_str());
23 }
24 fn set_justify_content(&self, align: AlignContent) {
25 self.inner()
26 .set_style(Style::JustifyContent, align.to_str());
27 }
28 fn children(&self) -> Vec<Box<dyn WidgetExt>> {
29 let mut v: Vec<Box<dyn WidgetExt>> = vec![];
30 let c = self.inner().children();
31 for e in c.iter() {
32 let f = unsafe {crate::frame::Label::from_widget(&e)};
33 v.push(Box::new(f));
34 }
35 v
36 }
37}