gwenhywfar  4.99.15beta
dlg_progress.c
Go to the documentation of this file.
1 /***************************************************************************
2  begin : Tue Feb 16 2010
3  copyright : (C) 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 #define DISABLE_DEBUGLOG
16 
17 
18 #include "dlg_progress_p.h"
19 
20 #include <gwenhywfar/gwenhywfar.h>
21 #include <gwenhywfar/pathmanager.h>
22 #include <gwenhywfar/debug.h>
23 #include <gwenhywfar/text.h>
24 
25 
26 
27 #define DIALOG_MINWIDTH 520
28 #define DIALOG_MINHEIGHT 400
29 #define DIALOG_MINHEIGHT_NOLOG 100
30 
31 
32 
33 GWEN_INHERIT(GWEN_DIALOG, GWEN_DLGPROGRESS)
34 
35 
36 
37 
38 
40 {
41  GWEN_DIALOG *dlg;
42  GWEN_DLGPROGRESS *xdlg;
43  GWEN_BUFFER *fbuf;
44  int rv;
45 
46  dlg=GWEN_Dialog_new("dlg_gwen_progress");
47  GWEN_NEW_OBJECT(GWEN_DLGPROGRESS, xdlg);
48 
49  GWEN_INHERIT_SETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg, xdlg,
51 
53 
54  /* get path of dialog description file */
55  fbuf=GWEN_Buffer_new(0, 256, 0, 1);
57  "gwenhywfar/dialogs/dlg_progress.dlg",
58  fbuf);
59  if (rv<0) {
60  DBG_INFO(GWEN_LOGDOMAIN, "Dialog description file not found (%d).", rv);
61  GWEN_Buffer_free(fbuf);
62  GWEN_Dialog_free(dlg);
63  return NULL;
64  }
65 
66  /* read dialog from dialog description file */
68  if (rv<0) {
69  DBG_INFO(GWEN_LOGDOMAIN, "here (%d).", rv);
70  GWEN_Buffer_free(fbuf);
71  GWEN_Dialog_free(dlg);
72  return NULL;
73  }
74  GWEN_Buffer_free(fbuf);
75 
76  xdlg->logBufferTxt=GWEN_Buffer_new(0, 256, 0, 1);
77  xdlg->logBufferHtml=GWEN_Buffer_new(0, 256, 0, 1);
78 
79  return dlg;
80 }
81 
82 
83 
85 {
86  GWEN_DLGPROGRESS *xdlg;
87 
88  xdlg=(GWEN_DLGPROGRESS *) p;
89 
90  GWEN_Buffer_free(xdlg->logBufferHtml);
91  GWEN_Buffer_free(xdlg->logBufferTxt);
92 
93  GWEN_FREE_OBJECT(xdlg);
94 }
95 
96 
97 
99 {
100  GWEN_DLGPROGRESS *xdlg;
101 
102  assert(dlg);
103  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
104  assert(xdlg);
105 
106  xdlg->allowClose=b;
107  if (xdlg->wasInit) {
108  GWEN_Dialog_SetIntProperty(dlg, "abortButton", GWEN_DialogProperty_Enabled, 0, 0, 0);
109  GWEN_Dialog_SetIntProperty(dlg, "closeButton", GWEN_DialogProperty_Enabled, 0, 1, 0);
110  }
111 }
112 
113 
114 
116 {
117  GWEN_DLGPROGRESS *xdlg;
118 
119  assert(dlg);
120  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
121  assert(xdlg);
122 
123  xdlg->stayOpen=b;
124 }
125 
126 
127 
129 {
130  GWEN_DLGPROGRESS *xdlg;
131 
132  assert(dlg);
133  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
134  assert(xdlg);
135 
136  return xdlg->stayOpen;
137 }
138 
139 
140 
142 {
143  GWEN_DLGPROGRESS *xdlg;
144 
145  assert(dlg);
146  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
147  assert(xdlg);
148 
149  if (xdlg->showLog!=b) {
150  xdlg->showLog=b;
151  if (xdlg->wasInit) {
152 
154  if (b) {
155  int i;
156 
157  i=xdlg->withLogWidth;
158  if (i<DIALOG_MINWIDTH)
159  i=DIALOG_MINWIDTH;
161 
162  i=xdlg->withLogHeight;
163  if (i<DIALOG_MINHEIGHT)
166  }
167  }
168  }
169 }
170 
171 
172 
174 {
175  GWEN_DLGPROGRESS *xdlg;
176 
177  assert(dlg);
178  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
179  assert(xdlg);
180 
181  return xdlg->firstProgress;
182 }
183 
184 
185 
187 {
188  GWEN_DLGPROGRESS *xdlg;
189 
190  assert(dlg);
191  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
192  assert(xdlg);
193 
194  xdlg->firstProgress=pd;
195 
196  if (xdlg->wasInit) {
197  if (xdlg->firstProgress) {
198  const char *s;
199 
200  s=GWEN_ProgressData_GetTitle(xdlg->firstProgress);
201  if (s && *s)
203 
204  s=GWEN_ProgressData_GetText(xdlg->firstProgress);
205  if (s && *s)
206  GWEN_Dialog_SetCharProperty(dlg, "descrLabel", GWEN_DialogProperty_Title, 0, s, 0);
207 
208  GWEN_Dialog_SetIntProperty(dlg, "allProgress", GWEN_DialogProperty_Enabled, 0, 1, 0);
210  GWEN_ProgressData_GetTotal(xdlg->firstProgress), 0);
212  GWEN_ProgressData_GetCurrent(xdlg->firstProgress), 0);
213  }
214  else {
215  /* let it show 100 % */
216  GWEN_Dialog_SetIntProperty(dlg, "allProgress", GWEN_DialogProperty_MaxValue, 0, 100, 0);
217  GWEN_Dialog_SetIntProperty(dlg, "allProgress", GWEN_DialogProperty_Value, 0, 100, 0);
218  }
219  }
220 }
221 
222 
223 
225 {
226  GWEN_DLGPROGRESS *xdlg;
227 
228  assert(dlg);
229  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
230  assert(xdlg);
231 
232  return xdlg->secondProgress;
233 }
234 
235 
236 
238 {
239  GWEN_DLGPROGRESS *xdlg;
240 
241  assert(dlg);
242  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
243  assert(xdlg);
244 
245  xdlg->secondProgress=pd;
246 
247  if (xdlg->wasInit) {
248  if (xdlg->secondProgress) {
249  GWEN_Dialog_SetIntProperty(dlg, "currentProgress", GWEN_DialogProperty_Enabled, 0, 1, 0);
250  GWEN_Dialog_SetIntProperty(dlg, "currentProgress", GWEN_DialogProperty_MaxValue, 0,
251  GWEN_ProgressData_GetTotal(xdlg->secondProgress), 0);
252  GWEN_Dialog_SetIntProperty(dlg, "currentProgress", GWEN_DialogProperty_Value, 0,
253  GWEN_ProgressData_GetCurrent(xdlg->secondProgress), 0);
254  }
255  else {
256  GWEN_Dialog_SetIntProperty(dlg, "currentProgress", GWEN_DialogProperty_Value, 0, 0, 0);
257  GWEN_Dialog_SetIntProperty(dlg, "currentProgress", GWEN_DialogProperty_Enabled, 0, 0, 0);
258  }
259  }
260 }
261 
262 
263 
265  GWEN_LOGGER_LEVEL level,
266  const char *s)
267 {
268  GWEN_DLGPROGRESS *xdlg;
269  GWEN_TIME *ti;
270  int rv;
271  GWEN_BUFFER *tbuf;
272  const char *col;
273 
274  assert(dlg);
275  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
276  assert(xdlg);
277 
278  ti=GWEN_CurrentTime();
279 
280  /* setup text string */
281  if (GWEN_Buffer_GetUsedBytes(xdlg->logBufferTxt))
282  GWEN_Buffer_AppendString(xdlg->logBufferTxt, "\n");
283  if (ti)
284  rv=GWEN_Time_toString(ti, "hh:mm:ss", xdlg->logBufferTxt);
285  else
287  if (rv<0)
288  GWEN_Buffer_AppendString(xdlg->logBufferTxt, "??:??:??");
289  GWEN_Buffer_AppendString(xdlg->logBufferTxt, " ");
290  if (s)
291  GWEN_Buffer_AppendString(xdlg->logBufferTxt, s);
292 
293  /* setup HTML string */
294  GWEN_Buffer_AppendString(xdlg->logBufferHtml, "<tr><td>");
295  if (ti)
296  rv=GWEN_Time_toString(ti, "hh:mm:ss", xdlg->logBufferHtml);
297  else
299  if (rv<0)
300  GWEN_Buffer_AppendString(xdlg->logBufferHtml, "??:??:??");
301  GWEN_Buffer_AppendString(xdlg->logBufferHtml, "</td><td>");
302 
303  if (level<=GWEN_LoggerLevel_Error)
304  col="red";
305  else if (level==GWEN_LoggerLevel_Warning)
306  col="blue";
307  else if (level==GWEN_LoggerLevel_Info)
308  col="green";
309  else
310  col=NULL;
311  if (col) {
312  GWEN_Buffer_AppendString(xdlg->logBufferHtml, "<font color=\"");
313  GWEN_Buffer_AppendString(xdlg->logBufferHtml, col);
314  GWEN_Buffer_AppendString(xdlg->logBufferHtml, "\">");
315  }
316  if (s)
317  GWEN_Text_EscapeXmlToBuffer(s, xdlg->logBufferHtml);
318  if (col)
319  GWEN_Buffer_AppendString(xdlg->logBufferHtml, "</font>");
320  GWEN_Buffer_AppendString(xdlg->logBufferHtml, "</td></tr>");
321 
322  /* assemble full string, containing HTML and text log */
323  tbuf=GWEN_Buffer_new(0,
324  GWEN_Buffer_GetUsedBytes(xdlg->logBufferHtml)+
325  GWEN_Buffer_GetUsedBytes(xdlg->logBufferTxt)+256,
326  0,
327  1);
328 
329  GWEN_Buffer_AppendString(tbuf, "<html><table>");
330  GWEN_Buffer_AppendString(tbuf, GWEN_Buffer_GetStart(xdlg->logBufferHtml));
331  GWEN_Buffer_AppendString(tbuf, "</table></html>");
332  GWEN_Buffer_AppendString(tbuf, GWEN_Buffer_GetStart(xdlg->logBufferTxt));
333 
335  GWEN_Buffer_GetStart(tbuf), 0);
336  GWEN_Buffer_free(tbuf);
337 }
338 
339 
340 
342 {
343  GWEN_DLGPROGRESS *xdlg;
344  const char *s;
345 
346  assert(dlg);
347  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
348  assert(xdlg);
349 
350  if (pd==xdlg->firstProgress)
351  s="allProgress";
352  else if (pd==xdlg->secondProgress)
353  s="currentProgress";
354  else {
355  DBG_ERROR(GWEN_LOGDOMAIN, "Progress %08x is neither primary nor secondary",
357  return;
358  }
359 
360  if (xdlg->wasInit) {
363  }
364 }
365 
366 
367 
369 {
370  GWEN_DLGPROGRESS *xdlg;
371  const char *s;
372 
373  assert(dlg);
374  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
375  assert(xdlg);
376 
377  if (pd==xdlg->firstProgress)
378  s="allProgress";
379  else if (pd==xdlg->secondProgress)
380  s="currentProgress";
381  else {
382  DBG_ERROR(GWEN_LOGDOMAIN, "Progress %08x is neither primary nor secondary",
384  return;
385  }
386 
387  if (xdlg->wasInit) {
390  }
391 }
392 
393 
394 
396 {
397  GWEN_DLGPROGRESS *xdlg;
398  int i;
399  GWEN_DB_NODE *dbParams;
400 
401  assert(dlg);
402  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
403  assert(xdlg);
404 
405  dbParams=GWEN_Dialog_GetPreferences(dlg);
406  assert(dbParams);
407 
408  xdlg->withLogWidth=GWEN_DB_GetIntValue(dbParams, "dialog_width", 0, -1);
409  xdlg->withLogHeight=GWEN_DB_GetIntValue(dbParams, "dialog_height", 0, -1);
410 
411  if (xdlg->showLog) {
412  int i;
413 
414  i=xdlg->withLogWidth;
415  if (i>=DIALOG_MINWIDTH)
417 
418  i=xdlg->withLogHeight;
419  if (i>=DIALOG_MINHEIGHT)
421 
423  }
424  else {
425  /* read width */
426  i=GWEN_DB_GetIntValue(dbParams, "dialog_width_nolog", 0, -1);
427  if (i>=DIALOG_MINWIDTH)
429 
430  /* read height */
431  i=GWEN_DB_GetIntValue(dbParams, "dialog_height_nolog", 0, -1);
432  if (i>=DIALOG_MINHEIGHT_NOLOG)
435  }
436 
437 
438  if (xdlg->firstProgress) {
439  const char *s;
440 
441  s=GWEN_ProgressData_GetTitle(xdlg->firstProgress);
442  if (s && *s)
444 
445  s=GWEN_ProgressData_GetText(xdlg->firstProgress);
446  if (s && *s)
447  GWEN_Dialog_SetCharProperty(dlg, "descrLabel", GWEN_DialogProperty_Title, 0, s, 0);
448 
450  GWEN_ProgressData_GetTotal(xdlg->firstProgress), 0);
452  GWEN_ProgressData_GetCurrent(xdlg->firstProgress), 0);
453  }
454 
455  if (xdlg->secondProgress) {
456  GWEN_Dialog_SetIntProperty(dlg, "currentProgress", GWEN_DialogProperty_MaxValue, 0,
457  GWEN_ProgressData_GetTotal(xdlg->secondProgress), 0);
458  GWEN_Dialog_SetIntProperty(dlg, "currentProgress", GWEN_DialogProperty_Value, 0,
459  GWEN_ProgressData_GetCurrent(xdlg->secondProgress), 0);
460  }
461 
462  GWEN_Dialog_SetIntProperty(dlg, "abortButton", GWEN_DialogProperty_Enabled, 0, 1, 0);
463  GWEN_Dialog_SetIntProperty(dlg, "closeButton", GWEN_DialogProperty_Enabled, 0, 0, 0);
464 
465  xdlg->wasInit=1;
466 }
467 
468 
469 
471 {
472  GWEN_DLGPROGRESS *xdlg;
473  int i;
474  GWEN_DB_NODE *dbParams;
475 
476  assert(dlg);
477  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
478  assert(xdlg);
479 
480  dbParams=GWEN_Dialog_GetPreferences(dlg);
481  assert(dbParams);
482 
483  /* store dialog width */
484  if (xdlg->showLog) {
486  GWEN_DB_SetIntValue(dbParams,
488  "dialog_width",
489  i);
490 
491  /* store dialog height */
493  GWEN_DB_SetIntValue(dbParams,
495  "dialog_height",
496  i);
497  }
498  else {
500  GWEN_DB_SetIntValue(dbParams,
502  "dialog_width_nolog",
503  i);
504 
505  /* store dialog height */
507  GWEN_DB_SetIntValue(dbParams,
509  "dialog_height_nolog",
510  i);
511  }
512 }
513 
514 
515 
516 
517 int GWEN_DlgProgress_HandleActivated(GWEN_DIALOG *dlg, const char *sender)
518 {
519  GWEN_DLGPROGRESS *xdlg;
520 
521  assert(dlg);
522  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
523  assert(xdlg);
524 
525  if (strcasecmp(sender, "closeButton")==0) {
527  }
528  else if (strcasecmp(sender, "abortButton")==0) {
529  if (xdlg->firstProgress)
530  GWEN_ProgressData_SetAborted(xdlg->firstProgress, 1);
531  if (xdlg->secondProgress)
532  GWEN_ProgressData_SetAborted(xdlg->secondProgress, 1);
533 
534  xdlg->stayOpen=1;
535  GWEN_Dialog_SetIntProperty(dlg, "abortButton", GWEN_DialogProperty_Enabled, 0, 0, 0);
536  GWEN_Dialog_SetIntProperty(dlg, "closeButton", GWEN_DialogProperty_Enabled, 0, 1, 0);
537 
539  }
540 
542 }
543 
544 
545 
546 
549  const char *sender)
550 {
551  GWEN_DLGPROGRESS *xdlg;
552 
553  assert(dlg);
554  xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GWEN_DLGPROGRESS, dlg);
555  assert(xdlg);
556 
557  switch (t) {
561 
565 
567  break;
568 
570  return GWEN_DlgProgress_HandleActivated(dlg, sender);
571 
574 
576  if (xdlg->allowClose==0)
578  else
580 
583  }
584 
586 
587 }
588 
589 
590 
591 
592 
593 
struct GWEN_TIME GWEN_TIME
Definition: gwentime.h:43
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
Definition: buffer.c:235
#define GWEN_DB_FLAGS_OVERWRITE_VARS
Definition: db.h:121
struct GWEN_DB_NODE GWEN_DB_NODE
Definition: db.h:228
void GWEN_DlgProgress_SetStayOpen(GWEN_DIALOG *dlg, int b)
Definition: dlg_progress.c:115
#define GWEN_PM_SYSDATADIR
Definition: gwenhywfar.h:66
uint32_t GWEN_Buffer_GetUsedBytes(const GWEN_BUFFER *bf)
Definition: buffer.c:282
int GWENHYWFAR_CB GWEN_DlgProgress_SignalHandler(GWEN_DIALOG *dlg, GWEN_DIALOG_EVENTTYPE t, const char *sender)
Definition: dlg_progress.c:547
GWEN_PROGRESS_DATA * GWEN_DlgProgress_GetSecondProgress(const GWEN_DIALOG *dlg)
Definition: dlg_progress.c:224
GWEN_LOGGER_LEVEL
Definition: logger.h:64
void GWEN_DlgProgress_Init(GWEN_DIALOG *dlg)
Definition: dlg_progress.c:395
#define GWEN_FREE_OBJECT(varname)
Definition: memory.h:92
#define NULL
Definition: binreloc.c:297
void GWEN_DlgProgress_TotalChanged(GWEN_DIALOG *dlg, GWEN_PROGRESS_DATA *pd)
Definition: dlg_progress.c:368
uint32_t GWEN_ProgressData_GetId(const GWEN_PROGRESS_DATA *pd)
Definition: progressdata.c:81
GWEN_DIALOG_EVENTTYPE
Definition: dialog.h:90
GWEN_DIALOG_SIGNALHANDLER GWEN_Dialog_SetSignalHandler(GWEN_DIALOG *dlg, GWEN_DIALOG_SIGNALHANDLER fn)
Definition: dialog.c:257
#define GWEN_LOGDOMAIN
Definition: logger.h:35
GWEN_DB_NODE * GWEN_Dialog_GetPreferences(const GWEN_DIALOG *dlg)
Definition: dialog.c:898
const char * GWEN_ProgressData_GetText(const GWEN_PROGRESS_DATA *pd)
Definition: progressdata.c:137
int GWEN_DlgProgress_HandleActivated(GWEN_DIALOG *dlg, const char *sender)
Definition: dlg_progress.c:517
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
Definition: buffer.c:38
struct GWEN_DIALOG GWEN_DIALOG
Definition: dialog.h:54
GWEN_DIALOG * GWEN_DlgProgress_new(void)
Definition: dlg_progress.c:39
void GWEN_DlgProgress_SetAllowClose(GWEN_DIALOG *dlg, int b)
Definition: dlg_progress.c:98
void GWEN_DlgProgress_SetSecondProgress(GWEN_DIALOG *dlg, GWEN_PROGRESS_DATA *pd)
Definition: dlg_progress.c:237
#define GWEN_NEW_OBJECT(typ, varname)
Definition: memory.h:86
#define DIALOG_MINWIDTH
Definition: dlg_progress.c:27
GWENHYWFAR_API int GWEN_Time_toString(const GWEN_TIME *t, const char *tmpl, GWEN_BUFFER *buf)
Definition: gwentime_all.c:815
int GWEN_Dialog_GetIntProperty(GWEN_DIALOG *dlg, const char *name, GWEN_DIALOG_PROPERTY prop, int index, int defaultProperty)
Definition: dialog.c:629
#define GWENHYWFAR_CB
Definition: gwenhywfarapi.h:89
uint64_t GWEN_ProgressData_GetCurrent(const GWEN_PROGRESS_DATA *pd)
Definition: progressdata.c:153
void GWEN_DlgProgress_Fini(GWEN_DIALOG *dlg)
Definition: dlg_progress.c:470
GWEN_PROGRESS_DATA * GWEN_DlgProgress_GetFirstProgress(const GWEN_DIALOG *dlg)
Definition: dlg_progress.c:173
#define GWEN_ERROR_GENERIC
Definition: error.h:62
void GWENHYWFAR_CB GWEN_DlgProgress_FreeData(void *bp, void *p)
Definition: dlg_progress.c:84
void GWEN_DlgProgress_SetShowLog(GWEN_DIALOG *dlg, int b)
Definition: dlg_progress.c:141
int GWEN_Text_EscapeXmlToBuffer(const char *src, GWEN_BUFFER *buf)
Definition: text.c:1951
void GWEN_DlgProgress_AddLogText(GWEN_DIALOG *dlg, GWEN_LOGGER_LEVEL level, const char *s)
Definition: dlg_progress.c:264
void GWEN_Buffer_free(GWEN_BUFFER *bf)
Definition: buffer.c:85
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition: buffer.h:41
uint64_t GWEN_ProgressData_GetTotal(const GWEN_PROGRESS_DATA *pd)
Definition: progressdata.c:145
#define DIALOG_MINHEIGHT_NOLOG
Definition: dlg_progress.c:29
#define DBG_ERROR(dbg_logger, format, args...)
Definition: debug.h:97
int GWEN_Dialog_SetIntProperty(GWEN_DIALOG *dlg, const char *name, GWEN_DIALOG_PROPERTY prop, int index, int value, int doSignal)
Definition: dialog.c:599
GWEN_DIALOG * GWEN_Dialog_new(const char *dialogId)
Definition: dialog.c:53
void GWEN_ProgressData_SetAborted(GWEN_PROGRESS_DATA *pd, int i)
Definition: progressdata.c:219
struct GWEN_PROGRESS_DATA GWEN_PROGRESS_DATA
int GWEN_Dialog_SetCharProperty(GWEN_DIALOG *dlg, const char *name, GWEN_DIALOG_PROPERTY prop, int index, const char *value, int doSignal)
Definition: dialog.c:658
const char * GWEN_ProgressData_GetTitle(const GWEN_PROGRESS_DATA *pd)
Definition: progressdata.c:129
#define DBG_INFO(dbg_logger, format, args...)
Definition: debug.h:177
#define GWEN_PM_LIBNAME
Definition: gwenhywfar.h:42
int GWEN_DB_GetIntValue(GWEN_DB_NODE *n, const char *path, int idx, int defVal)
Definition: db.c:1150
void GWEN_Dialog_free(GWEN_DIALOG *dlg)
Definition: dialog.c:89
#define GWEN_INHERIT(bt, t)
Definition: inherit.h:264
int GWEN_Dialog_ReadXmlFile(GWEN_DIALOG *dlg, const char *fname)
Definition: dialog.c:427
int GWEN_DB_SetIntValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, int val)
Definition: db.c:1189
void GWEN_DlgProgress_Advanced(GWEN_DIALOG *dlg, GWEN_PROGRESS_DATA *pd)
Definition: dlg_progress.c:341
int GWEN_PathManager_FindFile(const char *destLib, const char *pathName, const char *fileName, GWEN_BUFFER *fbuf)
Definition: pathmanager.c:541
#define GWEN_INHERIT_SETDATA(bt, t, element, data, fn)
Definition: inherit.h:292
int GWEN_DlgProgress_GetStayOpen(const GWEN_DIALOG *dlg)
Definition: dlg_progress.c:128
GWENHYWFAR_API GWEN_TIME * GWEN_CurrentTime(void)
Definition: gwentime_all.c:50
void GWEN_DlgProgress_SetFirstProgress(GWEN_DIALOG *dlg, GWEN_PROGRESS_DATA *pd)
Definition: dlg_progress.c:186
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
Definition: buffer.c:1062
#define GWEN_INHERIT_GETDATA(bt, t, element)
Definition: inherit.h:271
#define DIALOG_MINHEIGHT
Definition: dlg_progress.c:28