Add UTF8 and Icon Message Box helper
authorAndre Heinecke <aheinecke@intevation.de>
Tue, 20 Feb 2018 14:07:24 +0000 (15:07 +0100)
committerAndre Heinecke <aheinecke@intevation.de>
Tue, 20 Feb 2018 14:07:24 +0000 (15:07 +0100)
* src/common.c (gpgol_message_box): New.
* src/common.h (gpgol_message_box): Declare.
* src/dialogs.h, src/dialogs.rc: Add icon.
* src/icons/Makefile.am (EXTRA_DIST): Add icon.
* src/icons/lock.ico: New.

src/common.c
src/common.h
src/dialogs.h
src/dialogs.rc
src/icons/Makefile.am
src/icons/lock.ico [new file with mode: 0644]

index 5d4c6fb..724aebe 100644 (file)
@@ -38,6 +38,8 @@
 
 #include "common.h"
 
+#include "dialogs.h"
+
 HINSTANCE glob_hinst = NULL;
 
 void
@@ -1028,3 +1030,30 @@ is_elevated()
 
   return ret;
 }
+
+int
+gpgol_message_box (HWND parent, const char *utf8_text,
+                   const char *utf8_caption, UINT type)
+{
+  wchar_t *w_text = utf8_to_wchar (utf8_text);
+  wchar_t *w_caption = utf8_to_wchar (utf8_caption);
+  int ret = 0;
+
+  MSGBOXPARAMSW mbp;
+  mbp.cbSize = sizeof (MSGBOXPARAMS);
+  mbp.hwndOwner = parent;
+  mbp.hInstance = glob_hinst;
+  mbp.lpszText = w_text;
+  mbp.lpszCaption = w_caption;
+  mbp.dwStyle = type | MB_USERICON;
+  mbp.dwLanguageId = MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT);
+  mbp.lpfnMsgBoxCallback = NULL;
+  mbp.dwContextHelpId = 0;
+  mbp.lpszIcon = (LPCWSTR) MAKEINTRESOURCE (IDI_GPGOL_LOCK_ICON);
+
+  ret = MessageBoxIndirectW (&mbp);
+
+  xfree (w_text);
+  xfree (w_caption);
+  return ret;
+}
index d306d16..ed7b87a 100644 (file)
@@ -141,6 +141,9 @@ void log_window_hierarchy (HWND window, const char *fmt,
                            ...) __attribute__ ((format (printf,2,3)));
 
 void bring_to_front (HWND wid);
+
+int gpgol_message_box (HWND parent, const char *utf8_text,
+                       const char *utf8_caption, UINT type);
 #ifdef __cplusplus
 }
 #endif
index 2cce4ad..ff6466c 100644 (file)
 #define IDI_SIGN_ENCRYPT_40_PNG         0x6075
 #define IDI_ENCRYPT_20_PNG              0x6076
 #define IDI_SIGN_20_PNG                 0x6077
+#define IDI_GPGOL_LOCK_ICON             0x6078
 
 /* Status icons */
 #define ENCRYPT_ICON_OFFSET             0x10
index 71409da..aab9831 100644 (file)
@@ -69,6 +69,8 @@ IDI_SIGN_ENCRYPT_40_PNG    RCDATA              "icons/sign-enc-40.png"
 IDI_ENCRYPT_20_PNG         RCDATA              "icons/encrypt-20.png"
 IDI_SIGN_20_PNG            RCDATA              "icons/sign-20.png"
 
+IDI_GPGOL_LOCK_ICON        ICON    DISCARDABLE "icons/lock.ico"
+
 IDB_LOGO                   BITMAP  DISCARDABLE "icons/logo.bmp"
 
 IDD_GPG_OPTIONS  DIALOG DISCARDABLE  0, 0, 266, 274
index 71cf74c..9eaec10 100644 (file)
@@ -31,4 +31,4 @@ EXTRA_DIST= \
     level-2.svg level-2-enc.svg level-2.png level-2-enc.png \
     level-3.svg level-3-enc.svg level-3.png level-3-enc.png \
     level-4.svg level-4-enc.svg level-4.png level-4-enc.png \
-    logo.svg logo.bmp
+    logo.svg logo.bmp lock.ico
diff --git a/src/icons/lock.ico b/src/icons/lock.ico
new file mode 100644 (file)
index 0000000..e721db7
Binary files /dev/null and b/src/icons/lock.ico differ