rabbit 3.0.5 → 4.0.1
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.
- checksums.yaml +4 -4
- data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
- data/doc/_config.yml +2 -2
- data/doc/en/news.rd +63 -0
- data/doc/ja/news.rd +63 -0
- data/lib/rabbit/actions.rb +446 -0
- data/lib/rabbit/author-configuration.rb +7 -10
- data/lib/rabbit/canvas.rb +74 -42
- data/lib/rabbit/command/rabbit-slide.rb +11 -13
- data/lib/rabbit/command/rabbit-theme.rb +10 -12
- data/lib/rabbit/command/rabbit.rb +31 -43
- data/lib/rabbit/console.rb +20 -22
- data/lib/rabbit/dependency-canvas.rb +2 -2
- data/lib/rabbit/element/base.rb +93 -6
- data/lib/rabbit/element/block-element.rb +17 -1
- data/lib/rabbit/element/block.rb +17 -1
- data/lib/rabbit/element/container-element.rb +59 -3
- data/lib/rabbit/element/description-list.rb +18 -2
- data/lib/rabbit/element/enum-list.rb +18 -2
- data/lib/rabbit/element/footnote.rb +18 -2
- data/lib/rabbit/element/image-title-slide.rb +17 -1
- data/lib/rabbit/element/image.rb +32 -2
- data/lib/rabbit/element/index-slide.rb +29 -13
- data/lib/rabbit/element/item-list.rb +18 -2
- data/lib/rabbit/element/method-list.rb +18 -2
- data/lib/rabbit/element/poppler-page.rb +17 -1
- data/lib/rabbit/element/poppler-slide.rb +18 -2
- data/lib/rabbit/element/poppler-title-slide.rb +18 -2
- data/lib/rabbit/element/preformatted.rb +18 -2
- data/lib/rabbit/element/slide-element.rb +29 -2
- data/lib/rabbit/element/slide.rb +18 -2
- data/lib/rabbit/element/syntax-highlighting.rb +17 -1
- data/lib/rabbit/element/table.rb +19 -3
- data/lib/rabbit/element/tag.rb +18 -2
- data/lib/rabbit/element/text-block-element.rb +18 -2
- data/lib/rabbit/element/text-container-element.rb +41 -2
- data/lib/rabbit/element/text-element.rb +17 -1
- data/lib/rabbit/element/text-renderer.rb +17 -1
- data/lib/rabbit/element/text.rb +4 -4
- data/lib/rabbit/element/title-slide.rb +19 -3
- data/lib/rabbit/element/video.rb +157 -56
- data/lib/rabbit/element.rb +20 -20
- data/lib/rabbit/formatter.rb +18 -1
- data/lib/rabbit/frame.rb +101 -93
- data/lib/rabbit/front.rb +11 -4
- data/lib/rabbit/gem-finder.rb +4 -8
- data/lib/rabbit/gem-pusher.rb +4 -4
- data/lib/rabbit/gesture/handler.rb +26 -21
- data/lib/rabbit/graffiti/config-dialog.rb +18 -2
- data/lib/rabbit/graffiti/processor.rb +20 -4
- data/lib/rabbit/gtk.rb +48 -14
- data/lib/rabbit/html/generator.rb +18 -18
- data/{test/helper/fixture.rb → lib/rabbit/icon.rb} +16 -6
- data/lib/rabbit/image/base.rb +7 -6
- data/lib/rabbit/image/default.rb +17 -1
- data/lib/rabbit/image/dia.rb +2 -2
- data/lib/rabbit/image/eps.rb +16 -2
- data/lib/rabbit/image/gimp.rb +28 -11
- data/lib/rabbit/image/mermaid.rb +3 -3
- data/lib/rabbit/image/pdf.rb +3 -3
- data/lib/rabbit/image/svg.rb +2 -2
- data/lib/rabbit/image.rb +8 -8
- data/lib/rabbit/info-window.rb +55 -18
- data/lib/rabbit/key-handler.rb +381 -0
- data/lib/rabbit/keys.rb +31 -2
- data/lib/rabbit/logger/base.rb +17 -1
- data/lib/rabbit/logger/gui.rb +20 -4
- data/lib/rabbit/logger/stderr.rb +16 -2
- data/lib/rabbit/logger.rb +4 -4
- data/lib/rabbit/menu.rb +200 -220
- data/lib/rabbit/parser/base.rb +17 -1
- data/lib/rabbit/parser/ext/aafigure.rb +17 -1
- data/lib/rabbit/parser/ext/blockdiag.rb +17 -1
- data/lib/rabbit/parser/ext/charty.rb +2 -2
- data/lib/rabbit/parser/ext/coderay.rb +20 -4
- data/lib/rabbit/parser/ext/enscript.rb +31 -15
- data/lib/rabbit/parser/ext/entity.rb +17 -1
- data/lib/rabbit/parser/ext/image.rb +6 -6
- data/lib/rabbit/parser/ext/inline.rb +17 -1
- data/lib/rabbit/parser/ext/rouge.rb +7 -4
- data/lib/rabbit/parser/ext/tex.rb +18 -2
- data/lib/rabbit/parser/ext/video.rb +4 -4
- data/lib/rabbit/parser/image.rb +20 -4
- data/lib/rabbit/parser/markdown/converter.rb +12 -13
- data/lib/rabbit/parser/markdown.rb +18 -2
- data/lib/rabbit/parser/pause-support.rb +1 -0
- data/lib/rabbit/parser/pdf.rb +3 -3
- data/lib/rabbit/parser/rd/ext/base.rb +20 -4
- data/lib/rabbit/parser/rd/ext/block-verbatim.rb +24 -28
- data/lib/rabbit/parser/rd/ext/character-reference.rb +18 -2
- data/lib/rabbit/parser/rd/ext/image.rb +3 -3
- data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +6 -6
- data/lib/rabbit/parser/rd/ext/refer.rb +18 -2
- data/lib/rabbit/parser/rd/ext/video.rb +19 -2
- data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +24 -8
- data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +18 -2
- data/lib/rabbit/parser/rd/visitor.rb +18 -2
- data/lib/rabbit/parser/rd.rb +18 -2
- data/lib/rabbit/parser/wiki/output.rb +25 -28
- data/lib/rabbit/parser/wiki.rb +18 -2
- data/lib/rabbit/parser.rb +6 -6
- data/lib/rabbit/path-manipulatable.rb +4 -4
- data/lib/rabbit/progress.rb +17 -1
- data/lib/rabbit/properties.rb +3 -3
- data/lib/rabbit/rabbit.rb +15 -7
- data/lib/rabbit/readme-parser.rb +4 -6
- data/lib/rabbit/renderer/base.rb +44 -36
- data/lib/rabbit/renderer/color.rb +18 -2
- data/lib/rabbit/renderer/display/base.rb +10 -12
- data/lib/rabbit/renderer/display/button-handler.rb +141 -60
- data/lib/rabbit/renderer/display/cursor.rb +4 -5
- data/lib/rabbit/renderer/display/drawing-area-base.rb +32 -48
- data/lib/rabbit/renderer/display/drawing-area-primitive.rb +10 -61
- data/lib/rabbit/renderer/display/drawing-area-view-only.rb +19 -8
- data/lib/rabbit/renderer/display/drawing-area.rb +19 -15
- data/lib/rabbit/renderer/display/gesture.rb +9 -9
- data/lib/rabbit/renderer/display/graffiti.rb +22 -13
- data/lib/rabbit/renderer/display/info.rb +22 -2
- data/lib/rabbit/renderer/display/magnifier.rb +30 -17
- data/lib/rabbit/renderer/display/mask.rb +17 -1
- data/lib/rabbit/renderer/display/menu.rb +27 -3
- data/lib/rabbit/renderer/display/motion-handler.rb +45 -0
- data/lib/rabbit/renderer/display/progress.rb +17 -2
- data/lib/rabbit/renderer/display/scroll-handler.rb +60 -13
- data/lib/rabbit/renderer/display/search.rb +19 -2
- data/lib/rabbit/renderer/display/spotlight.rb +39 -25
- data/lib/rabbit/renderer/display.rb +16 -36
- data/lib/rabbit/renderer/engine/cairo.rb +4 -11
- data/lib/rabbit/renderer/engine.rb +17 -1
- data/lib/rabbit/renderer/kernel.rb +2 -20
- data/lib/rabbit/renderer/offscreen.rb +8 -14
- data/lib/rabbit/renderer/print-layout.rb +2 -2
- data/lib/rabbit/renderer/printer.rb +9 -16
- data/lib/rabbit/renderer/scene-background-widget.rb +95 -0
- data/lib/rabbit/renderer/scene-node-widget.rb +63 -0
- data/lib/rabbit/renderer/scene.rb +508 -0
- data/lib/rabbit/renderer.rb +6 -6
- data/lib/rabbit/search-window.rb +18 -2
- data/lib/rabbit/searcher.rb +15 -1
- data/lib/rabbit/size.rb +9 -1
- data/lib/rabbit/slide-configuration.rb +11 -14
- data/lib/rabbit/soap/driver.rb +20 -4
- data/lib/rabbit/soap/server.rb +17 -1
- data/lib/rabbit/source/argf.rb +5 -5
- data/lib/rabbit/source/base.rb +5 -6
- data/lib/rabbit/source/file.rb +5 -5
- data/lib/rabbit/source/memory.rb +20 -4
- data/lib/rabbit/source/uri.rb +9 -11
- data/lib/rabbit/source-generator/hiki.rb +2 -7
- data/lib/rabbit/source-generator/markdown.rb +2 -7
- data/lib/rabbit/source-generator/rd.rb +2 -7
- data/lib/rabbit/source-generator.rb +4 -4
- data/lib/rabbit/source.rb +5 -5
- data/lib/rabbit/task/slide.rb +13 -11
- data/lib/rabbit/task/theme.rb +8 -11
- data/lib/rabbit/task.rb +3 -3
- data/lib/rabbit/theme/applier.rb +27 -11
- data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
- data/lib/rabbit/theme/color-circle/color-circle.rb +18 -1
- data/lib/rabbit/theme/cozmixng/cozmixng.rb +1 -1
- data/lib/rabbit/theme/default/default.rb +1 -0
- data/lib/rabbit/theme/default-icon/default-icon.rb +1 -1
- data/lib/rabbit/theme/default-item-mark-setup/default-item-mark-setup.rb +17 -1
- data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +9 -1
- data/lib/rabbit/theme/enishi-green/enishi-green.rb +1 -1
- data/lib/rabbit/theme/entry.rb +10 -12
- data/lib/rabbit/theme/icon/icon.rb +3 -8
- data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +5 -5
- data/lib/rabbit/theme/image-timer/image-timer.rb +3 -3
- data/lib/rabbit/theme/lightning-simple/lightning-simple.rb +1 -0
- data/lib/rabbit/theme/lightning-talk/lightning-talk.rb +1 -0
- data/lib/rabbit/theme/manager.rb +19 -9
- data/lib/rabbit/theme/rabbit-icon/rabbit-icon.rb +1 -1
- data/lib/rabbit/theme/ranguba/ranguba.rb +1 -1
- data/lib/rabbit/theme/red-frame/red-frame.rb +6 -2
- data/lib/rabbit/theme/ruby-gnome2/ruby-gnome2.rb +1 -0
- data/lib/rabbit/theme/ruby-gnome2-icon/ruby-gnome2-icon.rb +1 -1
- data/lib/rabbit/theme/searcher.rb +23 -7
- data/lib/rabbit/theme/slide-number/slide-number.rb +1 -1
- data/lib/rabbit/theme/slide-show/slide-show.rb +1 -1
- data/lib/rabbit/theme/table/table.rb +2 -2
- data/lib/rabbit/theme/video/property.rb +3 -0
- data/lib/rabbit/theme/video/video.rb +5 -0
- data/lib/rabbit/theme-configuration.rb +9 -11
- data/lib/rabbit/utils.rb +12 -94
- data/lib/rabbit/version.rb +1 -1
- data/lib/rabbit/xmlrpc/client.rb +17 -1
- data/lib/rabbit/xmlrpc/server.rb +17 -1
- data/po/en/rabbit.edit.po +324 -316
- data/po/en/rabbit.po +61 -55
- data/po/fr/rabbit.edit.po +324 -316
- data/po/fr/rabbit.po +61 -55
- data/po/ja/rabbit.edit.po +345 -370
- data/po/ja/rabbit.po +83 -80
- data/rabbit.gemspec +4 -2
- data/sample/block-quote.rab +13 -0
- data/sample/description-list.rab +17 -0
- data/sample/mermaid.rab +16 -0
- data/sample/rabbit-en.hiki +0 -1
- data/sample/rabbit-en.md +0 -1
- data/sample/rabbit-en.rd +0 -1
- data/sample/rabbit.hiki +0 -1
- data/sample/rabbit.md +0 -1
- data/sample/rabbit.rd +0 -1
- data/sample/video.rab +17 -0
- metadata +33 -65
- data/lib/rabbit/action/basic.rb +0 -304
- data/lib/rabbit/action/radio.rb +0 -78
- data/lib/rabbit/action/toggle.rb +0 -82
- data/lib/rabbit/action.rb +0 -140
- data/lib/rabbit/renderer/display/gl.rb +0 -98
- data/lib/rabbit/renderer/display/key-handler.rb +0 -321
- data/lib/rabbit/renderer/gl.rb +0 -95
- data/lib/rabbit/renderer/screen.rb +0 -286
- data/lib/rabbit/renderer/widget/drawing-area.rb +0 -93
- data/lib/rabbit/stock.rb +0 -31
- data/lib/rabbit/trackball.rb +0 -228
- data/lib/rabbit/video-window.rb +0 -123
- data/test/command/test-rabbit.rb +0 -101
- data/test/helper/parser.rb +0 -48
- data/test/helper.rb +0 -24
- data/test/image/test-dia.rb +0 -54
- data/test/image/test-eps.rb +0 -41
- data/test/parser/test-markdown.rb +0 -360
- data/test/parser/test-rd.rb +0 -43
- data/test/parser/test-wiki.rb +0 -71
- data/test/run-test.rb +0 -27
- data/test/source-generator/test-hiki.rb +0 -68
- data/test/source-generator/test-markdown.rb +0 -67
- data/test/source-generator/test-rd.rb +0 -69
- data/test/test-applier.rb +0 -73
- data/test/test-author-configuration.rb +0 -37
- data/test/test-canvas.rb +0 -70
- data/test/test-color.rb +0 -51
- data/test/test-element.rb +0 -103
- data/test/test-readme-parser.rb +0 -160
- data/test/test-size.rb +0 -155
- data/test/test-slide-configuration.rb +0 -74
- data/test/test-source.rb +0 -122
- data/test/test-theme-configuration.rb +0 -47
- data/test/test-utils.rb +0 -64
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2004-
|
1
|
+
# Copyright (C) 2004-2025 Sutou Kouhei <kou@cozmixng.org>
|
2
2
|
#
|
3
3
|
# This program is free software; you can redistribute it and/or modify
|
4
4
|
# it under the terms of the GNU General Public License as published by
|
@@ -14,19 +14,19 @@
|
|
14
14
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
15
15
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
17
|
+
require_relative "drawing-area-primitive"
|
18
|
+
require_relative "menu"
|
19
|
+
require_relative "progress"
|
20
|
+
require_relative "mask"
|
21
|
+
require_relative "search"
|
22
|
+
require_relative "gesture"
|
23
|
+
require_relative "graffiti"
|
24
|
+
require_relative "button-handler"
|
25
|
+
require_relative "motion-handler"
|
26
|
+
require_relative "scroll-handler"
|
27
|
+
require_relative "info"
|
28
|
+
require_relative "spotlight"
|
29
|
+
require_relative "magnifier"
|
30
30
|
|
31
31
|
module Rabbit
|
32
32
|
module Renderer
|
@@ -40,8 +40,8 @@ module Rabbit
|
|
40
40
|
include Progress
|
41
41
|
include Search
|
42
42
|
include Gesture
|
43
|
-
include KeyHandler
|
44
43
|
include ButtonHandler
|
44
|
+
include MotionHandler
|
45
45
|
include ScrollHandler
|
46
46
|
include Info
|
47
47
|
include Spotlight
|
@@ -53,6 +53,13 @@ module Rabbit
|
|
53
53
|
super
|
54
54
|
end
|
55
55
|
|
56
|
+
def update_size(width, height)
|
57
|
+
super
|
58
|
+
@mask = nil
|
59
|
+
set_hole
|
60
|
+
reload_theme if @surface
|
61
|
+
end
|
62
|
+
|
56
63
|
def post_apply_theme
|
57
64
|
if @need_reload_theme
|
58
65
|
@need_reload_theme = false
|
@@ -122,8 +129,8 @@ module Rabbit
|
|
122
129
|
super
|
123
130
|
end
|
124
131
|
|
125
|
-
def pre_print(
|
126
|
-
start_progress(
|
132
|
+
def pre_print(n_slides)
|
133
|
+
start_progress(n_slides)
|
127
134
|
end
|
128
135
|
|
129
136
|
def printing(i)
|
@@ -136,9 +143,9 @@ module Rabbit
|
|
136
143
|
end_progress
|
137
144
|
end
|
138
145
|
|
139
|
-
def pre_to_pixbuf(
|
146
|
+
def pre_to_pixbuf(n_slides)
|
140
147
|
super
|
141
|
-
start_progress(
|
148
|
+
start_progress(n_slides)
|
142
149
|
@pixbufing_size = [width, height]
|
143
150
|
end
|
144
151
|
|
@@ -155,7 +162,7 @@ module Rabbit
|
|
155
162
|
end
|
156
163
|
|
157
164
|
def cache_all_slides
|
158
|
-
pre_cache_all_slides(@canvas.
|
165
|
+
pre_cache_all_slides(@canvas.n_slides)
|
159
166
|
canceled = false
|
160
167
|
@canvas.slides.each_with_index do |slide, i|
|
161
168
|
@canvas.change_current_index(i) do
|
@@ -169,10 +176,10 @@ module Rabbit
|
|
169
176
|
post_cache_all_slides(canceled)
|
170
177
|
end
|
171
178
|
|
172
|
-
def pre_cache_all_slides(
|
179
|
+
def pre_cache_all_slides(n_slides)
|
173
180
|
@caching = true
|
174
181
|
@caching_size = [width, height]
|
175
|
-
start_progress(
|
182
|
+
start_progress(n_slides)
|
176
183
|
end
|
177
184
|
|
178
185
|
def caching_all_slides(i)
|
@@ -209,9 +216,9 @@ module Rabbit
|
|
209
216
|
if @canvas.need_reload_source?
|
210
217
|
callback ||= Utils.process_pending_events_proc
|
211
218
|
begin
|
212
|
-
|
219
|
+
@canvas.reload_source(callback)
|
213
220
|
rescue
|
214
|
-
|
221
|
+
Rabbit.logger.error($!)
|
215
222
|
end
|
216
223
|
end
|
217
224
|
end
|
@@ -224,11 +231,9 @@ module Rabbit
|
|
224
231
|
add_widgets_to_container(@container, &block)
|
225
232
|
widget.show
|
226
233
|
attach_menu(@window)
|
227
|
-
attach_key(@window)
|
228
234
|
end
|
229
235
|
|
230
236
|
def detach
|
231
|
-
detach_key(@window)
|
232
237
|
detach_menu(@window)
|
233
238
|
widget.hide
|
234
239
|
unless @window.destroyed?
|
@@ -285,25 +290,11 @@ module Rabbit
|
|
285
290
|
|
286
291
|
def init_drawing_area
|
287
292
|
super
|
288
|
-
event_mask = Gdk::EventMask::BUTTON_PRESS_MASK
|
289
|
-
event_mask |= Gdk::EventMask::BUTTON_RELEASE_MASK
|
290
|
-
event_mask |= Gdk::EventMask::BUTTON1_MOTION_MASK
|
291
|
-
event_mask |= Gdk::EventMask::BUTTON2_MOTION_MASK
|
292
|
-
event_mask |= Gdk::EventMask::BUTTON3_MOTION_MASK
|
293
|
-
event_mask |= Gdk::EventMask::SCROLL_MASK
|
294
|
-
@area.add_events(event_mask)
|
295
|
-
set_key_press_event(@area)
|
296
293
|
set_button_event(@area)
|
297
|
-
|
294
|
+
set_motion_event(@area)
|
298
295
|
set_scroll_event(@area)
|
299
296
|
end
|
300
297
|
|
301
|
-
def set_motion_notify_event
|
302
|
-
@area.signal_connect("motion_notify_event") do |widget, event|
|
303
|
-
call_hook_procs(@motion_notify_hook_procs, event)
|
304
|
-
end
|
305
|
-
end
|
306
|
-
|
307
298
|
def paint(color_name)
|
308
299
|
context = @surface.create_cairo_context
|
309
300
|
context.set_source_rgba(*Color.parse(color_name).to_a)
|
@@ -374,13 +365,6 @@ module Rabbit
|
|
374
365
|
Gdk::RGB::DITHER_NORMAL, 0, 0)
|
375
366
|
end
|
376
367
|
|
377
|
-
def configured_after(widget, event)
|
378
|
-
@mask = nil
|
379
|
-
set_hole
|
380
|
-
super unless @caching
|
381
|
-
false
|
382
|
-
end
|
383
|
-
|
384
368
|
def confirm_dialog(message)
|
385
369
|
flags = Gtk::Dialog::MODAL | Gtk::Dialog::DESTROY_WITH_PARENT
|
386
370
|
dialog_type = Gtk::MessageDialog::INFO
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2004-
|
1
|
+
# Copyright (C) 2004-2025 Sutou Kouhei <kou@cozmixng.org>
|
2
2
|
#
|
3
3
|
# This program is free software; you can redistribute it and/or modify
|
4
4
|
# it under the terms of the GNU General Public License as published by
|
@@ -14,12 +14,12 @@
|
|
14
14
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
15
15
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
16
16
|
|
17
|
-
|
17
|
+
require_relative "../../gtk"
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
require_relative "../../utils"
|
20
|
+
require_relative "../engine"
|
21
|
+
require_relative "base"
|
22
|
+
require_relative "cursor"
|
23
23
|
|
24
24
|
module Rabbit
|
25
25
|
module Renderer
|
@@ -37,21 +37,6 @@ module Rabbit
|
|
37
37
|
init_drawing_area
|
38
38
|
end
|
39
39
|
|
40
|
-
def attach_to(window, container=nil)
|
41
|
-
super
|
42
|
-
|
43
|
-
set_configure_event
|
44
|
-
end
|
45
|
-
|
46
|
-
def detach
|
47
|
-
if !@window.destroyed? and @configure_signal_id
|
48
|
-
@window.signal_handler_disconnect(@configure_signal_id)
|
49
|
-
@configure_signal_id = nil
|
50
|
-
end
|
51
|
-
|
52
|
-
super
|
53
|
-
end
|
54
|
-
|
55
40
|
def widget
|
56
41
|
@area
|
57
42
|
end
|
@@ -103,7 +88,7 @@ module Rabbit
|
|
103
88
|
queue_draw
|
104
89
|
end
|
105
90
|
|
106
|
-
def pre_to_pixbuf(
|
91
|
+
def pre_to_pixbuf(n_slides)
|
107
92
|
end
|
108
93
|
|
109
94
|
def to_pixbufing(i)
|
@@ -132,7 +117,6 @@ module Rabbit
|
|
132
117
|
@area.can_focus = true
|
133
118
|
set_map
|
134
119
|
set_draw
|
135
|
-
set_configure_event_after
|
136
120
|
end
|
137
121
|
|
138
122
|
def depth
|
@@ -179,49 +163,17 @@ module Rabbit
|
|
179
163
|
compile_slide(slide) unless compiled_slide?(slide)
|
180
164
|
slide.draw(@canvas, false)
|
181
165
|
rescue
|
182
|
-
|
166
|
+
Rabbit.logger.warn($!)
|
183
167
|
end
|
184
168
|
end
|
185
169
|
end
|
186
170
|
|
187
|
-
def set_configure_event
|
188
|
-
id = @window.signal_connect("configure_event") do |widget, event|
|
189
|
-
configured(event.x, event.y, event.width, event.height)
|
190
|
-
false
|
191
|
-
end
|
192
|
-
@configure_signal_id = id
|
193
|
-
end
|
194
|
-
|
195
171
|
def configured(x, y, w, h)
|
196
172
|
@real_width = @surface.width
|
197
173
|
@real_height = @surface.height
|
198
174
|
@size_dirty = true
|
199
175
|
end
|
200
176
|
|
201
|
-
def set_configure_event_after
|
202
|
-
prev_x = prev_y = prev_width = prev_height = nil
|
203
|
-
@area.signal_connect_after("configure_event") do |widget, event|
|
204
|
-
prev_x ||= event.x
|
205
|
-
prev_y ||= event.y
|
206
|
-
prev_width ||= event.width
|
207
|
-
prev_height ||= event.height
|
208
|
-
if [prev_x, prev_y, prev_width, prev_height] !=
|
209
|
-
[event.x, event.y, event.width, event.height]
|
210
|
-
configured_after(widget, event)
|
211
|
-
end
|
212
|
-
prev_x = event.x
|
213
|
-
prev_y = event.y
|
214
|
-
prev_width = event.width
|
215
|
-
prev_height = event.height
|
216
|
-
false
|
217
|
-
end
|
218
|
-
end
|
219
|
-
|
220
|
-
def configured_after(widget, event)
|
221
|
-
update_size(event.width, event.height)
|
222
|
-
reload_theme if @surface
|
223
|
-
end
|
224
|
-
|
225
177
|
def reload_theme(&callback)
|
226
178
|
callback ||= Utils.process_pending_events_proc
|
227
179
|
@canvas.activate("ReloadTheme", &callback)
|
@@ -245,6 +197,7 @@ module Rabbit
|
|
245
197
|
end
|
246
198
|
|
247
199
|
def grab
|
200
|
+
return unless @area.respond_to?(:grab_add)
|
248
201
|
@area.grab_add
|
249
202
|
Gdk.pointer_grab(@area.window, false,
|
250
203
|
Gdk::EventMask::BUTTON_PRESS_MASK |
|
@@ -256,14 +209,10 @@ module Rabbit
|
|
256
209
|
end
|
257
210
|
|
258
211
|
def ungrab
|
212
|
+
return unless @area.respond_to?(:grab_remove)
|
259
213
|
@area.grab_remove
|
260
214
|
Gdk.pointer_ungrab(Gdk::CURRENT_TIME)
|
261
215
|
end
|
262
|
-
|
263
|
-
def pointer
|
264
|
-
window, x, y, mask = @area.window.pointer
|
265
|
-
[x, y, mask]
|
266
|
-
end
|
267
216
|
end
|
268
217
|
end
|
269
218
|
end
|
@@ -1,10 +1,26 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# Copyright (C) 2005-2025 Sutou Kouhei <kou@cozmixng.org>
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
16
|
+
|
17
|
+
require_relative "../engine"
|
18
|
+
require_relative "drawing-area-primitive"
|
3
19
|
|
4
20
|
module Rabbit
|
5
21
|
module Renderer
|
6
22
|
module Display
|
7
|
-
class DrawingAreaViewOnly
|
23
|
+
class DrawingAreaViewOnly < Renderer::Base
|
8
24
|
include Renderer::Engine::Cairo
|
9
25
|
include DrawingAreaPrimitive
|
10
26
|
|
@@ -24,11 +40,6 @@ module Rabbit
|
|
24
40
|
end
|
25
41
|
|
26
42
|
private
|
27
|
-
def init_color
|
28
|
-
super
|
29
|
-
init_engine_color
|
30
|
-
end
|
31
|
-
|
32
43
|
def add_widgets_to_container(container, &block)
|
33
44
|
if block_given?
|
34
45
|
yield(container, @area)
|
@@ -1,24 +1,28 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# Copyright (C) 2004-2025 Sutou Kouhei <kou@cozmixng.org>
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
16
|
+
|
17
|
+
require_relative "../engine"
|
18
|
+
require_relative "drawing-area-base"
|
3
19
|
|
4
20
|
module Rabbit
|
5
21
|
module Renderer
|
6
22
|
module Display
|
7
|
-
class DrawingArea
|
23
|
+
class DrawingArea < Renderer::Base
|
8
24
|
include Renderer::Engine::Cairo
|
9
25
|
include DrawingAreaBase
|
10
|
-
|
11
|
-
class << self
|
12
|
-
def priority
|
13
|
-
100
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
def init_color
|
19
|
-
super
|
20
|
-
init_engine_color
|
21
|
-
end
|
22
26
|
end
|
23
27
|
end
|
24
28
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2006-
|
1
|
+
# Copyright (C) 2006-2025 Sutou Kouhei <kou@cozmixng.org>
|
2
2
|
#
|
3
3
|
# This program is free software; you can redistribute it and/or modify
|
4
4
|
# it under the terms of the GNU General Public License as published by
|
@@ -14,7 +14,7 @@
|
|
14
14
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
15
15
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
16
16
|
|
17
|
-
|
17
|
+
require_relative "../../gesture/handler"
|
18
18
|
|
19
19
|
module Rabbit
|
20
20
|
module Renderer
|
@@ -56,14 +56,14 @@ module Rabbit
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
add_motion_notify_hook do |
|
59
|
+
add_motion_notify_hook do |x, y|
|
60
60
|
if @gesture.processing? and pressed_info == target_info
|
61
61
|
unless @gesture.moved?
|
62
62
|
keep_cursor(:gesture)
|
63
63
|
update_cursor(:hand)
|
64
64
|
end
|
65
65
|
first_move = !@gesture.moved?
|
66
|
-
handled = @gesture.button_motion(
|
66
|
+
handled = @gesture.button_motion(x, y, width, height)
|
67
67
|
queue_draw if handled or first_move
|
68
68
|
init_renderer(@surface)
|
69
69
|
@gesture.draw_last_locus(self)
|
@@ -84,16 +84,16 @@ module Rabbit
|
|
84
84
|
add_gesture_action(%w(L R), "FirstSlide")
|
85
85
|
add_gesture_action(%w(U), "Quit")
|
86
86
|
|
87
|
-
add_gesture_action(%w(D), "ToggleIndexMode"
|
88
|
-
add_gesture_action(%w(D U), "
|
87
|
+
add_gesture_action(%w(D), "ToggleIndexMode")
|
88
|
+
add_gesture_action(%w(D U), "ToggleFullscreen")
|
89
89
|
add_gesture_action(%w(LR), "ToggleGraffitiMode")
|
90
90
|
|
91
91
|
add_gesture_action(%w(UL), "Redraw")
|
92
|
-
add_gesture_action(%w(UL D), "ReloadTheme"
|
92
|
+
add_gesture_action(%w(UL D), "ReloadTheme")
|
93
93
|
end
|
94
94
|
|
95
|
-
def add_gesture_action(sequence, action
|
96
|
-
@gesture.add_action(sequence, @canvas.
|
95
|
+
def add_gesture_action(sequence, action)
|
96
|
+
@gesture.add_action(sequence, @canvas.actions.find_action(action))
|
97
97
|
end
|
98
98
|
|
99
99
|
def gesturing?
|
@@ -1,7 +1,22 @@
|
|
1
|
+
# Copyright (C) 2006-2025 Sutou Kouhei <kou@cozmixng.org>
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
16
|
+
|
1
17
|
require "forwardable"
|
2
18
|
|
3
|
-
|
4
|
-
require "rabbit/graffiti/processor"
|
19
|
+
require_relative "../../graffiti/processor"
|
5
20
|
|
6
21
|
module Rabbit
|
7
22
|
module Renderer
|
@@ -20,13 +35,8 @@ module Rabbit
|
|
20
35
|
init_graffiti
|
21
36
|
end
|
22
37
|
|
23
|
-
def attach_to(window, container=nil)
|
24
|
-
super
|
25
|
-
graffiti_mode_action.active = false
|
26
|
-
end
|
27
|
-
|
28
38
|
def graffiti_mode?
|
29
|
-
|
39
|
+
@graffiti_mode
|
30
40
|
end
|
31
41
|
|
32
42
|
def have_graffiti?
|
@@ -38,6 +48,7 @@ module Rabbit
|
|
38
48
|
end
|
39
49
|
|
40
50
|
def toggle_graffiti_mode
|
51
|
+
@graffiti_mode = !@graffiti_mode
|
41
52
|
if graffiti_mode?
|
42
53
|
update_cursor(:pencil)
|
43
54
|
else
|
@@ -48,13 +59,11 @@ module Rabbit
|
|
48
59
|
|
49
60
|
def clear_graffiti
|
50
61
|
@graffiti.clear
|
51
|
-
Action.update_graffiti_action_status(@canvas)
|
52
62
|
@area.queue_draw
|
53
63
|
end
|
54
64
|
|
55
65
|
def undo_graffiti
|
56
66
|
@graffiti.undo
|
57
|
-
Action.update_graffiti_action_status(@canvas)
|
58
67
|
@area.queue_draw
|
59
68
|
end
|
60
69
|
|
@@ -67,6 +76,7 @@ module Rabbit
|
|
67
76
|
private
|
68
77
|
def init_graffiti
|
69
78
|
@graffiti = Rabbit::Graffiti::Processor.new
|
79
|
+
@graffiti_mode = false
|
70
80
|
|
71
81
|
pressed_button = nil
|
72
82
|
target_button = 1
|
@@ -85,18 +95,17 @@ module Rabbit
|
|
85
95
|
pressed_button = nil
|
86
96
|
if graffiti_mode? and event.button == target_button
|
87
97
|
@graffiti.button_release(event.x, event.y, width, height)
|
88
|
-
Action.update_graffiti_action_status(@canvas)
|
89
98
|
true
|
90
99
|
else
|
91
100
|
false
|
92
101
|
end
|
93
102
|
end
|
94
103
|
|
95
|
-
add_motion_notify_hook do |
|
104
|
+
add_motion_notify_hook do |x, y|
|
96
105
|
if graffiti_mode? and
|
97
106
|
@graffiti.dragging? and
|
98
107
|
pressed_button == target_button
|
99
|
-
@graffiti.button_motion(
|
108
|
+
@graffiti.button_motion(x, y, width, height)
|
100
109
|
redraw
|
101
110
|
true
|
102
111
|
else
|
@@ -1,4 +1,20 @@
|
|
1
|
-
|
1
|
+
# Copyright (C) 2006-2025 Sutou Kouhei <kou@cozmixng.org>
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
16
|
+
|
17
|
+
require_relative "../../info-window"
|
2
18
|
|
3
19
|
module Rabbit
|
4
20
|
module Renderer
|
@@ -10,13 +26,17 @@ module Rabbit
|
|
10
26
|
end
|
11
27
|
|
12
28
|
def toggle_info_window
|
13
|
-
if
|
29
|
+
if info_window_showing?
|
14
30
|
hide_info_window
|
15
31
|
else
|
16
32
|
show_info_window
|
17
33
|
end
|
18
34
|
end
|
19
35
|
|
36
|
+
def info_window_showing?
|
37
|
+
@info_window.showing?
|
38
|
+
end
|
39
|
+
|
20
40
|
def show_info_window
|
21
41
|
@info_window.show(width, height)
|
22
42
|
end
|
@@ -1,3 +1,19 @@
|
|
1
|
+
# Copyright (C) 2006-2025 Sutou Kouhei <kou@cozmixng.org>
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
16
|
+
|
1
17
|
module Rabbit
|
2
18
|
module Renderer
|
3
19
|
module Display
|
@@ -7,17 +23,12 @@ module Rabbit
|
|
7
23
|
init_magnifier
|
8
24
|
end
|
9
25
|
|
10
|
-
def attach_to(window, container=nil)
|
11
|
-
super
|
12
|
-
magnifier_action.active = false
|
13
|
-
end
|
14
|
-
|
15
26
|
def toggle_magnifier
|
27
|
+
@magnifying = !@magnifying
|
16
28
|
if magnifying?
|
17
29
|
grab
|
18
|
-
|
19
|
-
@
|
20
|
-
@magnifier_center_y ||= y
|
30
|
+
@magnifier_center_x = 0
|
31
|
+
@magnifier_center_y = 0
|
21
32
|
else
|
22
33
|
ungrab
|
23
34
|
@magnifier_center_x = nil
|
@@ -26,8 +37,14 @@ module Rabbit
|
|
26
37
|
queue_draw
|
27
38
|
end
|
28
39
|
|
40
|
+
def magnifying?
|
41
|
+
@magnifying
|
42
|
+
end
|
43
|
+
|
29
44
|
private
|
30
45
|
def init_magnifier
|
46
|
+
@magnifying = false
|
47
|
+
|
31
48
|
@magnifier_ratio = 1.5
|
32
49
|
@magnifier_center_x = nil
|
33
50
|
@magnifier_center_y = nil
|
@@ -41,7 +58,7 @@ module Rabbit
|
|
41
58
|
event.state.control_mask?
|
42
59
|
@magnifier_center_x = event.x
|
43
60
|
@magnifier_center_y = event.y
|
44
|
-
magnifier_action.
|
61
|
+
magnifier_action.enabled = true
|
45
62
|
true
|
46
63
|
else
|
47
64
|
false
|
@@ -50,17 +67,17 @@ module Rabbit
|
|
50
67
|
|
51
68
|
add_button_release_hook do |event, last_event|
|
52
69
|
if magnifying? and event.button == target_button
|
53
|
-
magnifier_action.
|
70
|
+
magnifier_action.enabled = false
|
54
71
|
true
|
55
72
|
else
|
56
73
|
false
|
57
74
|
end
|
58
75
|
end
|
59
76
|
|
60
|
-
add_motion_notify_hook do |
|
77
|
+
add_motion_notify_hook do |x, y|
|
61
78
|
if magnifying?
|
62
|
-
@magnifier_center_x =
|
63
|
-
@magnifier_center_y =
|
79
|
+
@magnifier_center_x = x
|
80
|
+
@magnifier_center_y = y
|
64
81
|
queue_draw
|
65
82
|
add_button_handler do
|
66
83
|
clear_button_handler
|
@@ -112,10 +129,6 @@ module Rabbit
|
|
112
129
|
draw_rounded_rectangle(false, x, y, w, h, r, "red")
|
113
130
|
end
|
114
131
|
|
115
|
-
def magnifying?
|
116
|
-
magnifier_action.active?
|
117
|
-
end
|
118
|
-
|
119
132
|
def magnifier_action
|
120
133
|
@canvas.action("ToggleMagnifier")
|
121
134
|
end
|
@@ -1,4 +1,20 @@
|
|
1
|
-
|
1
|
+
# Copyright (C) 2006-2025 Sutou Kouhei <kou@cozmixng.org>
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
16
|
+
|
17
|
+
require_relative "../../gtk"
|
2
18
|
|
3
19
|
module Rabbit
|
4
20
|
module Renderer
|