gwenhywfar 5.14.1
nogui.c
Go to the documentation of this file.
1/***************************************************************************
2 begin : Fri Feb 07 2003
3 copyright : (C) 2003-2010 by Martin Preuss
4 email : martin@libchipcard.de
5
6 ***************************************************************************
7 * *
8 * This library is free software; you can redistribute it and/or *
9 * modify it under the terms of the GNU Lesser General Public *
10 * License as published by the Free Software Foundation; either *
11 * version 2.1 of the License, or (at your option) any later version. *
12 * *
13 * This library is distributed in the hope that it will be useful, *
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
16 * Lesser General Public License for more details. *
17 * *
18 * You should have received a copy of the GNU Lesser General Public *
19 * License along with this library; if not, write to the Free Software *
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
21 * MA 02111-1307 USA *
22 * *
23 ***************************************************************************/
24
25
26#ifdef HAVE_CONFIG_H
27# include <config.h>
28#endif
29
30#define DISABLE_DEBUGLOG
31
32
33#include "nogui_p.h"
34
35
36
37
38GWEN_INHERIT(GWEN_GUI, GWEN_GUI_NOGUI)
39
40
41
42/* ------------------------------------------------------------------------------------------------
43 * forward declarations
44 * ------------------------------------------------------------------------------------------------
45 */
46
47static void GWENHYWFAR_CB _freeData(GWEN_UNUSED void *bp, void *p);
48
50 uint32_t flags,
51 const char *title,
52 const char *text,
53 const char *b1,
54 const char *b2,
55 const char *b3,
56 uint32_t guiid);
57
59 uint32_t flags,
60 const char *title,
61 const char *text,
62 char *buffer,
63 int minLen,
64 int maxLen,
65 uint32_t guiid);
66
67
68static uint32_t GWENHYWFAR_CB _showBox(GWEN_GUI *gui,
69 uint32_t flags,
70 const char *title,
71 const char *text,
72 uint32_t guiid);
73static void GWENHYWFAR_CB _hideBox(GWEN_GUI *gui, uint32_t id);
74
75
77 uint32_t progressFlags,
78 const char *title,
79 const char *text,
80 uint64_t total,
81 uint32_t guiid);
82static int GWENHYWFAR_CB _progressAdvance(GWEN_GUI *gui, uint32_t pid, uint64_t progress);
83static int GWENHYWFAR_CB _progressSetTotal(GWEN_GUI *gui, uint32_t pid, uint64_t total);
84static int GWENHYWFAR_CB _progressLog(GWEN_GUI *gui, uint32_t pid, GWEN_LOGGER_LEVEL level, const char *text);
85static int GWENHYWFAR_CB _progressEnd(GWEN_GUI *gui, uint32_t pid);
86
88 const char *docTitle,
89 const char *docType,
90 const char *descr,
91 const char *text,
92 uint32_t guiid);
93
94
96 uint32_t flags,
97 const char *token,
98 const char *title,
99 const char *text,
100 char *buffer,
101 int minLen,
102 int maxLen,
104 GWEN_DB_NODE *methodParams,
105 uint32_t guiid);
106
108 const char *token,
109 const char *pin,
111 GWEN_UNUSED uint32_t guiid);
112
113static int GWENHYWFAR_CB _logHook(GWEN_GUI *gui, const char *logDomain, GWEN_LOGGER_LEVEL priority, const char *s);
114
115
117 GWEN_SOCKET_LIST2 *readSockets,
118 GWEN_SOCKET_LIST2 *writeSockets,
119 int msecs,
120 uint32_t guiid);
121
123 const GWEN_SSLCERTDESCR *cert,
124 GWEN_SYNCIO *sio,
125 uint32_t guiid);
126
128 const char *text,
129 unsigned char *buffer,
130 unsigned int bufLength);
131
132
134 GWEN_DIALOG *dlg,
135 uint32_t guiid);
136
137
139 GWEN_DIALOG *dlg,
140 uint32_t guiid);
141
143
144static int GWENHYWFAR_CB _runDialog(GWEN_GUI *gui, GWEN_DIALOG *dlg, int timeout);
145
146
148 const char *groupName,
149 const char *altName,
150 GWEN_DB_NODE **pDb);
151
153 const char *groupName,
154 GWEN_DB_NODE *db);
155
156
158 const char *caption,
160 uint32_t flags,
161 const char *patterns,
162 GWEN_BUFFER *pathBuffer,
163 uint32_t guiid);
164
165
167 const char *url,
168 const char *defaultProto,
169 int defaultPort,
170 GWEN_SYNCIO **pSio);
171
172
173
174/* ------------------------------------------------------------------------------------------------
175 * code
176 * ------------------------------------------------------------------------------------------------
177 */
178
179
180
181
183{
184 GWEN_GUI *gui;
185 GWEN_GUI_NOGUI *xgui;
186
187 gui=GWEN_Gui_new();
188 GWEN_NEW_OBJECT(GWEN_GUI_NOGUI, xgui);
189
190 GWEN_INHERIT_SETDATA(GWEN_GUI, GWEN_GUI_NOGUI, gui, xgui, _freeData);
191
192 xgui->messageBoxFn=GWEN_Gui_SetMessageBoxFn(gui, _messageBox);
193 xgui->inputBoxFn=GWEN_Gui_SetInputBoxFn(gui, _inputBox);
194 xgui->showBoxFn=GWEN_Gui_SetShowBoxFn(gui, _showBox);
195 xgui->hideBoxFn=GWEN_Gui_SetHideBoxFn(gui, _hideBox);
196 xgui->progressStartFn=GWEN_Gui_SetProgressStartFn(gui, _progressStart);
197 xgui->progressAdvanceFn=GWEN_Gui_SetProgressAdvanceFn(gui, _progressAdvance);
198 xgui->progressSetTotalFn=GWEN_Gui_SetProgressSetTotalFn(gui, _progressSetTotal);
199 xgui->progressLogFn=GWEN_Gui_SetProgressLogFn(gui, _progressLog);
200 xgui->progressEndFn=GWEN_Gui_SetProgressEndFn(gui, _progressEnd);
201 xgui->printFn=GWEN_Gui_SetPrintFn(gui, _print);
202 xgui->getPasswordFn=GWEN_Gui_SetGetPasswordFn(gui, _getPassword);
203 xgui->setPasswordStatusFn=GWEN_Gui_SetSetPasswordStatusFn(gui, _setPasswordStatus);
204 xgui->logHookFn=GWEN_Gui_SetLogHookFn(gui, _logHook);
205 xgui->waitForSocketsFn=GWEN_Gui_SetWaitForSocketsFn(gui, _waitForSockets);
206 xgui->checkCertFn=GWEN_Gui_SetCheckCertFn(gui, _checkCert);
207 xgui->keyDataFromTextOpenSslFn=GWEN_Gui_SetKeyDataFromTextOpenSslFn(gui, _keyDataFromTextOpenSsl);
208 xgui->execDialogFn=GWEN_Gui_SetExecDialogFn(gui, _execDialog);
209 xgui->openDialogFn=GWEN_Gui_SetOpenDialogFn(gui, _openDialog);
210 xgui->closeDialogFn=GWEN_Gui_SetCloseDialogFn(gui, _closeDialog);
211 xgui->runDialogFn=GWEN_Gui_SetRunDialogFn(gui, _runDialog);
212 xgui->readDialogPrefsFn=GWEN_Gui_SetReadDialogPrefsFn(gui, _readDialogPrefs);
213 xgui->writeDialogPrefsFn=GWEN_Gui_SetWriteDialogPrefsFn(gui, _writeDialogPrefs);
214 xgui->getFileNameFn=GWEN_Gui_SetGetFileNameFn(gui, _getFilename);
215 xgui->getSyncIoFn=GWEN_Gui_SetGetSyncIoFn(gui, _getSyncio);
216
217 return gui;
218}
219
220
221
222void GWENHYWFAR_CB _freeData(GWEN_UNUSED void *bp, void *p)
223{
224 GWEN_GUI_NOGUI *xgui;
225
226 xgui=(GWEN_GUI_NOGUI*) p;
227
228 GWEN_FREE_OBJECT(xgui);
229}
230
231
232
234 GWEN_UNUSED uint32_t flags,
235 GWEN_UNUSED const char *title,
236 GWEN_UNUSED const char *text,
237 GWEN_UNUSED const char *b1,
238 GWEN_UNUSED const char *b2,
239 GWEN_UNUSED const char *b3,
240 GWEN_UNUSED uint32_t guiid)
241{
242 return 0;
243}
244
245
246
248 GWEN_UNUSED uint32_t flags,
249 GWEN_UNUSED const char *title,
250 GWEN_UNUSED const char *text,
251 GWEN_UNUSED char *buffer,
252 GWEN_UNUSED int minLen,
253 GWEN_UNUSED int maxLen,
254 GWEN_UNUSED uint32_t guiid)
255{
256 return 0;
257}
258
259
260
262 GWEN_UNUSED uint32_t flags,
263 GWEN_UNUSED const char *title,
264 GWEN_UNUSED const char *text,
265 GWEN_UNUSED uint32_t guiid)
266{
267 return 0;
268}
269
270
271
273{
274}
275
276
277
279 GWEN_UNUSED uint32_t progressFlags,
280 GWEN_UNUSED const char *title,
281 GWEN_UNUSED const char *text,
282 GWEN_UNUSED uint64_t total,
283 GWEN_UNUSED uint32_t guiid)
284{
285 return 0;
286}
287
288
289
291 GWEN_UNUSED uint32_t pid,
292 GWEN_UNUSED uint64_t progress)
293{
294 return 0;
295}
296
297
298
300 GWEN_UNUSED uint32_t pid,
301 GWEN_UNUSED uint64_t total)
302{
303 return 0;
304}
305
306
307
309 GWEN_UNUSED uint32_t pid,
311 GWEN_UNUSED const char *text)
312{
313 return 0;
314}
315
316
317
319 GWEN_UNUSED uint32_t pid)
320{
321 return 0;
322}
323
324
325
327 GWEN_UNUSED const char *docTitle,
328 GWEN_UNUSED const char *docType,
329 GWEN_UNUSED const char *descr,
330 GWEN_UNUSED const char *text,
331 GWEN_UNUSED uint32_t guiid)
332{
333 return 0;
334}
335
336
337
339 GWEN_UNUSED uint32_t flags,
340 GWEN_UNUSED const char *token,
341 GWEN_UNUSED const char *title,
342 GWEN_UNUSED const char *text,
343 GWEN_UNUSED char *buffer,
344 GWEN_UNUSED int minLen,
345 GWEN_UNUSED int maxLen,
347 GWEN_UNUSED GWEN_DB_NODE *methodParams,
348 GWEN_UNUSED uint32_t guiid)
349{
350 return 0;
351}
352
353
354
356 GWEN_UNUSED const char *token,
357 GWEN_UNUSED const char *pin,
359 GWEN_UNUSED uint32_t guiid)
360{
361 return 0;
362}
363
364
365
367 GWEN_UNUSED const char *logDomain,
369 GWEN_UNUSED const char *s)
370{
371 return 0;
372}
373
374
375
377 GWEN_UNUSED GWEN_SOCKET_LIST2 *readSockets,
378 GWEN_UNUSED GWEN_SOCKET_LIST2 *writeSockets,
379 GWEN_UNUSED int msecs,
380 GWEN_UNUSED uint32_t guiid)
381{
382 return 0;
383}
384
385
386
388 GWEN_UNUSED const GWEN_SSLCERTDESCR *cert,
390 GWEN_UNUSED uint32_t guiid)
391{
392 return 0;
393}
394
395
396
398 GWEN_UNUSED const char *text,
399 GWEN_UNUSED unsigned char *buffer,
400 GWEN_UNUSED unsigned int bufLength)
401{
402 return 0;
403}
404
405
406
409 GWEN_UNUSED uint32_t guiid)
410{
411 return 0;
412}
413
414
415
418 GWEN_UNUSED uint32_t guiid)
419{
420 return 0;
421}
422
423
424
427{
428 return 0;
429}
430
431
432
435 GWEN_UNUSED int timeout)
436{
437 return 0;
438}
439
440
441
443 GWEN_UNUSED const char *groupName,
444 GWEN_UNUSED const char *altName,
446{
447 return 0;
448}
449
450
451
453 GWEN_UNUSED const char *groupName,
455{
456 return 0;
457}
458
459
460
462 GWEN_UNUSED const char *caption,
464 GWEN_UNUSED uint32_t flags,
465 GWEN_UNUSED const char *patterns,
466 GWEN_UNUSED GWEN_BUFFER *pathBuffer,
467 GWEN_UNUSED uint32_t guiid)
468{
469 return 0;
470}
471
472
473
475 GWEN_UNUSED const char *url,
476 GWEN_UNUSED const char *defaultProto,
477 GWEN_UNUSED int defaultPort,
479{
480 return 0;
481}
482
483
484
485
486
struct GWEN_DB_NODE GWEN_DB_NODE
Definition db.h:228
struct GWEN_DIALOG GWEN_DIALOG
Definition dialog.h:54
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition buffer.h:38
GWEN_GUI * GWEN_Gui_new(void)
Definition gui.c:99
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_GETSYNCIO_FN GWEN_Gui_SetGetSyncIoFn(GWEN_GUI *gui, GWEN_GUI_GETSYNCIO_FN f)
GWENHYWFAR_API GWEN_GUI_RUN_DIALOG_FN GWEN_Gui_SetRunDialogFn(GWEN_GUI *gui, GWEN_GUI_RUN_DIALOG_FN f)
GWENHYWFAR_API GWEN_GUI_SHOWBOX_FN GWEN_Gui_SetShowBoxFn(GWEN_GUI *gui, GWEN_GUI_SHOWBOX_FN f)
Definition gui_virtual.c:55
GWENHYWFAR_API GWEN_GUI_PROGRESS_ADVANCE_FN GWEN_Gui_SetProgressAdvanceFn(GWEN_GUI *gui, GWEN_GUI_PROGRESS_ADVANCE_FN f)
Definition gui_virtual.c:93
GWENHYWFAR_API GWEN_GUI_HIDEBOX_FN GWEN_Gui_SetHideBoxFn(GWEN_GUI *gui, GWEN_GUI_HIDEBOX_FN f)
Definition gui_virtual.c:68
GWENHYWFAR_API GWEN_GUI_INPUTBOX_FN GWEN_Gui_SetInputBoxFn(GWEN_GUI *gui, GWEN_GUI_INPUTBOX_FN f)
Definition gui_virtual.c:42
GWENHYWFAR_API GWEN_GUI_PRINT_FN GWEN_Gui_SetPrintFn(GWEN_GUI *gui, GWEN_GUI_PRINT_FN f)
GWENHYWFAR_API GWEN_GUI_EXEC_DIALOG_FN GWEN_Gui_SetExecDialogFn(GWEN_GUI *gui, GWEN_GUI_EXEC_DIALOG_FN f)
GWENHYWFAR_API GWEN_GUI_MESSAGEBOX_FN GWEN_Gui_SetMessageBoxFn(GWEN_GUI *gui, GWEN_GUI_MESSAGEBOX_FN f)
Definition gui_virtual.c:29
GWENHYWFAR_API GWEN_GUI_LOG_HOOK_FN GWEN_Gui_SetLogHookFn(GWEN_GUI *gui, GWEN_GUI_LOG_HOOK_FN f)
GWENHYWFAR_API GWEN_GUI_PROGRESS_END_FN GWEN_Gui_SetProgressEndFn(GWEN_GUI *gui, GWEN_GUI_PROGRESS_END_FN f)
GWENHYWFAR_API GWEN_GUI_KEYDATAFROMTEXT_OPENSSL_FN GWEN_Gui_SetKeyDataFromTextOpenSslFn(GWEN_GUI *gui, GWEN_GUI_KEYDATAFROMTEXT_OPENSSL_FN f)
GWENHYWFAR_API GWEN_GUI_READ_DIALOG_PREFS_FN GWEN_Gui_SetReadDialogPrefsFn(GWEN_GUI *gui, GWEN_GUI_READ_DIALOG_PREFS_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_PROGRESS_START_FN GWEN_Gui_SetProgressStartFn(GWEN_GUI *gui, GWEN_GUI_PROGRESS_START_FN f)
Definition gui_virtual.c:81
GWENHYWFAR_API GWEN_GUI_PROGRESS_LOG_FN GWEN_Gui_SetProgressLogFn(GWEN_GUI *gui, GWEN_GUI_PROGRESS_LOG_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_WRITE_DIALOG_PREFS_FN GWEN_Gui_SetWriteDialogPrefsFn(GWEN_GUI *gui, GWEN_GUI_WRITE_DIALOG_PREFS_FN f)
GWENHYWFAR_API GWEN_GUI_WAITFORSOCKETS_FN GWEN_Gui_SetWaitForSocketsFn(GWEN_GUI *gui, GWEN_GUI_WAITFORSOCKETS_FN f)
GWENHYWFAR_API GWEN_GUI_OPEN_DIALOG_FN GWEN_Gui_SetOpenDialogFn(GWEN_GUI *gui, GWEN_GUI_OPEN_DIALOG_FN f)
GWENHYWFAR_API GWEN_GUI_PROGRESS_SETTOTAL_FN GWEN_Gui_SetProgressSetTotalFn(GWEN_GUI *gui, GWEN_GUI_PROGRESS_SETTOTAL_FN f)
#define GWEN_UNUSED
#define GWENHYWFAR_CB
#define GWEN_INHERIT_SETDATA(bt, t, element, data, fn)
Definition inherit.h:300
#define GWEN_INHERIT(bt, t)
Definition inherit.h:264
struct GWEN_SOCKET_LIST2 GWEN_SOCKET_LIST2
Definition listdoc.h:4030
GWEN_LOGGER_LEVEL
Definition logger.h:61
#define GWEN_FREE_OBJECT(varname)
Definition memory.h:61
#define GWEN_NEW_OBJECT(typ, varname)
Definition memory.h:55
static int GWENHYWFAR_CB _logHook(GWEN_GUI *gui, const char *logDomain, GWEN_LOGGER_LEVEL priority, const char *s)
static int GWENHYWFAR_CB _print(GWEN_GUI *gui, const char *docTitle, const char *docType, const char *descr, const char *text, uint32_t guiid)
static uint32_t GWENHYWFAR_CB _showBox(GWEN_GUI *gui, uint32_t flags, const char *title, const char *text, uint32_t guiid)
static int GWENHYWFAR_CB _setPasswordStatus(GWEN_GUI *gui, const char *token, const char *pin, GWEN_GUI_PASSWORD_STATUS status, GWEN_UNUSED uint32_t guiid)
static int GWENHYWFAR_CB _checkCert(GWEN_GUI *gui, const GWEN_SSLCERTDESCR *cert, GWEN_SYNCIO *sio, uint32_t guiid)
static int GWENHYWFAR_CB _readDialogPrefs(GWEN_GUI *gui, const char *groupName, const char *altName, GWEN_DB_NODE **pDb)
static int GWENHYWFAR_CB _getFilename(GWEN_GUI *gui, const char *caption, GWEN_GUI_FILENAME_TYPE fnt, uint32_t flags, const char *patterns, GWEN_BUFFER *pathBuffer, uint32_t guiid)
static int GWENHYWFAR_CB _keyDataFromTextOpenSsl(GWEN_GUI *gui, const char *text, unsigned char *buffer, unsigned int bufLength)
GWEN_GUI * GWEN_NoGui_new(void)
Definition nogui.c:182
static int GWENHYWFAR_CB _inputBox(GWEN_GUI *gui, uint32_t flags, const char *title, const char *text, char *buffer, int minLen, int maxLen, uint32_t guiid)
static void GWENHYWFAR_CB _freeData(GWEN_UNUSED void *bp, void *p)
Definition nogui.c:222
static int GWENHYWFAR_CB _messageBox(GWEN_GUI *gui, uint32_t flags, const char *title, const char *text, const char *b1, const char *b2, const char *b3, uint32_t guiid)
static int GWENHYWFAR_CB _waitForSockets(GWEN_GUI *gui, GWEN_SOCKET_LIST2 *readSockets, GWEN_SOCKET_LIST2 *writeSockets, int msecs, uint32_t guiid)
static int GWENHYWFAR_CB _progressLog(GWEN_GUI *gui, uint32_t pid, GWEN_LOGGER_LEVEL level, const char *text)
static uint32_t GWENHYWFAR_CB _progressStart(GWEN_GUI *gui, uint32_t progressFlags, const char *title, const char *text, uint64_t total, uint32_t guiid)
static int GWENHYWFAR_CB _progressAdvance(GWEN_GUI *gui, uint32_t pid, uint64_t progress)
static int GWENHYWFAR_CB _writeDialogPrefs(GWEN_GUI *gui, const char *groupName, GWEN_DB_NODE *db)
static int GWENHYWFAR_CB _openDialog(GWEN_GUI *gui, GWEN_DIALOG *dlg, uint32_t guiid)
static void GWENHYWFAR_CB _hideBox(GWEN_GUI *gui, uint32_t id)
static int GWENHYWFAR_CB _progressSetTotal(GWEN_GUI *gui, uint32_t pid, uint64_t total)
static int GWENHYWFAR_CB _getSyncio(GWEN_GUI *gui, const char *url, const char *defaultProto, int defaultPort, GWEN_SYNCIO **pSio)
static int GWENHYWFAR_CB _getPassword(GWEN_GUI *gui, 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)
static int GWENHYWFAR_CB _runDialog(GWEN_GUI *gui, GWEN_DIALOG *dlg, int timeout)
static int GWENHYWFAR_CB _execDialog(GWEN_GUI *gui, GWEN_DIALOG *dlg, uint32_t guiid)
static int GWENHYWFAR_CB _progressEnd(GWEN_GUI *gui, uint32_t pid)
static int GWENHYWFAR_CB _closeDialog(GWEN_GUI *gui, GWEN_DIALOG *dlg)
struct GWEN_SSLCERTDESCR GWEN_SSLCERTDESCR
struct GWEN_SYNCIO GWEN_SYNCIO
Definition syncio.h:40