gwenhywfar 5.12.0
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
34int 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
51int 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,
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
73int 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
89int 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
104int 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
118int 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
132int 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
148int 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
161int 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
175int 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
194void 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) {
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
245
246
247
249 GWEN_SYNCIO *sio,
250 uint32_t guiid) {
251 return checkCertBuiltIn(cd, sio, guiid);
252}
253
254
255
256int CppGui::logHook(const char *logDomain,
257 GWEN_LOGGER_LEVEL priority, const char *s) {
258 /* not hooked */
259 return 0;
260}
261
262
263
264int CppGui::execDialog(GWEN_DIALOG *dlg, uint32_t guiid) {
266}
267
268
269
270int CppGui::openDialog(GWEN_DIALOG *dlg, uint32_t guiid) {
271 DBG_ERROR(0, "CppGui::OpenDialog");
272
274}
275
276
277
281
282
283
284int CppGui::runDialog(GWEN_DIALOG *dlg, int untilEnd) {
286}
287
288
289
290int 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
302int 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
329int 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,
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
347int 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
361void CppGui::setPasswordDb(GWEN_DB_NODE *dbPasswords, int persistent) {
362 GWEN_Gui_SetPasswordDb(_gui, dbPasswords, persistent);
363}
364
365
366
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
#define NULL
Definition binreloc.c:300
friend class CppGui
Definition cppgui_p.hpp:18
A C++ binding for the C module GWEN_GUI.
Definition cppgui.hpp:39
virtual int print(const char *docTitle, const char *docType, const char *descr, const char *text, uint32_t guiid)
Definition cppgui.cpp:302
virtual int checkCert(const GWEN_SSLCERTDESCR *cert, GWEN_SYNCIO *sio, uint32_t guiid)
Definition cppgui.cpp:248
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
virtual int openDialog(GWEN_DIALOG *dlg, uint32_t guiid)
Definition cppgui.cpp:270
int checkCertBuiltIn(const GWEN_SSLCERTDESCR *cert, GWEN_SYNCIO *sio, uint32_t guiid)
Definition cppgui.cpp:316
virtual ~CppGui()
Definition cppgui.cpp:239
GWEN_GUI * getCInterface()
Definition cppgui.cpp:373
void setPasswordStore(GWEN_PASSWD_STORE *sto)
Definition cppgui.cpp:367
static CPPGUI_API CppGui * getCppGui()
Definition cppgui.cpp:379
virtual int logHook(const char *logDomain, GWEN_LOGGER_LEVEL priority, const char *s)
Definition cppgui.cpp:256
CppGui()
Definition cppgui.cpp:216
GWEN_GUI * _gui
Definition cppgui.hpp:67
virtual int setPasswordStatus(const char *token, const char *pin, GWEN_GUI_PASSWORD_STATUS status, uint32_t guiid)
Definition cppgui.cpp:347
void setPasswordDb(GWEN_DB_NODE *dbPasswords, int persistent)
Definition cppgui.cpp:361
virtual int runDialog(GWEN_DIALOG *dlg, int untilEnd)
Definition cppgui.cpp:284
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
virtual int closeDialog(GWEN_DIALOG *dlg)
Definition cppgui.cpp:278
virtual int execDialog(GWEN_DIALOG *dlg, uint32_t guiid)
Definition cppgui.cpp:264
struct GWEN_DB_NODE GWEN_DB_NODE
Definition db.h:228
#define DBG_NOTICE(dbg_logger, format,...)
Definition debug.h:152
#define DBG_ERROR(dbg_logger, format,...)
Definition debug.h:97
struct GWEN_DIALOG GWEN_DIALOG
Definition dialog.h:54
#define GWEN_ERROR_NOT_SUPPORTED
Definition error.h:109
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition buffer.h:38
GWEN_GUI * GWEN_Gui_GetGui(void)
Definition gui.c:160
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
void GWEN_Gui_SetPasswdStore(GWEN_GUI *gui, GWEN_PASSWD_STORE *sto)
Definition gui.c:331
void GWEN_Gui_free(GWEN_GUI *gui)
Definition gui.c:127
GWEN_GUI_PASSWORD_METHOD
Definition gui.h:163
GWEN_GUI_FILENAME_TYPE
Definition gui.h:949
GWEN_GUI_PASSWORD_STATUS
Definition gui.h:386
struct GWEN_GUI GWEN_GUI
Definition gui.h:176
GWENHYWFAR_API GWEN_GUI_RUN_DIALOG_FN GWEN_Gui_SetRunDialogFn(GWEN_GUI *gui, GWEN_GUI_RUN_DIALOG_FN f)
GWENHYWFAR_API GWEN_GUI_PRINT_FN GWEN_Gui_SetPrintFn(GWEN_GUI *gui, GWEN_GUI_PRINT_FN f)
GWENHYWFAR_API void GWEN_Gui_UseDialogs(GWEN_GUI *gui)
Definition gui_dialogs.c:29
GWENHYWFAR_API GWEN_GUI_EXEC_DIALOG_FN GWEN_Gui_SetExecDialogFn(GWEN_GUI *gui, GWEN_GUI_EXEC_DIALOG_FN f)
GWENHYWFAR_API GWEN_GUI_LOG_HOOK_FN GWEN_Gui_SetLogHookFn(GWEN_GUI *gui, GWEN_GUI_LOG_HOOK_FN f)
GWENHYWFAR_API GWEN_GUI_GETPASSWORD_FN GWEN_Gui_SetGetPasswordFn(GWEN_GUI *gui, GWEN_GUI_GETPASSWORD_FN f)
GWENHYWFAR_API GWEN_GUI_SETPASSWORDSTATUS_FN GWEN_Gui_SetSetPasswordStatusFn(GWEN_GUI *gui, GWEN_GUI_SETPASSWORDSTATUS_FN f)
GWENHYWFAR_API GWEN_GUI_CHECKCERT_FN GWEN_Gui_SetCheckCertFn(GWEN_GUI *gui, GWEN_GUI_CHECKCERT_FN f)
GWENHYWFAR_API GWEN_GUI_GET_FILENAME_FN GWEN_Gui_SetGetFileNameFn(GWEN_GUI *gui, GWEN_GUI_GET_FILENAME_FN f)
GWENHYWFAR_API GWEN_GUI_CLOSE_DIALOG_FN GWEN_Gui_SetCloseDialogFn(GWEN_GUI *gui, GWEN_GUI_CLOSE_DIALOG_FN f)
GWENHYWFAR_API GWEN_GUI_OPEN_DIALOG_FN GWEN_Gui_SetOpenDialogFn(GWEN_GUI *gui, GWEN_GUI_OPEN_DIALOG_FN f)
#define GWENHYWFAR_CB
#define GWEN_INHERIT_UNLINK(bt, t, element)
Definition inherit.h:326
#define GWEN_INHERIT_SETDATA(bt, t, element, data, fn)
Definition inherit.h:300
#define GWEN_INHERIT(bt, t)
Definition inherit.h:264
#define GWEN_INHERIT_GETDATA(bt, t, element)
Definition inherit.h:279
GWEN_LOGGER_LEVEL
Definition logger.h:64
struct GWEN_PASSWD_STORE GWEN_PASSWD_STORE
Definition passwdstore.h:37
struct GWEN_SSLCERTDESCR GWEN_SSLCERTDESCR
struct GWEN_SYNCIO GWEN_SYNCIO
Definition syncio.h:40