clutter-gtk 2.2.4-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Rakefile +75 -0
- data/lib/clutter-gtk.rb +77 -0
- data/sample/events.rb +176 -0
- data/sample/multistage.rb +78 -0
- data/sample/redhand.png +0 -0
- data/sample/test-actor.rb +163 -0
- data/sample/test-scroll.rb +174 -0
- data/sample/test.rb +169 -0
- data/sample/window-test.rb +113 -0
- data/sample/window-test2.rb +132 -0
- data/test/clutter-gtk-test-utils.rb +21 -0
- data/test/run-test.rb +73 -0
- data/test/test-clutter-gtk-embed.rb +21 -0
- data/vendor/local/bin/libclutter-gtk-1.0-0.dll +0 -0
- data/vendor/local/include/clutter-gtk-1.0/clutter-gtk/clutter-gtk.h +17 -0
- data/vendor/local/include/clutter-gtk-1.0/clutter-gtk/gtk-clutter-actor.h +87 -0
- data/vendor/local/include/clutter-gtk-1.0/clutter-gtk/gtk-clutter-embed.h +94 -0
- data/vendor/local/include/clutter-gtk-1.0/clutter-gtk/gtk-clutter-texture.h +115 -0
- data/vendor/local/include/clutter-gtk-1.0/clutter-gtk/gtk-clutter-util.h +46 -0
- data/vendor/local/include/clutter-gtk-1.0/clutter-gtk/gtk-clutter-version.h +111 -0
- data/vendor/local/include/clutter-gtk-1.0/clutter-gtk/gtk-clutter-window.h +90 -0
- data/vendor/local/lib/girepository-1.0/GtkClutter-1.0.typelib +0 -0
- data/vendor/local/lib/libclutter-gtk-1.0.dll.a +0 -0
- data/vendor/local/lib/libclutter-gtk-1.0.la +41 -0
- data/vendor/local/lib/pkgconfig/clutter-gtk-1.0.pc +13 -0
- data/vendor/local/share/gir-1.0/GtkClutter-1.0.gir +696 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/GtkClutterActor.html +307 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/GtkClutterEmbed.html +305 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/GtkClutterWindow.html +179 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/annotation-glossary.html +48 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/ch01.html +36 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/ch02.html +42 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/ch03.html +34 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/clutter-gtk-1.0-Utility-Functions.html +258 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/clutter-gtk-1.0.devhelp2 +50 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/cluttergtk-glossary.html +35 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/cluttergtk-object-hierarchy.html +45 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/cluttergtk-object-index.html +60 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/cluttergtk-objects.html +38 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/home.png +0 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/index.html +83 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/index.sgml +60 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/ix01.html +100 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/ix02.html +198 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/ix03.html +66 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/ix04.html +32 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/left-insensitive.png +0 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/left.png +0 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/license.html +59 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/right-insensitive.png +0 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/right.png +0 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/style.css +476 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/up-insensitive.png +0 -0
- data/vendor/local/share/gtk-doc/html/clutter-gtk-1.0/up.png +0 -0
- data/vendor/local/share/license/clutter-gtk/COPYING +504 -0
- data/vendor/local/share/locale/ja/LC_MESSAGES/cluttergtk-1.0.mo +0 -0
- data/vendor/local/share/locale/pl/LC_MESSAGES/cluttergtk-1.0.mo +0 -0
- data/vendor/local/share/locale/zh_CN/LC_MESSAGES/cluttergtk-1.0.mo +0 -0
- metadata +143 -0
@@ -0,0 +1,174 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This sample code is a port of clutter-gtk/examples/gtk-clutter-test-scroll.c.
|
4
|
+
# It is licensed under the terms of the GNU Lesser General Public
|
5
|
+
# License, version 2.1 or (at your option) later.
|
6
|
+
#
|
7
|
+
# Copyright (C) 2013 Ruby-GNOME2 Project Team
|
8
|
+
#
|
9
|
+
# This library is free software; you can redistribute it and/or
|
10
|
+
# modify it under the terms of the GNU Lesser General Public
|
11
|
+
# License as published by the Free Software Foundation; either
|
12
|
+
# version 2.1 of the License, or (at your option) any later version.
|
13
|
+
#
|
14
|
+
# This library is distributed in the hope that it will be useful,
|
15
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
17
|
+
# Lesser General Public License for more details.
|
18
|
+
#
|
19
|
+
# You should have received a copy of the GNU Lesser General Public
|
20
|
+
# License along with this library; if not, write to the Free Software
|
21
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
22
|
+
|
23
|
+
require "clutter-gtk"
|
24
|
+
|
25
|
+
N_WIDGETS = 5
|
26
|
+
WINDOW_WIDTH = 400
|
27
|
+
WINDOW_HEIGHT = 400
|
28
|
+
RADIUS = 80
|
29
|
+
|
30
|
+
do_rotate_p = true
|
31
|
+
|
32
|
+
window = Gtk::Window.new
|
33
|
+
window.signal_connect("destroy") do
|
34
|
+
Gtk.main_quit
|
35
|
+
end
|
36
|
+
|
37
|
+
vbox = Gtk::Box.new(:vertical, 6)
|
38
|
+
window.add(vbox)
|
39
|
+
|
40
|
+
clutter = ClutterGtk::Embed.new
|
41
|
+
clutter.set_size_request(WINDOW_WIDTH, WINDOW_HEIGHT)
|
42
|
+
|
43
|
+
vbox.add(clutter)
|
44
|
+
|
45
|
+
stage = clutter.stage
|
46
|
+
|
47
|
+
button = Gtk::Button.new(:stock_id => Gtk::Stock::QUIT)
|
48
|
+
button.signal_connect("clicked") do |_button|
|
49
|
+
window.destroy
|
50
|
+
end
|
51
|
+
vbox.pack_start(button, :expand => false, :fill => false, :padding => 0)
|
52
|
+
|
53
|
+
# and its background color
|
54
|
+
stage.background_color = Clutter::Color.new(0x61, 0x64, 0x8c, 0xff)
|
55
|
+
|
56
|
+
widgets = []
|
57
|
+
|
58
|
+
# create a new group to hold multiple actors in a group
|
59
|
+
group = Clutter::Group.new
|
60
|
+
|
61
|
+
create_gtk_actor = lambda do
|
62
|
+
gtk_actor = ClutterGtk::Actor.new
|
63
|
+
bin = gtk_actor.widget
|
64
|
+
|
65
|
+
scroll = Gtk::ScrolledWindow.new
|
66
|
+
scroll.set_policy(:never, :automatic)
|
67
|
+
bin.add(scroll)
|
68
|
+
|
69
|
+
vbox = Gtk::Box.new(:vertical, 6)
|
70
|
+
scroll.add_with_viewport(vbox)
|
71
|
+
|
72
|
+
button = Gtk::Button.new(:label => "A Button")
|
73
|
+
vbox.pack_start(button, :expand => false, :fill => false, :padding => 0)
|
74
|
+
|
75
|
+
button.signal_connect("clicked") do |_button|
|
76
|
+
puts("button clicked")
|
77
|
+
label = Gtk::Label.new("A new label")
|
78
|
+
label.show
|
79
|
+
vbox.pack_start(label, :expand => false, :fill => false, :padding => 0)
|
80
|
+
end
|
81
|
+
|
82
|
+
6.times do |i|
|
83
|
+
button = Gtk::CheckButton.new("Another button")
|
84
|
+
vbox.pack_start(button, :expand => false, :fill => false, :padding => 0)
|
85
|
+
end
|
86
|
+
|
87
|
+
entry = Gtk::Entry.new
|
88
|
+
vbox.pack_start(entry, :expand => false, :fill => false, :padding => 0)
|
89
|
+
|
90
|
+
bin.show_all
|
91
|
+
|
92
|
+
gtk_actor
|
93
|
+
end
|
94
|
+
|
95
|
+
N_WIDGETS.times do |i|
|
96
|
+
widget = create_gtk_actor.call
|
97
|
+
widgets[i] = widget
|
98
|
+
|
99
|
+
# Place around a circle
|
100
|
+
w = widgets.first.width
|
101
|
+
h = widgets.first.height
|
102
|
+
|
103
|
+
x = WINDOW_WIDTH / 2 +
|
104
|
+
RADIUS * Math.cos(i * 2 * Math::PI / (N_WIDGETS)) - w / 2
|
105
|
+
y = WINDOW_HEIGHT / 2 +
|
106
|
+
RADIUS * Math.sin(i * 2 * Math::PI / (N_WIDGETS)) - h / 2
|
107
|
+
|
108
|
+
widget.set_position(x, y)
|
109
|
+
|
110
|
+
# Add to our group group
|
111
|
+
group.add_actor(widget)
|
112
|
+
end
|
113
|
+
|
114
|
+
# Add the group to the stage
|
115
|
+
stage.add_actor(group)
|
116
|
+
stage.signal_connect("button-press-event") do |_stage, event|
|
117
|
+
x, y = event.coords
|
118
|
+
|
119
|
+
actor = _stage.get_actor_at_pos(:all, x, y)
|
120
|
+
puts("click at #{x}, #{y} -> #{actor.gtype.name}:#{actor}")
|
121
|
+
if !actor.is_a?(Clutter::Stage) and !actor.is_a?(Clutter::Group)
|
122
|
+
actor.hide
|
123
|
+
end
|
124
|
+
end
|
125
|
+
stage.signal_connect("key-release-event") do |_sage, event|
|
126
|
+
unichar = [event.key_unicode].pack("U*")
|
127
|
+
puts("*** key press event (key:#{unichar}) ***")
|
128
|
+
|
129
|
+
if event.key_symbol == Clutter::Keys::KEY_q
|
130
|
+
Gtk.main_quit
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
window.show_all
|
135
|
+
|
136
|
+
# Only show the actors after parent show otherwise it will just be
|
137
|
+
# unrealized when the clutter foreign window is set. widget_show
|
138
|
+
# will call show on the stage.
|
139
|
+
group.show_all
|
140
|
+
|
141
|
+
# Create a timeline to manage animation
|
142
|
+
timeline = Clutter::Timeline.new(6000)
|
143
|
+
timeline.loop = true
|
144
|
+
|
145
|
+
# fire a callback for frame change
|
146
|
+
timeline.signal_connect("new-frame") do |_timeline, m_secs|
|
147
|
+
rotation = _timeline.progress * 360.0
|
148
|
+
if do_rotate_p
|
149
|
+
# Rotate everything clockwise about stage center
|
150
|
+
group.set_rotation(:z_axis,
|
151
|
+
rotation,
|
152
|
+
WINDOW_WIDTH / 2,
|
153
|
+
WINDOW_HEIGHT / 2,
|
154
|
+
0)
|
155
|
+
|
156
|
+
widgets.each do |widget|
|
157
|
+
# rotate each widget around its center
|
158
|
+
w = widget.width
|
159
|
+
h = widget.height
|
160
|
+
|
161
|
+
widget.set_rotation(:z_axis,
|
162
|
+
-(2 * rotation),
|
163
|
+
w / 2,
|
164
|
+
h / 2,
|
165
|
+
0)
|
166
|
+
widget.opacity = 50 * Math.sin(2 * Math::PI * rotation / 360) + (255 - 50)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
# and start it
|
172
|
+
timeline.start
|
173
|
+
|
174
|
+
Gtk.main
|
data/sample/test.rb
ADDED
@@ -0,0 +1,169 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This sample code is a port of
|
4
|
+
# clutter-gtk/examples/gtk-clutter-test.c. The image file used in
|
5
|
+
# this sample code is copied from
|
6
|
+
# clutter-gtk/examples/redhand.png. They are licensed under the terms
|
7
|
+
# of the GNU Lesser General Public License, version 2.1 or (at your
|
8
|
+
# option) later.
|
9
|
+
#
|
10
|
+
# Copyright (C) 2013 Ruby-GNOME2 Project Team
|
11
|
+
#
|
12
|
+
# This library is free software; you can redistribute it and/or
|
13
|
+
# modify it under the terms of the GNU Lesser General Public
|
14
|
+
# License as published by the Free Software Foundation; either
|
15
|
+
# version 2.1 of the License, or (at your option) any later version.
|
16
|
+
#
|
17
|
+
# This library is distributed in the hope that it will be useful,
|
18
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
19
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
20
|
+
# Lesser General Public License for more details.
|
21
|
+
#
|
22
|
+
# You should have received a copy of the GNU Lesser General Public
|
23
|
+
# License along with this library; if not, write to the Free Software
|
24
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
25
|
+
|
26
|
+
require "clutter-gtk"
|
27
|
+
require "gdk_pixbuf2"
|
28
|
+
|
29
|
+
N_HANDS = 4
|
30
|
+
WINDOW_WIDTH = 400
|
31
|
+
WINDOW_HEIGHT = 400
|
32
|
+
RADIUS = 150
|
33
|
+
|
34
|
+
fade_p = false
|
35
|
+
fullscreen_p = false
|
36
|
+
|
37
|
+
pixbuf = Gdk::Pixbuf.new(File.expand_path("redhand.png", File.dirname(__FILE__)))
|
38
|
+
|
39
|
+
window = Gtk::Window.new
|
40
|
+
window.set_default_size(WINDOW_WIDTH, WINDOW_HEIGHT)
|
41
|
+
window.title = "Clutter Embedding"
|
42
|
+
window.signal_connect("destroy") do
|
43
|
+
Gtk.main_quit
|
44
|
+
end
|
45
|
+
|
46
|
+
vbox = Gtk::Grid.new
|
47
|
+
vbox.orientation = :vertical
|
48
|
+
vbox.hexpand = true
|
49
|
+
vbox.vexpand = true
|
50
|
+
window.add(vbox)
|
51
|
+
|
52
|
+
clutter = ClutterGtk::Embed.new
|
53
|
+
vbox.add(clutter)
|
54
|
+
|
55
|
+
stage = clutter.stage
|
56
|
+
stage.background_color = Clutter::Color.new(:sky_blue_light)
|
57
|
+
|
58
|
+
label = Gtk::Label.new("This is a label")
|
59
|
+
vbox.add(label)
|
60
|
+
label.hexpand = true
|
61
|
+
|
62
|
+
button = Gtk::Button.new(:label => "This is a button...clicky")
|
63
|
+
button.signal_connect("clicked") do |_button|
|
64
|
+
fade_p = !fade_p
|
65
|
+
end
|
66
|
+
vbox.add(button)
|
67
|
+
button.hexpand = true
|
68
|
+
|
69
|
+
button = Gtk::Button.new(:label => "Fullscreen")
|
70
|
+
button.image = Gtk::Image.new(:stock => Gtk::Stock::FULLSCREEN, :size => :button)
|
71
|
+
button.signal_connect("clicked") do |_button|
|
72
|
+
if fullscreen_p
|
73
|
+
window.unfullscreen
|
74
|
+
fullscreen_p = false
|
75
|
+
else
|
76
|
+
window.fullscreen
|
77
|
+
fullscreen_p = true
|
78
|
+
end
|
79
|
+
end
|
80
|
+
vbox.add(button)
|
81
|
+
button.hexpand = true
|
82
|
+
|
83
|
+
button = Gtk::Button.new(:stock_id => Gtk::Stock::QUIT)
|
84
|
+
button.signal_connect("clicked") do |_button|
|
85
|
+
_button.destroy
|
86
|
+
end
|
87
|
+
vbox.add(button)
|
88
|
+
button.hexpand = true
|
89
|
+
|
90
|
+
group = Clutter::Actor.new
|
91
|
+
hands = []
|
92
|
+
N_HANDS.times do |i|
|
93
|
+
if i.zero?
|
94
|
+
hands[i] = ClutterGtk::Texture.new
|
95
|
+
hands[i].set_from_pixbuf(pixbuf)
|
96
|
+
else
|
97
|
+
hands[i] = Clutter::Clone.new(hands[0])
|
98
|
+
end
|
99
|
+
|
100
|
+
# Place around a circle
|
101
|
+
w = hands[0].width
|
102
|
+
h = hands[0].height
|
103
|
+
|
104
|
+
x = WINDOW_WIDTH / 2 + RADIUS * Math.cos(i * Math::PI / (N_HANDS / 2)) - w / 2
|
105
|
+
y = WINDOW_HEIGHT / 2 + RADIUS * Math.sin(i * Math::PI / (N_HANDS / 2)) - h / 2
|
106
|
+
|
107
|
+
hands[i].set_position(x, y)
|
108
|
+
|
109
|
+
# Add to our group group
|
110
|
+
group.add_child(hands[i])
|
111
|
+
end
|
112
|
+
|
113
|
+
# Add the group to the stage
|
114
|
+
stage.add_child(group)
|
115
|
+
|
116
|
+
constraint = Clutter::AlignConstraint.new(stage, :x_axis, 0.5)
|
117
|
+
group.add_constraint(constraint)
|
118
|
+
constraint = Clutter::AlignConstraint.new(stage, :y_axis, 0.5)
|
119
|
+
group.add_constraint(constraint)
|
120
|
+
|
121
|
+
stage.signal_connect("button-press-event") do |_stage, event|
|
122
|
+
x, y = event.coords
|
123
|
+
actor = _stage.get_actor_at_pos(:all, x, y)
|
124
|
+
if actor.is_a?(ClutterGtk::Texture) or actor.is_a?(Clutter::Clone)
|
125
|
+
actor.hide
|
126
|
+
end
|
127
|
+
|
128
|
+
Clutter::Event::STOP
|
129
|
+
end
|
130
|
+
stage.signal_connect("key-release-event") do |_stage, event|
|
131
|
+
puts("*** key press event (key:#{[event.key_unicode].pack('U*')}) ***")
|
132
|
+
case event.key_symbol
|
133
|
+
when Clutter::Keys::KEY_q
|
134
|
+
Gtk.main_quit
|
135
|
+
when Clutter::Keys::KEY_r
|
136
|
+
N_HANDS.times do |i|
|
137
|
+
hands[i].show
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
Clutter::Event::STOP
|
142
|
+
end
|
143
|
+
|
144
|
+
window.show_all
|
145
|
+
|
146
|
+
# Create a timeline to manage animation
|
147
|
+
timeline = Clutter::Timeline.new(6000)
|
148
|
+
timeline.repeat_count = -1
|
149
|
+
|
150
|
+
# fire a callback for frame change
|
151
|
+
timeline.signal_connect("new-frame") do |_timeline, msecs|
|
152
|
+
rotation = _timeline.progress * 360.0
|
153
|
+
group.set_rotation(:z_axis, rotation, WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2, 0)
|
154
|
+
N_HANDS.times do |i|
|
155
|
+
hands[i].set_rotation(:z_axis,
|
156
|
+
-(6.0 * rotation),
|
157
|
+
hands[i].width / 2,
|
158
|
+
hands[i].height / 2,
|
159
|
+
0)
|
160
|
+
if fade_p
|
161
|
+
hands[i].opacity = (255 - (rotation % 255))
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
# and start it
|
167
|
+
timeline.start
|
168
|
+
|
169
|
+
Gtk.main
|
@@ -0,0 +1,113 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This sample code is a port of clutter-gtk/examples/gtk-clutter-window-test.c.
|
4
|
+
# It is licensed under the terms of the GNU Lesser General Public
|
5
|
+
# License, version 2.1 or (at your option) later.
|
6
|
+
#
|
7
|
+
# The original header:
|
8
|
+
# (c) 2009, Collabora Ltd.
|
9
|
+
#
|
10
|
+
# Written by Davyd Madeley <davyd.madeley@collabora.co.uk>
|
11
|
+
#
|
12
|
+
# Copyright (C) 2013 Ruby-GNOME2 Project Team
|
13
|
+
#
|
14
|
+
# This library is free software; you can redistribute it and/or
|
15
|
+
# modify it under the terms of the GNU Lesser General Public
|
16
|
+
# License as published by the Free Software Foundation; either
|
17
|
+
# version 2.1 of the License, or (at your option) any later version.
|
18
|
+
#
|
19
|
+
# This library is distributed in the hope that it will be useful,
|
20
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
21
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
22
|
+
# Lesser General Public License for more details.
|
23
|
+
#
|
24
|
+
# You should have received a copy of the GNU Lesser General Public
|
25
|
+
# License along with this library; if not, write to the Free Software
|
26
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
27
|
+
|
28
|
+
require "clutter-gtk"
|
29
|
+
require "gdk_pixbuf2"
|
30
|
+
|
31
|
+
window = ClutterGtk::Window.new
|
32
|
+
window.signal_connect("destroy") do
|
33
|
+
Gtk.main_quit
|
34
|
+
end
|
35
|
+
window.set_default_size(400, 300)
|
36
|
+
|
37
|
+
NAME_COLUMN = 0
|
38
|
+
PIXBUF_COLUMN = 1
|
39
|
+
store = Gtk::ListStore.new(String, Gdk::Pixbuf)
|
40
|
+
theme = Gtk::IconTheme.default
|
41
|
+
[
|
42
|
+
"devhelp",
|
43
|
+
"empathy",
|
44
|
+
"evince",
|
45
|
+
"gnome-panel",
|
46
|
+
"seahorse",
|
47
|
+
"sound-juicer",
|
48
|
+
"totem",
|
49
|
+
].each do |icon_name|
|
50
|
+
pixbuf = theme.load_icon(icon_name, 48, 0)
|
51
|
+
iter = store.append
|
52
|
+
iter[0] = icon_name
|
53
|
+
iter[1] = pixbuf
|
54
|
+
end
|
55
|
+
|
56
|
+
icon_view = Gtk::IconView.new(store)
|
57
|
+
icon_view.text_column = NAME_COLUMN
|
58
|
+
icon_view.pixbuf_column = PIXBUF_COLUMN
|
59
|
+
|
60
|
+
scrolled_window = Gtk::ScrolledWindow.new
|
61
|
+
window.add(scrolled_window)
|
62
|
+
scrolled_window.add(icon_view)
|
63
|
+
scrolled_window.show_all
|
64
|
+
|
65
|
+
# Widget 2 is a toolbar
|
66
|
+
stage = window.stage
|
67
|
+
|
68
|
+
toolbar = Gtk::Toolbar.new
|
69
|
+
[
|
70
|
+
Gtk::Stock::ADD,
|
71
|
+
Gtk::Stock::BOLD,
|
72
|
+
Gtk::Stock::ITALIC,
|
73
|
+
Gtk::Stock::CANCEL,
|
74
|
+
Gtk::Stock::CDROM,
|
75
|
+
Gtk::Stock::CONVERT,
|
76
|
+
].each do |stock_id|
|
77
|
+
item = Gtk::ToolButton.new(:stock_id => stock_id)
|
78
|
+
toolbar.insert(item, -1)
|
79
|
+
end
|
80
|
+
|
81
|
+
toolbar.show_all
|
82
|
+
actor = ClutterGtk::Actor.new(toolbar)
|
83
|
+
actor.add_constraint(Clutter::BindConstraint.new(stage, :width, 0.0))
|
84
|
+
actor.signal_connect("enter-event") do |_actor, event|
|
85
|
+
_actor.save_easing_state do
|
86
|
+
_actor.easing_mode = :linear
|
87
|
+
|
88
|
+
_actor.opacity = 255
|
89
|
+
_actor.y = 0
|
90
|
+
end
|
91
|
+
|
92
|
+
Clutter::Event::STOP
|
93
|
+
end
|
94
|
+
|
95
|
+
actor.signal_connect("leave-event") do |_actor, event|
|
96
|
+
_actor.save_easing_state do
|
97
|
+
_actor.easing_mode = :linear
|
98
|
+
|
99
|
+
_actor.opacity = 128
|
100
|
+
_actor.y = _actor.height * -0.5
|
101
|
+
end
|
102
|
+
|
103
|
+
Clutter::Event::STOP
|
104
|
+
end
|
105
|
+
|
106
|
+
actor.y = actor.height * -0.5
|
107
|
+
actor.opacity = 128
|
108
|
+
actor.reactive = true
|
109
|
+
stage.add_child(actor)
|
110
|
+
|
111
|
+
window.show_all
|
112
|
+
|
113
|
+
Gtk.main
|