gwenhywfar 4.0.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 
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