Re: gtk_connect_signal_object HELP PLEASE !
- From: "Billy N. Patton" <bpatton dal asp ti com>
- To: Paul Barton-Davis <pbd op net>
- Cc: Gtk users <gtk-list gnome org>
- Subject: Re: gtk_connect_signal_object HELP PLEASE !
- Date: Fri, 8 Dec 2000 12:00:29 -0600 (CST)
I'm trying to get the xy coords, while cursor is on canvas, to display
those coords in the status bar.
Here's my program : Please HELP !
#include "gtk/gtk.h"
static gint context_id;
static GdkPixmap *pixmap = NULL;
static int canvas_x;
static int canvas_y;
laff_db *db;
cell_p fcellp;
/* Create a new backing pixmap of the appropriate size */
static gint configure_event( GtkWidget *widget,
GdkEventConfigure *event )
{
if (pixmap)
gdk_pixmap_unref(pixmap);
canvas_x = widget->allocation.width;
canvas_y = widget->allocation.height;
pixmap = gdk_pixmap_new(widget->window,
widget->allocation.width,
widget->allocation.height,
-1);
gdk_draw_rectangle (pixmap,
widget->style->black_gc,
TRUE,
0, 0,
widget->allocation.width,
widget->allocation.height);
return TRUE;
}
/* Redraw the screen from the backing pixmap */
static gint expose_event( GtkWidget *widget,GdkEventExpose *event )
{
gdk_draw_pixmap(widget->window,
widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
pixmap,
event->area.x, event->area.y,
event->area.x, event->area.y,
event->area.width, event->area.height);
return FALSE;
}
static void draw_brush( GtkWidget *widget,gdouble x,gdouble y)
{
GdkRectangle update_rect;
update_rect.x = x - 5;
update_rect.y = y - 5;
update_rect.width = 10;
update_rect.height = 10;
gdk_draw_rectangle (pixmap,widget->style->black_gc,TRUE,
update_rect.x, update_rect.y,
update_rect.width, update_rect.height);
gtk_widget_draw (widget, &update_rect);
}
static gint motion_notify_event( GtkWidget *widget,GdkEventMotion *event
)
{
int x, y;
GdkModifierType state;
gchar buffer[64];
static gint message_id = INT_MIN;
if (event->is_hint)
gdk_window_get_pointer (event->window, &x, &y, &state);
else
{
x = event->x;
y = event->y;
state = event->state;
}
sprintf(buffer,"XY : %d,%d",x,y);
g_print("buffer = %s\n",buffer);
if (message_id NE INT_MIN)
gtk_statusbar_remove(GTK_STATUSBAR(widget)
,context_id,message_id);
message_id = gtk_statusbar_push(GTK_STATUSBAR(widget)
,context_id,buffer);
return TRUE;
}
int main( int argc,char *argv[] )
{
GtkWidget *mw,*menu_bar,*vbox,*drawing_area,*status_bar;
gtk_init (&argc, &argv);
mw = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (mw), "LaffEdit");
gtk_signal_connect(GTK_OBJECT (mw), "delete_event"
,(GtkSignalFunc) gtk_main_quit, NULL);
vbox = gtk_vbox_new(FALSE, 5);
gtk_container_add(GTK_CONTAINER(mw), vbox);
gtk_widget_show(vbox);
menu_bar = gtk_menu_bar_new();
gtk_box_pack_start(GTK_BOX(vbox), menu_bar,FALSE,TRUE,0);
gtk_widget_show(menu_bar);
drawing_area = gtk_drawing_area_new();
gtk_box_pack_start(GTK_BOX(vbox), drawing_area,FALSE,TRUE,0);
gtk_drawing_area_size(GTK_DRAWING_AREA(drawing_area),400,200);
gtk_widget_show(drawing_area);
gtk_signal_connect (GTK_OBJECT (drawing_area), "expose_event",
(GtkSignalFunc) expose_event, NULL);
gtk_signal_connect (GTK_OBJECT(drawing_area),"configure_event",
(GtkSignalFunc) configure_event, NULL);
gtk_widget_set_events (drawing_area
, GDK_EXPOSURE_MASK
| GDK_LEAVE_NOTIFY_MASK
| GDK_BUTTON_PRESS_MASK
| GDK_POINTER_MOTION_MASK
| GDK_POINTER_MOTION_HINT_MASK);
status_bar = gtk_statusbar_new();
gtk_container_add(GTK_CONTAINER(vbox), status_bar);
gtk_widget_set_usize(status_bar,400,30);
context_id = gtk_statusbar_get_context_id(GTK_STATUSBAR(status_bar),"MyId");
gtk_signal_connect_object(GTK_OBJECT (status_bar)
,"motion_notify_event"
,(GtkSignalFunc) motion_notify_event
,GTK_OBJECT (drawing_area));
gtk_widget_show(status_bar);
gtk_widget_show (mw);
gtk_main ();
return(0);
}
=========+=========+=========+=========+=========+=========+=========+
___ _ ____ ___ __ __
/ _ )(_) / /_ __ / _ \___ _/ /_/ /____ ___
/ _ / / / / // / / ___/ _ `/ __/ __/ _ \/ _ \
/____/_/_/_/\_, / /_/ \_,_/\__/\__/\___/_//_/
/___/
Texas Instruments ASIC Circuit Design Methology Group
Dallas, Texas
214-480-4455
bpatton dal asp ti com
=========+=========+=========+=========+=========+=========+=========+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]