gwenhywfar
4.3.3
|
00001 /*************************************************************************** 00002 begin : Mon Feb 15 2010 00003 copyright : (C) 2010 by Martin Preuss 00004 email : martin@libchipcard.de 00005 00006 *************************************************************************** 00007 * Please see toplevel file COPYING for license details * 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 /* handle flags */ 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 /* get position of the child widget below myself */ 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