5
def on_button_press (item, target, event, id):
6
print "%s received 'button-press' signal at %f, %f (root: %f, %f)" % \
7
(id, event.x, event.y, event.x_root, event.y_root)
10
def setup_canvas (canvas):
11
root = canvas.get_root_item ()
13
#Plain items without clip path.
14
item = goocanvas.Ellipse (parent = root,
20
item.translate (100, 100)
21
item.rotate (30, 0, 0)
22
item.connect ("button_press_event",
23
on_button_press, "Blue ellipse (unclipped)")
25
item = goocanvas.Rect (parent = root,
31
clip_fill_rule = cairo.FILL_RULE_EVEN_ODD)
32
item.connect ("button_press_event",
33
on_button_press, "Red rectangle (unclipped)")
35
item = goocanvas.Rect (parent = root,
40
fill_color = "yellow")
41
item.connect ("button_press_event",
42
on_button_press, "Yellow rectangle (unclipped)")
45
item = goocanvas.Ellipse (parent = root,
51
clip_path = "M 0 0 h 100 v 100 h -100 Z")
52
item.translate (100, 300)
53
item.rotate (30, 0, 0)
54
item.connect ("button_press_event", on_button_press, "Blue ellipse")
56
item = goocanvas.Rect (parent = root,
62
clip_path = "M 250 300 h 100 v 100 h -100 Z",
63
clip_fill_rule = cairo.FILL_RULE_EVEN_ODD)
64
item.connect ("button_press_event", on_button_press, "Red rectangle")
66
item = goocanvas.Rect (parent = root,
71
fill_color = "yellow",
72
clip_path = "M480,230 l40,100 l-80 0 z")
73
item.connect ("button_press_event", on_button_press, "Yellow rectangle")
75
# Table with clipped items.
76
table = goocanvas.Table (parent = root)
77
table.translate (200, 400)
78
table.rotate (30, 0, 0)
80
item = goocanvas.Ellipse (parent = table,
86
clip_path = "M 0 0 h 100 v 100 h -100 Z")
87
item.translate (100, 300)
88
item.rotate (30, 0, 0)
89
item.connect ("button_press_event", on_button_press, "Blue ellipse")
91
item = goocanvas.Rect (parent = table,
97
clip_path = "M 250 300 h 100 v 100 h -100 Z",
98
clip_fill_rule = cairo.FILL_RULE_EVEN_ODD)
99
item.connect ("button_press_event", on_button_press, "Red rectangle")
100
table.set_child_properties (item, column = 1)
102
item = goocanvas.Rect (parent = table,
107
fill_color = "yellow",
108
clip_path = "M480,230 l40,100 l-80 0 z")
109
item.connect ("button_press_event", on_button_press, "Yellow rectangle")
110
table.set_child_properties (item, column = 2)
112
def create_clipping_page ():
113
vbox = gtk.VBox (False, 4)
114
vbox.set_border_width (4)
116
scrolled_win = gtk.ScrolledWindow ()
117
scrolled_win.set_shadow_type (gtk.SHADOW_IN)
119
vbox.add (scrolled_win)
121
canvas = goocanvas.Canvas ()
122
canvas.set_size_request (600, 450)
123
canvas.set_bounds (0, 0, 1000, 1000)
125
scrolled_win.add (canvas)
126
setup_canvas (canvas)
131
vb = create_clipping_page ()
134
win.connect("destroy", gtk.main_quit)
140
if __name__ == "__main__":