1use widgets::{Widget, VerticalPlacement, HorizontalPlacement};
2
3pub trait Place: Sized + Widget {
4 fn position(&self, x: i32, y: i32) -> &Self {
5 let mut position = self.local_position().get();
6 let mut rect = self.rect().get();
7 position.x = x;
8 position.y = y;
9 rect.x = x;
10 rect.y = y;
11 self.local_position().set(position);
12 self.rect().set(rect);
13 self.arrange();
14 self
15 }
16
17 fn size(&self, width: u32, height: u32) -> &Self {
18 let mut rect = self.rect().get();
19 rect.width = width;
20 rect.height = height;
21 self.rect().set(rect);
22 self.arrange();
23 self
24 }
25
26 fn placement(&self, vertical_placement: VerticalPlacement, horizontal_placement: HorizontalPlacement) -> &Self {
27 self.vertical_placement().set(vertical_placement);
28 self.horizontal_placement().set(horizontal_placement);
29 self.arrange();
30 self
31 }
32}