109
on_enter_notify (GooCanvasItemView *view,
110
GooCanvasItemView *target,
109
on_enter_notify (GooCanvasItem *item,
110
GooCanvasItem *target,
111
111
GdkEventCrossing *event,
114
GooCanvasItem *item = goo_canvas_item_view_get_item (target);
115
114
char *item_id = g_object_get_data (G_OBJECT (item), "id");
117
116
g_print ("%s received 'enter-notify' signal\n", item_id);
123
on_leave_notify (GooCanvasItemView *view,
124
GooCanvasItemView *target,
122
on_leave_notify (GooCanvasItem *item,
123
GooCanvasItem *target,
125
124
GdkEventCrossing *event,
128
GooCanvasItem *item = goo_canvas_item_view_get_item (target);
129
127
char *item_id = g_object_get_data (G_OBJECT (item), "id");
131
129
g_print ("%s received 'leave-notify' signal\n", item_id);
137
on_motion_notify (GooCanvasItemView *view,
138
GooCanvasItemView *target,
135
on_motion_notify (GooCanvasItem *item,
136
GooCanvasItem *target,
139
137
GdkEventMotion *event,
142
GooCanvasItem *item = goo_canvas_item_view_get_item (target);
143
140
char *item_id = g_object_get_data (G_OBJECT (item), "id");
145
142
g_print ("%s received 'motion-notify' signal\n", item_id);
151
on_button_press (GooCanvasItemView *view,
152
GooCanvasItemView *target,
148
on_button_press (GooCanvasItem *item,
149
GooCanvasItem *target,
153
150
GdkEventButton *event,
156
GooCanvasItem *item = goo_canvas_item_view_get_item (target);
157
153
char *item_id = g_object_get_data (G_OBJECT (item), "id");
159
155
g_print ("%s received 'button-press' signal\n", item_id);
161
157
if (strstr (item_id, "explicit"))
163
GooCanvasView *canvas_view;
164
160
GdkGrabStatus status;
165
161
GdkEventMask mask = GDK_BUTTON_PRESS_MASK
166
162
| GDK_BUTTON_RELEASE_MASK
169
165
| GDK_ENTER_NOTIFY_MASK
170
166
| GDK_LEAVE_NOTIFY_MASK;
172
canvas_view = goo_canvas_item_view_get_canvas_view (view);
173
status = goo_canvas_view_pointer_grab (canvas_view, view, mask, NULL,
168
canvas = goo_canvas_item_get_canvas (item);
169
status = goo_canvas_pointer_grab (canvas, item, mask, NULL, event->time);
175
170
if (status == GDK_GRAB_SUCCESS)
176
171
g_print ("grabbed pointer\n");
186
on_button_release (GooCanvasItemView *view,
187
GooCanvasItemView *target,
181
on_button_release (GooCanvasItem *item,
182
GooCanvasItem *target,
188
183
GdkEventButton *event,
191
GooCanvasItem *item = goo_canvas_item_view_get_item (target);
192
186
char *item_id = g_object_get_data (G_OBJECT (item), "id");
194
188
g_print ("%s received 'button-release' signal\n", item_id);
196
190
if (strstr (item_id, "explicit"))
198
GooCanvasView *canvas_view;
200
canvas_view = goo_canvas_item_view_get_canvas_view (view);
201
goo_canvas_view_pointer_ungrab (canvas_view, view, event->time);
194
canvas = goo_canvas_item_get_canvas (item);
195
goo_canvas_pointer_ungrab (canvas, item, event->time);
202
196
g_print ("released pointer grab\n");
322
on_item_view_created (GooCanvasView *view,
323
GooCanvasItemView *item_view,
316
setup_item_signals (GooCanvasItem *item)
327
if (GOO_IS_CANVAS_RECT (item))
329
g_signal_connect (item_view, "enter_notify_event",
330
(GtkSignalFunc) on_enter_notify, NULL);
331
g_signal_connect (item_view, "leave_notify_event",
332
(GtkSignalFunc) on_leave_notify, NULL);
333
g_signal_connect (item_view, "motion_notify_event",
334
(GtkSignalFunc) on_motion_notify, NULL);
335
g_signal_connect (item_view, "button_press_event",
336
(GtkSignalFunc) on_button_press, NULL);
337
g_signal_connect (item_view, "button_release_event",
338
(GtkSignalFunc) on_button_release, NULL);
318
g_signal_connect (item, "enter_notify_event",
319
(GtkSignalFunc) on_enter_notify, NULL);
320
g_signal_connect (item, "leave_notify_event",
321
(GtkSignalFunc) on_leave_notify, NULL);
322
g_signal_connect (item, "motion_notify_event",
323
(GtkSignalFunc) on_motion_notify, NULL);
324
g_signal_connect (item, "button_press_event",
325
(GtkSignalFunc) on_button_press, NULL);
326
g_signal_connect (item, "button_release_event",
327
(GtkSignalFunc) on_button_release, NULL);
344
332
create_canvas (GtkTable *table, gint row, gchar *text, gchar *id)
346
334
GtkWidget *label, *canvas;
347
GooCanvasModelSimple *canvas_model;
348
335
GooCanvasItem *root, *rect;
351
338
label = gtk_label_new (text);
352
gtk_table_attach (table, label, 0, 1, row, row + 1,
339
gtk_table_attach (table, label, 0, 1, row, row + 1, 0, 0, 0, 0);
354
340
gtk_widget_show (label);
356
canvas = goo_canvas_view_new ();
358
g_signal_connect (canvas, "item_view_created",
359
(GtkSignalFunc) on_item_view_created,
342
canvas = goo_canvas_new ();
362
344
gtk_widget_set_size_request (canvas, 200, 100);
363
goo_canvas_view_set_bounds (GOO_CANVAS_VIEW (canvas), 0, 0, 200, 100);
364
gtk_table_attach (table, canvas, 1, 2, row, row + 1,
345
goo_canvas_set_bounds (GOO_CANVAS (canvas), 0, 0, 200, 100);
346
gtk_table_attach (table, canvas, 1, 2, row, row + 1, 0, 0, 0, 0);
366
347
gtk_widget_show (canvas);
368
canvas_model = goo_canvas_model_simple_new ();
369
goo_canvas_view_set_model (GOO_CANVAS_VIEW (canvas),
370
GOO_CANVAS_MODEL (canvas_model));
371
g_object_unref (canvas_model);
349
root = goo_canvas_get_root_item (GOO_CANVAS (canvas));
373
root = goo_canvas_model_get_root_item (GOO_CANVAS_MODEL (canvas_model));
374
351
rect = goo_canvas_rect_new (root, 0, 0, 200, 100,
375
352
"stroke-pattern", NULL,
376
353
"fill-color", "yellow",
378
355
view_id = g_strdup_printf ("%s-yellow", id);
379
356
g_object_set_data_full (G_OBJECT (rect), "id", view_id, g_free);
357
setup_item_signals (rect);
381
359
rect = goo_canvas_rect_new (root, 20, 20, 60, 60,
382
360
"stroke-pattern", NULL,
385
363
view_id = g_strdup_printf ("%s-blue", id);
386
364
g_object_set_data_full (G_OBJECT (rect), "id", view_id, g_free);
365
setup_item_signals (rect);
388
367
rect = goo_canvas_rect_new (root, 120, 20, 60, 60,
389
368
"stroke-pattern", NULL,