94 |
94 |
95 |
95 |
96 |
96 |
97 /* -------------------- UiGridContainer -------------------- */ |
97 /* -------------------- UiGridContainer -------------------- */ |
98 |
98 |
99 UiGridContainer::UiGridContainer(QGridLayout* grid) { |
99 UiGridContainer::UiGridContainer(QGridLayout* grid, int margin, int columnspacing, int rowspacing) { |
100 this->current = NULL; |
100 this->current = NULL; |
101 this->menu = NULL; |
101 this->menu = NULL; |
102 this->grid = grid; |
102 this->grid = grid; |
103 grid->setContentsMargins(QMargins(0,0,0,0)); |
103 grid->setContentsMargins(QMargins(margin, margin, margin, margin)); |
104 grid->setSpacing(0); |
104 grid->setHorizontalSpacing(columnspacing); |
|
105 grid->setVerticalSpacing(rowspacing); |
105 ui_reset_layout(layout); |
106 ui_reset_layout(layout); |
106 } |
107 } |
107 |
108 |
108 void UiGridContainer::add(QWidget* widget, bool fill) { |
109 void UiGridContainer::add(QWidget* widget, bool fill) { |
109 if(layout.newline) { |
110 if(layout.newline) { |
110 QSpacerItem *s = new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::Minimum); |
|
111 grid->addItem(s, y, x); |
|
112 x = 0; |
111 x = 0; |
113 y++; |
112 y++; |
114 } |
113 } |
115 if(x == 0) { |
114 |
116 if(space) { |
115 Qt::Alignment alignment = Qt::AlignTop; |
117 grid->removeItem(space); |
116 grid->setColumnStretch(x, layout.hexpand ? 1 : 0); |
118 } |
117 if(layout.vexpand) { |
119 QSpacerItem *s = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding); |
118 grid->setRowStretch(y, 1); |
120 grid->addItem(s, y+1, 0); |
119 alignment = 0; |
121 space = s; |
120 } else { |
122 } |
121 grid->setRowStretch(y, 0); |
123 |
122 } |
124 grid->addWidget(widget, y, x); |
123 |
|
124 grid->addWidget(widget, y, x, alignment); |
125 x++; |
125 x++; |
126 |
126 |
127 ui_reset_layout(layout); |
127 ui_reset_layout(layout); |
128 current = widget; |
128 current = widget; |
|
129 } |
|
130 |
|
131 UIWIDGET ui_grid(UiObject *obj) { |
|
132 return ui_grid_sp(obj, 0, 0, 0); |
|
133 } |
|
134 |
|
135 UIWIDGET ui_grid_sp(UiObject *obj, int margin, int columnspacing, int rowspacing) { |
|
136 UiContainer *ct = uic_get_current_container(obj); |
|
137 QWidget *widget = new QWidget(); |
|
138 QGridLayout *grid = new QGridLayout(); |
|
139 widget->setLayout(grid); |
|
140 ct->add(widget, true); |
|
141 |
|
142 UiObject *newobj = uic_object_new(obj, widget); |
|
143 newobj->container = new UiGridContainer(grid, margin, columnspacing, rowspacing); |
|
144 uic_obj_add(obj, newobj); |
|
145 |
|
146 return widget; |
129 } |
147 } |
130 |
148 |
131 |
149 |
132 /* -------------------- UiTabViewContainer -------------------- */ |
150 /* -------------------- UiTabViewContainer -------------------- */ |
133 |
151 |
174 QStackedWidget *w = (QStackedWidget*)tabview; |
192 QStackedWidget *w = (QStackedWidget*)tabview; |
175 w->setCurrentIndex(tab); |
193 w->setCurrentIndex(tab); |
176 } |
194 } |
177 |
195 |
178 |
196 |
179 UIWIDGET ui_grid(UiObject *obj) { |
|
180 UiContainer *ct = uic_get_current_container(obj); |
|
181 QWidget *widget = new QWidget(); |
|
182 QGridLayout *grid = new QGridLayout(); |
|
183 widget->setLayout(grid); |
|
184 ct->add(widget, true); |
|
185 |
|
186 UiObject *newobj = uic_object_new(obj, widget); |
|
187 newobj->container = new UiGridContainer(grid); |
|
188 uic_obj_add(obj, newobj); |
|
189 |
|
190 return widget; |
|
191 } |
|
192 |
|
193 |
|
194 /* -------------------- layout functions -------------------- */ |
197 /* -------------------- layout functions -------------------- */ |
195 |
198 |
196 void ui_layout_fill(UiObject *obj, UiBool fill) { |
199 void ui_layout_fill(UiObject *obj, UiBool fill) { |
197 UiContainer *ct = uic_get_current_container(obj); |
200 UiContainer *ct = uic_get_current_container(obj); |
198 ct->layout.fill = ui_bool2lb(fill); |
201 ct->layout.fill = ui_bool2lb(fill); |
199 } |
202 } |
200 |
203 |
|
204 void ui_layout_hexpand(UiObject *obj, UiBool expand) { |
|
205 UiContainer *ct = uic_get_current_container(obj); |
|
206 ct->layout.hexpand = expand; |
|
207 } |
|
208 |
|
209 void ui_layout_vexpand(UiObject *obj, UiBool expand) { |
|
210 UiContainer *ct = uic_get_current_container(obj); |
|
211 ct->layout.vexpand = expand; |
|
212 } |
|
213 |
201 void ui_newline(UiObject *obj) { |
214 void ui_newline(UiObject *obj) { |
202 UiContainer *ct = uic_get_current_container(obj); |
215 UiContainer *ct = uic_get_current_container(obj); |
203 ct->layout.newline = TRUE; |
216 ct->layout.newline = TRUE; |
204 } |
217 } |