rabbit 0.9.1 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/NEWS.en +40 -1
- data/NEWS.ja +40 -1
- data/data/rabbit/image/debian-images/bottom.png +0 -0
- data/data/rabbit/image/debian-images/debian-images.rb +2 -0
- data/data/rabbit/image/debian-images/debian-logo-pink.png +0 -0
- data/data/rabbit/image/debian-images/debian-logo.png +0 -0
- data/data/rabbit/image/debian-images/debian-whirl.png +0 -0
- data/data/rabbit/image/debian-images/item1.png +0 -0
- data/data/rabbit/image/debian-images/property.rb +4 -0
- data/data/rabbit/image/debian-images/top.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-bar.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-bar.svg +153 -0
- data/data/rabbit/image/ranguba-images/ranguba-images.rb +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-item-mark-mini.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-item-mark.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-item-mark.svg +400 -0
- data/data/rabbit/image/ranguba-images/ranguba-mark.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-mark.svg +587 -0
- data/lib/rabbit/canvas.rb +2 -2
- data/lib/rabbit/dependency-canvas.rb +2 -1
- data/lib/rabbit/element/slide.rb +1 -1
- data/lib/rabbit/info-window.rb +74 -25
- data/lib/rabbit/rabbit.rb +1 -1
- data/lib/rabbit/renderer/base.rb +0 -48
- data/lib/rabbit/renderer/display/base.rb +10 -1
- data/lib/rabbit/renderer/display/clutter-embed.rb +7 -8
- data/lib/rabbit/renderer/display/comment-drawing-area.rb +4 -4
- data/lib/rabbit/renderer/display/comment.rb +1 -1
- data/lib/rabbit/renderer/display/drawing-area-base.rb +14 -27
- data/lib/rabbit/renderer/display/drawing-area-primitive.rb +1 -1
- data/lib/rabbit/renderer/display/drawing-area-view-only.rb +20 -3
- data/lib/rabbit/renderer/display/graffiti.rb +1 -1
- data/lib/rabbit/renderer/display/hook-handler.rb +60 -0
- data/lib/rabbit/renderer/display/magnifier.rb +1 -1
- data/lib/rabbit/renderer/display/scroll-handler.rb +36 -0
- data/lib/rabbit/renderer/display/spotlight.rb +1 -1
- data/lib/rabbit/renderer/engine/cairo.rb +34 -7
- data/lib/rabbit/theme/applier.rb +13 -5
- data/lib/rabbit/theme/debian/debian.rb +253 -0
- data/lib/rabbit/theme/debian/property.rb +3 -0
- data/lib/rabbit/theme/default-slide/default-slide.rb +24 -5
- data/lib/rabbit/theme/ranguba/property.rb +3 -0
- data/lib/rabbit/theme/ranguba/ranguba.rb +230 -0
- data/lib/rabbit/theme/slide-logo/slide-logo.rb +22 -4
- data/lib/rabbit/theme/tag/tag.rb +4 -0
- data/misc/make-image-sample.rb +1 -0
- data/sample/info-window.png +0 -0
- metadata +27 -4
data/lib/rabbit/canvas.rb
CHANGED
@@ -184,9 +184,9 @@ module Rabbit
|
|
184
184
|
Front.new(self, public_level)
|
185
185
|
end
|
186
186
|
|
187
|
-
def attach_to(frame, window)
|
187
|
+
def attach_to(frame, window, container=nil, &block)
|
188
188
|
@frame = frame if frame
|
189
|
-
@renderer.attach_to(window) if window
|
189
|
+
@renderer.attach_to(window, container, &block) if window
|
190
190
|
end
|
191
191
|
|
192
192
|
def detach
|
@@ -4,7 +4,8 @@ module Rabbit
|
|
4
4
|
class DependencyCanvas < Canvas
|
5
5
|
extend Forwardable
|
6
6
|
|
7
|
-
def_delegators(:@parent,
|
7
|
+
def_delegators(:@parent,
|
8
|
+
:theme_name, :allotted_time, :rest_time, :activate)
|
8
9
|
|
9
10
|
def initialize(parent, *rest, &block)
|
10
11
|
@parent = parent
|
data/lib/rabbit/element/slide.rb
CHANGED
data/lib/rabbit/info-window.rb
CHANGED
@@ -2,15 +2,30 @@ require 'erb'
|
|
2
2
|
|
3
3
|
require 'rabbit/dependency-canvas'
|
4
4
|
require 'rabbit/renderer/display/drawing-area-view-only'
|
5
|
+
require 'rabbit/renderer/display/hook-handler'
|
6
|
+
require 'rabbit/renderer/display/key-handler'
|
7
|
+
require 'rabbit/renderer/display/button-handler'
|
8
|
+
require 'rabbit/renderer/display/scroll-handler'
|
9
|
+
require 'rabbit/renderer/display/menu'
|
5
10
|
|
6
11
|
module Rabbit
|
7
12
|
class InfoWindow
|
8
13
|
include ERB::Util
|
9
14
|
|
15
|
+
include Renderer::Display::HookHandler
|
16
|
+
include Renderer::Display::KeyHandler
|
17
|
+
include Renderer::Display::ButtonHandler
|
18
|
+
include Renderer::Display::ScrollHandler
|
19
|
+
include Renderer::Display::Menu
|
20
|
+
|
10
21
|
def initialize(canvas)
|
11
22
|
@canvas = canvas
|
12
23
|
@window = nil
|
13
24
|
@timer_started = false
|
25
|
+
init_hook_handler
|
26
|
+
init_key_handler
|
27
|
+
init_button_handler
|
28
|
+
init_scroll_handler
|
14
29
|
end
|
15
30
|
|
16
31
|
def show(width=nil, height=nil)
|
@@ -23,15 +38,17 @@ module Rabbit
|
|
23
38
|
|
24
39
|
def hide
|
25
40
|
return unless showing?
|
41
|
+
detach_menu(@window)
|
42
|
+
detach_key(@window)
|
26
43
|
each do |canvas|
|
27
44
|
canvas.detach
|
28
45
|
end
|
29
46
|
@window.signal_handler_disconnect(@window_destroy_id)
|
30
47
|
@window.destroy
|
31
48
|
@window = @window_destroy_id = nil
|
32
|
-
@
|
49
|
+
@canvas_widgets = @outer_box = nil
|
33
50
|
@timer_started = false
|
34
|
-
@previous_canvas = @next_canvas = nil
|
51
|
+
@previous_canvas = @current_canvas = @next_canvas = nil
|
35
52
|
end
|
36
53
|
|
37
54
|
def showing?
|
@@ -61,6 +78,7 @@ module Rabbit
|
|
61
78
|
end
|
62
79
|
|
63
80
|
def init_canvas
|
81
|
+
@current_canvas = make_canvas
|
64
82
|
@previous_canvas = make_canvas
|
65
83
|
@next_canvas = make_canvas
|
66
84
|
end
|
@@ -77,29 +95,57 @@ module Rabbit
|
|
77
95
|
end
|
78
96
|
@window.title = _("%s: Information window") % @canvas.title
|
79
97
|
@window.set_default_size(width, height) if width and height
|
80
|
-
|
81
|
-
|
82
|
-
|
98
|
+
init_widgets(width, height)
|
99
|
+
init_menu
|
100
|
+
attach_key(@window)
|
101
|
+
attach_menu(@window)
|
102
|
+
event_mask = Gdk::Event::BUTTON_PRESS_MASK
|
103
|
+
event_mask |= Gdk::Event::BUTTON_RELEASE_MASK
|
104
|
+
event_mask |= Gdk::Event::BUTTON1_MOTION_MASK
|
105
|
+
event_mask |= Gdk::Event::BUTTON2_MOTION_MASK
|
106
|
+
event_mask |= Gdk::Event::BUTTON3_MOTION_MASK
|
107
|
+
@window.add_events(event_mask)
|
108
|
+
set_button_event(@window)
|
109
|
+
set_scroll_event(@window)
|
110
|
+
@window.add(@outer_box)
|
111
|
+
end
|
112
|
+
|
113
|
+
def init_widgets(width, height)
|
114
|
+
init_timer_label(width * (1.0 / 3.0), height * (1.0 / 3.0))
|
115
|
+
@outer_box = Gtk::VBox.new
|
116
|
+
|
117
|
+
current_box = Gtk::HBox.new
|
118
|
+
@current_canvas.attach_to(nil, @window, current_box) do |container, widget|
|
119
|
+
widget.set_size_request(width * (2.0 / 3.0), height * (2.0 / 3.0))
|
120
|
+
container.pack_start(widget, true, false)
|
121
|
+
end
|
122
|
+
@outer_box.pack_start(current_box, true, false)
|
83
123
|
|
84
|
-
|
85
|
-
@
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
@
|
124
|
+
bottom_box = Gtk::HBox.new
|
125
|
+
@previous_canvas.attach_to(nil, @window, bottom_box) do |container, widget|
|
126
|
+
widget.set_size_request(width * (1.0 / 3.0), height * (1.0 / 3.0))
|
127
|
+
container.pack_start(widget, false, false)
|
128
|
+
end
|
129
|
+
bottom_box.pack_start(@timer_label, true, false)
|
130
|
+
@next_canvas.attach_to(nil, @window, bottom_box) do |container, widget|
|
131
|
+
widget.set_size_request(width * (1.0 / 3.0), height * (1.0 / 3.0))
|
132
|
+
container.pack_end(widget, false, false)
|
133
|
+
end
|
134
|
+
@outer_box.pack_end(bottom_box, false, false)
|
135
|
+
|
136
|
+
@outer_box.show
|
91
137
|
end
|
92
138
|
|
93
|
-
def
|
94
|
-
@
|
95
|
-
@
|
96
|
-
@next_canvas.attach_to(nil, @
|
97
|
-
@hbox.show
|
139
|
+
def init_canvas_widgets
|
140
|
+
@canvas_widgets = Gtk::HBox.new
|
141
|
+
@current_canvas.attach_to(nil, @window, @canvas_widgets)
|
142
|
+
@next_canvas.attach_to(nil, @window, @canvas_widgets)
|
98
143
|
end
|
99
144
|
|
100
|
-
def init_timer_label
|
145
|
+
def init_timer_label(width, height)
|
101
146
|
@timer_label = Gtk::Label.new
|
102
|
-
@timer_label.
|
147
|
+
@timer_label.justify = :center
|
148
|
+
@timer_label.markup = markupped_timer_label(width, height)
|
103
149
|
@timer_started = false
|
104
150
|
check_timer
|
105
151
|
end
|
@@ -113,16 +159,18 @@ module Rabbit
|
|
113
159
|
end
|
114
160
|
end
|
115
161
|
|
116
|
-
def markupped_timer_label
|
162
|
+
def markupped_timer_label(width=nil, height=nil)
|
163
|
+
width ||= @window.size[0] * (1.0 / 3.0)
|
164
|
+
height ||= @window.size[1] * (1.0 / 3.0)
|
117
165
|
attrs = {}
|
118
|
-
attrs["font_desc"] = ((
|
166
|
+
attrs["font_desc"] = ((height * 200) / Pango::SCALE).to_s
|
119
167
|
rest_time = @canvas.rest_time
|
120
168
|
attrs["foreground"] = "red" if rest_time and rest_time < 0
|
121
169
|
"<span #{@canvas.to_attrs(attrs)}>#{h timer_label}</span>"
|
122
170
|
end
|
123
171
|
|
124
172
|
def timer_label
|
125
|
-
rest_time = @canvas.rest_time
|
173
|
+
rest_time = @canvas.rest_time || @canvas.allotted_time
|
126
174
|
if rest_time
|
127
175
|
"%s%02d:%02d" % Utils.split_number_to_minute_and_second(rest_time)
|
128
176
|
else
|
@@ -143,8 +191,9 @@ module Rabbit
|
|
143
191
|
|
144
192
|
def adjust_slide(base_index=nil)
|
145
193
|
base_index ||= @canvas.current_index
|
146
|
-
@previous_canvas.move_to_if_can(base_index - 1)
|
147
|
-
@
|
194
|
+
@previous_canvas.move_to_if_can([base_index - 1, 0].max)
|
195
|
+
@current_canvas.move_to_if_can(base_index)
|
196
|
+
@next_canvas.move_to_if_can([base_index + 1, @canvas.slide_size - 1].min)
|
148
197
|
end
|
149
198
|
|
150
199
|
def toggle_index_mode
|
@@ -154,7 +203,7 @@ module Rabbit
|
|
154
203
|
end
|
155
204
|
|
156
205
|
def each(&block)
|
157
|
-
[@previous_canvas, @next_canvas].each(&block)
|
206
|
+
[@previous_canvas, @current_canvas, @next_canvas].each(&block)
|
158
207
|
end
|
159
208
|
end
|
160
209
|
end
|
data/lib/rabbit/rabbit.rb
CHANGED
data/lib/rabbit/renderer/base.rb
CHANGED
@@ -65,7 +65,6 @@ module Rabbit
|
|
65
65
|
@graffiti_line_width = nil
|
66
66
|
@draw_scaled_image = true
|
67
67
|
clean
|
68
|
-
init_hook_procs
|
69
68
|
init_dpi
|
70
69
|
init_gl_parameters
|
71
70
|
end
|
@@ -176,46 +175,6 @@ module Rabbit
|
|
176
175
|
end.compact.join(" ")
|
177
176
|
end
|
178
177
|
|
179
|
-
def call_hook_procs(procs, *args)
|
180
|
-
procs.any? {|proc| proc.call(*args)}
|
181
|
-
end
|
182
|
-
|
183
|
-
def add_motion_notify_hook(hook=Proc.new)
|
184
|
-
@motion_notify_hook_procs << hook
|
185
|
-
end
|
186
|
-
|
187
|
-
def clear_motion_notify_hook
|
188
|
-
@motion_notify_hook_procs.clear
|
189
|
-
end
|
190
|
-
|
191
|
-
def add_scroll_hook(hook=Proc.new)
|
192
|
-
@scroll_hook_procs << hook
|
193
|
-
end
|
194
|
-
|
195
|
-
def clear_scroll_hook
|
196
|
-
@scroll_hook_procs.clear
|
197
|
-
end
|
198
|
-
|
199
|
-
def add_button_press_hook(hook=Proc.new)
|
200
|
-
@button_press_hook_procs << hook
|
201
|
-
end
|
202
|
-
|
203
|
-
def clear_button_press_hook
|
204
|
-
@button_press_hook_procs.clear
|
205
|
-
end
|
206
|
-
|
207
|
-
def add_button_release_hook(hook=Proc.new)
|
208
|
-
@button_release_hook_procs << hook
|
209
|
-
end
|
210
|
-
|
211
|
-
def clear_button_release_hook
|
212
|
-
@button_release_hook_procs.clear
|
213
|
-
end
|
214
|
-
|
215
|
-
def clear_hooks
|
216
|
-
init_hook_procs
|
217
|
-
end
|
218
|
-
|
219
178
|
def clean
|
220
179
|
dirty_count_clean
|
221
180
|
end
|
@@ -454,13 +413,6 @@ module Rabbit
|
|
454
413
|
@canvas.logger.warn(msg)
|
455
414
|
end
|
456
415
|
|
457
|
-
def init_hook_procs
|
458
|
-
@motion_notify_hook_procs = []
|
459
|
-
@scroll_hook_procs = []
|
460
|
-
@button_press_hook_procs = []
|
461
|
-
@button_release_hook_procs = []
|
462
|
-
end
|
463
|
-
|
464
416
|
def init_dpi
|
465
417
|
@x_dpi = 72
|
466
418
|
@y_dpi = 72
|
@@ -1,10 +1,12 @@
|
|
1
1
|
require "rabbit/renderer/base"
|
2
|
+
require "rabbit/renderer/display/hook-handler"
|
2
3
|
|
3
4
|
module Rabbit
|
4
5
|
module Renderer
|
5
6
|
module Display
|
6
7
|
module Base
|
7
8
|
include Renderer::Base
|
9
|
+
include HookHandler
|
8
10
|
|
9
11
|
def initialize(*args, &block)
|
10
12
|
@drawable = nil
|
@@ -29,14 +31,21 @@ module Rabbit
|
|
29
31
|
widget.queue_draw
|
30
32
|
end
|
31
33
|
|
32
|
-
def attach_to(window)
|
34
|
+
def attach_to(window, container=nil)
|
33
35
|
@window = window
|
36
|
+
@container = container || @window
|
34
37
|
|
35
38
|
set_configure_event
|
36
39
|
end
|
37
40
|
|
38
41
|
def detach
|
42
|
+
if !@window.destroyed? and @configure_signal_id
|
43
|
+
@window.signal_handler_disconnect(@configure_signal_id)
|
44
|
+
@configure_signal_id = nil
|
45
|
+
end
|
46
|
+
|
39
47
|
@window = nil
|
48
|
+
@container = nil
|
40
49
|
end
|
41
50
|
|
42
51
|
def toggle_whiteout
|
@@ -188,11 +188,11 @@ module Rabbit
|
|
188
188
|
end
|
189
189
|
end
|
190
190
|
|
191
|
-
def attach_to(window)
|
191
|
+
def attach_to(window, container=nil)
|
192
192
|
super
|
193
193
|
|
194
194
|
init_menu
|
195
|
-
|
195
|
+
add_widgets_to_container(@container)
|
196
196
|
widget.show
|
197
197
|
attach_menu(@window)
|
198
198
|
attach_key(@window)
|
@@ -203,8 +203,7 @@ module Rabbit
|
|
203
203
|
detach_menu(@window)
|
204
204
|
widget.hide
|
205
205
|
unless @window.destroyed?
|
206
|
-
|
207
|
-
@window.signal_handler_disconnect(@configure_signal_id)
|
206
|
+
remove_widgets_from_container(@container)
|
208
207
|
end
|
209
208
|
|
210
209
|
super
|
@@ -297,12 +296,12 @@ module Rabbit
|
|
297
296
|
end
|
298
297
|
|
299
298
|
private
|
300
|
-
def
|
301
|
-
|
299
|
+
def add_widgets_to_container(container)
|
300
|
+
container.add(@embed)
|
302
301
|
end
|
303
302
|
|
304
|
-
def
|
305
|
-
|
303
|
+
def remove_widgets_from_container(container)
|
304
|
+
container.remove(@embed)
|
306
305
|
end
|
307
306
|
|
308
307
|
def init_dpi
|
@@ -100,12 +100,12 @@ module Rabbit
|
|
100
100
|
end
|
101
101
|
|
102
102
|
private
|
103
|
-
def
|
104
|
-
|
103
|
+
def add_widgets_to_container(container)
|
104
|
+
container.add(@area)
|
105
105
|
end
|
106
106
|
|
107
|
-
def
|
108
|
-
|
107
|
+
def remove_widgets_from_container(container)
|
108
|
+
container.remove(@area)
|
109
109
|
end
|
110
110
|
|
111
111
|
def attach_menu(window)
|
@@ -8,6 +8,7 @@ require "rabbit/renderer/display/graffiti"
|
|
8
8
|
require "rabbit/renderer/display/menu"
|
9
9
|
require "rabbit/renderer/display/button-handler"
|
10
10
|
require "rabbit/renderer/display/key-handler"
|
11
|
+
require "rabbit/renderer/display/scroll-handler"
|
11
12
|
require "rabbit/renderer/display/info"
|
12
13
|
require "rabbit/renderer/display/spotlight"
|
13
14
|
require "rabbit/renderer/display/magnifier"
|
@@ -26,6 +27,7 @@ module Rabbit
|
|
26
27
|
include Gesture
|
27
28
|
include KeyHandler
|
28
29
|
include ButtonHandler
|
30
|
+
include ScrollHandler
|
29
31
|
include Info
|
30
32
|
include Spotlight
|
31
33
|
include Magnifier
|
@@ -195,12 +197,12 @@ module Rabbit
|
|
195
197
|
end
|
196
198
|
end
|
197
199
|
|
198
|
-
def attach_to(window)
|
200
|
+
def attach_to(window, container=nil, &block)
|
199
201
|
super
|
200
202
|
|
201
203
|
init_menu
|
202
204
|
init_gesture_actions
|
203
|
-
|
205
|
+
add_widgets_to_container(@container, &block)
|
204
206
|
widget.show
|
205
207
|
attach_menu(@window)
|
206
208
|
attach_key(@window)
|
@@ -211,8 +213,7 @@ module Rabbit
|
|
211
213
|
detach_menu(@window)
|
212
214
|
widget.hide
|
213
215
|
unless @window.destroyed?
|
214
|
-
|
215
|
-
@window.signal_handler_disconnect(@configure_signal_id)
|
216
|
+
remove_widgets_from_container(@container)
|
216
217
|
end
|
217
218
|
|
218
219
|
super
|
@@ -237,18 +238,22 @@ module Rabbit
|
|
237
238
|
end
|
238
239
|
|
239
240
|
private
|
240
|
-
def
|
241
|
+
def add_widgets_to_container(container)
|
241
242
|
@hbox = Gtk::HBox.new
|
242
243
|
@vbox = Gtk::VBox.new
|
243
244
|
@vbox.pack_start(@area, true, true, 0)
|
244
245
|
@hbox.pack_end(@vbox, true, true, 0)
|
245
|
-
|
246
|
+
if block_given?
|
247
|
+
yield(container, @hbox)
|
248
|
+
else
|
249
|
+
container.add(@hbox)
|
250
|
+
end
|
246
251
|
@hbox.show
|
247
252
|
@vbox.show
|
248
253
|
end
|
249
254
|
|
250
|
-
def
|
251
|
-
|
255
|
+
def remove_widgets_from_container(container)
|
256
|
+
container.remove(@hbox)
|
252
257
|
@hbox = @vbox = nil
|
253
258
|
end
|
254
259
|
|
@@ -263,7 +268,7 @@ module Rabbit
|
|
263
268
|
set_key_press_event(@area)
|
264
269
|
set_button_event(@area)
|
265
270
|
set_motion_notify_event
|
266
|
-
set_scroll_event
|
271
|
+
set_scroll_event(@area)
|
267
272
|
end
|
268
273
|
|
269
274
|
def mapped(widget)
|
@@ -365,24 +370,6 @@ module Rabbit
|
|
365
370
|
false
|
366
371
|
end
|
367
372
|
|
368
|
-
def set_scroll_event
|
369
|
-
@area.signal_connect("scroll_event") do |widget, event|
|
370
|
-
handled = call_hook_procs(@scroll_hook_procs, event)
|
371
|
-
unless handled
|
372
|
-
handled = true
|
373
|
-
case event.direction
|
374
|
-
when Gdk::EventScroll::Direction::UP
|
375
|
-
@canvas.activate("PreviousSlide")
|
376
|
-
when Gdk::EventScroll::Direction::DOWN
|
377
|
-
@canvas.activate("NextSlide")
|
378
|
-
else
|
379
|
-
handled = false
|
380
|
-
end
|
381
|
-
end
|
382
|
-
handled
|
383
|
-
end
|
384
|
-
end
|
385
|
-
|
386
373
|
def confirm_dialog(message)
|
387
374
|
flags = Gtk::Dialog::MODAL | Gtk::Dialog::DESTROY_WITH_PARENT
|
388
375
|
dialog_type = Gtk::MessageDialog::INFO
|