rabbit 3.0.1 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +2 -1
- data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
- data/doc/_config.yml +2 -2
- data/doc/_layouts/skeleton.html +0 -7
- data/doc/en/install/homebrew.rd +8 -13
- data/doc/en/news.rd +67 -0
- data/doc/images/screenshots/en/blue-circle-raw.png +0 -0
- data/doc/images/screenshots/en/blue-circle.png +0 -0
- data/doc/images/screenshots/en/clear-blue-raw.png +0 -0
- data/doc/images/screenshots/en/clear-blue.png +0 -0
- data/doc/images/screenshots/en/cozmixng-raw.png +0 -0
- data/doc/images/screenshots/en/cozmixng.png +0 -0
- data/doc/images/screenshots/en/dark-gradation-raw.png +0 -0
- data/doc/images/screenshots/en/dark-gradation.png +0 -0
- data/doc/images/screenshots/en/day-white-raw.png +0 -0
- data/doc/images/screenshots/en/day-white.png +0 -0
- data/doc/images/screenshots/en/debian-raw.png +0 -0
- data/doc/images/screenshots/en/debian.png +0 -0
- data/doc/images/screenshots/en/green-circle-raw.png +0 -0
- data/doc/images/screenshots/en/green-circle.png +0 -0
- data/doc/images/screenshots/en/night-black-raw.png +0 -0
- data/doc/images/screenshots/en/night-black.png +0 -0
- data/doc/images/screenshots/en/rabbit-raw.png +0 -0
- data/doc/images/screenshots/en/rabbit.png +0 -0
- data/doc/images/screenshots/en/ranguba-raw.png +0 -0
- data/doc/images/screenshots/en/ranguba.png +0 -0
- data/doc/images/screenshots/en/red-frame-raw.png +0 -0
- data/doc/images/screenshots/en/red-frame.png +0 -0
- data/doc/images/screenshots/en/ruby-gnome2-raw.png +0 -0
- data/doc/images/screenshots/en/ruby-gnome2.png +0 -0
- data/doc/images/screenshots/en/rubykaigi2011-raw.png +0 -0
- data/doc/images/screenshots/en/rubykaigi2011.png +0 -0
- data/doc/images/screenshots/ja/blue-circle-raw.png +0 -0
- data/doc/images/screenshots/ja/blue-circle.png +0 -0
- data/doc/images/screenshots/ja/clear-blue-raw.png +0 -0
- data/doc/images/screenshots/ja/clear-blue.png +0 -0
- data/doc/images/screenshots/ja/cozmixng-raw.png +0 -0
- data/doc/images/screenshots/ja/cozmixng.png +0 -0
- data/doc/images/screenshots/ja/dark-gradation-raw.png +0 -0
- data/doc/images/screenshots/ja/dark-gradation.png +0 -0
- data/doc/images/screenshots/ja/day-white-raw.png +0 -0
- data/doc/images/screenshots/ja/day-white.png +0 -0
- data/doc/images/screenshots/ja/debian-raw.png +0 -0
- data/doc/images/screenshots/ja/debian.png +0 -0
- data/doc/images/screenshots/ja/green-circle-raw.png +0 -0
- data/doc/images/screenshots/ja/green-circle.png +0 -0
- data/doc/images/screenshots/ja/night-black-raw.png +0 -0
- data/doc/images/screenshots/ja/night-black.png +0 -0
- data/doc/images/screenshots/ja/rabbit-raw.png +0 -0
- data/doc/images/screenshots/ja/rabbit.png +0 -0
- data/doc/images/screenshots/ja/ranguba-raw.png +0 -0
- data/doc/images/screenshots/ja/ranguba.png +0 -0
- data/doc/images/screenshots/ja/red-frame-raw.png +0 -0
- data/doc/images/screenshots/ja/red-frame.png +0 -0
- data/doc/images/screenshots/ja/ruby-gnome2-raw.png +0 -0
- data/doc/images/screenshots/ja/ruby-gnome2.png +0 -0
- data/doc/images/screenshots/ja/rubykaigi2011-raw.png +0 -0
- data/doc/images/screenshots/ja/rubykaigi2011.png +0 -0
- data/doc/ja/install/homebrew.rd +8 -12
- data/doc/ja/news.rd +67 -0
- data/lib/rabbit/canvas.rb +7 -5
- data/lib/rabbit/element/base.rb +1 -5
- data/lib/rabbit/element/image.rb +70 -4
- data/lib/rabbit/error.rb +7 -1
- data/lib/rabbit/formatter.rb +1 -1
- data/lib/rabbit/gem-pusher.rb +2 -1
- data/lib/rabbit/image/base.rb +67 -3
- data/lib/rabbit/image/dia.rb +7 -15
- data/lib/rabbit/image/mermaid.rb +73 -0
- data/lib/rabbit/image/pdf.rb +21 -5
- data/lib/rabbit/image.rb +3 -2
- data/lib/rabbit/parser/base.rb +2 -1
- data/lib/rabbit/parser/ext/blockdiag.rb +16 -14
- data/lib/rabbit/parser/ext/image.rb +36 -9
- data/lib/rabbit/parser/markdown/converter.rb +36 -30
- data/lib/rabbit/parser/rd/ext/block-verbatim.rb +23 -33
- data/lib/rabbit/parser/rd/ext/image.rb +23 -4
- data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +3 -1
- data/lib/rabbit/parser/rd.rb +1 -1
- data/lib/rabbit/parser/wiki/output.rb +9 -9
- data/lib/rabbit/parser.rb +2 -2
- data/lib/rabbit/properties.rb +14 -1
- data/lib/rabbit/renderer/display/drawing-area-base.rb +1 -1
- data/lib/rabbit/slide-configuration.rb +4 -0
- data/lib/rabbit/task/slide.rb +4 -31
- data/lib/rabbit/theme/background-image-toolkit/background-image-toolkit.rb +38 -0
- data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
- data/lib/rabbit/theme/image/image.rb +3 -0
- data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +7 -2
- data/lib/rabbit/theme/image-timer/image-timer.rb +8 -3
- data/lib/rabbit/theme/pdf/pdf.rb +1 -1
- data/lib/rabbit/utils.rb +25 -2
- data/lib/rabbit/version.rb +2 -2
- data/po/en/rabbit.edit.po +50 -66
- data/po/en/rabbit.po +12 -24
- data/po/fr/rabbit.edit.po +50 -66
- data/po/fr/rabbit.po +12 -24
- data/po/ja/rabbit.edit.po +82 -94
- data/po/ja/rabbit.po +18 -30
- data/rabbit.gemspec +0 -1
- data/sample/rabbit-en.md +13 -0
- data/sample/rabbit-en.rd +10 -0
- data/sample/rabbit.md +21 -0
- data/sample/rabbit.rd +20 -0
- data/test/command/test-rabbit.rb +1 -0
- data/test/parser/test-markdown.rb +2 -2
- data/test/test-slide-configuration.rb +2 -1
- metadata +7 -26
- data/doc/css/jquery-ui/themes/ui-lightness.css +0 -573
- data/doc/javascripts/jquery-ui.js +0 -11544
- data/doc/javascripts/jquery.js +0 -7179
- data/lib/rabbit/slideshare.rb +0 -192
- data/test/test-slideshare.rb +0 -34
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
# Copyright (C) 2004-2022 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 'rabbit/element'
|
|
2
18
|
require 'rabbit/parser/ext/image'
|
|
3
19
|
|
|
@@ -11,13 +27,16 @@ module Rabbit
|
|
|
11
27
|
def img(label, content, visitor)
|
|
12
28
|
label = label.to_s
|
|
13
29
|
return nil unless /^img:\s*(.+)$/ =~ label
|
|
14
|
-
make_image(visitor.canvas, $1)
|
|
30
|
+
make_image(visitor.canvas, $1, body: visitor.current_body)
|
|
15
31
|
end
|
|
16
32
|
|
|
17
|
-
def make_image_from_file(source, visitor)
|
|
33
|
+
def make_image_from_file(source, visitor, **options)
|
|
18
34
|
src, prop = parse_source(source)
|
|
19
|
-
super(visitor.canvas,
|
|
20
|
-
|
|
35
|
+
super(visitor.canvas,
|
|
36
|
+
src,
|
|
37
|
+
body: visitor.current_body,
|
|
38
|
+
**options) do |src_file|
|
|
39
|
+
[yield(src_file, prop), prop]
|
|
21
40
|
end
|
|
22
41
|
end
|
|
23
42
|
end
|
|
@@ -56,8 +56,10 @@ module Rabbit
|
|
|
56
56
|
def_delegators(:@canvas, :logger, :full_path, :tmp_dir_name)
|
|
57
57
|
|
|
58
58
|
attr_reader :canvas
|
|
59
|
-
|
|
59
|
+
attr_reader :progress
|
|
60
|
+
def initialize(canvas, progress)
|
|
60
61
|
@canvas = canvas
|
|
62
|
+
@progress = progress
|
|
61
63
|
|
|
62
64
|
@slides = []
|
|
63
65
|
@slide = nil
|
data/lib/rabbit/parser/rd.rb
CHANGED
|
@@ -38,7 +38,7 @@ module Rabbit
|
|
|
38
38
|
source = @source.read.gsub(/\r\n/, "\n")
|
|
39
39
|
source = "=begin\n#{source}\n=end\n"
|
|
40
40
|
tree = ::RD::RDTree.new(source)
|
|
41
|
-
visitor = RD2RabbitVisitor.new(@canvas)
|
|
41
|
+
visitor = RD2RabbitVisitor.new(@canvas, @progress)
|
|
42
42
|
visitor.visit(tree)
|
|
43
43
|
rescue Racc::ParseError
|
|
44
44
|
message = format_parse_error_message($!.message, source)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2007-
|
|
1
|
+
# Copyright (C) 2007-2022 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
|
|
@@ -489,9 +489,9 @@ module Rabbit
|
|
|
489
489
|
|
|
490
490
|
def LaTeX(source, props={})
|
|
491
491
|
args = [@output.canvas, source]
|
|
492
|
-
Ext::Image.make_image_from_file(*args) do |
|
|
492
|
+
Ext::Image.make_image_from_file(*args) do |src_file|
|
|
493
493
|
props = Utils.stringify_hash_key(props)
|
|
494
|
-
args = [
|
|
494
|
+
args = [src_file.path, props, @output.canvas]
|
|
495
495
|
[Ext::TeX.make_image_by_LaTeX(*args), props]
|
|
496
496
|
end
|
|
497
497
|
end
|
|
@@ -499,9 +499,9 @@ module Rabbit
|
|
|
499
499
|
|
|
500
500
|
def mimeTeX(source, props={})
|
|
501
501
|
args = [@output.canvas, source]
|
|
502
|
-
Ext::Image.make_image_from_file(*args) do |
|
|
502
|
+
Ext::Image.make_image_from_file(*args) do |src_file|
|
|
503
503
|
props = Utils.stringify_hash_key(props)
|
|
504
|
-
args = [
|
|
504
|
+
args = [src_file.path, props, @output.canvas]
|
|
505
505
|
[Ext::TeX.make_image_by_mimeTeX(*args), props]
|
|
506
506
|
end
|
|
507
507
|
end
|
|
@@ -509,18 +509,18 @@ module Rabbit
|
|
|
509
509
|
|
|
510
510
|
def aafigure(source, props={})
|
|
511
511
|
args = [@output.canvas, source]
|
|
512
|
-
Ext::Image.make_image_from_file(*args) do |
|
|
512
|
+
Ext::Image.make_image_from_file(*args) do |src_file|
|
|
513
513
|
props = Utils.stringify_hash_key(props)
|
|
514
|
-
args = [
|
|
514
|
+
args = [src_file.path, props, @output.canvas]
|
|
515
515
|
[Ext::AAFigure.make_image(*args), props]
|
|
516
516
|
end
|
|
517
517
|
end
|
|
518
518
|
|
|
519
519
|
def blockdiag(source, props={})
|
|
520
520
|
args = [@output.canvas, source]
|
|
521
|
-
Ext::Image.make_image_from_file(*args) do |
|
|
521
|
+
Ext::Image.make_image_from_file(*args) do |src_file|
|
|
522
522
|
props = Utils.stringify_hash_key(props)
|
|
523
|
-
args = [
|
|
523
|
+
args = [src_file.path, props, @output.canvas]
|
|
524
524
|
[Ext::BlockDiag.make_image(*args), props]
|
|
525
525
|
end
|
|
526
526
|
end
|
data/lib/rabbit/parser.rb
CHANGED
|
@@ -25,7 +25,7 @@ module Rabbit
|
|
|
25
25
|
include GetText
|
|
26
26
|
|
|
27
27
|
module_function
|
|
28
|
-
def parse(canvas, source)
|
|
28
|
+
def parse(canvas, source, **options)
|
|
29
29
|
parser = Base.find_loader(source)
|
|
30
30
|
if parser.nil?
|
|
31
31
|
format = _("unsupported format. (supported: %s)")
|
|
@@ -35,7 +35,7 @@ module Rabbit
|
|
|
35
35
|
message = format % "[#{format_names.join(', ')}]"
|
|
36
36
|
raise UnsupportedFormatError.new(message)
|
|
37
37
|
end
|
|
38
|
-
parser.new(canvas, source).parse
|
|
38
|
+
parser.new(canvas, source, **options).parse
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def normalize_property_name(name)
|
data/lib/rabbit/properties.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2020 Sutou Kouhei <kou@cozmixng.org>
|
|
1
|
+
# Copyright (C) 2020-2021 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
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
16
16
|
|
|
17
17
|
require "rabbit/relative-size"
|
|
18
|
+
require "rabbit/yaml-loader"
|
|
18
19
|
|
|
19
20
|
module Rabbit
|
|
20
21
|
class Properties
|
|
@@ -60,6 +61,18 @@ module Rabbit
|
|
|
60
61
|
key)
|
|
61
62
|
end
|
|
62
63
|
|
|
64
|
+
def draws
|
|
65
|
+
targets = @data.select do |key, _|
|
|
66
|
+
/\Adraw\d+\z/.match?(key)
|
|
67
|
+
end
|
|
68
|
+
targets = targets.sort_by do |key, _|
|
|
69
|
+
Integer(key[/\d+/], 10)
|
|
70
|
+
end
|
|
71
|
+
targets.collect do |_, value|
|
|
72
|
+
YAMLLoader.load(value)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
63
76
|
def respond_to_missing?(name, include_private)
|
|
64
77
|
@data.key?(normalize_key(name.to_s.gsub(/\?\z/, "")))
|
|
65
78
|
end
|
|
@@ -46,6 +46,7 @@ module Rabbit
|
|
|
46
46
|
attr_accessor :author
|
|
47
47
|
attr_accessor :width
|
|
48
48
|
attr_accessor :height
|
|
49
|
+
attr_accessor :source_code_uri
|
|
49
50
|
def initialize(logger=nil)
|
|
50
51
|
@logger = logger || Logger.default
|
|
51
52
|
clear
|
|
@@ -99,6 +100,7 @@ module Rabbit
|
|
|
99
100
|
@author = nil
|
|
100
101
|
@width = 800
|
|
101
102
|
@height = 600
|
|
103
|
+
@source_code_uri = nil
|
|
102
104
|
end
|
|
103
105
|
|
|
104
106
|
|
|
@@ -125,6 +127,7 @@ module Rabbit
|
|
|
125
127
|
|
|
126
128
|
@width = conf["width"] || @width
|
|
127
129
|
@height = conf["height"] || @height
|
|
130
|
+
@source_code_uri = conf["source_code_uri"] || @source_code_uri
|
|
128
131
|
end
|
|
129
132
|
|
|
130
133
|
def to_hash
|
|
@@ -143,6 +146,7 @@ module Rabbit
|
|
|
143
146
|
"youtube_id" => @youtube_id,
|
|
144
147
|
"width" => @width,
|
|
145
148
|
"height" => @height,
|
|
149
|
+
"source_code_uri" => @source_code_uri,
|
|
146
150
|
}
|
|
147
151
|
config["author"] = @author.to_hash if @author
|
|
148
152
|
config
|
data/lib/rabbit/task/slide.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2012-
|
|
1
|
+
# Copyright (C) 2012-2022 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
|
|
@@ -65,6 +65,9 @@ module Rabbit
|
|
|
65
65
|
spec.summary = readme_parser.title || "TODO"
|
|
66
66
|
spec.description = readme_parser.description || "TODO"
|
|
67
67
|
spec.licenses = @slide.licenses
|
|
68
|
+
if @slide.source_code_uri
|
|
69
|
+
spec.metadata["source_code_uri"] = @slide.source_code_uri
|
|
70
|
+
end
|
|
68
71
|
|
|
69
72
|
slide_conf_path = @slide.path
|
|
70
73
|
spec.files = [".rabbit", slide_conf_path, "Rakefile"]
|
|
@@ -155,11 +158,6 @@ module Rabbit
|
|
|
155
158
|
|
|
156
159
|
publish_tasks = []
|
|
157
160
|
namespace :publish do
|
|
158
|
-
if @slide.author.slideshare_user
|
|
159
|
-
define_publish_slideshare_task
|
|
160
|
-
publish_tasks << :slideshare
|
|
161
|
-
end
|
|
162
|
-
|
|
163
161
|
if @slide.author.speaker_deck_user
|
|
164
162
|
define_publish_speaker_deck_task
|
|
165
163
|
publish_tasks << :speaker_deck
|
|
@@ -181,31 +179,6 @@ module Rabbit
|
|
|
181
179
|
end
|
|
182
180
|
end
|
|
183
181
|
|
|
184
|
-
def define_publish_slideshare_task
|
|
185
|
-
slideshare_user = @slide.author.slideshare_user
|
|
186
|
-
desc(_("Publish the slide to %s") % "SlideShare")
|
|
187
|
-
task :slideshare => [:pdf, "gem:validate"] do
|
|
188
|
-
require "rabbit/slideshare"
|
|
189
|
-
slideshare = SlideShare.new(@logger)
|
|
190
|
-
slideshare.user = slideshare_user
|
|
191
|
-
slideshare.pdf_path = pdf_path
|
|
192
|
-
slideshare.id = @slide.id
|
|
193
|
-
slideshare.title = spec.summary
|
|
194
|
-
slideshare.description = spec.description
|
|
195
|
-
slideshare.tags = @slide.tags if @slide.tags
|
|
196
|
-
url = slideshare.upload
|
|
197
|
-
if url
|
|
198
|
-
@logger.info(_("Uploaded successfully!"))
|
|
199
|
-
@logger.info(_("See %s") % url)
|
|
200
|
-
Gtk.show_uri(url) if Gtk.respond_to?(:show_uri)
|
|
201
|
-
|
|
202
|
-
slide_id = url.split(/\//).last
|
|
203
|
-
@slide.slideshare_id = slide_id
|
|
204
|
-
@slide.save(".")
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
end
|
|
208
|
-
|
|
209
182
|
def define_publish_speaker_deck_task
|
|
210
183
|
desc(_("Publish the slide to %s") % "Speaker Deck")
|
|
211
184
|
task :speaker_deck => :pdf do
|
|
@@ -32,6 +32,11 @@ def apply_background_image_property(element, options={})
|
|
|
32
32
|
image.vertical_centering = true
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
+
layout = nil
|
|
36
|
+
caption_height = 0
|
|
37
|
+
caption_text = image.caption
|
|
38
|
+
caption_text = nil if caption_text and caption_text.empty?
|
|
39
|
+
|
|
35
40
|
element.add_pre_draw_proc(proc_name) do |canvas, x, y, w, h, simulation|
|
|
36
41
|
if simulation
|
|
37
42
|
if compute_initial_geometry
|
|
@@ -78,6 +83,39 @@ def apply_background_image_property(element, options={})
|
|
|
78
83
|
end
|
|
79
84
|
end
|
|
80
85
|
image.draw(simulation)
|
|
86
|
+
|
|
87
|
+
if caption_text
|
|
88
|
+
# TODO: Should we move this to Image#draw and unify this and
|
|
89
|
+
# similar code in lib/rabbit/theme/image/image.rb?
|
|
90
|
+
if simulation
|
|
91
|
+
caption = Text.new(caption_text)
|
|
92
|
+
caption_font_size = image.caption_font_size
|
|
93
|
+
caption_font_size = font_size(caption_font_size) if caption_font_size
|
|
94
|
+
caption.prop_set("size",
|
|
95
|
+
caption_font_size || @image_caption_font_size)
|
|
96
|
+
set_font_family(caption)
|
|
97
|
+
if image.horizontal_centering
|
|
98
|
+
caption.do_horizontal_centering(canvas, x, y, w, h)
|
|
99
|
+
end
|
|
100
|
+
caption.compile(canvas,
|
|
101
|
+
(image.x || x) + image.margin_left,
|
|
102
|
+
y + image.height + image.margin_top,
|
|
103
|
+
image.ow || w,
|
|
104
|
+
h - image.height)
|
|
105
|
+
layout = caption.layout
|
|
106
|
+
caption_height = caption.height
|
|
107
|
+
end
|
|
108
|
+
if !simulation and layout
|
|
109
|
+
base_x = (image.x || x) + image.margin_left
|
|
110
|
+
base_y = image.height + y + image.margin_top
|
|
111
|
+
caption_color = image["caption-color"] || @image_caption_color
|
|
112
|
+
canvas.draw_layout(layout,
|
|
113
|
+
base_x,
|
|
114
|
+
base_y + image.margin_bottom,
|
|
115
|
+
caption_color)
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
81
119
|
[x, y, w - element_margin_right, h]
|
|
82
120
|
end
|
|
83
121
|
|
|
@@ -96,6 +96,6 @@ include_theme("slide-logo")
|
|
|
96
96
|
@icon_images = ["clear-blue-icon.png"]
|
|
97
97
|
include_theme("icon")
|
|
98
98
|
|
|
99
|
-
@slide_footer_info_left_text ||= canvas.title.gsub(/\n/,
|
|
99
|
+
@slide_footer_info_left_text ||= canvas.title.gsub(/\n/, " ")
|
|
100
100
|
@slide_footer_info_right_text ||= "Powered by Rabbit #{Rabbit::VERSION}"
|
|
101
101
|
include_theme("slide-footer-info")
|
|
@@ -51,6 +51,9 @@ match("**", Image) do |images|
|
|
|
51
51
|
caption_height = 0
|
|
52
52
|
|
|
53
53
|
image.add_post_draw_proc(proc_name) do |canvas, x, y, w, h, simulation|
|
|
54
|
+
# TODO: Should we move this to Image#draw and unify this and
|
|
55
|
+
# similar code in
|
|
56
|
+
# lib/rabbit/theme/background-image-toolkit/background-image-toolkit.rb?
|
|
54
57
|
if simulation
|
|
55
58
|
caption = Text.new(caption_text)
|
|
56
59
|
caption.prop_set("size", @image_caption_font_size)
|
|
@@ -32,7 +32,7 @@ end
|
|
|
32
32
|
target_n_slides = nil
|
|
33
33
|
|
|
34
34
|
match(Slide) do |slides|
|
|
35
|
-
slides.
|
|
35
|
+
slides.delete_pre_draw_proc_by_name(proc_name)
|
|
36
36
|
|
|
37
37
|
break if @image_slide_number_uninstall
|
|
38
38
|
|
|
@@ -63,7 +63,7 @@ match(Slide) do |slides|
|
|
|
63
63
|
"weight" => "heavy",
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
draw = lambda do |slide, canvas, x, y, w, h, simulation|
|
|
67
67
|
if simulation
|
|
68
68
|
image_height = canvas.height * @image_slide_number_space_ratio
|
|
69
69
|
loader.resize(nil, image_height)
|
|
@@ -126,4 +126,9 @@ match(Slide) do |slides|
|
|
|
126
126
|
end
|
|
127
127
|
[x, y, w, h]
|
|
128
128
|
end
|
|
129
|
+
if slides[0].is_a?(PopplerSlide)
|
|
130
|
+
slides.add_post_draw_proc(proc_name, &draw)
|
|
131
|
+
else
|
|
132
|
+
slides.add_pre_draw_proc(proc_name, &draw)
|
|
133
|
+
end
|
|
129
134
|
end
|
|
@@ -38,7 +38,7 @@ end
|
|
|
38
38
|
@image_timer_target_paths ||= [Slide]
|
|
39
39
|
|
|
40
40
|
match(*@image_timer_target_paths) do |slides|
|
|
41
|
-
slides.
|
|
41
|
+
slides.delete_pre_draw_proc_by_name(proc_name)
|
|
42
42
|
stop_auto_redraw_timer
|
|
43
43
|
|
|
44
44
|
break if @image_timer_uninstall
|
|
@@ -51,7 +51,7 @@ match(*@image_timer_target_paths) do |slides|
|
|
|
51
51
|
@image_timer_auto_updating = true
|
|
52
52
|
start_auto_redraw_timer(@image_timer_interval)
|
|
53
53
|
end
|
|
54
|
-
slide.
|
|
54
|
+
slide.delete_pre_draw_proc_by_name(init_proc_name)
|
|
55
55
|
end
|
|
56
56
|
[x, y, w, h]
|
|
57
57
|
end
|
|
@@ -61,7 +61,7 @@ match(*@image_timer_target_paths) do |slides|
|
|
|
61
61
|
max_width = nil
|
|
62
62
|
base_y = nil
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
draw = lambda do |slide, canvas, x, y, w, h, simulation|
|
|
65
65
|
margin_left = @image_timer_margin_left || slide.margin_left
|
|
66
66
|
margin_right = @image_timer_margin_right || slide.margin_right
|
|
67
67
|
margin_bottom = @image_timer_margin_bottom || slide.margin_bottom
|
|
@@ -111,4 +111,9 @@ match(*@image_timer_target_paths) do |slides|
|
|
|
111
111
|
end
|
|
112
112
|
[x, y, w, h]
|
|
113
113
|
end
|
|
114
|
+
if slides[0].is_a?(PopplerSlide)
|
|
115
|
+
slides.add_post_draw_proc(proc_name, &draw)
|
|
116
|
+
else
|
|
117
|
+
slides.add_pre_draw_proc(proc_name, &draw)
|
|
118
|
+
end
|
|
114
119
|
end
|
data/lib/rabbit/theme/pdf/pdf.rb
CHANGED
data/lib/rabbit/utils.rb
CHANGED
|
@@ -352,9 +352,32 @@ module Rabbit
|
|
|
352
352
|
|
|
353
353
|
module SystemRunner
|
|
354
354
|
module_function
|
|
355
|
-
def run(cmd, *args)
|
|
355
|
+
def run(cmd, *args, progress: nil)
|
|
356
356
|
begin
|
|
357
|
-
|
|
357
|
+
IO.pipe do |input, output|
|
|
358
|
+
pid = spawn(cmd, *args, out: output)
|
|
359
|
+
output.close
|
|
360
|
+
begin
|
|
361
|
+
loop do
|
|
362
|
+
readables, = IO.select([input], nil, nil, 0.1)
|
|
363
|
+
if readables
|
|
364
|
+
readable = readables[0]
|
|
365
|
+
begin
|
|
366
|
+
$stdout.print(readable.read_nonblock(4096))
|
|
367
|
+
rescue EOFError
|
|
368
|
+
break
|
|
369
|
+
else
|
|
370
|
+
break if readable.eof?
|
|
371
|
+
end
|
|
372
|
+
else
|
|
373
|
+
progress.call if progress
|
|
374
|
+
end
|
|
375
|
+
end
|
|
376
|
+
true
|
|
377
|
+
ensure
|
|
378
|
+
Process.waitpid(pid)
|
|
379
|
+
end
|
|
380
|
+
end
|
|
358
381
|
rescue SystemCallError
|
|
359
382
|
yield($!) if block_given?
|
|
360
383
|
false
|
data/lib/rabbit/version.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2012-
|
|
1
|
+
# Copyright (C) 2012-2021 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
|
|
@@ -15,5 +15,5 @@
|
|
|
15
15
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
16
16
|
|
|
17
17
|
module Rabbit
|
|
18
|
-
VERSION = "3.0.
|
|
18
|
+
VERSION = "3.0.2"
|
|
19
19
|
end
|