00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifdef HAVE_CONFIG_H
00011 # include <config.h>
00012 #endif
00013
00014 #include "cppwidget_p.hpp"
00015 #include "cppdialog.hpp"
00016
00017 #include <assert.h>
00018
00019 #include <gwenhywfar/inherit.h>
00020 #include <gwenhywfar/debug.h>
00021 #include <gwenhywfar/gui_be.h>
00022 #include <gwenhywfar/widget_be.h>
00023 #include <gwenhywfar/i18n.h>
00024
00025 #include <gwenhywfar/text.h>
00026 #include <gwenhywfar/mdigest.h>
00027 #include <gwenhywfar/debug.h>
00028
00029
00030 #define I18N(msg) GWEN_I18N_Translate(PACKAGE, msg)
00031
00032
00033
00034 GWEN_INHERIT(GWEN_WIDGET, CppWidget);
00035
00036
00037
00038
00039 int CppWidgetLinker::SetIntProperty(GWEN_WIDGET *w,
00040 GWEN_DIALOG_PROPERTY prop,
00041 int index,
00042 int value,
00043 int doSignal) {
00044 CppWidget *xw;
00045
00046 assert(w);
00047 xw=GWEN_INHERIT_GETDATA(GWEN_WIDGET, CppWidget, w);
00048 assert(xw);
00049
00050 return xw->setIntProperty(prop, index, value, doSignal);
00051 }
00052
00053
00054
00055
00056 int CppWidgetLinker::GetIntProperty(GWEN_WIDGET *w,
00057 GWEN_DIALOG_PROPERTY prop,
00058 int index,
00059 int defaultValue) {
00060 CppWidget *xw;
00061
00062 assert(w);
00063 xw=GWEN_INHERIT_GETDATA(GWEN_WIDGET, CppWidget, w);
00064 assert(xw);
00065
00066 return xw->getIntProperty(prop, index, defaultValue);
00067 }
00068
00069
00070
00071 int CppWidgetLinker::SetCharProperty(GWEN_WIDGET *w,
00072 GWEN_DIALOG_PROPERTY prop,
00073 int index,
00074 const char *value,
00075 int doSignal) {
00076 CppWidget *xw;
00077
00078 assert(w);
00079 xw=GWEN_INHERIT_GETDATA(GWEN_WIDGET, CppWidget, w);
00080 assert(xw);
00081
00082 return xw->setCharProperty(prop, index, value, doSignal);
00083 }
00084
00085
00086
00087 const char *CppWidgetLinker::GetCharProperty(GWEN_WIDGET *w,
00088 GWEN_DIALOG_PROPERTY prop,
00089 int index,
00090 const char *defaultValue) {
00091 CppWidget *xw;
00092
00093 assert(w);
00094 xw=GWEN_INHERIT_GETDATA(GWEN_WIDGET, CppWidget, w);
00095 assert(xw);
00096
00097 return xw->getCharProperty(prop, index, defaultValue);
00098 }
00099
00100
00101
00102 int CppWidgetLinker::AddChildGuiWidget(GWEN_WIDGET *w, GWEN_WIDGET *wChild) {
00103 CppWidget *xw;
00104
00105 assert(w);
00106 xw=GWEN_INHERIT_GETDATA(GWEN_WIDGET, CppWidget, w);
00107 assert(xw);
00108
00109 return xw->addChildGuiWidget(wChild);
00110 }
00111
00112
00113
00114 void CppWidgetLinker::freeData(void *bp, void *p) {
00115 CppWidget *xw;
00116
00117 xw=(CppWidget*) p;
00118 if (xw->_widget)
00119 xw->_widget=NULL;
00120 delete xw;
00121 }
00122
00123
00124
00125
00126
00127 CppWidget::CppWidget()
00128 :_widget(NULL)
00129 {
00130 }
00131
00132
00133
00134 CppWidget::CppWidget(GWEN_WIDGET *w)
00135 :_widget(w)
00136 {
00137 GWEN_INHERIT_SETDATA(GWEN_WIDGET, CppWidget,
00138 _widget, this,
00139 CppWidgetLinker::freeData);
00140
00141 _setIntPropertyFn=GWEN_Widget_SetSetIntPropertyFn(_widget, CppWidgetLinker::SetIntProperty);
00142 _getIntPropertyFn=GWEN_Widget_SetGetIntPropertyFn(_widget, CppWidgetLinker::GetIntProperty);
00143 _setCharPropertyFn=GWEN_Widget_SetSetCharPropertyFn(_widget, CppWidgetLinker::SetCharProperty);
00144 _getCharPropertyFn=GWEN_Widget_SetGetCharPropertyFn(_widget, CppWidgetLinker::GetCharProperty);
00145 _addChildGuiWidgetFn=GWEN_Widget_SetAddChildGuiWidgetFn(_widget, CppWidgetLinker::AddChildGuiWidget);
00146 }
00147
00148
00149
00150 CppWidget::~CppWidget() {
00151 if (_widget) {
00152 GWEN_INHERIT_UNLINK(GWEN_WIDGET, CppWidget, _widget)
00153 }
00154 }
00155
00156
00157
00158 GWEN_WIDGET *CppWidget::getCInterface() {
00159 return _widget;
00160 }
00161
00162
00163
00164 CppWidget *CppWidget::getWidget(GWEN_WIDGET *w) {
00165 CppWidget *xw;
00166
00167 assert(w);
00168 xw=GWEN_INHERIT_GETDATA(GWEN_WIDGET, CppWidget, w);
00169 assert(xw);
00170
00171 return xw;
00172 }
00173
00174
00175
00176 CppDialog *CppWidget::getDialog() {
00177 GWEN_DIALOG *dlg;
00178
00179 dlg=GWEN_Widget_GetDialog(_widget);
00180 if (dlg)
00181 return CppDialog::getDialog(dlg);
00182 else
00183 return NULL;
00184 }
00185
00186
00187
00188 int CppWidget::setIntProperty(GWEN_DIALOG_PROPERTY prop,
00189 int index,
00190 int value,
00191 int doSignal) {
00192 if (_setIntPropertyFn)
00193 return _setIntPropertyFn(_widget, prop, index, value, doSignal);
00194 else
00195 return GWEN_ERROR_NOT_SUPPORTED;
00196 }
00197
00198
00199
00200 int CppWidget::getIntProperty(GWEN_DIALOG_PROPERTY prop,
00201 int index,
00202 int defaultValue) {
00203 if (_getIntPropertyFn)
00204 return _getIntPropertyFn(_widget, prop, index, defaultValue);
00205 else
00206 return defaultValue;
00207 }
00208
00209
00210
00211 int CppWidget::setCharProperty(GWEN_DIALOG_PROPERTY prop,
00212 int index,
00213 const char *value,
00214 int doSignal) {
00215 if (_setCharPropertyFn)
00216 return _setCharPropertyFn(_widget, prop, index, value, doSignal);
00217 else
00218 return GWEN_ERROR_NOT_SUPPORTED;
00219 }
00220
00221
00222
00223 const char *CppWidget::getCharProperty(GWEN_DIALOG_PROPERTY prop,
00224 int index,
00225 const char *defaultValue) {
00226 if (_getCharPropertyFn)
00227 return _getCharPropertyFn(_widget, prop, index, defaultValue);
00228 else
00229 return defaultValue;
00230 }
00231
00232
00233
00234 int CppWidget::addChildGuiWidget(GWEN_WIDGET *wChild) {
00235 if (_addChildGuiWidgetFn)
00236 return _addChildGuiWidgetFn(_widget, wChild);
00237 else
00238 return GWEN_ERROR_NOT_SUPPORTED;
00239 }
00240
00241
00242
00243 const char *CppWidget::getName() {
00244 return GWEN_Widget_GetName(_widget);
00245 }
00246
00247
00248
00249 GWEN_WIDGET_TYPE CppWidget::getType() {
00250 return GWEN_Widget_GetType(_widget);
00251 }
00252
00253
00254
00255 int CppWidget::getColumns() {
00256 return GWEN_Widget_GetColumns(_widget);
00257 }
00258
00259
00260
00261 int CppWidget::getRows() {
00262 return GWEN_Widget_GetRows(_widget);
00263 }
00264
00265
00266
00267 uint32_t CppWidget::getFlags() {
00268 return GWEN_Widget_GetFlags(_widget);
00269 }
00270
00271
00272
00273 int CppWidget::getGroupId() {
00274 return GWEN_Widget_GetGroupId(_widget);
00275 }
00276
00277
00278
00279 int CppWidget::getWidth() {
00280 return GWEN_Widget_GetWidth(_widget);
00281 }
00282
00283
00284
00285 int CppWidget::getHeight() {
00286 return GWEN_Widget_GetHeight(_widget);
00287 }
00288
00289
00290
00291 const char *CppWidget::getText(int idx) {
00292 return GWEN_Widget_GetText(_widget, idx);
00293 }
00294
00295
00296
00297 const char *CppWidget::getIconFileName() {
00298 return GWEN_Widget_GetIconFileName(_widget);
00299 }
00300
00301
00302
00303 const char *CppWidget::getImageFileName() {
00304 return GWEN_Widget_GetImageFileName(_widget);
00305 }
00306
00307
00308
00309
00310
00311
00312
00313