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
data/lib/rabbit/front.rb
CHANGED
@@ -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
|
@@ -16,8 +16,8 @@
|
|
16
16
|
|
17
17
|
require "monitor"
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
require_relative "rabbit"
|
20
|
+
require_relative "utils"
|
21
21
|
|
22
22
|
module Rabbit
|
23
23
|
|
@@ -109,8 +109,15 @@ module Rabbit
|
|
109
109
|
@canvas.slide_title
|
110
110
|
end
|
111
111
|
|
112
|
+
def n_slides
|
113
|
+
@canvas.n_slides
|
114
|
+
end
|
115
|
+
|
112
116
|
def total_slide_number
|
113
|
-
|
117
|
+
warn("#{self.class.name}\##{__method__} is deprecated. " +
|
118
|
+
"Use \#n_slides instead.",
|
119
|
+
category: :deprecated)
|
120
|
+
n_slides
|
114
121
|
end
|
115
122
|
|
116
123
|
def current_slide_number
|
data/lib/rabbit/gem-finder.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2012 Kouhei
|
1
|
+
# Copyright (C) 2012-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,16 +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 "gettext"
|
18
18
|
|
19
19
|
module Rabbit
|
20
20
|
class GemFinder
|
21
21
|
include GetText
|
22
22
|
|
23
|
-
def initialize(logger=nil)
|
24
|
-
@logger = logger || Logger.default
|
25
|
-
end
|
26
|
-
|
27
23
|
def find(name, prefix)
|
28
24
|
normalized_name = name.downcase
|
29
25
|
unless normalized_name.start_with?(prefix)
|
@@ -43,11 +39,11 @@ module Rabbit
|
|
43
39
|
require "rubygems/dependency_installer"
|
44
40
|
options = {}
|
45
41
|
if File.writable?(Gem.dir)
|
46
|
-
|
42
|
+
Rabbit.logger.info(_("Installing gem: %s") % normalized_name)
|
47
43
|
else
|
48
44
|
options[:user_install] = true
|
49
45
|
format = _("Installing gem in user install mode: %s")
|
50
|
-
|
46
|
+
Rabbit.logger.info(format % normalized_name)
|
51
47
|
end
|
52
48
|
installer = Gem::DependencyInstaller.new(options)
|
53
49
|
installer.install(normalized_name, Gem::Requirement.default)
|
data/lib/rabbit/gem-pusher.rb
CHANGED
@@ -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
|
@@ -17,9 +17,9 @@
|
|
17
17
|
require "rake"
|
18
18
|
require "open-uri"
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
require_relative "gettext"
|
21
|
+
require_relative "password-reader"
|
22
|
+
require_relative "yaml-loader"
|
23
23
|
|
24
24
|
module Rabbit
|
25
25
|
class GemPusher
|
@@ -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,11 +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
|
-
|
17
|
+
require_relative "../gtk"
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
require_relative "../rabbit"
|
20
|
+
require_relative "../renderer/engine"
|
21
|
+
require_relative "processor"
|
22
22
|
|
23
23
|
module Rabbit
|
24
24
|
module Gesture
|
@@ -35,6 +35,7 @@ module Rabbit
|
|
35
35
|
attr_accessor :line_width, :next_width
|
36
36
|
def initialize(conf={})
|
37
37
|
super()
|
38
|
+
@icon_theme = Gtk::IconTheme.default
|
38
39
|
conf ||= {}
|
39
40
|
@back_color = conf[:back_color] || DEFAULT_BACK_COLOR
|
40
41
|
@line_color = conf[:line_color] || DEFAULT_LINE_COLOR
|
@@ -56,12 +57,12 @@ module Rabbit
|
|
56
57
|
@actions.clear
|
57
58
|
end
|
58
59
|
|
59
|
-
def add_action(sequence, action
|
60
|
+
def add_action(sequence, action)
|
60
61
|
invalid_motion = sequence.find do |motion|
|
61
62
|
not @processor.available_motion?(motion)
|
62
63
|
end
|
63
64
|
raise InvalidMotionError.new(invalid_motion) if invalid_motion
|
64
|
-
@actions << [sequence, action
|
65
|
+
@actions << [sequence, action]
|
65
66
|
end
|
66
67
|
|
67
68
|
def start(button, x, y, base_x, base_y)
|
@@ -100,7 +101,7 @@ module Rabbit
|
|
100
101
|
|
101
102
|
draw_available_marks(renderer, next_available_motions)
|
102
103
|
|
103
|
-
act
|
104
|
+
act = action
|
104
105
|
draw_mark(renderer, act, *@processor.position) if act
|
105
106
|
|
106
107
|
draw_locus(renderer)
|
@@ -117,11 +118,11 @@ module Rabbit
|
|
117
118
|
|
118
119
|
private
|
119
120
|
def perform_action
|
120
|
-
act
|
121
|
+
act = action
|
121
122
|
@processor.reset
|
122
123
|
@locus.clear
|
123
124
|
if act
|
124
|
-
act.activate
|
125
|
+
act.gaction.activate
|
125
126
|
true
|
126
127
|
else
|
127
128
|
false
|
@@ -130,16 +131,16 @@ module Rabbit
|
|
130
131
|
|
131
132
|
def action
|
132
133
|
motions = @processor.motions
|
133
|
-
@actions.each do |sequence, act
|
134
|
-
return
|
134
|
+
@actions.each do |sequence, act|
|
135
|
+
return act if sequence == motions and act.gaction.enabled?
|
135
136
|
end
|
136
137
|
nil
|
137
138
|
end
|
138
139
|
|
139
140
|
def available_motions
|
140
141
|
motions = @processor.motions
|
141
|
-
@actions.collect do |sequence, act
|
142
|
-
if sequence == motions and act.
|
142
|
+
@actions.collect do |sequence, act|
|
143
|
+
if sequence == motions and act.gaction.enabled?
|
143
144
|
[sequence.last, act]
|
144
145
|
else
|
145
146
|
nil
|
@@ -149,8 +150,8 @@ module Rabbit
|
|
149
150
|
|
150
151
|
def next_available_motions
|
151
152
|
motions = @processor.motions
|
152
|
-
@actions.collect do |sequence, act
|
153
|
-
if sequence[0..-2] == motions and act.
|
153
|
+
@actions.collect do |sequence, act|
|
154
|
+
if sequence[0..-2] == motions and act.gaction.enabled?
|
154
155
|
[sequence.last, act]
|
155
156
|
else
|
156
157
|
nil
|
@@ -171,12 +172,16 @@ module Rabbit
|
|
171
172
|
end
|
172
173
|
|
173
174
|
def draw_action_image(renderer, act, x, y)
|
174
|
-
icon =
|
175
|
-
icon = act.create_icon(Gtk::IconSize::DIALOG) if act
|
175
|
+
icon = act&.icon
|
176
176
|
if icon
|
177
|
-
|
178
|
-
|
179
|
-
|
177
|
+
if icon.respond_to?(:bytes)
|
178
|
+
loader = GdkPixbuf::PixbufLoader.new
|
179
|
+
loader.set_size(48, 48)
|
180
|
+
loader.last_write(icon.bytes.to_s)
|
181
|
+
pixbuf = loader.pixbuf
|
182
|
+
else
|
183
|
+
pixbuf = @icon_theme.load_icon(icon.names[0], 48, 0)
|
184
|
+
end
|
180
185
|
x -= pixbuf.width / 2.0
|
181
186
|
y -= pixbuf.height / 2.0
|
182
187
|
renderer.draw_pixbuf(pixbuf, x, y)
|
@@ -1,6 +1,22 @@
|
|
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
|
-
|
17
|
+
require_relative "../gtk"
|
18
|
+
|
19
|
+
require_relative "../renderer/color"
|
4
20
|
|
5
21
|
module Rabbit
|
6
22
|
module Graffiti
|
@@ -1,7 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
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"
|
18
|
+
|
19
|
+
require_relative "../renderer/engine"
|
20
|
+
require_relative "config-dialog"
|
5
21
|
|
6
22
|
module Rabbit
|
7
23
|
module Graffiti
|
data/lib/rabbit/gtk.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2014-
|
1
|
+
# Copyright (C) 2014-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
|
@@ -23,27 +23,49 @@ end
|
|
23
23
|
|
24
24
|
Gtk.init if Gtk.respond_to?(:init)
|
25
25
|
|
26
|
-
module
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
26
|
+
module Gdk
|
27
|
+
class ModifierType
|
28
|
+
ALT_MASK = MOD1_MASK unless const_defined?(:ALT_MASK)
|
29
|
+
alias_method :alt_mask?, :mod1_mask? unless method_defined?(:alt_mask?)
|
30
|
+
end
|
31
|
+
|
32
|
+
if const_defined?(:Paintable)
|
33
|
+
class PixbufAnimationPaintable < GLib::Object
|
34
|
+
type_register
|
35
|
+
|
36
|
+
include Paintable
|
37
|
+
|
38
|
+
def initialize(animation)
|
39
|
+
super()
|
40
|
+
@animation = animation
|
41
|
+
@iter = @animation.get_iter
|
42
|
+
end
|
43
|
+
|
44
|
+
def virtual_do_snapshot(snapshot, width, height)
|
45
|
+
@iter.advance
|
46
|
+
texture = Texture.new(@iter.pixbuf)
|
47
|
+
snapshot.append_texture(texture, [0, 0, width, height])
|
48
|
+
delay_time = @iter.delay_time
|
49
|
+
if delay_time != -1
|
50
|
+
GLib::Timeout.add(@iter.delay_time) do
|
51
|
+
invalidate_contents
|
52
|
+
GLib::Source::REMOVE
|
53
|
+
end
|
54
|
+
end
|
35
55
|
end
|
36
56
|
|
37
|
-
def
|
38
|
-
|
57
|
+
def virtual_do_get_intrinsic_width
|
58
|
+
@animation.width
|
39
59
|
end
|
40
60
|
|
41
|
-
def
|
42
|
-
@
|
61
|
+
def virtual_do_get_intrinsic_height
|
62
|
+
@animation.height
|
43
63
|
end
|
44
64
|
end
|
45
65
|
end
|
66
|
+
end
|
46
67
|
|
68
|
+
module Gtk
|
47
69
|
unless const_defined?(:Native)
|
48
70
|
# For GTK 3
|
49
71
|
#
|
@@ -56,4 +78,16 @@ module Gtk
|
|
56
78
|
alias_method :surface, :window
|
57
79
|
end
|
58
80
|
end
|
81
|
+
|
82
|
+
unless const_defined?(:StackTransitionType)
|
83
|
+
StackTransitionType = Stack::TransitionType
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
unless Gtk.const_defined?(:MediaFile)
|
88
|
+
# For video
|
89
|
+
begin
|
90
|
+
require "gst"
|
91
|
+
rescue LoadError
|
92
|
+
end
|
59
93
|
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
|
@@ -22,11 +22,11 @@ begin
|
|
22
22
|
rescue LoadError
|
23
23
|
end
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
require_relative "../filename"
|
26
|
+
require_relative "../front"
|
27
|
+
require_relative "../keys"
|
28
|
+
require_relative "../rabbit"
|
29
|
+
require_relative "../utils"
|
30
30
|
|
31
31
|
module Rabbit
|
32
32
|
module HTML
|
@@ -72,7 +72,7 @@ module Rabbit
|
|
72
72
|
@outputting_index = false
|
73
73
|
@canvas.each_slide_pixbuf do |slide, pixbuf, slide_number|
|
74
74
|
message = _("Creating a image for the %dth page") % slide_number
|
75
|
-
|
75
|
+
Rabbit.logger.info(message)
|
76
76
|
save_slide(slide, pixbuf, slide_number)
|
77
77
|
true
|
78
78
|
end
|
@@ -84,7 +84,7 @@ module Rabbit
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
unless save_rss
|
87
|
-
|
87
|
+
Rabbit.logger.warn(_("can't generate RSS"))
|
88
88
|
end
|
89
89
|
end
|
90
90
|
end
|
@@ -160,18 +160,18 @@ module Rabbit
|
|
160
160
|
private
|
161
161
|
def save_environment
|
162
162
|
@index_mode = @canvas.index_mode?
|
163
|
-
@
|
164
|
-
@
|
163
|
+
@n_slides = @canvas.n_slides
|
164
|
+
@index_n_slides = 0
|
165
165
|
if output_index_html?
|
166
166
|
@canvas.with_index_mode(true) do
|
167
|
-
@
|
167
|
+
@index_n_slides = @canvas.n_slides
|
168
168
|
end
|
169
169
|
end
|
170
170
|
yield
|
171
171
|
ensure
|
172
172
|
@index_mode = nil
|
173
|
-
@
|
174
|
-
@
|
173
|
+
@n_slides = nil
|
174
|
+
@index_n_slides = nil
|
175
175
|
end
|
176
176
|
|
177
177
|
def save_html(slide, slide_number)
|
@@ -229,8 +229,8 @@ module Rabbit
|
|
229
229
|
def filename_format
|
230
230
|
format = @base_name.dup
|
231
231
|
format << "-index" if outputting_index?
|
232
|
-
|
233
|
-
format << "-%0#{number_of_places(
|
232
|
+
n_slides = outputting_index? ? @index_n_slides : @n_slides
|
233
|
+
format << "-%0#{number_of_places(n_slides)}d%s.%s"
|
234
234
|
end
|
235
235
|
|
236
236
|
def make_filename(slide_number, suffix, optional=nil)
|
@@ -290,7 +290,7 @@ module Rabbit
|
|
290
290
|
|
291
291
|
def image_title(slide_number=@slide_number)
|
292
292
|
title = h(slide_title(slide_number))
|
293
|
-
title << "(#{slide_number}/#{@canvas.
|
293
|
+
title << "(#{slide_number}/#{@canvas.n_slides - 1})"
|
294
294
|
title
|
295
295
|
end
|
296
296
|
|
@@ -315,7 +315,7 @@ module Rabbit
|
|
315
315
|
end
|
316
316
|
|
317
317
|
def last_slide?(slide_number=@slide_number)
|
318
|
-
@canvas.
|
318
|
+
@canvas.n_slides.zero? or slide_number == @canvas.n_slides - 1
|
319
319
|
end
|
320
320
|
|
321
321
|
def first_index(slide_number=@slide_number)
|
@@ -331,7 +331,7 @@ module Rabbit
|
|
331
331
|
end
|
332
332
|
|
333
333
|
def last_index(slide_number=@slide_number)
|
334
|
-
@canvas.
|
334
|
+
@canvas.n_slides - 1
|
335
335
|
end
|
336
336
|
|
337
337
|
def first_link(slide_number=@slide_number)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C)
|
1
|
+
# Copyright (C) 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,11 +14,21 @@
|
|
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
|
-
|
17
|
+
require_relative "gtk"
|
18
|
+
|
19
|
+
require_relative "image"
|
20
|
+
require_relative "theme/searcher"
|
21
|
+
|
22
|
+
module Rabbit
|
23
|
+
module Icon
|
24
|
+
module_function
|
25
|
+
def rabbit
|
26
|
+
image_theme = Theme::Searcher.find_theme("rabbit-images", true)
|
27
|
+
file = Theme::Searcher.find_file("lavie-icon.png", [image_theme])
|
28
|
+
loader = ImageLoader.new(file)
|
29
|
+
loader.resize(32, 32)
|
30
|
+
bytes = GLib::Bytes.new(loader.pixbuf.save("png"))
|
31
|
+
Gio::BytesIcon.new(bytes)
|
22
32
|
end
|
23
33
|
end
|
24
34
|
end
|
data/lib/rabbit/image/base.rb
CHANGED
@@ -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
|
@@ -19,8 +19,9 @@ require "digest/sha2"
|
|
19
19
|
|
20
20
|
require "gdk_pixbuf2"
|
21
21
|
|
22
|
-
|
23
|
-
|
22
|
+
require_relative "../image-data-loader"
|
23
|
+
require_relative "../properties"
|
24
|
+
require_relative "../utils"
|
24
25
|
|
25
26
|
module Rabbit
|
26
27
|
module ImageManipulable
|
@@ -116,9 +117,9 @@ module Rabbit
|
|
116
117
|
end
|
117
118
|
|
118
119
|
def resize(w, h)
|
119
|
-
if w.nil? and h.nil?
|
120
|
-
|
121
|
-
|
120
|
+
return if w.nil? and h.nil?
|
121
|
+
|
122
|
+
if keep_ratio?
|
122
123
|
if w and h.nil?
|
123
124
|
h = (original_height * w.to_f / original_width).ceil
|
124
125
|
elsif w.nil? and h
|
data/lib/rabbit/image/default.rb
CHANGED
@@ -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 "base"
|
2
18
|
|
3
19
|
module Rabbit
|
4
20
|
module ImageManipulable
|
data/lib/rabbit/image/dia.rb
CHANGED
@@ -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,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 "base"
|
18
18
|
|
19
19
|
module Rabbit
|
20
20
|
module ImageManipulable
|
data/lib/rabbit/image/eps.rb
CHANGED
@@ -1,6 +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.
|
2
16
|
|
3
|
-
|
17
|
+
require_relative "base"
|
4
18
|
|
5
19
|
module Rabbit
|
6
20
|
module ImageManipulable
|
data/lib/rabbit/image/gimp.rb
CHANGED
@@ -1,5 +1,21 @@
|
|
1
|
-
|
2
|
-
|
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 "../utils"
|
18
|
+
require_relative "base"
|
3
19
|
|
4
20
|
module Rabbit
|
5
21
|
module ImageManipulable
|
@@ -23,21 +39,22 @@ module Rabbit
|
|
23
39
|
|
24
40
|
private
|
25
41
|
def update_size
|
26
|
-
png_file = Tempfile.new("rabbit-loader-gimp-png")
|
42
|
+
png_file = Tempfile.new(["rabbit-loader-gimp-png", ".png"])
|
27
43
|
png_path = png_file.path
|
28
44
|
clip_to_image = 1
|
29
45
|
merge_type = clip_to_image
|
30
|
-
command = <<-
|
46
|
+
command = <<-COMMAND
|
31
47
|
(let ((image (car (gimp-file-load RUN-NONINTERACTIVE
|
32
48
|
"#{@filename}" "#{@filename}"))))
|
33
|
-
(
|
34
|
-
(file-png-save-defaults RUN-NONINTERACTIVE image layer
|
35
|
-
"#{png_path}" "#{png_path}"))
|
49
|
+
(gimp-file-save RUN-NONINTERACTIVE image "#{png_path}")
|
36
50
|
(gimp-image-delete image))
|
37
|
-
|
38
|
-
args =
|
39
|
-
|
40
|
-
|
51
|
+
COMMAND
|
52
|
+
args = [
|
53
|
+
"--no-interface",
|
54
|
+
"--batch-interpreter", "plug-in-script-fu-eval",
|
55
|
+
"--batch", command,
|
56
|
+
"--batch", "(gimp-quit TRUE)",
|
57
|
+
]
|
41
58
|
if GIMP_COMMANDS.any? {|gimp| run(gimp, *args); File.exist?(png_path)}
|
42
59
|
png_file.open
|
43
60
|
png_file.binmode
|
data/lib/rabbit/image/mermaid.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2022 Sutou Kouhei <kou@cozmixng.org>
|
1
|
+
# Copyright (C) 2022-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,8 +14,8 @@
|
|
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
|
-
|
17
|
+
require_relative "../gettext"
|
18
|
+
require_relative "pdf"
|
19
19
|
|
20
20
|
module Rabbit
|
21
21
|
module ImageManipulable
|
data/lib/rabbit/image/pdf.rb
CHANGED
@@ -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
|
@@ -16,8 +16,8 @@
|
|
16
16
|
|
17
17
|
require "poppler"
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
require_relative "../gettext"
|
20
|
+
require_relative "base"
|
21
21
|
|
22
22
|
module Rabbit
|
23
23
|
module ImageManipulable
|