[Xfce4-commits] <libxfce4ui:jeromeg/keyboard-shortcuts> Improve the UI of the dialog to grab shortcuts.

Jérôme Guelfucci noreply at xfce.org
Fri Dec 28 15:54:21 CET 2012


Updating branch refs/heads/jeromeg/keyboard-shortcuts
         to 3e158dc0c8b3cbca57d2af07f13780d3337d1ce5 (commit)
       from f29fa617c47ac595d4c13095eb210fdf0b54aad2 (commit)

commit 3e158dc0c8b3cbca57d2af07f13780d3337d1ce5
Author: Jérôme Guelfucci <jeromeg at xfce.org>
Date:   Fri Dec 21 15:05:55 2012 +0100

    Improve the UI of the dialog to grab shortcuts.
    
    Add an explanation string to make it clear that the user is expected to
    press the keys.

 libxfce4kbd-private/xfce-shortcut-dialog.c |   77 ++++++++++++++++++++--------
 1 files changed, 55 insertions(+), 22 deletions(-)

diff --git a/libxfce4kbd-private/xfce-shortcut-dialog.c b/libxfce4kbd-private/xfce-shortcut-dialog.c
index fc5b6fa..f85bff9 100644
--- a/libxfce4kbd-private/xfce-shortcut-dialog.c
+++ b/libxfce4kbd-private/xfce-shortcut-dialog.c
@@ -193,26 +193,35 @@ xfce_shortcut_dialog_create_contents (XfceShortcutDialog *dialog,
                                       const gchar        *action_name,
                                       const gchar        *action)
 {
+  GtkWidget   *content_box;
+  GtkWidget   *alignment;
+  GtkWidget   *box;
   GtkWidget   *button;
-  GtkWidget   *table;
   GtkWidget   *label;
+  const gchar *action_type;
   const gchar *title;
-  const gchar *action_label;
+  gchar       *explanation_label;
 
   if (g_utf8_collate (provider, "xfwm4") == 0)
     {
       title = _("Window Manager Action Shortcut");
-      action_label = _("Action:");
+      /* TRANSLATORS: this string will be used to create an explanation for
+       * the user in a following string */
+      action_type = _("action");
     }
   else if (g_utf8_collate (provider, "commands") == 0)
     {
       title = _("Command Shortcut");
-      action_label = _("Command:");
+      /* TRANSLATORS: this string will be used to create an explanation for
+       * the user in a following string */
+      action_type = _("command");
     }
   else
     {
       title = _("Shortcut");
-      action_label = _("Action:");
+      /* TRANSLATORS: this string will be used to create an explanation for
+       * the user in a following string */
+      action_type = _("action");
     }
 
   /* Set dialog title */
@@ -232,31 +241,55 @@ xfce_shortcut_dialog_create_contents (XfceShortcutDialog *dialog,
   gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, GTK_RESPONSE_CANCEL);
   gtk_widget_show (button);
 
-  table = gtk_table_new (2, 2, FALSE);
-  gtk_table_set_row_spacings (GTK_TABLE (table), 6);
-  gtk_table_set_col_spacings (GTK_TABLE (table), 12);
-  gtk_container_set_border_width (GTK_CONTAINER (table), 12);
-  gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), table);
-  gtk_widget_show (table);
-
-  label = gtk_label_new (action_label);
-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
-  gtk_widget_show (label);
-
-  label = gtk_label_new (action_name);
+  /* Main content container */
+  alignment = gtk_alignment_new (0, 0, 1, 1);
+  gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 6, 12, 0);
+  gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
+                     alignment);
+  gtk_widget_show (alignment);
+
+  #if GTK_CHECK_VERSION (3, 0, 0)
+  content_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
+  #else
+  content_box = gtk_vbox_new (FALSE, 6);
+  #endif
+  gtk_container_set_border_width (GTK_CONTAINER (content_box), 6);
+  gtk_container_add (GTK_CONTAINER (alignment), content_box);
+  gtk_widget_show (content_box);
+
+  /* TRANSLATORS: this creates the explanation for the user. The first %s is replaced
+   * by the action type which you translated earlier, the second %s is replaced by the
+   * action name which comes from somewhere else.
+   * THE ORDER MUSTN'T BE REVERSED! */
+  explanation_label =
+    g_strdup_printf (_("Press now the keyboard keys you want to use to trigger the %s '%s'."),
+                     action_type, action_name);
+
+  label = gtk_label_new (explanation_label);
   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 0, 1);
+  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+  gtk_container_add (GTK_CONTAINER (content_box), label);
   gtk_widget_show (label);
+  g_free (explanation_label);
+
+  /* Box and labels to display the shortcut currently being grabbed.
+   * It will be updated to key-press events. */
+  #if GTK_CHECK_VERSION (3, 0, 0)
+  box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+  #else
+  box = gtk_hbox_new (FALSE, 12);
+  #endif
+  gtk_container_add (GTK_CONTAINER (content_box), box);
+  gtk_widget_show (box);
 
   label = gtk_label_new (_("Shortcut:"));
   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-  gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
+  gtk_container_add (GTK_CONTAINER (box), label);
   gtk_widget_show (label);
 
-  dialog->shortcut_label = gtk_label_new (NULL);
+  dialog->shortcut_label = gtk_label_new (_("No keys pressed yet, proceed."));
   gtk_misc_set_alignment (GTK_MISC (dialog->shortcut_label), 0.0, 0.5);
-  gtk_table_attach_defaults (GTK_TABLE (table), dialog->shortcut_label, 1, 2, 1, 2);
+  gtk_container_add (GTK_CONTAINER (box), dialog->shortcut_label);
   gtk_widget_show (dialog->shortcut_label);
 
   /* Connect to key release signal for determining the new shortcut */


More information about the Xfce4-commits mailing list