gwenhywfar 5.14.1
gtk3_gui_dialog.c
Go to the documentation of this file.
1/***************************************************************************
2 begin : Sun May 16 2010
3 copyright : (C) 2010 by Martin Preuss
4 email : martin@libchipcard.de
5
6 ***************************************************************************
7 * Please see toplevel file COPYING for license details *
8 ***************************************************************************/
9
10#ifdef HAVE_CONFIG_H
11# include <config.h>
12#endif
13
14
15#include "gtk3_gui_dialog_p.h"
16#include <assert.h>
17
18#include <gwenhywfar/inherit.h>
19#include <gwenhywfar/debug.h>
20#include <gwenhywfar/gui_be.h>
21#include <gwenhywfar/i18n.h>
22
23#include <gwenhywfar/text.h>
24#include <gwenhywfar/mdigest.h>
25#include <gwenhywfar/debug.h>
26#include <gwenhywfar/directory.h>
27
28#include <ctype.h>
29
30
31#define I18N(msg) GWEN_I18N_Translate(PACKAGE, msg)
32
33
34#define GTK3_DIALOG_WIDGET_REAL 0
35#define GTK3_DIALOG_WIDGET_CONTENT 1
36#define GTK3_DIALOG_WIDGET_DATA 2
37
38#define GTK3_DIALOG_STRING_TITLE 0
39#define GTK3_DIALOG_STRING_VALUE 1
40
41
42#include "w_combobox.c"
43#include "w_label.c"
44#include "w_dialog.c"
45#include "w_gridlayout.c"
46#include "w_hlayout.c"
47#include "w_hline.c"
48#include "w_hspacer.c"
49#include "w_vlayout.c"
50#include "w_vline.c"
51#include "w_vspacer.c"
52#include "w_pushbutton.c"
53#include "w_lineedit.c"
54#include "w_textedit.c"
55#include "w_textbrowser.c"
56#include "w_stack.c"
57#include "w_tabbook.c"
58#include "w_groupbox.c"
59#include "w_progressbar.c"
60#include "w_listbox.c"
61#include "w_checkbox.c"
62#include "w_scrollarea.c"
63#include "w_radiobutton.c"
64#include "w_spinbox.c"
65#include "w_vsplitter.c"
66#include "w_hsplitter.c"
67
68
69
70GWEN_INHERIT(GWEN_DIALOG, GTK3_GUI_DIALOG)
71
72
73
74
76{
77 GTK3_GUI_DIALOG *xdlg;
78
79 GWEN_NEW_OBJECT(GTK3_GUI_DIALOG, xdlg);
80 GWEN_INHERIT_SETDATA(GWEN_DIALOG, GTK3_GUI_DIALOG, dlg, xdlg, Gtk3Gui_Dialog_FreeData);
81
82 /* set virtual functions */
87
88}
89
90
91
93{
94 GTK3_GUI_DIALOG *xdlg;
95
96 assert(dlg);
97 xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GTK3_GUI_DIALOG, dlg);
98 assert(xdlg);
99
100 /* reset virtual functions */
101 GWEN_Dialog_SetSetIntPropertyFn(dlg, xdlg->setIntPropertyFn);
102 GWEN_Dialog_SetGetIntPropertyFn(dlg, xdlg->getIntPropertyFn);
103 GWEN_Dialog_SetSetCharPropertyFn(dlg, xdlg->setCharPropertyFn);
104 GWEN_Dialog_SetGetCharPropertyFn(dlg, xdlg->getCharPropertyFn);
105
106 GWEN_INHERIT_UNLINK(GWEN_DIALOG, GTK3_GUI_DIALOG, dlg);
107}
108
109
110
112{
113 GTK3_GUI_DIALOG *xdlg;
114
115 xdlg=(GTK3_GUI_DIALOG *) p;
116
117 if (xdlg->mainWidget)
118 gtk_widget_destroy(xdlg->mainWidget);
119
120 GWEN_FREE_OBJECT(xdlg);
121}
122
123
124
126{
127 GTK3_GUI_DIALOG *xdlg;
128
129 assert(dlg);
130 xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GTK3_GUI_DIALOG, dlg);
131 assert(xdlg);
132
133 return xdlg->mainWidget;
134}
135
136
137
139 GWEN_WIDGET *w,
141 int index,
142 int value,
143 int doSignal)
144{
145 return GWEN_Widget_SetIntProperty(w, prop, index, value, doSignal);
146}
147
148
149
151 GWEN_WIDGET *w,
153 int index,
154 int defaultValue)
155{
156 return GWEN_Widget_GetIntProperty(w, prop, index, defaultValue);
157}
158
159
160
162 GWEN_WIDGET *w,
164 int index,
165 const char *value,
166 int doSignal)
167{
168 return GWEN_Widget_SetCharProperty(w, prop, index, value, doSignal);
169}
170
171
172
174 GWEN_WIDGET *w,
176 int index,
177 const char *defaultValue)
178{
179 return GWEN_Widget_GetCharProperty(w, prop, index, defaultValue);
180}
181
182
183
184int Gtk3Gui_Dialog_Setup(GWEN_DIALOG *dlg, GWEN_UNUSED GtkWidget *parentWindow)
185{
186 GTK3_GUI_DIALOG *xdlg;
187 GWEN_WIDGET_TREE *wtree;
188 GWEN_WIDGET *w;
189 GtkWindow *gw;
190 int rv;
191 GList *tll;
192
193 assert(dlg);
194 xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GTK3_GUI_DIALOG, dlg);
195 assert(xdlg);
196
197 wtree=GWEN_Dialog_GetWidgets(dlg);
198 if (wtree==NULL) {
199 DBG_ERROR(GWEN_LOGDOMAIN, "No widget tree in dialog");
201 }
202 w=GWEN_Widget_Tree_GetFirst(wtree);
203 if (w==NULL) {
204 DBG_ERROR(GWEN_LOGDOMAIN, "No widgets in dialog");
206 }
207
209 if (rv<0) {
210 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
211 return rv;
212 }
213
215 gtk_window_set_type_hint(GTK_WINDOW(gw), GDK_WINDOW_TYPE_HINT_DIALOG);
216 gtk_window_set_position(GTK_WINDOW(gw), GTK_WIN_POS_CENTER_ON_PARENT);
217 /*gtk_window_set_keep_above(GTK_WINDOW(gw), TRUE);*/
218 xdlg->mainWidget=GTK_WIDGET(gw);
219
220 tll=gtk_window_list_toplevels();
221 if (tll) {
222 GList *element;
223 GtkWindow *topLevel=NULL;
224
225 for (element = tll; element; element = g_list_next(element)) {
226 GtkWindow *win = GTK_WINDOW(element->data);
227 if (gtk_window_is_active(win)) {
228 topLevel=win;
229 break;
230 }
231 }
232 g_list_free(tll);
233
234 if (topLevel) {
235 DBG_NOTICE(GWEN_LOGDOMAIN, "Found active window [%s]",
236 gtk_window_get_title(topLevel));
237 gtk_window_set_transient_for(gw, topLevel);
238 }
239 else {
240 DBG_ERROR(GWEN_LOGDOMAIN, "No active window found...");
241 }
242 }
243
244 return 0;
245}
246
247
248
249void Gtk3Gui_Dialog_Leave(GWEN_DIALOG *dlg, int result)
250{
251 GTK3_GUI_DIALOG *xdlg;
252 GWEN_DIALOG *parent;
253
254 /* get toplevel dialog, the one which actually is the GUI dialog */
255 while ((parent=GWEN_Dialog_GetParentDialog(dlg)))
256 dlg=parent;
257
258 assert(dlg);
259 xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GTK3_GUI_DIALOG, dlg);
260 assert(xdlg);
261
262 xdlg->response=result;
263 if (g_main_loop_is_running(xdlg->loop))
264 g_main_loop_quit(xdlg->loop);
265}
266
267
268
269static void run_unmap_handler(GWEN_UNUSED GtkWindow *window, gpointer data)
270{
271 GWEN_DIALOG *dlg;
272 GTK3_GUI_DIALOG *xdlg;
273
274 dlg=data;
275 assert(dlg);
276 xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GTK3_GUI_DIALOG, dlg);
277 assert(xdlg);
278
279 Gtk3Gui_Dialog_Leave(dlg, 0);
280}
281
282
283
284static gint run_delete_handler(GWEN_UNUSED GtkWindow *window,
285 GWEN_UNUSED GdkEventAny *event,
286 gpointer data)
287{
288 GWEN_DIALOG *dlg;
289 GTK3_GUI_DIALOG *xdlg;
290
291 dlg=data;
292 assert(dlg);
293 xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GTK3_GUI_DIALOG, dlg);
294 assert(xdlg);
295
296 Gtk3Gui_Dialog_Leave(dlg, 0);
297 return TRUE; /* Do not destroy */
298}
299
300
301
302static void run_destroy_handler(GWEN_UNUSED GtkWindow *window, gpointer data)
303{
304 GWEN_DIALOG *dlg;
305 GTK3_GUI_DIALOG *xdlg;
306
307 dlg=data;
308 assert(dlg);
309 xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GTK3_GUI_DIALOG, dlg);
310 assert(xdlg);
311
312 xdlg->destroyed=1;
313}
314
315
316
317int GTK3_Gui_Dialog_Run(GWEN_DIALOG *dlg, int untilEnd)
318{
319 GTK3_GUI_DIALOG *xdlg;
320 GtkWidget *g;
321
322 assert(dlg);
323 xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GTK3_GUI_DIALOG, dlg);
324 assert(xdlg);
325
327 if (g==NULL) {
328 DBG_ERROR(GWEN_LOGDOMAIN, "No main widget");
330 return GWEN_ERROR_INVALID;
331 }
332
333 xdlg->unmap_handler =
334 g_signal_connect(g,
335 "unmap",
336 G_CALLBACK(run_unmap_handler),
337 dlg);
338
339 xdlg->delete_handler =
340 g_signal_connect(g,
341 "delete-event",
342 G_CALLBACK(run_delete_handler),
343 dlg);
344
345 xdlg->destroy_handler =
346 g_signal_connect(g,
347 "destroy",
348 G_CALLBACK(run_destroy_handler),
349 dlg);
350
351 xdlg->loop=g_main_loop_new(NULL, FALSE);
352 if (untilEnd)
353 g_main_loop_run(xdlg->loop);
354 else {
355 GMainContext *ctx;
356
357 ctx=g_main_loop_get_context(xdlg->loop);
358 while (g_main_context_pending(ctx))
359 g_main_context_iteration(ctx, FALSE);
360 }
361 g_main_loop_unref(xdlg->loop);
362
363 if (!xdlg->destroyed) {
364 g_signal_handler_disconnect(g, xdlg->unmap_handler);
365 g_signal_handler_disconnect(g, xdlg->delete_handler);
366 g_signal_handler_disconnect(g, xdlg->destroy_handler);
367 }
368
369 return xdlg->response;
370}
371
372
373
375{
376 int rv;
377
378 switch (GWEN_Widget_GetType(w)) {
381 break;
384 break;
387 break;
390 break;
393 break;
396 break;
399 break;
402 break;
405 break;
408 break;
411 break;
414 break;
417 break;
420 break;
423 break;
425 /* just re-use vbox */
428 break;
431 break;
434 break;
437 break;
440 break;
443 break;
446 break;
449 break;
452 break;
455 break;
458 break;
459 default:
460 DBG_ERROR(GWEN_LOGDOMAIN, "Unhandled widget type %d", GWEN_Widget_GetType(w));
462 break;
463 }
464
465 if (rv<0) {
466 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
467 return rv;
468 }
469 else {
470 GWEN_WIDGET *wChild;
471
472 /* handle children */
473 wChild=GWEN_Widget_Tree_GetFirstChild(w);
474 while (wChild) {
475 /* recursion */
476 rv=Gtk3Gui_Dialog_SetupTree(wChild);
477 if (rv<0) {
478 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
479 return rv;
480 }
481 wChild=GWEN_Widget_Tree_GetNext(wChild);
482 }
483 }
484
485 return 0;
486}
487
488
489
490
491int Gtk3Gui_GetRawText(const char *text, GWEN_BUFFER *tbuf)
492{
493 const char *p=0;
494 const char *p2=0;
495
496 if (text==NULL)
497 return 0;
498
499 /* find begin of HTML area */
500 p=text;
501 while ((p=strchr(p, '<'))) {
502 const char *t;
503
504 t=p;
505 t++;
506 if (toupper(*t)=='H') {
507 t++;
508 if (toupper(*t)=='T') {
509 t++;
510 if (toupper(*t)=='M') {
511 t++;
512 if (toupper(*t)=='L') {
513 t++;
514 if (toupper(*t)=='>') {
515 break;
516 }
517 }
518 }
519 }
520 }
521 p++;
522 } /* while */
523
524 /* find end of HTML area */
525 if (p) {
526 p2=p;
527 p2+=6; /* skip "<html>" */
528 while ((p2=strchr(p2, '<'))) {
529 const char *t;
530
531 t=p2;
532 t++;
533 if (toupper(*t)=='/') {
534 t++;
535 if (toupper(*t)=='H') {
536 t++;
537 if (toupper(*t)=='T') {
538 t++;
539 if (toupper(*t)=='M') {
540 t++;
541 if (toupper(*t)=='L') {
542 t++;
543 if (toupper(*t)=='>') {
544 break;
545 }
546 }
547 }
548 }
549 }
550 }
551 p2++;
552 } /* while */
553 }
554
555 if (p && p2) {
556 int startPos;
557
558 p2+=7; /* skip "</html>" */
559
560 startPos=(p-text);
561
562 /* append stuff before startPos */
563 if (startPos)
564 GWEN_Buffer_AppendBytes(tbuf, text, startPos);
565 if (*p2)
566 GWEN_Buffer_AppendString(tbuf, p2);
567 return 0;
568 }
569 else {
570 GWEN_Buffer_AppendString(tbuf, text);
571 return 0;
572 }
573}
574
575
576
577void Gtk3Gui_ApplyFlags(GtkWidget *g, uint32_t flags)
578{
579 gtk_widget_set_hexpand(g, (flags & GWEN_WIDGET_FLAGS_FILLX)?TRUE:FALSE);
580 gtk_widget_set_vexpand(g, (flags & GWEN_WIDGET_FLAGS_FILLY)?TRUE:FALSE);
581
582}
583
584
#define NULL
Definition binreloc.c:300
int GWEN_Buffer_AppendBytes(GWEN_BUFFER *bf, const char *buffer, uint32_t size)
Definition buffer.c:360
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
Definition buffer.c:992
#define DBG_INFO(dbg_logger, format,...)
Definition debug.h:181
#define DBG_NOTICE(dbg_logger, format,...)
Definition debug.h:152
#define DBG_ERROR(dbg_logger, format,...)
Definition debug.h:97
GWEN_WIDGET_TREE * GWEN_Dialog_GetWidgets(const GWEN_DIALOG *dlg)
Definition dialog.c:629
GWEN_DIALOG_GETINTPROPERTY_FN GWEN_Dialog_SetGetIntPropertyFn(GWEN_DIALOG *dlg, GWEN_DIALOG_GETINTPROPERTY_FN fn)
Definition dialog.c:655
GWEN_DIALOG * GWEN_Dialog_GetParentDialog(const GWEN_DIALOG *dlg)
Definition dialog.c:172
GWEN_DIALOG_SETINTPROPERTY_FN GWEN_Dialog_SetSetIntPropertyFn(GWEN_DIALOG *dlg, GWEN_DIALOG_SETINTPROPERTY_FN fn)
Definition dialog.c:640
GWEN_DIALOG_GETCHARPROPERTY_FN GWEN_Dialog_SetGetCharPropertyFn(GWEN_DIALOG *dlg, GWEN_DIALOG_GETCHARPROPERTY_FN fn)
Definition dialog.c:685
GWEN_DIALOG_SETCHARPROPERTY_FN GWEN_Dialog_SetSetCharPropertyFn(GWEN_DIALOG *dlg, GWEN_DIALOG_SETCHARPROPERTY_FN fn)
Definition dialog.c:670
#define GWEN_WIDGET_FLAGS_FILLY
Definition dialog.h:62
#define GWEN_WIDGET_FLAGS_FILLX
Definition dialog.h:61
struct GWEN_DIALOG GWEN_DIALOG
Definition dialog.h:54
GWEN_DIALOG_PROPERTY
Definition dialog.h:260
#define GWEN_ERROR_INVALID
Definition error.h:67
#define GWEN_ERROR_NOT_FOUND
Definition error.h:89
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition buffer.h:38
static void run_destroy_handler(GWEN_UNUSED GtkWindow *window, gpointer data)
static void run_unmap_handler(GWEN_UNUSED GtkWindow *window, gpointer data)
static gint run_delete_handler(GWEN_UNUSED GtkWindow *window, GWEN_UNUSED GdkEventAny *event, gpointer data)
int Gtk3Gui_WCheckBox_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WComboBox_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WDialog_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WGridLayout_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WGroupBox_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WHLayout_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WHLine_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WHSpacer_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WLabel_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WLineEdit_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WListBox_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WProgressBar_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WPushButton_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WRadioButton_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WScrollArea_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WSpinBox_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WStack_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WTabBook_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WTextBrowser_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WTextEdit_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WVLayout_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WVLine_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WVSpacer_Setup(GWEN_WIDGET *w)
void Gtk3Gui_Dialog_Unextend(GWEN_DIALOG *dlg)
void GWENHYWFAR_CB Gtk3Gui_Dialog_FreeData(GWEN_UNUSED void *bp, void *p)
GWENHYWFAR_CB int Gtk3Gui_Dialog_SetIntProperty(GWEN_UNUSED GWEN_DIALOG *dlg, GWEN_WIDGET *w, GWEN_DIALOG_PROPERTY prop, int index, int value, int doSignal)
int GTK3_Gui_Dialog_Run(GWEN_DIALOG *dlg, int untilEnd)
static void run_destroy_handler(GWEN_UNUSED GtkWindow *window, gpointer data)
GWENHYWFAR_CB const char * Gtk3Gui_Dialog_GetCharProperty(GWEN_UNUSED GWEN_DIALOG *dlg, GWEN_WIDGET *w, GWEN_DIALOG_PROPERTY prop, int index, const char *defaultValue)
GWENHYWFAR_CB int Gtk3Gui_Dialog_GetIntProperty(GWEN_UNUSED GWEN_DIALOG *dlg, GWEN_WIDGET *w, GWEN_DIALOG_PROPERTY prop, int index, int defaultValue)
int Gtk3Gui_Dialog_Setup(GWEN_DIALOG *dlg, GWEN_UNUSED GtkWidget *parentWindow)
int Gtk3Gui_Dialog_SetupTree(GWEN_WIDGET *w)
#define GTK3_DIALOG_WIDGET_REAL
void Gtk3Gui_Dialog_Extend(GWEN_DIALOG *dlg)
GtkWidget * Gtk3Gui_Dialog_GetMainWidget(const GWEN_DIALOG *dlg)
static void run_unmap_handler(GWEN_UNUSED GtkWindow *window, gpointer data)
static gint run_delete_handler(GWEN_UNUSED GtkWindow *window, GWEN_UNUSED GdkEventAny *event, gpointer data)
void Gtk3Gui_ApplyFlags(GtkWidget *g, uint32_t flags)
int Gtk3Gui_GetRawText(const char *text, GWEN_BUFFER *tbuf)
void Gtk3Gui_Dialog_Leave(GWEN_DIALOG *dlg, int result)
GWENHYWFAR_CB int Gtk3Gui_Dialog_SetCharProperty(GWEN_UNUSED GWEN_DIALOG *dlg, GWEN_WIDGET *w, GWEN_DIALOG_PROPERTY prop, int index, const char *value, int doSignal)
#define GWEN_UNUSED
#define GWENHYWFAR_CB
#define GWEN_INHERIT_UNLINK(bt, t, element)
Definition inherit.h:326
#define GWEN_INHERIT_SETDATA(bt, t, element, data, fn)
Definition inherit.h:300
#define GWEN_INHERIT(bt, t)
Definition inherit.h:264
#define GWEN_INHERIT_GETDATA(bt, t, element)
Definition inherit.h:279
#define GWEN_LOGDOMAIN
Definition logger.h:32
#define GWEN_FREE_OBJECT(varname)
Definition memory.h:61
#define GWEN_NEW_OBJECT(typ, varname)
Definition memory.h:55
int Gtk3Gui_WHSplitter_Setup(GWEN_WIDGET *w)
int Gtk3Gui_WVSplitter_Setup(GWEN_WIDGET *w)
int GWEN_Widget_SetIntProperty(GWEN_WIDGET *w, GWEN_DIALOG_PROPERTY prop, int index, int value, int doSignal)
Definition widget.c:770
int GWEN_Widget_SetCharProperty(GWEN_WIDGET *w, GWEN_DIALOG_PROPERTY prop, int index, const char *value, int doSignal)
Definition widget.c:803
void * GWEN_Widget_GetImplData(const GWEN_WIDGET *w, int index)
Definition widget.c:122
int GWEN_Widget_GetIntProperty(GWEN_WIDGET *w, GWEN_DIALOG_PROPERTY prop, int index, int defaultValue)
Definition widget.c:787
void GWEN_Widget_AddFlags(GWEN_WIDGET *w, uint32_t fl)
Definition widget.c:167
const char * GWEN_Widget_GetCharProperty(GWEN_WIDGET *w, GWEN_DIALOG_PROPERTY prop, int index, const char *defaultValue)
Definition widget.c:820
GWEN_WIDGET_TYPE GWEN_Widget_GetType(const GWEN_WIDGET *w)
Definition widget.c:185
struct GWEN_WIDGET GWEN_WIDGET
Definition widget_be.h:34
@ GWEN_Widget_TypeTabBook
Definition widget_be.h:67
@ GWEN_Widget_TypeHSplitter
Definition widget_be.h:76
@ GWEN_Widget_TypeComboBox
Definition widget_be.h:56
@ GWEN_Widget_TypeTabPage
Definition widget_be.h:68
@ GWEN_Widget_TypeRadioButton
Definition widget_be.h:57
@ GWEN_Widget_TypeHLayout
Definition widget_be.h:62
@ GWEN_Widget_TypeLineEdit
Definition widget_be.h:54
@ GWEN_Widget_TypeWidgetStack
Definition widget_be.h:70
@ GWEN_Widget_TypeScrollArea
Definition widget_be.h:71
@ GWEN_Widget_TypeLabel
Definition widget_be.h:52
@ GWEN_Widget_TypeGroupBox
Definition widget_be.h:59
@ GWEN_Widget_TypeDialog
Definition widget_be.h:66
@ GWEN_Widget_TypePushButton
Definition widget_be.h:53
@ GWEN_Widget_TypeCheckBox
Definition widget_be.h:69
@ GWEN_Widget_TypeTextBrowser
Definition widget_be.h:74
@ GWEN_Widget_TypeHSpacer
Definition widget_be.h:60
@ GWEN_Widget_TypeHLine
Definition widget_be.h:72
@ GWEN_Widget_TypeVSplitter
Definition widget_be.h:77
@ GWEN_Widget_TypeTextEdit
Definition widget_be.h:55
@ GWEN_Widget_TypeGridLayout
Definition widget_be.h:64
@ GWEN_Widget_TypeVLayout
Definition widget_be.h:63
@ GWEN_Widget_TypeProgressBar
Definition widget_be.h:58
@ GWEN_Widget_TypeSpinBox
Definition widget_be.h:75
@ GWEN_Widget_TypeVSpacer
Definition widget_be.h:61
@ GWEN_Widget_TypeVLine
Definition widget_be.h:73
@ GWEN_Widget_TypeListBox
Definition widget_be.h:65