Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include <gwen-gui-cpp/cppwidget.hpp>
00012
00013
00014 class Qt4_W_GridLayout: public Qt4_W_Widget {
00015 public:
00016 Qt4_W_GridLayout(GWEN_WIDGET *w):Qt4_W_Widget(w) {
00017 }
00018
00019
00020
00021 ~Qt4_W_GridLayout() {
00022 }
00023
00024
00025
00026 virtual int setup() {
00027 QWidget *qw;
00028 uint32_t flags;
00029 GWEN_WIDGET *wParent;
00030 QLayout *qLayout;
00031 QSizePolicy::Policy hpolicy=QSizePolicy::Minimum;
00032 QSizePolicy::Policy vpolicy=QSizePolicy::Minimum;
00033
00034 flags=GWEN_Widget_GetFlags(_widget);
00035 wParent=GWEN_Widget_Tree_GetParent(_widget);
00036
00037 qw=new QWidget();
00038 qLayout=new QGridLayout(qw);
00039
00040
00041 if (flags & GWEN_WIDGET_FLAGS_FILLX)
00042 hpolicy=QSizePolicy::Expanding;
00043 if (flags & GWEN_WIDGET_FLAGS_FILLY)
00044 vpolicy=QSizePolicy::Expanding;
00045 qw->setSizePolicy(hpolicy, vpolicy);
00046
00047
00048 GWEN_Widget_SetImplData(_widget, QT4_DIALOG_WIDGET_REAL, (void*) qw);
00049 GWEN_Widget_SetImplData(_widget, QT4_DIALOG_WIDGET_LAYOUT, (void*) qLayout);
00050
00051 if (wParent)
00052 GWEN_Widget_AddChildGuiWidget(wParent, _widget);
00053 return 0;
00054 }
00055
00056
00057
00058 int addChildGuiWidget(GWEN_WIDGET *wChild) {
00059 QWidget *qw;
00060 QGridLayout *qLayout;
00061 QWidget *qChild;
00062 GWEN_WIDGET *wt;
00063 int idx=0;
00064
00065 qw=(QWidget*) GWEN_Widget_GetImplData(_widget, QT4_DIALOG_WIDGET_REAL);
00066 assert(qw);
00067
00068 qLayout=(QGridLayout*) GWEN_Widget_GetImplData(_widget, QT4_DIALOG_WIDGET_LAYOUT);
00069 assert(qLayout);
00070
00071 qChild=getQWidget(wChild);
00072 assert(qChild);
00073
00074 qChild->setParent(qw);
00075
00076
00077 wt=GWEN_Widget_Tree_GetFirstChild(_widget);
00078 while(wt && wt!=wChild) {
00079 idx++;
00080 wt=GWEN_Widget_Tree_GetNext(wt);
00081 }
00082
00083 if (wt) {
00084 int x=0, y=0;
00085 int c;
00086
00087 if ((c=GWEN_Widget_GetColumns(_widget))) {
00088 x=idx % c;
00089 y=idx / c;
00090 }
00091 else if ((c=GWEN_Widget_GetRows(_widget))) {
00092 x=idx / c;
00093 y=idx % c ;
00094 }
00095
00096 qLayout->addWidget(qChild, y, x);
00097 }
00098
00099 return 0;
00100 }
00101
00102 };
00103
00104
00105
00106
00107
00108
00109