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,20 @@
|
|
1
|
-
|
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 "../../menu"
|
2
18
|
|
3
19
|
module Rabbit
|
4
20
|
module Renderer
|
@@ -13,8 +29,16 @@ module Rabbit
|
|
13
29
|
@menu.update_menu(@canvas)
|
14
30
|
end
|
15
31
|
|
16
|
-
def
|
17
|
-
@menu.
|
32
|
+
def toggle_menu(x=nil, y=nil)
|
33
|
+
@menu.toggle(x, y)
|
34
|
+
end
|
35
|
+
|
36
|
+
def popup_menu(x=nil, y=nil)
|
37
|
+
@menu.popup(x, y)
|
38
|
+
end
|
39
|
+
|
40
|
+
def popdown_menu
|
41
|
+
@menu.popdown
|
18
42
|
end
|
19
43
|
|
20
44
|
def attach_menu(window)
|
@@ -0,0 +1,45 @@
|
|
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 "../../gtk"
|
18
|
+
|
19
|
+
module Rabbit
|
20
|
+
module Renderer
|
21
|
+
module Display
|
22
|
+
module MotionHandler
|
23
|
+
private
|
24
|
+
if Gtk::Widget.method_defined?(:add_controller)
|
25
|
+
def set_motion_event(widget)
|
26
|
+
motion = Gtk::EventControllerMotion.new
|
27
|
+
motion.signal_connect(:motion) do |_, x, y|
|
28
|
+
call_hook_procs(@motion_notify_hook_procs, x, y)
|
29
|
+
end
|
30
|
+
widget.add_controller(motion)
|
31
|
+
end
|
32
|
+
else
|
33
|
+
def set_motion_event(widget)
|
34
|
+
widget.add_events(Gdk::EventMask::BUTTON1_MOTION_MASK |
|
35
|
+
Gdk::EventMask::BUTTON2_MOTION_MASK |
|
36
|
+
Gdk::EventMask::BUTTON3_MOTION_MASK)
|
37
|
+
widget.signal_connect("motion_notify_event") do |widget, event|
|
38
|
+
call_hook_procs(@motion_notify_hook_procs, event.x, event.y)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -1,7 +1,22 @@
|
|
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
|
+
|
1
17
|
require "forwardable"
|
2
18
|
|
3
|
-
|
4
|
-
require "rabbit/progress"
|
19
|
+
require_relative "../../progress"
|
5
20
|
|
6
21
|
module Rabbit
|
7
22
|
module Renderer
|
@@ -1,4 +1,20 @@
|
|
1
|
-
|
1
|
+
# Copyright (C) 2010-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
|
@@ -13,21 +29,52 @@ module Rabbit
|
|
13
29
|
def init_scroll_handler
|
14
30
|
end
|
15
31
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
when Gdk::ScrollDirection::DOWN
|
25
|
-
@canvas.activate("NextSlide")
|
32
|
+
if Gtk::Widget.method_defined?(:add_controller)
|
33
|
+
ScrollEvent = Struct.new(:direction)
|
34
|
+
|
35
|
+
def set_scroll_event(widget)
|
36
|
+
scroll = Gtk::EventControllerScroll.new([:both_axes])
|
37
|
+
scroll.signal_connect(:scroll) do |_, dx, dy|
|
38
|
+
if dy.zero?
|
39
|
+
false
|
26
40
|
else
|
27
|
-
|
41
|
+
if dy.positive?
|
42
|
+
direction = Gdk::ScrollDirection::UP
|
43
|
+
else
|
44
|
+
direction = Gdk::ScrollDirection::DOWN
|
45
|
+
end
|
46
|
+
event = ScrollEvent.new(direction)
|
47
|
+
handled = call_hook_procs(@scroll_hook_procs, event)
|
48
|
+
unless handled
|
49
|
+
if direction == Gdk::ScrollDirection::UP
|
50
|
+
@canvas.activate("NextSlide")
|
51
|
+
else
|
52
|
+
@canvas.activate("PreviousSlide")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
true
|
56
|
+
end
|
57
|
+
end
|
58
|
+
widget.add_controller(scroll)
|
59
|
+
end
|
60
|
+
else
|
61
|
+
def set_scroll_event(widget)
|
62
|
+
widget.add_events(Gdk::EventMask::SCROLL_MASK)
|
63
|
+
widget.signal_connect("scroll_event") do |widget, event|
|
64
|
+
handled = call_hook_procs(@scroll_hook_procs, event)
|
65
|
+
unless handled
|
66
|
+
handled = true
|
67
|
+
case event.direction
|
68
|
+
when Gdk::ScrollDirection::UP
|
69
|
+
@canvas.activate("PreviousSlide")
|
70
|
+
when Gdk::ScrollDirection::DOWN
|
71
|
+
@canvas.activate("NextSlide")
|
72
|
+
else
|
73
|
+
handled = false
|
74
|
+
end
|
28
75
|
end
|
76
|
+
handled
|
29
77
|
end
|
30
|
-
handled
|
31
78
|
end
|
32
79
|
end
|
33
80
|
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 "../../search-window"
|
2
18
|
|
3
19
|
module Rabbit
|
4
20
|
module Renderer
|
@@ -103,7 +119,8 @@ module Rabbit
|
|
103
119
|
if target_index and target_index >= 0 and
|
104
120
|
target_index < indexes.size and
|
105
121
|
indexes[target_index] != current_index
|
106
|
-
@canvas.activate("
|
122
|
+
@canvas.activate("JumpToSlide",
|
123
|
+
GLib::Variant.new(indexes[target_index], "i"))
|
107
124
|
end
|
108
125
|
end
|
109
126
|
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_spotlight
|
8
24
|
end
|
9
25
|
|
10
|
-
def attach_to(window, container=nil)
|
11
|
-
super
|
12
|
-
spotlight_action.active = false
|
13
|
-
end
|
14
|
-
|
15
26
|
def toggle_spotlight
|
27
|
+
@spotlighting = !@spotlighting
|
16
28
|
if spotlighting?
|
17
29
|
grab
|
18
|
-
|
19
|
-
@
|
20
|
-
@spotlight_center_y ||= y
|
30
|
+
@spotlight_center_x ||= 0
|
31
|
+
@spotlight_center_y ||= 0
|
21
32
|
else
|
22
33
|
ungrab
|
23
34
|
@spotlight_center_x = nil
|
@@ -26,22 +37,33 @@ module Rabbit
|
|
26
37
|
queue_draw
|
27
38
|
end
|
28
39
|
|
40
|
+
def spotlighting?
|
41
|
+
@spotlighting
|
42
|
+
end
|
43
|
+
|
29
44
|
private
|
30
45
|
def init_spotlight
|
46
|
+
@spotlighting = false
|
47
|
+
|
31
48
|
@spotlight_radius_ratio = 0.1
|
32
49
|
@spotlight_center_x = nil
|
33
50
|
@spotlight_center_y = nil
|
34
51
|
|
35
|
-
target_button = 3
|
36
|
-
target_event_type = Gdk::EventType::BUTTON2_PRESS
|
37
|
-
target_info = [target_button, target_event_type]
|
38
|
-
|
39
52
|
add_button_press_hook do |event|
|
40
|
-
|
53
|
+
is_target = lambda do
|
54
|
+
return false unless event.button == 3
|
55
|
+
if Gdk::EventType.const_defined?(:BUTTON2_PRESS)
|
56
|
+
event.event_type == Gdk::EventType::BUTTON2_PRESS
|
57
|
+
else
|
58
|
+
event.event_type == Gdk::EventType::BUTTON_PRESS and
|
59
|
+
event.n_presses == 2
|
60
|
+
end
|
61
|
+
end
|
62
|
+
if is_target.call
|
41
63
|
add_button_handler do
|
42
64
|
@spotlight_center_x = event.x
|
43
65
|
@spotlight_center_y = event.y
|
44
|
-
|
66
|
+
@canvas.activate("ToggleSpotlight")
|
45
67
|
clear_button_handler
|
46
68
|
true
|
47
69
|
end
|
@@ -49,10 +71,10 @@ module Rabbit
|
|
49
71
|
false
|
50
72
|
end
|
51
73
|
|
52
|
-
add_motion_notify_hook do |
|
74
|
+
add_motion_notify_hook do |x, y|
|
53
75
|
if spotlighting?
|
54
|
-
@spotlight_center_x =
|
55
|
-
@spotlight_center_y =
|
76
|
+
@spotlight_center_x = x
|
77
|
+
@spotlight_center_y = y
|
56
78
|
queue_draw
|
57
79
|
true
|
58
80
|
else
|
@@ -103,14 +125,6 @@ module Rabbit
|
|
103
125
|
}
|
104
126
|
draw_rectangle(true, 0, 0, size.real_width, size.real_height, nil, params)
|
105
127
|
end
|
106
|
-
|
107
|
-
def spotlighting?
|
108
|
-
spotlight_action.active?
|
109
|
-
end
|
110
|
-
|
111
|
-
def spotlight_action
|
112
|
-
@canvas.action("ToggleSpotlight")
|
113
|
-
end
|
114
128
|
end
|
115
129
|
end
|
116
130
|
end
|
@@ -1,37 +1,17 @@
|
|
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.
|
2
16
|
|
3
|
-
|
4
|
-
module Renderer
|
5
|
-
module Display
|
6
|
-
extend Utils
|
7
|
-
|
8
|
-
class << self
|
9
|
-
@initialized = false
|
10
|
-
@preferred_class_name = nil
|
11
|
-
def init(options={})
|
12
|
-
if options.has_key?(:preferred_class_name)
|
13
|
-
@preferred_class_name = options[:preferred_class_name]
|
14
|
-
end
|
15
|
-
unless @initialized
|
16
|
-
@initialized = true
|
17
|
-
dir = ::File.join("rabbit", "renderer", "display")
|
18
|
-
require_files_under_directory_in_load_path(dir)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def new(*args, &block)
|
23
|
-
init
|
24
|
-
target_class = nil
|
25
|
-
if @preferred_class_name
|
26
|
-
if const_defined?(@preferred_class_name)
|
27
|
-
target_class = const_get(@preferred_class_name)
|
28
|
-
target_class = nil unless target_class.is_a?(Class)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
target_class ||= corresponding_class_under_module(self)
|
32
|
-
target_class.new(*args, &block)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
17
|
+
require_relative "display/drawing-area"
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2005-
|
1
|
+
# Copyright (C) 2005-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
|
@@ -17,8 +17,8 @@
|
|
17
17
|
require "cairo"
|
18
18
|
require "stringio"
|
19
19
|
|
20
|
-
|
21
|
-
|
20
|
+
require_relative "../../image-data-loader"
|
21
|
+
require_relative "../kernel"
|
22
22
|
|
23
23
|
module Rabbit
|
24
24
|
module Renderer
|
@@ -26,8 +26,6 @@ module Rabbit
|
|
26
26
|
module Cairo
|
27
27
|
include Kernel
|
28
28
|
|
29
|
-
attr_writer :foreground, :background
|
30
|
-
|
31
29
|
def background_image=(pixbuf)
|
32
30
|
surface = ::Cairo::ImageSurface.new(::Cairo::FORMAT_A1, 1, 1)
|
33
31
|
context = ::Cairo::Context.new(surface)
|
@@ -316,11 +314,6 @@ module Rabbit
|
|
316
314
|
end
|
317
315
|
|
318
316
|
private
|
319
|
-
def init_engine_color
|
320
|
-
@foreground = make_color("black")
|
321
|
-
@background = make_color(@background_color)
|
322
|
-
end
|
323
|
-
|
324
317
|
def set_source(color, params={})
|
325
318
|
pattern = params[:pattern]
|
326
319
|
set = false
|
@@ -474,7 +467,7 @@ module Rabbit
|
|
474
467
|
end
|
475
468
|
|
476
469
|
def set_stroke_options(params)
|
477
|
-
set_line_width(
|
470
|
+
set_line_width(params[:line_width] || 1)
|
478
471
|
[:line_cap, :line_join].each do |key|
|
479
472
|
value = params[key]
|
480
473
|
@context.send("#{key}=", value) if value
|
@@ -1 +1,17 @@
|
|
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 "engine/cairo"
|
@@ -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,22 +14,11 @@
|
|
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
|
-
require "rabbit/renderer/color"
|
17
|
+
require_relative "../pango-markup"
|
20
18
|
|
21
19
|
module Rabbit
|
22
20
|
module Renderer
|
23
21
|
module Kernel
|
24
|
-
def make_color(color)
|
25
|
-
return color if color.is_a?(Color)
|
26
|
-
if color.nil?
|
27
|
-
@foreground
|
28
|
-
else
|
29
|
-
Color.parse(color)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
22
|
def translate_context(x, y, params={})
|
34
23
|
end
|
35
24
|
|
@@ -204,13 +193,6 @@ module Rabbit
|
|
204
193
|
end
|
205
194
|
|
206
195
|
private
|
207
|
-
def get_line_width(params, default=nil)
|
208
|
-
params[:line_width] || default
|
209
|
-
end
|
210
|
-
|
211
|
-
def set_font_resolution(context)
|
212
|
-
end
|
213
|
-
|
214
196
|
def setup_flag_params(pole_height, default_flag_width_ratio, params)
|
215
197
|
params = params.dup
|
216
198
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2016-
|
1
|
+
# Copyright (C) 2016-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,15 +14,14 @@
|
|
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
|
-
|
17
|
+
require_relative "../image-data-loader"
|
18
|
+
require_relative "base"
|
19
|
+
require_relative "engine/cairo"
|
20
|
+
require_relative "../utils"
|
21
21
|
|
22
22
|
module Rabbit
|
23
23
|
module Renderer
|
24
|
-
class Offscreen
|
25
|
-
include Renderer::Base
|
24
|
+
class Offscreen < Base
|
26
25
|
include Engine::Cairo
|
27
26
|
|
28
27
|
attr_accessor :filename
|
@@ -93,12 +92,12 @@ module Rabbit
|
|
93
92
|
end
|
94
93
|
|
95
94
|
def create_pango_context
|
96
|
-
context = Gtk::
|
95
|
+
context = Gtk::Label.new.create_pango_context
|
97
96
|
set_font_resolution(context)
|
98
97
|
context
|
99
98
|
end
|
100
99
|
|
101
|
-
def pre_to_pixbuf(
|
100
|
+
def pre_to_pixbuf(n_slides)
|
102
101
|
end
|
103
102
|
|
104
103
|
def to_pixbufing(i)
|
@@ -110,11 +109,6 @@ module Rabbit
|
|
110
109
|
end
|
111
110
|
|
112
111
|
private
|
113
|
-
def init_color
|
114
|
-
super
|
115
|
-
init_engine_color
|
116
|
-
end
|
117
|
-
|
118
112
|
def offscreen_renderer?
|
119
113
|
true
|
120
114
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2005-
|
1
|
+
# Copyright (C) 2005-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 "../rabbit"
|
18
18
|
|
19
19
|
module Rabbit
|
20
20
|
module Renderer
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2005-
|
1
|
+
# Copyright (C) 2005-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,21 +14,20 @@
|
|
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 "../rabbit"
|
18
18
|
|
19
|
-
|
19
|
+
require_relative "../filename"
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
require_relative "base"
|
22
|
+
require_relative "engine/cairo"
|
23
|
+
require_relative "print-layout"
|
24
24
|
|
25
25
|
module Rabbit
|
26
26
|
module Renderer
|
27
|
-
class Printer
|
27
|
+
class Printer < Base
|
28
28
|
A4_WIDTH = 596
|
29
29
|
A4_HEIGHT = 842
|
30
30
|
|
31
|
-
include Renderer::Base
|
32
31
|
include Engine::Cairo
|
33
32
|
|
34
33
|
attr_writer :filename
|
@@ -81,7 +80,7 @@ module Rabbit
|
|
81
80
|
@filename || default_filename
|
82
81
|
end
|
83
82
|
|
84
|
-
def pre_print(
|
83
|
+
def pre_print(n_slides)
|
85
84
|
init_context(create_context)
|
86
85
|
end
|
87
86
|
|
@@ -177,12 +176,6 @@ module Rabbit
|
|
177
176
|
end
|
178
177
|
end
|
179
178
|
|
180
|
-
def init_color
|
181
|
-
super
|
182
|
-
@foreground = make_color("black")
|
183
|
-
@background = make_color(@background_color)
|
184
|
-
end
|
185
|
-
|
186
179
|
def update_layout
|
187
180
|
@layout = PrintLayout.create(self, @canvas)
|
188
181
|
end
|
@@ -214,7 +207,7 @@ module Rabbit
|
|
214
207
|
args[0] = ::Cairo::ScriptDevice.new(args[0])
|
215
208
|
::Cairo::ScriptSurface.new(*args)
|
216
209
|
else
|
217
|
-
|
210
|
+
Rabbit.logger.warn(_("can't find printer for %s") % filename)
|
218
211
|
args[0] = "default.ps"
|
219
212
|
::Cairo::PSSurface.new(*args)
|
220
213
|
end
|