gwenhywfar 4.0.3
|
00001 /*************************************************************************** 00002 begin : Tue Oct 02 2002 00003 copyright : (C) 2002-2010 by Martin Preuss 00004 email : martin@libchipcard.de 00005 00006 *************************************************************************** 00007 * * 00008 * This library is free software; you can redistribute it and/or * 00009 * modify it under the terms of the GNU Lesser General Public * 00010 * License as published by the Free Software Foundation; either * 00011 * version 2.1 of the License, or (at your option) any later version. * 00012 * * 00013 * This library is distributed in the hope that it will be useful, * 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 00016 * Lesser General Public License for more details. * 00017 * * 00018 * You should have received a copy of the GNU Lesser General Public * 00019 * License along with this library; if not, write to the Free Software * 00020 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * 00021 * MA 02111-1307 USA * 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 00210 #define GWEN_GUI_MSG_FLAGS_TYPE_MASK 0x07 00211 00212 #define GWEN_GUI_MSG_FLAGS_TYPE_INFO 0 00213 00214 #define GWEN_GUI_MSG_FLAGS_TYPE_IS_INFO(fl) \ 00215 ((fl & GWEN_GUI_MSG_FLAGS_TYPE_MASK)==GWEN_GUI_MSG_FLAGS_TYPE_INFO) 00216 00218 #define GWEN_GUI_MSG_FLAGS_TYPE_WARN 1 00219 00220 #define GWEN_GUI_MSG_FLAGS_TYPE_IS_WARN(fl) \ 00221 ((fl & GWEN_GUI_MSG_FLAGS_TYPE_MASK)==GWEN_GUI_MSG_FLAGS_TYPE_WARN) 00222 00224 #define GWEN_GUI_MSG_FLAGS_TYPE_ERROR 2 00225 00226 #define GWEN_GUI_MSG_FLAGS_TYPE_IS_ERROR \ 00227 ((fl & GWEN_GUI_MSG_FLAGS_TYPE_MASK)==GWEN_GUI_MSG_FLAGS_TYPE_ERROR) 00228 00230 #define GWEN_GUI_MSG_FLAGS_CONFIRM_B1 (1<<3) 00231 00232 #define GWEN_GUI_MSG_FLAGS_CONFIRM_B2 (2<<3) 00233 00234 #define GWEN_GUI_MSG_FLAGS_CONFIRM_B3 (3<<3) 00235 00236 #define GWEN_GUI_MSG_FLAGS_CONFIRM_BUTTON(fl) (((fl)>>3) & 0x3) 00237 00238 00260 #define GWEN_GUI_MSG_FLAGS_SEVERITY_MASK (0x7<<5) 00261 00262 #define GWEN_GUI_MSG_FLAGS_SEVERITY_NORMAL (0x0<<5) 00263 #define GWEN_GUI_MSG_FLAGS_SEVERITY_IS_NORMAL(fl) \ 00264 ((fl & GWEN_GUI_MSG_FLAGS_SEVERITY_MASK)==\ 00265 GWEN_GUI_MSG_FLAGS_SEVERITY_NORMAL) 00266 00268 #define GWEN_GUI_MSG_FLAGS_SEVERITY_DANGEROUS (0x1<<5) 00269 #define GWEN_GUI_MSG_FLAGS_SEVERITY_IS_DANGEROUS(fl) \ 00270 ((fl & GWEN_GUI_MSG_FLAGS_SEVERITY_MASK)==\ 00271 GWEN_GUI_MSG_FLAGS_SEVERITY_DANGEROUS) 00272 00284 #define GWEN_GUI_SHOWBOX_FLAGS_BEEP 0x00000001 00285 00299 #define GWEN_GUI_PROGRESS_NONE (0xffffffffUL) 00300 00307 #define GWEN_GUI_PROGRESS_ONE (0xfffffffeUL) 00308 00317 typedef enum { 00318 GWEN_Gui_PasswordStatus_Bad=-1, 00319 GWEN_Gui_PasswordStatus_Unknown, 00320 GWEN_Gui_PasswordStatus_Ok, 00321 GWEN_Gui_PasswordStatus_Used, 00322 GWEN_Gui_PasswordStatus_Unused, 00323 GWEN_Gui_PasswordStatus_Remove 00324 } GWEN_GUI_PASSWORD_STATUS; 00325 00326 00327 00332 GWENHYWFAR_API 00333 GWEN_GUI *GWEN_Gui_new(); 00334 00335 GWENHYWFAR_API 00336 void GWEN_Gui_free(GWEN_GUI *gui); 00337 00338 GWENHYWFAR_API 00339 void GWEN_Gui_Attach(GWEN_GUI *gui); 00340 00341 GWENHYWFAR_API 00342 void GWEN_Gui_SetGui(GWEN_GUI *gui); 00343 00344 GWENHYWFAR_API 00345 GWEN_GUI *GWEN_Gui_GetGui(); 00346 00359 GWENHYWFAR_API 00360 const char *GWEN_Gui_GetCharSet(const GWEN_GUI *gui); 00361 00362 GWENHYWFAR_API 00363 void GWEN_Gui_SetCharSet(GWEN_GUI *gui, const char *s); 00438 GWENHYWFAR_API 00439 int GWEN_Gui_MessageBox(uint32_t flags, 00440 const char *title, 00441 const char *text, 00442 const char *b1, 00443 const char *b2, 00444 const char *b3, 00445 uint32_t guiid); 00446 00452 GWENHYWFAR_API 00453 void GWEN_Gui_ShowError(const char *title, const char *text, ...); 00454 00455 00481 GWENHYWFAR_API 00482 int GWEN_Gui_InputBox(uint32_t flags, 00483 const char *title, 00484 const char *text, 00485 char *buffer, 00486 int minLen, 00487 int maxLen, 00488 uint32_t guiid); 00489 00513 GWENHYWFAR_API 00514 uint32_t GWEN_Gui_ShowBox(uint32_t flags, 00515 const char *title, 00516 const char *text, 00517 uint32_t guiid); 00518 00528 GWENHYWFAR_API 00529 void GWEN_Gui_HideBox(uint32_t id); 00530 00531 00563 GWENHYWFAR_API 00564 uint32_t GWEN_Gui_ProgressStart(uint32_t progressFlags, 00565 const char *title, 00566 const char *text, 00567 uint64_t total, 00568 uint32_t guiid); 00569 00590 GWENHYWFAR_API 00591 int GWEN_Gui_ProgressAdvance(uint32_t id, uint32_t progress); 00592 00603 GWENHYWFAR_API 00604 int GWEN_Gui_ProgressLog(uint32_t id, 00605 GWEN_LOGGER_LEVEL level, 00606 const char *text); 00607 00620 GWENHYWFAR_API 00621 int GWEN_Gui_ProgressLog2(uint32_t id, 00622 GWEN_LOGGER_LEVEL level, 00623 const char *text, ...); 00624 00649 GWENHYWFAR_API 00650 int GWEN_Gui_ProgressEnd(uint32_t id); 00651 00652 00666 GWENHYWFAR_API 00667 int GWEN_Gui_Print(const char *docTitle, 00668 const char *docType, 00669 const char *descr, 00670 const char *text, 00671 uint32_t guiid); 00672 00692 GWENHYWFAR_API 00693 int GWEN_Gui_GetPassword(uint32_t flags, 00694 const char *token, 00695 const char *title, 00696 const char *text, 00697 char *buffer, 00698 int minLen, 00699 int maxLen, 00700 uint32_t guiid); 00701 00706 GWENHYWFAR_API 00707 int GWEN_Gui_SetPasswordStatus(const char *token, 00708 const char *pin, 00709 GWEN_GUI_PASSWORD_STATUS status, 00710 uint32_t guiid); 00711 00722 GWENHYWFAR_API 00723 int GWEN_Gui_LogHook(const char *logDomain, 00724 GWEN_LOGGER_LEVEL priority, const char *s); 00725 00726 00735 GWENHYWFAR_API 00736 int GWEN_Gui_WaitForSockets(GWEN_SOCKET_LIST2 *readSockets, 00737 GWEN_SOCKET_LIST2 *writeSockets, 00738 uint32_t guiid, 00739 int msecs); 00740 00749 GWENHYWFAR_API 00750 int GWEN_Gui_CheckCert(const GWEN_SSLCERTDESCR *cert, 00751 GWEN_SYNCIO *sio, 00752 uint32_t guiid); 00753 00754 00765 GWENHYWFAR_API 00766 int GWEN_Gui_KeyDataFromText_OpenSSL(const char *text, 00767 unsigned char *buffer, 00768 unsigned int bufLength); 00769 00777 GWENHYWFAR_API 00778 int GWEN_Gui_ExecDialog(GWEN_DIALOG *dlg, uint32_t guiid); 00779 00780 00781 00782 GWENHYWFAR_API 00783 int GWEN_Gui_OpenDialog(GWEN_DIALOG *dlg, uint32_t guiid); 00784 00785 GWENHYWFAR_API 00786 int GWEN_Gui_CloseDialog(GWEN_DIALOG *dlg); 00787 00788 GWENHYWFAR_API 00789 int GWEN_Gui_RunDialog(GWEN_DIALOG *dlg, int untilEnd); 00790 00791 00792 typedef enum { 00793 GWEN_Gui_FileNameType_OpenFileName=0, 00794 GWEN_Gui_FileNameType_SaveFileName, 00795 GWEN_Gui_FileNameType_OpenDirectory 00796 00797 } GWEN_GUI_FILENAME_TYPE; 00798 00799 00817 GWENHYWFAR_API 00818 int GWEN_Gui_GetFileName(const char *caption, 00819 GWEN_GUI_FILENAME_TYPE fnt, 00820 uint32_t flags, 00821 const char *patterns, 00822 GWEN_BUFFER *pathBuffer, 00823 uint32_t guiid); 00824 00834 GWENHYWFAR_API 00835 int GWEN_Gui_GetSyncIo(const char *url, 00836 const char *defaultProto, 00837 int defaultPort, 00838 GWEN_SYNCIO **pSio); 00839 00840 00851 00853 #define GWEN_GUI_FLAGS_NONINTERACTIVE 0x00000001 00854 00855 #define GWEN_GUI_FLAGS_ACCEPTVALIDCERTS 0x00000002 00856 00857 #define GWEN_GUI_FLAGS_REJECTINVALIDCERTS 0x00000004 00858 00859 #define GWEN_GUI_FLAGS_DIALOGSUPPORTED 0x80000000 00860 00861 GWENHYWFAR_API uint32_t GWEN_Gui_GetFlags(const GWEN_GUI *gui); 00862 GWENHYWFAR_API void GWEN_Gui_SetFlags(GWEN_GUI *gui, uint32_t fl); 00863 GWENHYWFAR_API void GWEN_Gui_AddFlags(GWEN_GUI *gui, uint32_t fl); 00864 GWENHYWFAR_API void GWEN_Gui_SubFlags(GWEN_GUI *gui, uint32_t fl); 00868 GWENHYWFAR_API const char *GWEN_Gui_GetName(); 00869 00870 00871 #ifdef __cplusplus 00872 } 00873 #endif 00874 00878 #endif 00879 00880 00881 00882