support localized key names (interim fix for #145346)
2007-02-04 Jens Granseuer <jensgr@gmx.net> * eggaccelerators.c: (egg_virtual_accelerator_name), (egg_virtual_accelerator_label): * eggaccelerators.h: * eggcellrendererkeys.c: (convert_keysym_state_to_string): * gnome-keybinding-properties.c: (binding_name), (accel_edited_callback): support localized key names (interim fix for #145346) svn path=/trunk/; revision=7242
This commit is contained in:
parent
b3af3ba4ba
commit
765e80f953
5 changed files with 62 additions and 7 deletions
|
@ -1,3 +1,13 @@
|
|||
2007-02-04 Jens Granseuer <jensgr@gmx.net>
|
||||
|
||||
* eggaccelerators.c: (egg_virtual_accelerator_name),
|
||||
(egg_virtual_accelerator_label):
|
||||
* eggaccelerators.h:
|
||||
* eggcellrendererkeys.c: (convert_keysym_state_to_string):
|
||||
* gnome-keybinding-properties.c: (binding_name),
|
||||
(accel_edited_callback): support localized key names (interim fix
|
||||
for #145346)
|
||||
|
||||
2007-02-03 Jens Granseuer <jensgr@gmx.net>
|
||||
|
||||
* gnome-keybinding-properties.c: (accel_edited_callback): filter
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include <string.h>
|
||||
#include <gdk/gdkx.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
#include <gtk/gtkaccelgroup.h>
|
||||
|
||||
enum
|
||||
{
|
||||
|
@ -367,7 +368,6 @@ egg_accelerator_parse_virtual (const gchar *accelerator,
|
|||
return !bad_keyval;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* egg_virtual_accelerator_name:
|
||||
* @accelerator_key: accelerator keyval
|
||||
|
@ -398,14 +398,15 @@ egg_virtual_accelerator_name (guint accelerator_key,
|
|||
static const gchar text_super[] = "<Super>";
|
||||
static const gchar text_hyper[] = "<Hyper>";
|
||||
guint l;
|
||||
gchar *keyval_name;
|
||||
gchar *keyval_name, *str = NULL;
|
||||
gchar *accelerator;
|
||||
|
||||
accelerator_mods &= EGG_VIRTUAL_MODIFIER_MASK;
|
||||
|
||||
if (!accelerator_key)
|
||||
{
|
||||
keyval_name = g_strdup_printf ("0x%02x", keycode);
|
||||
str = g_strdup_printf ("0x%02x", keycode);
|
||||
keyval_name = str;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -500,10 +501,48 @@ egg_virtual_accelerator_name (guint accelerator_key,
|
|||
}
|
||||
|
||||
strcpy (accelerator + l, keyval_name);
|
||||
g_free (str);
|
||||
|
||||
return accelerator;
|
||||
}
|
||||
|
||||
/**
|
||||
* egg_virtual_accelerator_label:
|
||||
* @accelerator_key: accelerator keyval
|
||||
* @accelerator_mods: accelerator modifier mask
|
||||
* @returns: a newly-allocated accelerator label
|
||||
*
|
||||
* Converts an accelerator keyval and modifier mask
|
||||
* into a (possibly translated) string that can be displayed to
|
||||
* a user.
|
||||
* For example, if you pass in #GDK_q and #EGG_VIRTUAL_CONTROL_MASK,
|
||||
* and you use a German locale, this function returns "Strg+Q".
|
||||
*
|
||||
* The caller of this function must free the returned string.
|
||||
*/
|
||||
gchar*
|
||||
egg_virtual_accelerator_label (guint accelerator_key,
|
||||
guint keycode,
|
||||
EggVirtualModifierType accelerator_mods)
|
||||
{
|
||||
gchar *gtk_label;
|
||||
GdkModifierType gdkmods;
|
||||
|
||||
egg_keymap_resolve_virtual_modifiers (gdk_keymap_get_default (),
|
||||
accelerator_mods, &gdkmods);
|
||||
gtk_label = gtk_accelerator_get_label (accelerator_key, gdkmods);
|
||||
|
||||
if (!accelerator_key)
|
||||
{
|
||||
gchar *label;
|
||||
label = g_strdup_printf ("%s0x%02x", gtk_label, keycode);
|
||||
g_free (gtk_label);
|
||||
return label;
|
||||
}
|
||||
|
||||
return gtk_label;
|
||||
}
|
||||
|
||||
void
|
||||
egg_keymap_resolve_virtual_modifiers (GdkKeymap *keymap,
|
||||
EggVirtualModifierType virtual_mods,
|
||||
|
|
|
@ -83,6 +83,10 @@ gchar* egg_virtual_accelerator_name (guint accelerator_key,
|
|||
guint keycode,
|
||||
EggVirtualModifierType accelerator_mods);
|
||||
|
||||
gchar* egg_virtual_accelerator_label (guint accelerator_key,
|
||||
guint keycode,
|
||||
EggVirtualModifierType accelerator_mods);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
||||
|
|
|
@ -241,7 +241,7 @@ convert_keysym_state_to_string (guint keysym,
|
|||
if (keysym == 0 && keycode == 0)
|
||||
return g_strdup (_("Disabled"));
|
||||
else
|
||||
return egg_virtual_accelerator_name (keysym, keycode, mask);
|
||||
return egg_virtual_accelerator_label (keysym, keycode, mask);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -181,7 +181,9 @@ binding_name (guint keyval,
|
|||
gboolean translate)
|
||||
{
|
||||
if (keyval != 0 || keycode != 0)
|
||||
return egg_virtual_accelerator_name (keyval, keycode, mask);
|
||||
return translate ?
|
||||
egg_virtual_accelerator_label (keyval, keycode, mask) :
|
||||
egg_virtual_accelerator_name (keyval, keycode, mask);
|
||||
else
|
||||
return translate ? g_strdup (_("Disabled")) : g_strdup ("disabled");
|
||||
}
|
||||
|
@ -672,7 +674,7 @@ accel_edited_callback (GtkCellRendererText *cell,
|
|||
GtkWidget *dialog;
|
||||
char *name;
|
||||
|
||||
name = egg_virtual_accelerator_name (keyval, keycode, mask);
|
||||
name = binding_name (keyval, keycode, mask, TRUE);
|
||||
|
||||
dialog =
|
||||
gtk_message_dialog_new (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (view))),
|
||||
|
@ -701,7 +703,7 @@ accel_edited_callback (GtkCellRendererText *cell,
|
|||
GtkWidget *dialog;
|
||||
char *name;
|
||||
|
||||
name = egg_virtual_accelerator_name (keyval, keycode, mask);
|
||||
name = binding_name (keyval, keycode, mask, TRUE);
|
||||
|
||||
dialog =
|
||||
gtk_message_dialog_new (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (view))),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue