ayttm-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Ayttm-commits] CVS: ayttm/src dialog.c,1.19,1.20


From: Colin Leroy <address@hidden>
Subject: [Ayttm-commits] CVS: ayttm/src dialog.c,1.19,1.20
Date: Sat, 22 Mar 2003 07:07:01 -0500

Update of /cvsroot/ayttm/ayttm/src
In directory subversions:/tmp/cvs-serv4439/src

Modified Files:
        dialog.c 
Log Message:
plug ESC and ENTER in dialogs


Index: dialog.c
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/dialog.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- dialog.c    22 Mar 2003 11:32:53 -0000      1.19
+++ dialog.c    22 Mar 2003 12:06:58 -0000      1.20
@@ -27,6 +27,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <gdk/gdkprivate.h>
+#include <gdk/gdkkeysyms.h>
 
 #include "dialog.h"
 #include "gtk_globals.h"
@@ -271,7 +272,12 @@
 
        hbox = gtk_hbox_new(FALSE, 0);
 
-       icon = gdk_pixmap_create_from_xpm_d(w->window, &mask, NULL, xpm);
+       /* w may not be realised, prefer to use statuswindow if it is */
+       if (!w->window && statuswindow)
+               icon = gdk_pixmap_create_from_xpm_d(statuswindow->window, 
&mask, NULL, xpm);
+       else
+               icon = gdk_pixmap_create_from_xpm_d(w->window, &mask, NULL, 
xpm);
+       
        iconwid = gtk_pixmap_new(icon, mask);
        blabel = gtk_label_new(label);
 
@@ -293,12 +299,33 @@
        return button;
 }
 
+typedef struct _dialog_buttons {
+       GtkWidget *yes;
+       GtkWidget *no;
+} dialog_buttons;
+
+static void dialog_close(GtkWidget *widget, GdkEventAny *event, gpointer data)
+{
+       dialog_buttons *b = (dialog_buttons *)data;
+       if (event->type == GDK_KEY_PRESS) {
+               if (((GdkEventKey *)event)->keyval == GDK_Escape) {
+                       gtk_signal_emit_by_name(GTK_OBJECT(b->no), "clicked");
+               } else if (((GdkEventKey *)event)->keyval == GDK_KP_Enter) {
+                       gtk_signal_emit_by_name(GTK_OBJECT(b->yes), "clicked");
+               } else if (((GdkEventKey *)event)->keyval == GDK_Return) {
+                       gtk_signal_emit_by_name(GTK_OBJECT(b->yes), "clicked");
+               }
+                       
+       }
+}
+
 void do_dialog( gchar * message, gchar * title, void (*action)(GtkWidget * 
widget, gpointer data), gpointer data )
 {
        GtkWidget *dialog_window;
        GtkWidget *label;
        GtkWidget *hbox2;
        GtkWidget *button;
+       dialog_buttons *buttons = g_new0(dialog_buttons, 1);
        
        dialog_window = gtk_dialog_new();
        label = gtk_label_new(message);
@@ -319,6 +346,8 @@
        gtk_object_set_user_data(GTK_OBJECT(button), (gpointer)0);
        gtk_widget_show(button);
        
+       buttons->no = button;
+       
        hbox2 = gtk_hbox_new(FALSE,0);
        gtk_box_pack_end(GTK_BOX(hbox2), button, FALSE, FALSE, 0);
 
@@ -331,6 +360,11 @@
                                                          
(gpointer)dialog_window);
        gtk_object_set_user_data(GTK_OBJECT(button), (gpointer)1);
        gtk_widget_show(button);
+
+       buttons->yes = button;
+       
+       gtk_signal_connect(GTK_OBJECT(dialog_window), "key_press_event",
+                          GTK_SIGNAL_FUNC(dialog_close), buttons);
        
        gtk_box_pack_end(GTK_BOX(hbox2), button, FALSE, FALSE, 0);
 
@@ -362,7 +396,8 @@
        GtkWidget *d;
        GtkWidget *label;
        GtkWidget *close, *hbox2;
-
+       dialog_buttons *buttons = g_new0(dialog_buttons, 1);
+       
        d = gtk_dialog_new();
        label = gtk_label_new(message);
        gtk_widget_set_usize(label, 340, -1);
@@ -385,6 +420,11 @@
        gtk_window_set_title(GTK_WINDOW(d), title);
        gtk_window_set_position(GTK_WINDOW(d), GTK_WIN_POS_MOUSE);
        gtk_signal_connect_object(GTK_OBJECT(close), "clicked", 
GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(d));
+       
+       buttons->yes = buttons->no = close;
+       gtk_signal_connect(GTK_OBJECT(d), "key_press_event", 
+                       GTK_SIGNAL_FUNC(dialog_close), buttons);
+
        gtk_window_set_modal(GTK_WINDOW(d), modal);
        gtk_widget_set_usize(d, 350, d->requisition.height<150? 
150:d->requisition.height);
        gtk_widget_show(d);





reply via email to

[Prev in Thread] Current Thread [Next in Thread]