gwenhywfar  4.3.3
gui.h
Go to the documentation of this file.
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 
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