Make default-cacnel and default-ok work for GTK2
authorWerner Koch <wk@gnupg.org>
Wed, 22 Sep 2010 11:30:06 +0000 (11:30 +0000)
committerWerner Koch <wk@gnupg.org>
Wed, 22 Sep 2010 11:30:06 +0000 (11:30 +0000)
ChangeLog
NEWS
gtk+-2/pinentry-gtk-2.c

index 78b43c4..65fed65 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-09-22  Werner Koch  <wk@g10code.com>
+
+       * gtk+-2/pinentry-gtk-2.c (create_window): Make use of
+       default_cancel and default_ok.
+
 2010-08-19  Werner Koch  <wk@g10code.com>
 
        * gtk+-2/Makefile.am (pinentry_gtk_2_SOURCES): Add gseal-gtk-compat.h.
diff --git a/NEWS b/NEWS
index 53c8238..3f4bb7a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,8 @@ Noteworthy changes in version 0.8.1 (unreleased)
  * The GTK pinentry now always sticks to the top and properly grabs
    the keyboard.
 
+ * The protocol options default-cancel and default-ok now work for the
+   pinnetry-gtk2.
 
 Noteworthy changes in version 0.8.0 (2010-03-03)
 ------------------------------------------------
index 8edd867..4cf34d9 100644 (file)
@@ -1,7 +1,7 @@
 /* pinentry-gtk-2.c
    Copyright (C) 1999 Robert Bihlmeyer <robbe@orcus.priv.at>
    Copyright (C) 2001, 2002, 2007 g10 Code GmbH
-   Copyright (C) 2004 by Albrecht Dreß <albrecht.dress@arcor.de>
+   Copyright (C) 2004 by Albrecht Dreß <albrecht.dress@arcor.de>
 
    pinentry-gtk-2 is a pinentry application for the Gtk+-2 widget set.
    It tries to follow the Gnome Human Interface Guide as close as
@@ -222,6 +222,8 @@ pinentry_utf8_validate (gchar *text)
   if (g_utf8_validate (text, -1, NULL))
     return g_strdup (text);
 
+  /* Failure: Assume that it was encoded in the current locale and
+     convert it to utf-8.  */
   result = g_locale_to_utf8 (text, -1, NULL, NULL, NULL);
   if (!result)
     {
@@ -459,8 +461,20 @@ create_window (int confirm_mode)
           w = gtk_button_new_with_mnemonic (msg);
           g_free (msg);
         }
+      else if (pinentry->default_cancel)
+        {
+          GtkWidget *image;
+
+          msg = pinentry_utf8_validate (pinentry->default_cancel);
+          w = gtk_button_new_with_mnemonic (msg);
+          g_free (msg);
+          image = gtk_image_new_from_stock (GTK_STOCK_CANCEL,
+                                            GTK_ICON_SIZE_BUTTON);
+          if (image)
+            gtk_button_set_image (GTK_BUTTON (w), image);
+        }
       else
-        w = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
+          w = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
       gtk_container_add (GTK_CONTAINER (bbox), w);
       g_signal_connect (G_OBJECT (w), "clicked",
                         G_CALLBACK (confirm_mode ? confirm_button_clicked
@@ -488,6 +502,18 @@ create_window (int confirm_mode)
       w = gtk_button_new_with_mnemonic (msg);
       g_free (msg);
     }
+  else if (pinentry->default_ok)
+    {
+      GtkWidget *image;
+      
+      msg = pinentry_utf8_validate (pinentry->default_ok);
+      w = gtk_button_new_with_mnemonic (msg);
+      g_free (msg);
+      image = gtk_image_new_from_stock (GTK_STOCK_OK,
+                                        GTK_ICON_SIZE_BUTTON);
+      if (image)
+        gtk_button_set_image (GTK_BUTTON (w), image);
+    }
   else
     w = gtk_button_new_from_stock (GTK_STOCK_OK);
   gtk_container_add (GTK_CONTAINER(bbox), w);