New command SETTITLE.
authorWerner Koch <wk@gnupg.org>
Wed, 12 Nov 2008 11:21:39 +0000 (11:21 +0000)
committerWerner Koch <wk@gnupg.org>
Wed, 12 Nov 2008 11:21:39 +0000 (11:21 +0000)
ChangeLog
TODO
doc/pinentry.texi
gtk+-2/pinentry-gtk-2.c
pinentry/pinentry.c
pinentry/pinentry.h

index 35dce69..98ac474 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-11-12  Ludovic Rousseau <ludovic.rousseau@gmail.com>  (wk)
+
+       * pinentry/pinentry.h (struct pinentry): Add field TITLE.
+       * pinentry/pinentry.c (cmd_settitle): New.
+       (register_commands): Add command SETTITLE.
+       * gtk+-2/pinentry-gtk-2.c (create_window): Set the title.
+
 2008-10-17  Werner Koch  <wk@g10code.com>
 
        * secmem/memory.h: Add C++ extern declaration.
 2008-10-17  Werner Koch  <wk@g10code.com>
 
        * secmem/memory.h: Add C++ extern declaration.
diff --git a/TODO b/TODO
index 1380c98..e287c4c 100644 (file)
--- a/TODO
+++ b/TODO
@@ -21,3 +21,4 @@
 * The format of the Assuan protocol description should be changed to
   the one used by GnuPG.
   
 * The format of the Assuan protocol description should be changed to
   the one used by GnuPG.
   
+* The SETTITLE command is only implemented for GTK+-2
index b7af6e7..617f9eb 100644 (file)
@@ -251,6 +251,15 @@ passphrase entry.
   S: OK
 @end example
 
   S: OK
 @end example
 
+@item Set the window title
+This command may be used to change the default window title.  When
+using this feature you should take care that the window is still
+identifiable as the pinentry.
+@example
+  C: SETTITLE Tape Recorder Room
+  S: OK
+@end example
+
 @item Set the button texts
 There are two text with can be set to override the English defaults:
 
 @item Set the button texts
 There are two text with can be set to override the English defaults:
 
index 9775f7f..8d33f36 100644 (file)
@@ -321,6 +321,11 @@ create_window (int confirm_mode)
   box = gtk_vbox_new (FALSE, HIG_SMALL);
   gtk_box_pack_start (GTK_BOX (chbox), box, TRUE, TRUE, 0);
 
   box = gtk_vbox_new (FALSE, HIG_SMALL);
   gtk_box_pack_start (GTK_BOX (chbox), box, TRUE, TRUE, 0);
 
+  if (pinentry->title)
+    {
+      msg = pinentry_utf8_validate (pinentry->title);
+      gtk_window_set_title (GTK_WINDOW(win), msg);
+    }
   if (pinentry->description)
     {
       msg = pinentry_utf8_validate (pinentry->description);
   if (pinentry->description)
     {
       msg = pinentry_utf8_validate (pinentry->description);
index 7e53f00..0f5a8b2 100644 (file)
@@ -48,6 +48,7 @@ static char this_pgmname[50];
 
 struct pinentry pinentry =
   {
 
 struct pinentry pinentry =
   {
+    NULL,      /* Title.  */
     NULL,      /* Description.  */
     NULL,      /* Error.  */
     NULL,      /* Prompt.  */
     NULL,      /* Description.  */
     NULL,      /* Error.  */
     NULL,      /* Prompt.  */
@@ -745,6 +746,21 @@ cmd_setcancel (ASSUAN_CONTEXT ctx, char *line)
 }
 
 
 }
 
 
+static int
+cmd_settitle (ASSUAN_CONTEXT ctx, char *line)
+{
+  char *newt;
+  newt = malloc (strlen (line) + 1);
+  
+  if (!newt)
+    return ASSUAN_Out_Of_Core;
+  
+  strcpy_escaped (newt, line);
+  if (pinentry.title)
+    free (pinentry.title);
+  pinentry.title = newt;
+  return 0;
+}
 
 static int
 cmd_setqualitybar (ASSUAN_CONTEXT ctx, char *line)
 
 static int
 cmd_setqualitybar (ASSUAN_CONTEXT ctx, char *line)
@@ -947,6 +963,7 @@ register_commands (ASSUAN_CONTEXT ctx)
       { "SETQUALITYBAR", 0,  cmd_setqualitybar },
       { "SETQUALITYBAR_TT", 0,  cmd_setqualitybar_tt },
       { "GETINFO",    0,  cmd_getinfo },
       { "SETQUALITYBAR", 0,  cmd_setqualitybar },
       { "SETQUALITYBAR_TT", 0,  cmd_setqualitybar_tt },
       { "GETINFO",    0,  cmd_getinfo },
+      { "SETTITLE",   0,  cmd_settitle },
       { NULL }
     };
   int i, j, rc;
       { NULL }
     };
   int i, j, rc;
index 55a5894..d17e790 100644 (file)
@@ -38,6 +38,8 @@ typedef enum {
 
 struct pinentry
 {
 
 struct pinentry
 {
+  /* The window title, or NULL.  */
+  char *title;
   /* The description to display, or NULL.  */
   char *description;
   /* The error message to display, or NULL.  */
   /* The description to display, or NULL.  */
   char *description;
   /* The error message to display, or NULL.  */