From 5b7821faa63e3ec0210f7bf1d28baf0496db8423 Mon Sep 17 00:00:00 2001 From: Mandrake Date: Fri, 11 Feb 2000 22:36:18 +0000 Subject: [PATCH] oops, forgot that part :) SVN revision: 2051 --- viewer.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- viewer.h | 2 ++ 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/viewer.c b/viewer.c index 93cc3c0..60f5730 100644 --- a/viewer.c +++ b/viewer.c @@ -2,6 +2,8 @@ #include #include #include +#include +#include #include #include #include "viewer.h" @@ -149,7 +151,58 @@ static ActionOpt actions[] = { }; -void e_cb_modifier(GtkWidget * widget, gpointer data) { +void +e_cb_key_change(GtkWidget * widget, gpointer data) +{ + GtkWidget *win, *label, *frame, *align; + + if(data) + widget = NULL; + + win = gtk_window_new(GTK_WINDOW_POPUP); + gtk_window_set_policy(GTK_WINDOW(win), 0, 0, 1); + gtk_window_set_position(GTK_WINDOW(win), GTK_WIN_POS_MOUSE); + frame = gtk_frame_new(NULL); + gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_OUT); + align = gtk_alignment_new(0.0, 0.0, 0.0, 0.0); + gtk_container_set_border_width(GTK_CONTAINER(align), 32); + label = gtk_label_new("Please press the key on the keyboard\n" + "you wish to modify this keyboard-shortcut\n" + "to use from now on."); + gtk_container_add(GTK_CONTAINER(win), frame); + gtk_container_add(GTK_CONTAINER(frame), align); + gtk_container_add(GTK_CONTAINER(align), label); + gtk_widget_show_all(win); + while (gtk_events_pending()) + gtk_main_iteration(); + gdk_flush(); + while (gtk_events_pending()) + gtk_main_iteration(); + + { + char *key; + XEvent ev; + + gdk_window_set_events(win->window, GDK_KEY_PRESS_MASK); + XSetInputFocus(GDK_DISPLAY(), GDK_WINDOW_XWINDOW(win->window), + RevertToPointerRoot, CurrentTime); + gdk_keyboard_grab(win->window, TRUE, CurrentTime); + XWindowEvent(GDK_DISPLAY(), GDK_WINDOW_XWINDOW(win->window), + KeyPressMask, &ev); + gdk_keyboard_ungrab(gdk_time_get()); + key = XKeysymToString(XKeycodeToKeysym(GDK_DISPLAY(), + ev.xkey.keycode, 0)); + gtk_entry_set_text(GTK_ENTRY(act_key),key); + gtk_clist_set_text(GTK_CLIST(clist),last_row,1,key); + } + + gtk_widget_destroy(win); +} + + +void +e_cb_modifier(GtkWidget * widget, gpointer data) +{ gint value; @@ -568,6 +621,8 @@ create_list_window(void) gtk_widget_show(button); gtk_table_attach(GTK_TABLE(table), button, 2, 3, 0, 1, GTK_EXPAND | GTK_FILL, (GtkAttachOptions) (0), 0, 0); + gtk_signal_connect(GTK_OBJECT(button),"clicked", + GTK_SIGNAL_FUNC(e_cb_key_change),NULL); @@ -605,7 +660,6 @@ create_list_window(void) gtk_signal_connect(GTK_OBJECT(entry),"changed", GTK_SIGNAL_FUNC(on_change_params),NULL); - scrollybit = gtk_scrolled_window_new(NULL, NULL); gtk_widget_show(scrollybit); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollybit), diff --git a/viewer.h b/viewer.h index 5f5bf50..6fb88c2 100644 --- a/viewer.h +++ b/viewer.h @@ -8,6 +8,8 @@ char *atword(char *s, int num); void change_action(GtkWidget *my_clist, gint row, gint column, GdkEventButton *event, gpointer data); void on_change_params(GtkWidget *widget, gpointer user_data); +void e_cb_key_change(GtkWidget * widget, gpointer data); + GtkTooltips *tooltips; GtkAccelGroup *accel_group;