00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef GWENHYWFAR_GUI_GUI_H
00026 #define GWENHYWFAR_GUI_GUI_H
00027
00028
00029
00030 #include <gwenhywfar/inherit.h>
00031 #include <gwenhywfar/logger.h>
00032 #include <gwenhywfar/inetsocket.h>
00033 #include <gwenhywfar/ssl_cert_descr.h>
00034 #include <gwenhywfar/syncio.h>
00035 #include <gwenhywfar/dialog.h>
00036
00037 #include <inttypes.h>
00038
00039
00106
00107 #ifdef __cplusplus
00108 extern "C" {
00109 #endif
00110
00111
00112 typedef struct GWEN_GUI GWEN_GUI;
00113 GWEN_INHERIT_FUNCTION_LIB_DEFS(GWEN_GUI, GWENHYWFAR_API)
00114
00115
00116 #define GWEN_GUI_CPU_TIMEOUT 200
00117
00118 #define GWEN_GUI_CHECK_PERIOD 750
00119 #define GWEN_GUI_DELAY_SECS 2
00120
00121
00128 #define GWEN_GUI_PROGRESS_DELAY 0x00000001
00129 #define GWEN_GUI_PROGRESS_SHOW_LOG 0x00000002
00130 #define GWEN_GUI_PROGRESS_SHOW_ABORT 0x00000004
00131 #define GWEN_GUI_PROGRESS_ALLOW_SUBLEVELS 0x00000008
00132 #define GWEN_GUI_PROGRESS_ALLOW_EMBED 0x00000010
00133 #define GWEN_GUI_PROGRESS_SHOW_PROGRESS 0x00000020
00134 #define GWEN_GUI_PROGRESS_KEEP_OPEN 0x00000040
00135 #define GWEN_GUI_PROGRESS_ALWAYS_SHOW_LOG 0x00000080
00136
00147 #define GWEN_GUI_INPUT_FLAGS_CONFIRM 0x00000001
00148
00149 #define GWEN_GUI_INPUT_FLAGS_SHOW 0x00000002
00150
00151 #define GWEN_GUI_INPUT_FLAGS_NUMERIC 0x00000004
00152
00153 #define GWEN_GUI_INPUT_FLAGS_RETRY 0x00000008
00154
00156 #define GWEN_GUI_INPUT_FLAGS_ALLOW_DEFAULT 0x00000010
00157
00158 #define GWEN_GUI_INPUT_FLAGS_TAN 0x00000020
00159
00160 #define GWEN_GUI_INPUT_FLAGS_OPTICAL 0x00000040
00161
00213 #define GWEN_GUI_MSG_FLAGS_TYPE_MASK 0x07
00214
00215 #define GWEN_GUI_MSG_FLAGS_TYPE_INFO 0
00216
00217 #define GWEN_GUI_MSG_FLAGS_TYPE_IS_INFO(fl) \
00218 ((fl & GWEN_GUI_MSG_FLAGS_TYPE_MASK)==GWEN_GUI_MSG_FLAGS_TYPE_INFO)
00219
00221 #define GWEN_GUI_MSG_FLAGS_TYPE_WARN 1
00222
00223 #define GWEN_GUI_MSG_FLAGS_TYPE_IS_WARN(fl) \
00224 ((fl & GWEN_GUI_MSG_FLAGS_TYPE_MASK)==GWEN_GUI_MSG_FLAGS_TYPE_WARN)
00225
00227 #define GWEN_GUI_MSG_FLAGS_TYPE_ERROR 2
00228
00229 #define GWEN_GUI_MSG_FLAGS_TYPE_IS_ERROR \
00230 ((fl & GWEN_GUI_MSG_FLAGS_TYPE_MASK)==GWEN_GUI_MSG_FLAGS_TYPE_ERROR)
00231
00233 #define GWEN_GUI_MSG_FLAGS_CONFIRM_B1 (1<<3)
00234
00235 #define GWEN_GUI_MSG_FLAGS_CONFIRM_B2 (2<<3)
00236
00237 #define GWEN_GUI_MSG_FLAGS_CONFIRM_B3 (3<<3)
00238
00239 #define GWEN_GUI_MSG_FLAGS_CONFIRM_BUTTON(fl) (((fl)>>3) & 0x3)
00240
00241
00263 #define GWEN_GUI_MSG_FLAGS_SEVERITY_MASK (0x7<<5)
00264
00265 #define GWEN_GUI_MSG_FLAGS_SEVERITY_NORMAL (0x0<<5)
00266 #define GWEN_GUI_MSG_FLAGS_SEVERITY_IS_NORMAL(fl) \
00267 ((fl & GWEN_GUI_MSG_FLAGS_SEVERITY_MASK)==\
00268 GWEN_GUI_MSG_FLAGS_SEVERITY_NORMAL)
00269
00271 #define GWEN_GUI_MSG_FLAGS_SEVERITY_DANGEROUS (0x1<<5)
00272 #define GWEN_GUI_MSG_FLAGS_SEVERITY_IS_DANGEROUS(fl) \
00273 ((fl & GWEN_GUI_MSG_FLAGS_SEVERITY_MASK)==\
00274 GWEN_GUI_MSG_FLAGS_SEVERITY_DANGEROUS)
00275
00287 #define GWEN_GUI_SHOWBOX_FLAGS_BEEP 0x00000001
00288
00302 #define GWEN_GUI_PROGRESS_NONE (0xffffffffUL)
00303
00310 #define GWEN_GUI_PROGRESS_ONE (0xfffffffeUL)
00311
00320 typedef enum {
00321 GWEN_Gui_PasswordStatus_Bad=-1,
00322 GWEN_Gui_PasswordStatus_Unknown,
00323 GWEN_Gui_PasswordStatus_Ok,
00324 GWEN_Gui_PasswordStatus_Used,
00325 GWEN_Gui_PasswordStatus_Unused,
00326 GWEN_Gui_PasswordStatus_Remove
00327 } GWEN_GUI_PASSWORD_STATUS;
00328
00329
00330
00335 GWENHYWFAR_API
00336 GWEN_GUI *GWEN_Gui_new(void);
00337
00338 GWENHYWFAR_API
00339 void GWEN_Gui_free(GWEN_GUI *gui);
00340
00341 GWENHYWFAR_API
00342 void GWEN_Gui_Attach(GWEN_GUI *gui);
00343
00344 GWENHYWFAR_API
00345 void GWEN_Gui_SetGui(GWEN_GUI *gui);
00346
00347 GWENHYWFAR_API
00348 GWEN_GUI *GWEN_Gui_GetGui(void);
00349
00362 GWENHYWFAR_API
00363 const char *GWEN_Gui_GetCharSet(const GWEN_GUI *gui);
00364
00365 GWENHYWFAR_API
00366 void GWEN_Gui_SetCharSet(GWEN_GUI *gui, const char *s);
00441 GWENHYWFAR_API
00442 int GWEN_Gui_MessageBox(uint32_t flags,
00443 const char *title,
00444 const char *text,
00445 const char *b1,
00446 const char *b2,
00447 const char *b3,
00448 uint32_t guiid);
00449
00455 GWENHYWFAR_API
00456 void GWEN_Gui_ShowError(const char *title, const char *text, ...);
00457
00458
00484 GWENHYWFAR_API
00485 int GWEN_Gui_InputBox(uint32_t flags,
00486 const char *title,
00487 const char *text,
00488 char *buffer,
00489 int minLen,
00490 int maxLen,
00491 uint32_t guiid);
00492
00516 GWENHYWFAR_API
00517 uint32_t GWEN_Gui_ShowBox(uint32_t flags,
00518 const char *title,
00519 const char *text,
00520 uint32_t guiid);
00521
00531 GWENHYWFAR_API
00532 void GWEN_Gui_HideBox(uint32_t id);
00533
00534
00566 GWENHYWFAR_API
00567 uint32_t GWEN_Gui_ProgressStart(uint32_t progressFlags,
00568 const char *title,
00569 const char *text,
00570 uint64_t total,
00571 uint32_t guiid);
00572
00593 GWENHYWFAR_API
00594 int GWEN_Gui_ProgressAdvance(uint32_t id, uint32_t progress);
00595
00596 GWENHYWFAR_API
00597 int GWEN_Gui_ProgressSetTotal(uint32_t id, uint64_t total);
00598
00609 GWENHYWFAR_API
00610 int GWEN_Gui_ProgressLog(uint32_t id,
00611 GWEN_LOGGER_LEVEL level,
00612 const char *text);
00613
00626 GWENHYWFAR_API
00627 int GWEN_Gui_ProgressLog2(uint32_t id,
00628 GWEN_LOGGER_LEVEL level,
00629 const char *text, ...);
00630
00655 GWENHYWFAR_API
00656 int GWEN_Gui_ProgressEnd(uint32_t id);
00657
00658
00672 GWENHYWFAR_API
00673 int GWEN_Gui_Print(const char *docTitle,
00674 const char *docType,
00675 const char *descr,
00676 const char *text,
00677 uint32_t guiid);
00678
00698 GWENHYWFAR_API
00699 int GWEN_Gui_GetPassword(uint32_t flags,
00700 const char *token,
00701 const char *title,
00702 const char *text,
00703 char *buffer,
00704 int minLen,
00705 int maxLen,
00706 uint32_t guiid);
00707
00712 GWENHYWFAR_API
00713 int GWEN_Gui_SetPasswordStatus(const char *token,
00714 const char *pin,
00715 GWEN_GUI_PASSWORD_STATUS status,
00716 uint32_t guiid);
00717
00728 GWENHYWFAR_API
00729 int GWEN_Gui_LogHook(const char *logDomain,
00730 GWEN_LOGGER_LEVEL priority, const char *s);
00731
00732
00741 GWENHYWFAR_API
00742 int GWEN_Gui_WaitForSockets(GWEN_SOCKET_LIST2 *readSockets,
00743 GWEN_SOCKET_LIST2 *writeSockets,
00744 uint32_t guiid,
00745 int msecs);
00746
00755 GWENHYWFAR_API
00756 int GWEN_Gui_CheckCert(const GWEN_SSLCERTDESCR *cert,
00757 GWEN_SYNCIO *sio,
00758 uint32_t guiid);
00759
00760
00771 GWENHYWFAR_API
00772 int GWEN_Gui_KeyDataFromText_OpenSSL(const char *text,
00773 unsigned char *buffer,
00774 unsigned int bufLength);
00775
00783 GWENHYWFAR_API
00784 int GWEN_Gui_ExecDialog(GWEN_DIALOG *dlg, uint32_t guiid);
00785
00786
00787
00788 GWENHYWFAR_API
00789 int GWEN_Gui_OpenDialog(GWEN_DIALOG *dlg, uint32_t guiid);
00790
00791 GWENHYWFAR_API
00792 int GWEN_Gui_CloseDialog(GWEN_DIALOG *dlg);
00793
00794 GWENHYWFAR_API
00795 int GWEN_Gui_RunDialog(GWEN_DIALOG *dlg, int untilEnd);
00796
00797
00798 typedef enum {
00799 GWEN_Gui_FileNameType_OpenFileName=0,
00800 GWEN_Gui_FileNameType_SaveFileName,
00801 GWEN_Gui_FileNameType_OpenDirectory
00802
00803 } GWEN_GUI_FILENAME_TYPE;
00804
00805
00823 GWENHYWFAR_API
00824 int GWEN_Gui_GetFileName(const char *caption,
00825 GWEN_GUI_FILENAME_TYPE fnt,
00826 uint32_t flags,
00827 const char *patterns,
00828 GWEN_BUFFER *pathBuffer,
00829 uint32_t guiid);
00830
00840 GWENHYWFAR_API
00841 int GWEN_Gui_GetSyncIo(const char *url,
00842 const char *defaultProto,
00843 int defaultPort,
00844 GWEN_SYNCIO **pSio);
00845
00846
00857
00859 #define GWEN_GUI_FLAGS_NONINTERACTIVE 0x00000001
00860
00861 #define GWEN_GUI_FLAGS_ACCEPTVALIDCERTS 0x00000002
00862
00863 #define GWEN_GUI_FLAGS_REJECTINVALIDCERTS 0x00000004
00864
00865 #define GWEN_GUI_FLAGS_DIALOGSUPPORTED 0x80000000
00866
00867 GWENHYWFAR_API uint32_t GWEN_Gui_GetFlags(const GWEN_GUI *gui);
00868 GWENHYWFAR_API void GWEN_Gui_SetFlags(GWEN_GUI *gui, uint32_t fl);
00869 GWENHYWFAR_API void GWEN_Gui_AddFlags(GWEN_GUI *gui, uint32_t fl);
00870 GWENHYWFAR_API void GWEN_Gui_SubFlags(GWEN_GUI *gui, uint32_t fl);
00874 GWENHYWFAR_API const char *GWEN_Gui_GetName(void);
00875
00876
00877 #ifdef __cplusplus
00878 }
00879 #endif
00880
00884 #endif
00885
00886
00887
00888