1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #ifndef CONTAINER_H
30 #define CONTAINER_H
31
32 #include "../ui/container.h"
33 #include "toolkit.h"
34 #include "grid.h"
35
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39
40 typedef struct UiContainerPrivate UiContainerPrivate;
41 typedef struct UiGridLayoutContainer UiGridLayoutContainer;
42 typedef struct UiBoxContainer UiBoxContainer;
43 typedef struct UiGridWidget UiGridWidget;
44
45 enum UiBoxOrientation {
46 UI_BOX_VERTICAL =
0,
47 UI_BOX_HORIZONTAL
48 };
49 typedef enum UiBoxOrientation UiBoxOrientation;
50
51 enum UiContainerType {
52 UI_CONTAINER_GENERIC =
0,
53 UI_CONTAINER_TABVIEW
54 };
55 typedef enum UiContainerType UiContainerType;
56
57 typedef struct UiRect {
58 int x;
59 int y;
60 int width;
61 int height;
62 } UiRect;
63
64
65 struct UiContainerPrivate {
66 UiContainerX container;
67 HWND (*parent)(UiContainerPrivate*);
68 void (*add)(UiContainerPrivate*, W32Widget*, UiLayout*);
69 UiContainerType type;
70 HWND hwnd;
71 };
72
73 struct UiBoxContainer {
74 UiContainerPrivate container;
75 UiGridLayout *layout;
76 UiBoxOrientation orientation;
77 int x;
78 int y;
79 };
80
81 struct UiGridLayoutContainer {
82 UiContainerPrivate container;
83 UiGridLayout *layout;
84 int x;
85 int y;
86 UiBool def_hexpand;
87 UiBool def_vexpand;
88 UiBool def_hfill;
89 UiBool def_vfill;
90 };
91
92 struct UiGridWidget {
93 W32Widget widget;
94 HBRUSH brush;
95 };
96
97 UiContainerPrivate* ui_obj_container(UiObject *obj);
98 HWND ui_container_get_parent(UiContainerPrivate *ctn);
99 void ui_container_add(UiContainerPrivate *ctn, W32Widget *widget, UiLayout *layout);
100
101 int ui_grid_widget_event(W32Widget *widget,
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
102 W32Size ui_grid_layout_get_preferred_size(W32Widget *widget);
103
104 UiContainerX* ui_box_container_create(UiObject *obj,
HWND hwnd, UiBoxOrientation orientation,
short spacing, GridEdgeInsets padding);
105 void ui_box_container_add(UiContainerPrivate *ctn, W32Widget *widget, UiLayout *layout);
106
107 UiContainerX* ui_grid_container_create(
108 UiObject *obj,
109 HWND hwnd,
110 short columnspacing,
111 short rowspacing,
112 GridEdgeInsets padding);
113 void ui_grid_container_add(UiContainerPrivate *ctn, W32Widget *widget, UiLayout *layout);
114
115 #ifdef __cplusplus
116 }
117 #endif
118
119 #endif
120