38 #include <glib/gi18n.h> 48 arguments->
state =
event->state;
49 arguments->
keyval = gdk_keyval_to_lower(event->keyval);
50 gtk_dialog_response(GTK_DIALOG(gtk_widget_get_toplevel(widget)),
51 event->keyval == GDK_KEY_Escape ? GTK_RESPONSE_CANCEL : GTK_RESPONSE_OK);
68 dialog = GTK_DIALOG(gtk_builder_get_object(builder,
"KeyChooserDialog"));
69 gtk_window_set_transient_for(GTK_WINDOW(dialog), parent_window);
71 g_signal_connect(gtk_builder_get_object(builder,
"eventbox_key_chooser"),
"key-press-event",
74 arguments->
response = gtk_dialog_run(dialog);
75 gtk_widget_destroy(GTK_WIDGET(dialog));
77 if (arguments->
response == GTK_RESPONSE_REJECT)
88 return g_strdup(KEY_CHOOSER_NONE);
90 return g_strdup_printf(
"%s%s%s%s%s%s%s",
91 (state & GDK_SHIFT_MASK) ? KEY_MODIFIER_SHIFT :
"",
92 (state & GDK_CONTROL_MASK) ? KEY_MODIFIER_CTRL :
"",
93 (state & GDK_MOD1_MASK) ? KEY_MODIFIER_ALT :
"",
94 (state & GDK_SUPER_MASK) ? KEY_MODIFIER_SUPER :
"",
95 (state & GDK_HYPER_MASK) ? KEY_MODIFIER_HYPER :
"",
96 (state & GDK_META_MASK) ? KEY_MODIFIER_META :
"",
97 gdk_keyval_name(gdk_keyval_to_upper(keyval)));
103 TRACE_CALL(__func__);
119 if (g_strcmp0(value, KEY_CHOOSER_NONE) == 0)
123 newvalue = g_strdup(value);
124 for (i = 0; i < g_strv_length(patterns); i++) {
127 newvalue = g_strdup(tmpvalue);
130 keyval = gdk_keyval_to_lower(gdk_keyval_from_name(newvalue));
RemminaKeyChooserArguments * remmina_key_chooser_new(GtkWindow *parent_window, gboolean use_modifiers)
GtkBuilder * remmina_public_gtk_builder_new_from_file(gchar *filename)
static gboolean remmina_key_chooser_dialog_on_key_press(GtkWidget *widget, GdkEventKey *event, RemminaKeyChooserArguments *arguments)
gchar * remmina_public_str_replace(const gchar *string, const gchar *search, const gchar *replacement)
guint remmina_key_chooser_get_keyval(const gchar *value)
gchar * remmina_key_chooser_get_value(guint keyval, guint state)