gwenhywfar  5.10.1
cppgui.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  begin : Mon Mar 01 2004
3  copyright : (C) 2004-2010 by Martin Preuss
4  email : martin@libchipcard.de
5 
6  ***************************************************************************
7  * Please see toplevel file COPYING for license details *
8  ***************************************************************************/
9 
10 
11 #ifdef HAVE_CONFIG_H
12 # include <config.h>
13 #endif
14 
15 #include "cppgui_p.hpp"
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 
27 
28 
30 
31 
32 
33 
34 int CppGuiLinker::Print(GWEN_GUI *gui,
35  const char *docTitle,
36  const char *docType,
37  const char *descr,
38  const char *text,
39  uint32_t guiid) {
40  CppGui *xgui;
41 
42  assert(gui);
44  assert(xgui);
45 
46  return xgui->print(docTitle, docType, descr, text, guiid);
47 }
48 
49 
50 
51 int CppGuiLinker::GetPassword(GWEN_GUI *gui,
52  uint32_t flags,
53  const char *token,
54  const char *title,
55  const char *text,
56  char *buffer,
57  int minLen,
58  int maxLen,
59  GWEN_GUI_PASSWORD_METHOD methodId,
60  GWEN_DB_NODE *methodParams,
61  uint32_t guiid) {
62  CppGui *xgui;
63 
64  assert(gui);
66  assert(xgui);
67 
68  return xgui->getPassword(flags, token, title, text, buffer, minLen, maxLen, methodId, methodParams, guiid);
69 }
70 
71 
72 
73 int CppGuiLinker::SetPasswordStatus(GWEN_GUI *gui,
74  const char *token,
75  const char *pin,
77  uint32_t guiid) {
78  CppGui *xgui;
79 
80  assert(gui);
82  assert(xgui);
83 
84  return xgui->setPasswordStatus(token, pin, status, guiid);
85 }
86 
87 
88 
89 int CppGuiLinker::CheckCert(GWEN_GUI *gui,
90  const GWEN_SSLCERTDESCR *cert,
91  GWEN_SYNCIO *sio,
92  uint32_t guiid) {
93  CppGui *xgui;
94 
95  assert(gui);
97  assert(xgui);
98 
99  return xgui->checkCert(cert, sio, guiid);
100 }
101 
102 
103 
104 int CppGuiLinker::LogHook(GWEN_GUI *gui,
105  const char *logDomain,
106  GWEN_LOGGER_LEVEL priority, const char *s) {
107  CppGui *xgui;
108 
109  assert(gui);
111  assert(xgui);
112 
113  return xgui->logHook(logDomain, priority, s);
114 }
115 
116 
117 
118 int CppGuiLinker::ExecDialog(GWEN_GUI *gui,
119  GWEN_DIALOG *dlg,
120  uint32_t guiid) {
121  CppGui *xgui;
122 
123  assert(gui);
125  assert(xgui);
126 
127  return xgui->execDialog(dlg, guiid);
128 }
129 
130 
131 
132 int CppGuiLinker::OpenDialog(GWEN_GUI *gui,
133  GWEN_DIALOG *dlg,
134  uint32_t guiid) {
135  CppGui *xgui;
136 
137  assert(gui);
139  assert(xgui);
140 
141  DBG_ERROR(0, "CppGuiLinker::OpenDialog");
142 
143  return xgui->openDialog(dlg, guiid);
144 }
145 
146 
147 
148 int CppGuiLinker::CloseDialog(GWEN_GUI *gui,
149  GWEN_DIALOG *dlg) {
150  CppGui *xgui;
151 
152  assert(gui);
154  assert(xgui);
155 
156  return xgui->closeDialog(dlg);
157 }
158 
159 
160 
161 int CppGuiLinker::RunDialog(GWEN_GUI *gui,
162  GWEN_DIALOG *dlg,
163  int untilEnd) {
164  CppGui *xgui;
165 
166  assert(gui);
168  assert(xgui);
169 
170  return xgui->runDialog(dlg, untilEnd);
171 }
172 
173 
174 
175 int CppGuiLinker::GetFileName(GWEN_GUI *gui,
176  const char *caption,
178  uint32_t flags,
179  const char *patterns,
180  GWEN_BUFFER *pathBuffer,
181  uint32_t guiid) {
182  CppGui *xgui;
183 
184  assert(gui);
186  assert(xgui);
187 
188  return xgui->getFileName(caption, fnt, flags, patterns, pathBuffer, guiid);
189 }
190 
191 
192 
194 void CppGuiLinker::freeData(void *bp, void *p) {
195  CppGui *xgui;
196 
197  DBG_NOTICE(0, "CppGuiLinker: Freeing CppGui");
198  xgui=(CppGui*)p;
199  if (xgui->_gui) {
200  xgui->_gui=0;
201  }
202  delete xgui;
203 }
204 
205 
206 
207 
208 
209 
210 
211 
212 
213 
214 
215 
217  :_checkCertFn(NULL)
218  ,_gui(NULL) {
219  _gui=GWEN_Gui_new();
220 
222  _gui, this,
223  CppGuiLinker::freeData);
225  _checkCertFn=GWEN_Gui_SetCheckCertFn(_gui, CppGuiLinker::CheckCert);
226  _printFn=GWEN_Gui_SetPrintFn(_gui, CppGuiLinker::Print);
227  _getPasswordFn=GWEN_Gui_SetGetPasswordFn(_gui, CppGuiLinker::GetPassword);
228  _setPasswordStatusFn=GWEN_Gui_SetSetPasswordStatusFn(_gui, CppGuiLinker::SetPasswordStatus);
229  GWEN_Gui_SetLogHookFn(_gui, CppGuiLinker::LogHook);
230  _execDialogFn=GWEN_Gui_SetExecDialogFn(_gui, CppGuiLinker::ExecDialog);
231  _openDialogFn=GWEN_Gui_SetOpenDialogFn(_gui, CppGuiLinker::OpenDialog);
232  _closeDialogFn=GWEN_Gui_SetCloseDialogFn(_gui, CppGuiLinker::CloseDialog);
233  _runDialogFn=GWEN_Gui_SetRunDialogFn(_gui, CppGuiLinker::RunDialog);
234  _getFileNameFn=GWEN_Gui_SetGetFileNameFn(_gui, CppGuiLinker::GetFileName);
235 }
236 
237 
238 
240  if (_gui) {
243  }
244 }
245 
246 
247 
249  GWEN_SYNCIO *sio,
250  uint32_t guiid) {
251  return checkCertBuiltIn(cd, sio, guiid);
252 }
253 
254 
255 
256 int CppGui::logHook(const char *logDomain,
257  GWEN_LOGGER_LEVEL priority, const char *s) {
258  /* not hooked */
259  return 0;
260 }
261 
262 
263 
264 int CppGui::execDialog(GWEN_DIALOG *dlg, uint32_t guiid) {
266 }
267 
268 
269 
270 int CppGui::openDialog(GWEN_DIALOG *dlg, uint32_t guiid) {
271  DBG_ERROR(0, "CppGui::OpenDialog");
272 
274 }
275 
276 
277 
280 }
281 
282 
283 
284 int CppGui::runDialog(GWEN_DIALOG *dlg, int untilEnd) {
286 }
287 
288 
289 
290 int CppGui::getFileName(const char *caption,
292  uint32_t flags,
293  const char *patterns,
294  GWEN_BUFFER *pathBuffer,
295  uint32_t guiid) {
296  DBG_ERROR(0, "Not supported");
298 }
299 
300 
301 
302 int CppGui::print(const char *docTitle,
303  const char *docType,
304  const char *descr,
305  const char *text,
306  uint32_t guiid) {
307  if (_printFn)
308  return _printFn(_gui, docTitle, docType, descr, text, guiid);
309  else
311 }
312 
313 
314 
315 
317  GWEN_SYNCIO *sio,
318  uint32_t guiid) {
319  if (_checkCertFn)
320  return _checkCertFn(_gui, cert, sio, guiid);
321  else {
322  DBG_ERROR(0, "No built-in checkcert function?");
324  }
325 }
326 
327 
328 
329 int CppGui::getPassword(uint32_t flags,
330  const char *token,
331  const char *title,
332  const char *text,
333  char *buffer,
334  int minLen,
335  int maxLen,
336  GWEN_GUI_PASSWORD_METHOD methodId,
337  GWEN_DB_NODE *methodParams,
338  uint32_t guiid) {
339  if (_getPasswordFn)
340  return _getPasswordFn(_gui, flags, token, title, text, buffer, minLen, maxLen, methodId, methodParams, guiid);
341  else
343 }
344 
345 
346 
347 int CppGui::setPasswordStatus(const char *token,
348  const char *pin,
350  uint32_t guiid) {
351  if (_setPasswordStatusFn)
352  return _setPasswordStatusFn(_gui, token, pin, status, guiid);
353  else
355 }
356 
357 
358 
359 
360 
361 void CppGui::setPasswordDb(GWEN_DB_NODE *dbPasswords, int persistent) {
362  GWEN_Gui_SetPasswordDb(_gui, dbPasswords, persistent);
363 }
364 
365 
366 
369 }
370 
371 
372 
374  return _gui;
375 }
376 
377 
378 
380  GWEN_GUI *gui;
381  CppGui *xgui;
382 
383  gui=GWEN_Gui_GetGui();
384  if (gui==NULL)
385  return NULL;
387  return xgui;
388 }
389 
390 
391 
392 
393 
virtual int openDialog(GWEN_DIALOG *dlg, uint32_t guiid)
Definition: cppgui.cpp:270
virtual int closeDialog(GWEN_DIALOG *dlg)
Definition: cppgui.cpp:278
struct GWEN_SSLCERTDESCR GWEN_SSLCERTDESCR
GWENHYWFAR_API GWEN_GUI_OPEN_DIALOG_FN GWEN_Gui_SetOpenDialogFn(GWEN_GUI *gui, GWEN_GUI_OPEN_DIALOG_FN f)
Definition: gui_virtual.c:234
virtual int checkCert(const GWEN_SSLCERTDESCR *cert, GWEN_SYNCIO *sio, uint32_t guiid)
Definition: cppgui.cpp:248
struct GWEN_DB_NODE GWEN_DB_NODE
Definition: db.h:228
virtual int logHook(const char *logDomain, GWEN_LOGGER_LEVEL priority, const char *s)
Definition: cppgui.cpp:256
GWENHYWFAR_API GWEN_GUI_CHECKCERT_FN GWEN_Gui_SetCheckCertFn(GWEN_GUI *gui, GWEN_GUI_CHECKCERT_FN f)
Definition: gui_virtual.c:208
#define DBG_NOTICE(dbg_logger, format, args...)
Definition: debug.h:152
GWEN_LOGGER_LEVEL
Definition: logger.h:64
#define NULL
Definition: binreloc.c:300
GWENHYWFAR_API GWEN_GUI_GET_FILENAME_FN GWEN_Gui_SetGetFileNameFn(GWEN_GUI *gui, GWEN_GUI_GET_FILENAME_FN f)
Definition: gui_virtual.c:299
virtual int print(const char *docTitle, const char *docType, const char *descr, const char *text, uint32_t guiid)
Definition: cppgui.cpp:302
GWENHYWFAR_API GWEN_GUI_EXEC_DIALOG_FN GWEN_Gui_SetExecDialogFn(GWEN_GUI *gui, GWEN_GUI_EXEC_DIALOG_FN f)
Definition: gui_virtual.c:221
void setPasswordStore(GWEN_PASSWD_STORE *sto)
Definition: cppgui.cpp:367
GWENHYWFAR_API GWEN_GUI_GETPASSWORD_FN GWEN_Gui_SetGetPasswordFn(GWEN_GUI *gui, GWEN_GUI_GETPASSWORD_FN f)
Definition: gui_virtual.c:154
struct GWEN_DIALOG GWEN_DIALOG
Definition: dialog.h:54
GWENHYWFAR_API void GWEN_Gui_UseDialogs(GWEN_GUI *gui)
Definition: gui_dialogs.c:29
GWEN_GUI_FILENAME_TYPE
Definition: gui.h:949
GWEN_GUI_PASSWORD_STATUS
Definition: gui.h:386
struct GWEN_SYNCIO GWEN_SYNCIO
Definition: syncio.h:40
static CPPGUI_API CppGui * getCppGui()
Definition: cppgui.cpp:379
#define GWENHYWFAR_CB
Definition: gwenhywfarapi.h:89
#define GWEN_INHERIT_UNLINK(bt, t, element)
Definition: inherit.h:318
A C++ binding for the C module GWEN_GUI.
Definition: cppgui.hpp:39
virtual int getPassword(uint32_t flags, const char *token, const char *title, const char *text, char *buffer, int minLen, int maxLen, GWEN_GUI_PASSWORD_METHOD methodId, GWEN_DB_NODE *methodParams, uint32_t guiid)
Definition: cppgui.cpp:329
GWEN_GUI * GWEN_Gui_GetGui(void)
Definition: gui.c:160
GWENHYWFAR_API GWEN_GUI_CLOSE_DIALOG_FN GWEN_Gui_SetCloseDialogFn(GWEN_GUI *gui, GWEN_GUI_CLOSE_DIALOG_FN f)
Definition: gui_virtual.c:247
GWENHYWFAR_API GWEN_GUI_LOG_HOOK_FN GWEN_Gui_SetLogHookFn(GWEN_GUI *gui, GWEN_GUI_LOG_HOOK_FN f)
Definition: gui_virtual.c:180
GWENHYWFAR_API GWEN_GUI_RUN_DIALOG_FN GWEN_Gui_SetRunDialogFn(GWEN_GUI *gui, GWEN_GUI_RUN_DIALOG_FN f)
Definition: gui_virtual.c:260
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition: buffer.h:38
GWEN_GUI_PASSWORD_METHOD
Definition: gui.h:163
virtual int getFileName(const char *caption, GWEN_GUI_FILENAME_TYPE fnt, uint32_t flags, const char *patterns, GWEN_BUFFER *pathBuffer, uint32_t guiid)
Definition: cppgui.cpp:290
GWEN_GUI * getCInterface()
Definition: cppgui.cpp:373
#define DBG_ERROR(dbg_logger, format, args...)
Definition: debug.h:97
struct GWEN_PASSWD_STORE GWEN_PASSWD_STORE
Definition: passwdstore.h:37
void GWEN_Gui_SetPasswordDb(GWEN_GUI *gui, GWEN_DB_NODE *dbPasswords, int persistent)
Definition: gui.c:346
GWEN_GUI * GWEN_Gui_new(void)
Definition: gui.c:99
virtual int execDialog(GWEN_DIALOG *dlg, uint32_t guiid)
Definition: cppgui.cpp:264
void GWEN_Gui_SetPasswdStore(GWEN_GUI *gui, GWEN_PASSWD_STORE *sto)
Definition: gui.c:331
#define GWEN_ERROR_NOT_SUPPORTED
Definition: error.h:109
virtual int runDialog(GWEN_DIALOG *dlg, int untilEnd)
Definition: cppgui.cpp:284
GWEN_INHERIT(GWEN_GUI, CppGui)
virtual int setPasswordStatus(const char *token, const char *pin, GWEN_GUI_PASSWORD_STATUS status, uint32_t guiid)
Definition: cppgui.cpp:347
int checkCertBuiltIn(const GWEN_SSLCERTDESCR *cert, GWEN_SYNCIO *sio, uint32_t guiid)
Definition: cppgui.cpp:316
struct GWEN_GUI GWEN_GUI
Definition: gui.h:176
GWENHYWFAR_API GWEN_GUI_PRINT_FN GWEN_Gui_SetPrintFn(GWEN_GUI *gui, GWEN_GUI_PRINT_FN f)
Definition: gui_virtual.c:141
void setPasswordDb(GWEN_DB_NODE *dbPasswords, int persistent)
Definition: cppgui.cpp:361
GWENHYWFAR_API GWEN_GUI_SETPASSWORDSTATUS_FN GWEN_Gui_SetSetPasswordStatusFn(GWEN_GUI *gui, GWEN_GUI_SETPASSWORDSTATUS_FN f)
Definition: gui_virtual.c:167
CppGui()
Definition: cppgui.cpp:216
void GWEN_Gui_free(GWEN_GUI *gui)
Definition: gui.c:127
virtual ~CppGui()
Definition: cppgui.cpp:239
#define GWEN_INHERIT_SETDATA(bt, t, element, data, fn)
Definition: inherit.h:292
GWEN_GUI * _gui
Definition: cppgui.hpp:67
#define GWEN_INHERIT_GETDATA(bt, t, element)
Definition: inherit.h:271