fox16/cppdialog.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002     begin       : Fri Jan 22 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 #ifdef HAVE_CONFIG_H
00011 # include <config.h>
00012 #endif
00013 
00014 #include "cppdialog_p.hpp"
00015 #include <assert.h>
00016 
00017 #include <gwenhywfar/inherit.h>
00018 #include <gwenhywfar/debug.h>
00019 #include <gwenhywfar/gui_be.h>
00020 #include <gwenhywfar/i18n.h>
00021 
00022 #include <gwenhywfar/text.h>
00023 #include <gwenhywfar/mdigest.h>
00024 #include <gwenhywfar/debug.h>
00025 
00026 
00027 #define I18N(msg) GWEN_I18N_Translate(PACKAGE, msg)
00028 
00029 
00030 
00031 GWEN_INHERIT(GWEN_DIALOG, CppDialog);
00032 
00033 
00034 
00035 
00036 int CppDialogLinker::SetIntProperty(GWEN_DIALOG *dlg,
00037                                     GWEN_WIDGET *w,
00038                                     GWEN_DIALOG_PROPERTY prop,
00039                                     int index,
00040                                     int value,
00041                                     int doSignal) {
00042   CppDialog *xdlg;
00043 
00044   assert(dlg);
00045   xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, CppDialog, dlg);
00046   assert(xdlg);
00047 
00048   return xdlg->setIntProperty(w, prop, index, value, doSignal);
00049 }
00050 
00051 
00052 
00053 
00054 int CppDialogLinker::GetIntProperty(GWEN_DIALOG *dlg,
00055                                     GWEN_WIDGET *w,
00056                                     GWEN_DIALOG_PROPERTY prop,
00057                                     int index,
00058                                     int defaultValue) {
00059   CppDialog *xdlg;
00060 
00061   assert(dlg);
00062   xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, CppDialog, dlg);
00063   assert(xdlg);
00064 
00065   return xdlg->getIntProperty(w, prop, index, defaultValue);
00066 }
00067 
00068 
00069 
00070 int CppDialogLinker::SetCharProperty(GWEN_DIALOG *dlg,
00071                                      GWEN_WIDGET *w,
00072                                      GWEN_DIALOG_PROPERTY prop,
00073                                      int index,
00074                                      const char *value,
00075                                      int doSignal) {
00076   CppDialog *xdlg;
00077 
00078   assert(dlg);
00079   xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, CppDialog, dlg);
00080   assert(xdlg);
00081 
00082   return xdlg->setCharProperty(w, prop, index, value, doSignal);
00083 }
00084 
00085 
00086 
00087 const char *CppDialogLinker::GetCharProperty(GWEN_DIALOG *dlg,
00088                                              GWEN_WIDGET *w,
00089                                              GWEN_DIALOG_PROPERTY prop,
00090                                              int index,
00091                                              const char *defaultValue) {
00092   CppDialog *xdlg;
00093 
00094   assert(dlg);
00095   xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, CppDialog, dlg);
00096   assert(xdlg);
00097 
00098   return xdlg->getCharProperty(w, prop, index, defaultValue);
00099 }
00100 
00101 
00102 
00103 void CppDialogLinker::freeData(void *bp, void *p) {
00104   CppDialog *xdlg;
00105 
00106   xdlg=(CppDialog*) p;
00107   if (xdlg->_dialog)
00108     xdlg->_dialog=NULL;
00109   delete xdlg;
00110 }
00111 
00112 
00113 
00114 
00115 
00116 CppDialog::CppDialog()
00117 :_dialog(NULL)
00118 {
00119 }
00120 
00121 
00122 
00123 CppDialog::CppDialog(GWEN_DIALOG *dlg)
00124 :_dialog(NULL)
00125 {
00126   _dialog=dlg;
00127 
00128   GWEN_INHERIT_SETDATA(GWEN_DIALOG, CppDialog,
00129                        _dialog, this,
00130                        CppDialogLinker::freeData);
00131 
00132   _setIntPropertyFn=GWEN_Dialog_SetSetIntPropertyFn(_dialog, CppDialogLinker::SetIntProperty);
00133   _getIntPropertyFn=GWEN_Dialog_SetGetIntPropertyFn(_dialog, CppDialogLinker::GetIntProperty);
00134   _setCharPropertyFn=GWEN_Dialog_SetSetCharPropertyFn(_dialog, CppDialogLinker::SetCharProperty);
00135   _getCharPropertyFn=GWEN_Dialog_SetGetCharPropertyFn(_dialog, CppDialogLinker::GetCharProperty);
00136 }
00137 
00138 
00139 
00140 CppDialog::~CppDialog() {
00141   if (_dialog) {
00142     GWEN_INHERIT_UNLINK(GWEN_DIALOG, CppDialog, _dialog)
00143   }
00144 }
00145 
00146 
00147 
00148 CppDialog *CppDialog::getDialog(GWEN_DIALOG *dlg) {
00149   CppDialog *xdlg;
00150   GWEN_DIALOG *pdlg;
00151 
00152   while( (pdlg=GWEN_Dialog_GetParentDialog(dlg)) )
00153     dlg=pdlg;
00154 
00155   assert(dlg);
00156   xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, CppDialog, dlg);
00157   assert(xdlg);
00158 
00159   return xdlg;
00160 }
00161 
00162 
00163 
00164 GWEN_DIALOG *CppDialog::getCInterface() {
00165   return _dialog;
00166 }
00167 
00168 
00169 
00170 int CppDialog::setIntProperty(GWEN_WIDGET *w,
00171                               GWEN_DIALOG_PROPERTY prop,
00172                               int index,
00173                               int value,
00174                               int doSignal) {
00175   if (_setIntPropertyFn)
00176     return _setIntPropertyFn(_dialog, w, prop, index, value, doSignal);
00177   else
00178     return GWEN_ERROR_NOT_SUPPORTED;
00179 }
00180 
00181 
00182 
00183 int CppDialog::getIntProperty(GWEN_WIDGET *w,
00184                               GWEN_DIALOG_PROPERTY prop,
00185                               int index,
00186                               int defaultValue) {
00187   if (_getIntPropertyFn)
00188     return _getIntPropertyFn(_dialog, w, prop, index, defaultValue);
00189   else
00190     return defaultValue;
00191 }
00192 
00193 
00194 
00195 int CppDialog::setCharProperty(GWEN_WIDGET *w,
00196                                GWEN_DIALOG_PROPERTY prop,
00197                                int index,
00198                                const char *value,
00199                                int doSignal) {
00200   if (_setCharPropertyFn)
00201     return _setCharPropertyFn(_dialog, w, prop, index, value, doSignal);
00202   else
00203     return GWEN_ERROR_NOT_SUPPORTED;
00204 }
00205 
00206 
00207 
00208 const char *CppDialog::getCharProperty(GWEN_WIDGET *w,
00209                                        GWEN_DIALOG_PROPERTY prop,
00210                                        int index,
00211                                        const char *defaultValue) {
00212   if (_getCharPropertyFn)
00213     return _getCharPropertyFn(_dialog, w, prop, index, defaultValue);
00214   else
00215     return defaultValue;
00216 }
00217 
00218 
00219 
00220 int CppDialog::emitSignal(GWEN_DIALOG_EVENTTYPE t, const char *sender) {
00221   assert(_dialog);
00222   return GWEN_Dialog_EmitSignal(_dialog, t, sender);
00223 }
00224 
00225 
00226 
00227 GWEN_WIDGET_TREE *CppDialog::getWidgets() const {
00228   assert(_dialog);
00229   return GWEN_Dialog_GetWidgets(_dialog);
00230 }
00231 
00232 
00233 
00234 GWEN_WIDGET *CppDialog::findWidgetByName(const char *name) {
00235   assert(_dialog);
00236   return GWEN_Dialog_FindWidgetByName(_dialog, name);
00237 }
00238 
00239 
00240 
00241 GWEN_WIDGET *CppDialog::findWidgetByImplData(int index, void *ptr) {
00242   assert(_dialog);
00243   return GWEN_Dialog_FindWidgetByImplData(_dialog, index, ptr);
00244 }
00245 
00246 
00247 
00248 
00249 
00250 
00251 
00252 
00253 
00254 
00255 
00256