37 #include <glib/gi18n.h>
47 arguments->
state =
event->state;
48 arguments->
keyval = gdk_keyval_to_lower(event->keyval);
49 gtk_dialog_response(GTK_DIALOG(gtk_widget_get_toplevel(widget)),
50 event->keyval == GDK_KEY_Escape ? GTK_RESPONSE_CANCEL : GTK_RESPONSE_OK);
59 gtk_switch_set_state(GTK_SWITCH(widget), state);
75 dialog = GTK_DIALOG(gtk_builder_get_object(builder,
"KeyChooserDialog"));
76 gtk_window_set_transient_for(GTK_WINDOW(dialog), parent_window);
79 g_signal_connect(gtk_builder_get_object(builder,
"switch_option_key_modifier"),
"state-set",
83 g_signal_connect(gtk_builder_get_object(builder,
"eventbox_key_chooser"),
"key-press-event",
87 arguments->
response = gtk_dialog_run(dialog);
88 gtk_widget_destroy(GTK_WIDGET(dialog));
90 if (arguments->
response == GTK_RESPONSE_REJECT)
101 return g_strdup(KEY_CHOOSER_NONE);
103 return g_strdup_printf(
"%s%s%s%s%s%s%s",
104 (state & GDK_SHIFT_MASK) ? KEY_MODIFIER_SHIFT :
"",
105 (state & GDK_CONTROL_MASK) ? KEY_MODIFIER_CTRL :
"",
106 (state & GDK_MOD1_MASK) ? KEY_MODIFIER_ALT :
"",
107 (state & GDK_SUPER_MASK) ? KEY_MODIFIER_SUPER :
"",
108 (state & GDK_HYPER_MASK) ? KEY_MODIFIER_HYPER :
"",
109 (state & GDK_META_MASK) ? KEY_MODIFIER_META :
"",
110 gdk_keyval_name(gdk_keyval_to_upper(keyval)));
116 TRACE_CALL(__func__);
132 if (g_strcmp0(value, KEY_CHOOSER_NONE) == 0)
136 newvalue = g_strdup(value);
137 for (i = 0; i < g_strv_length(patterns); i++) {
140 newvalue = g_strdup(tmpvalue);
143 keyval = gdk_keyval_to_lower(gdk_keyval_from_name(newvalue));
static gboolean remmina_key_chooser_dialog_on_key_press(GtkWidget *widget, GdkEventKey *event, RemminaKeyChooserArguments *arguments)
gchar * remmina_key_chooser_get_value(guint keyval, guint state)
RemminaKeyChooserArguments * remmina_key_chooser_new(GtkWindow *parent_window, gboolean use_modifiers)
guint remmina_key_chooser_get_keyval(const gchar *value)
void remmina_key_chooser_dialog_set_option_modifier(GtkWidget *widget, gboolean state, RemminaKeyChooserArguments *arguments)
GtkBuilder * remmina_public_gtk_builder_new_from_resource(gchar *resource)
gchar * remmina_public_str_replace(const gchar *string, const gchar *search, const gchar *replacement)