Add gpgol_bug helper function
authorAndre Heinecke <aheinecke@intevation.de>
Mon, 26 Mar 2018 14:13:36 +0000 (16:13 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Mon, 26 Mar 2018 14:13:36 +0000 (16:13 +0200)
* src/common.c, src/common.h (gpgol_bug): New.
* src/mail.cpp (do_crypt): Use it.

--
This is a little helper to reuse the same message if we
think a user visible error / bug should be done.

src/common.c
src/common.h
src/mail.cpp

index adda352..6f1ac56 100644 (file)
@@ -1058,6 +1058,22 @@ gpgol_message_box (HWND parent, const char *utf8_text,
   return ret;
 }
 
+void
+gpgol_bug (HWND parent, int code)
+{
+  const char *bugmsg = utf8_gettext ("Operation failed.\n\n"
+                "This is usually caused by a bug in GpgOL or an error in your setup.\n"
+                "Please see https://www.gpg4win.org/reporting-bugs.html "
+                "or ask your Administrator for support.");
+  char *with_code;
+  gpgrt_asprintf (&with_code, "%s\nCode: %i", bugmsg, code);
+  gpgol_message_box (parent,
+                     with_code,
+                     _("GpgOL Error"), MB_OK);
+  xfree (with_code);
+  return;
+}
+
 static char*
 expand_path (const char *path)
 {
index c8e32df..7f13d04 100644 (file)
@@ -150,6 +150,13 @@ void bring_to_front (HWND wid);
 
 int gpgol_message_box (HWND parent, const char *utf8_text,
                        const char *utf8_caption, UINT type);
+
+/* Show a bug message with the code. */
+void gpgol_bug (HWND parent, int code);
+
+#define ERR_CRYPT_RESOLVER_FAILED 1
+#define ERR_WANTS_SEND_MIME_BODY 2
+#define ERR_WANTS_SEND_INLINE_BODY 3
 #ifdef __cplusplus
 }
 #endif
index 0cd9259..3855300 100644 (file)
@@ -824,12 +824,8 @@ do_crypt (LPVOID arg)
     {
       mail->reset_crypter ();
       crypter = nullptr;
-      gpgol_message_box (mail->get_window (),
-                         utf8_gettext ("Sign / Encrypt failed.\n\n"
-                         "This is usually caused by an error in your system.\n"
-                         "Please refer to the Gpg4win compendium how to enable debugging in GpgOL,"
-                         "or ask your Administrator for support."),
-                         _("GpgOL"), MB_OK);
+      gpgol_bug (mail->get_window (),
+                 ERR_CRYPT_RESOLVER_FAILED);
     }
 
   mail->set_window_enabled (true);