A problem with the button_press.
- From: Ana Gutiérrez Pascual <al004180 alumail uji es>
- To: gtk-list gnome org
- Subject: A problem with the button_press.
- Date: Thu, 9 Jan 2003 12:12:06 +0100
/*
Hi everybody, I'm new in GTK.
My problem is how can I know I'm clicking in any line of my rectangle
'cause when I used the function button_press_event there's nothing
new, and I want to know when I'm clicking in the rectangle, any idea?
See the code bellow.
thnanks in advance,
ana*/
#include <gtk/gtk.h>
typedef struct {
GtkWidget *window;
GtkWidget *drawing_area;
GdkGC *drawing_area_gc;
} MyApp;
void pinta_rectangle(GdkWindow *window,
GdkGC *gc,
double line_width,
gint x,
gint y,
gint width,
gint height)
{
gdk_gc_set_line_attributes(gc,
line_width,
GDK_LINE_SOLID,
GDK_CAP_ROUND,
GDK_JOIN_ROUND);
gdk_draw_rectangle(window, gc, FALSE, x, y, width, height);
}
void rectangle1(MyApp *app)
{
pinta_rectangle(app->drawing_area->window,
app->drawing_area_gc,
5,/*grosor linea*/
20, 20,
50, 50);
}
gboolean event_handler (GtkWidget *drawing_area,
GdkEvent *event,
gpointer client_data)
{
if (event->type == GDK_EXPOSE)
rectangle1((MyApp*)client_data);
return 1;
}
gboolean button_press_event (GtkWidget *drawing_area,
GdkEvent *event,
gpointer client_data)
{
g_print("hi\n");
return 1;
}
gint main (gint argc,gchar *argv[])
{
MyApp app;
GtkWidget *vbox;
GtkWidget *button;
gtk_init (&argc, &argv);
app.window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_name (app.window, "Disseny");
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (app.window), vbox);
gtk_widget_show (vbox);
gtk_signal_connect (GTK_OBJECT (app.window), "destroy",
GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
app.drawing_area = gtk_drawing_area_new ();
gtk_drawing_area_size (GTK_DRAWING_AREA(app.drawing_area),
300, 200);
gtk_box_pack_start (GTK_BOX (vbox), app.drawing_area, TRUE, TRUE, 0);
gtk_widget_show (app.drawing_area);
gtk_signal_connect (GTK_OBJECT(app.drawing_area),
"event",
GTK_SIGNAL_FUNC(event_handler),
&app);
gtk_signal_connect (GTK_OBJECT (app.drawing_area), "button_press_event",
GTK_SIGNAL_FUNC(button_press_event), NULL);
gtk_widget_set_events (app.drawing_area, GDK_EXPOSURE_MASK
| GDK_LEAVE_NOTIFY_MASK
| GDK_BUTTON_PRESS_MASK);
gtk_widget_realize (app.window);
app.drawing_area_gc = gdk_gc_new (app.window->window);
/*botón Salir*/
button = gtk_button_new_with_label ("Salir");
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (gtk_widget_destroy),
GTK_OBJECT (app.window));
gtk_widget_show (button);
gtk_widget_show (app.window);
gtk_main ();
return 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]