7
class Widget < Gtk::EventBox
11
set_visible_window(false)
12
add_events(Gdk::Event::ENTER_NOTIFY_MASK)
13
add_events(Gdk::Event::LEAVE_NOTIFY_MASK)
21
signal_connect("enter_notify_event") do |widget, event|
29
signal_connect("leave_notify_event") do |widget, event|
37
signal_connect_after("expose_event") do |widget, event|
39
cr = widget.window.create_cairo_context
41
x, y, w, h = widget.allocation.to_a
42
line_width = cr.line_width / 2
47
cr.rectangle(x, y, w, h)
48
cr.set_source_rgba([0, 0, 1, 0.6])
56
window = Gtk::Window.new
57
window.set_default_size(512, 400)
59
window.signal_connect("destroy") do
63
window.signal_connect("key_press_event") do |widget, event|
64
if event.state.control_mask? and event.keyval == Gdk::Keyval::GDK_q
72
layout = Gtk::Layout.new
75
rect.set_size_request(260, 260)
76
rect.signal_connect("expose_event") do |widget, event|
77
x, y, w, h = widget.allocation.to_a
78
cr = widget.window.create_cairo_context
79
line_width = cr.line_width / 2
84
rgba = [0xff, 0xf1, 0xec, 0xff].collect{|c| c / 255.0}
85
cr.set_source_rgba(rgba)
86
cr.rectangle(x, y, w, h)
88
rgba = [0xff, 0x99, 0x99, 0xff].collect{|c| c / 255.0}
89
cr.set_source_rgba(rgba)
93
layout.put(rect, 80, 30)
96
circ.set_size_request(250, 250)
97
circ.signal_connect("expose_event") do |widget, event|
98
x, y, w, h = widget.allocation.to_a
99
cr = widget.window.create_cairo_context
100
line_width = cr.line_width / 2
105
rgba = [0xcc, 0xff, 0xcc, 0xff].collect{|c| c / 255.0}
106
cr.set_source_rgba(rgba)
108
cr.arc(x + r , y + r, r, 0, 2 * Math::PI)
110
rgba = [0x00, 0x66, 0x00, 0xff].collect{|c| c / 255.0}
111
cr.set_source_rgba(rgba)
115
layout.put(circ, 180, 140)