rabbit 3.0.5 → 4.0.0
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 +54 -0
- data/doc/ja/news.rd +54 -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 +102 -90
- 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/theme/applier.rb
CHANGED
@@ -1,12 +1,28 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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 "delegate"
|
18
|
+
require "forwardable"
|
19
|
+
|
20
|
+
require_relative "../utils"
|
21
|
+
require_relative "../element"
|
22
|
+
require_relative "../image"
|
23
|
+
require_relative "../theme/searcher"
|
24
|
+
require_relative "../renderer/color"
|
25
|
+
require_relative "../size"
|
10
26
|
|
11
27
|
module Rabbit
|
12
28
|
module Theme
|
@@ -359,7 +375,7 @@ module Rabbit
|
|
359
375
|
end
|
360
376
|
|
361
377
|
def slides
|
362
|
-
|
378
|
+
canvas.slides
|
363
379
|
end
|
364
380
|
|
365
381
|
def canvas
|
@@ -367,7 +383,7 @@ module Rabbit
|
|
367
383
|
end
|
368
384
|
|
369
385
|
def logger
|
370
|
-
|
386
|
+
Rabbit.logger
|
371
387
|
end
|
372
388
|
|
373
389
|
def print?
|
@@ -94,7 +94,7 @@ end
|
|
94
94
|
include_theme("slide-logo")
|
95
95
|
|
96
96
|
@icon_images = ["clear-blue-icon.png"]
|
97
|
-
include_theme("icon")
|
97
|
+
# include_theme("icon")
|
98
98
|
|
99
99
|
@slide_footer_info_left_text ||= canvas.title.gsub(/\n/, " ")
|
100
100
|
@slide_footer_info_right_text ||= "Powered by Rabbit #{Rabbit::VERSION}"
|
@@ -1,3 +1,19 @@
|
|
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
|
+
|
1
17
|
must_set_variables = %w(foreground background color light_color bright_color
|
2
18
|
graffiti_color)
|
3
19
|
|
@@ -14,7 +30,7 @@ end
|
|
14
30
|
|
15
31
|
unless not_set_variables.empty?
|
16
32
|
format = _("required variables aren't set: %s")
|
17
|
-
|
33
|
+
Rabbit.logger.error(format % not_set_variables.inspect)
|
18
34
|
theme_exit
|
19
35
|
end
|
20
36
|
|
@@ -29,6 +45,7 @@ include_theme("newline-in-slides")
|
|
29
45
|
include_theme("tag")
|
30
46
|
|
31
47
|
include_theme("image")
|
48
|
+
include_theme("video")
|
32
49
|
include_theme("table")
|
33
50
|
|
34
51
|
include_theme("color-circle-title-slide")
|
@@ -1,3 +1,19 @@
|
|
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
|
+
|
1
17
|
def setup_default_item_mark_get_option_value(options, name, *args)
|
2
18
|
value = options[name]
|
3
19
|
if value and value.respond_to?(:call)
|
@@ -30,7 +46,7 @@ def setup_default_item_mark_type(type, item, canvas, x, y, w, h, color)
|
|
30
46
|
else
|
31
47
|
format = _("unknown item mark type: %s\n" \
|
32
48
|
"Rectangle type is used as fallback")
|
33
|
-
|
49
|
+
Rabbit.logger.warn(format % type.inspect)
|
34
50
|
setup_default_item_mark_type("rectangle")
|
35
51
|
end
|
36
52
|
end
|
@@ -42,7 +42,15 @@ match("**", PreformattedBlock) do |blocks|
|
|
42
42
|
blocks.margin_top = @space
|
43
43
|
blocks.margin_bottom = @space
|
44
44
|
|
45
|
-
blocks.
|
45
|
+
blocks.each do |block|
|
46
|
+
keep_in_size = block.user_property["keep-in-size"]
|
47
|
+
if keep_in_size.nil?
|
48
|
+
keep_in_size = @preformatted_keep_in_size
|
49
|
+
else
|
50
|
+
keep_in_size = (keep_in_size == "true")
|
51
|
+
end
|
52
|
+
block.keep_in_size if keep_in_size
|
53
|
+
end
|
46
54
|
|
47
55
|
draw_frame(blocks, params)
|
48
56
|
end
|
@@ -12,7 +12,7 @@ match(TitleSlide) do |slides|
|
|
12
12
|
slides.margin_top = canvas.height * 0.1
|
13
13
|
|
14
14
|
slides.add_pre_draw_proc do |slide, canvas, x, y, w, h, simulation|
|
15
|
-
unless
|
15
|
+
unless simulation
|
16
16
|
canvas.draw_rectangle(true, 0, 0, canvas.width, canvas.height,
|
17
17
|
green_background_color)
|
18
18
|
end
|
data/lib/rabbit/theme/entry.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
|
@@ -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
|
-
require
|
17
|
+
require "erb"
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
require_relative '../rabbit'
|
20
|
+
require_relative "../gem-finder"
|
21
|
+
require_relative "../theme-configuration"
|
22
22
|
|
23
23
|
module Rabbit
|
24
24
|
module Theme
|
@@ -35,10 +35,8 @@ module Rabbit
|
|
35
35
|
attr_reader :name, :title, :description
|
36
36
|
attr_reader :abstract
|
37
37
|
attr_reader :dependencies, :parameters
|
38
|
-
attr_accessor :logger
|
39
38
|
|
40
|
-
def initialize(
|
41
|
-
@logger = logger
|
39
|
+
def initialize(theme_dir, name)
|
42
40
|
@theme_dir = theme_dir
|
43
41
|
@name = name
|
44
42
|
@title = @name
|
@@ -111,7 +109,7 @@ module Rabbit
|
|
111
109
|
begin
|
112
110
|
instance_eval(content, file)
|
113
111
|
rescue SyntaxError
|
114
|
-
|
112
|
+
Rabbit.logger.warn($!)
|
115
113
|
end
|
116
114
|
end
|
117
115
|
end
|
@@ -155,10 +153,10 @@ module Rabbit
|
|
155
153
|
end
|
156
154
|
|
157
155
|
class GemEntry < Entry
|
158
|
-
def initialize(
|
156
|
+
def initialize(name)
|
159
157
|
@spec = nil
|
160
158
|
if valid_gem_name?(name)
|
161
|
-
finder = GemFinder.new
|
159
|
+
finder = GemFinder.new
|
162
160
|
begin
|
163
161
|
@spec = finder.find(name, "#{ThemeConfiguration::GEM_NAME_PREFIX}-")
|
164
162
|
rescue Gem::GemNotFoundException
|
@@ -166,7 +164,7 @@ module Rabbit
|
|
166
164
|
end
|
167
165
|
theme_dir = nil
|
168
166
|
theme_dir = @spec.gem_dir if @spec
|
169
|
-
super(
|
167
|
+
super(theme_dir, name)
|
170
168
|
end
|
171
169
|
|
172
170
|
def available?
|
@@ -1,8 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
end
|
5
|
-
|
6
|
-
canvas.icon_list = @icon_images.collect do |filename|
|
7
|
-
ImageLoader.new(find_file(filename)).pixbuf
|
8
|
-
end
|
1
|
+
# warn("icon theme is deprecated. " +
|
2
|
+
# "You can't set custom window icon. " +
|
3
|
+
# "Please remove 'include_theme(\"icon\")'.")
|
@@ -51,10 +51,10 @@ match(Slide) do |slides|
|
|
51
51
|
|
52
52
|
start_flag_width = 0
|
53
53
|
goal_flag_width = 0
|
54
|
-
if canvas.
|
54
|
+
if canvas.n_slides < 2
|
55
55
|
max_text_length = 1
|
56
56
|
else
|
57
|
-
max_text_length = Math.log10(canvas.
|
57
|
+
max_text_length = Math.log10(canvas.n_slides - 1).truncate + 1
|
58
58
|
end
|
59
59
|
text_attributes = {
|
60
60
|
"size" => @image_slide_number_font_size / max_text_length,
|
@@ -71,7 +71,7 @@ match(Slide) do |slides|
|
|
71
71
|
if @image_slide_number_show_text
|
72
72
|
props = {
|
73
73
|
"flag_type" => @image_slide_number_flag_type,
|
74
|
-
"text" => "%#{max_text_length}d" % canvas.
|
74
|
+
"text" => "%#{max_text_length}d" % canvas.n_slides.to_s,
|
75
75
|
"text_attributes" => text_attributes,
|
76
76
|
}
|
77
77
|
start_flag_width, _ = canvas.flag_size(image_height, props)
|
@@ -102,7 +102,7 @@ match(Slide) do |slides|
|
|
102
102
|
}
|
103
103
|
canvas.draw_flag(start_base_x, base_y, loader.height, props)
|
104
104
|
|
105
|
-
props["text"] = (canvas.
|
105
|
+
props["text"] = (canvas.n_slides - 1).to_s
|
106
106
|
props["flag_color"] = @image_slide_number_goal_flag_color
|
107
107
|
canvas.draw_flag(goal_base_x, base_y, loader.height, props)
|
108
108
|
else
|
@@ -113,7 +113,7 @@ match(Slide) do |slides|
|
|
113
113
|
end
|
114
114
|
end
|
115
115
|
|
116
|
-
target_n_slides ||= canvas.
|
116
|
+
target_n_slides ||= canvas.n_slides
|
117
117
|
if target_n_slides < 3
|
118
118
|
ratio = 1
|
119
119
|
else
|
@@ -80,11 +80,11 @@ match(*@image_timer_target_paths) do |slides|
|
|
80
80
|
loader.draw(canvas, base_x, base_y, @image_timer_draw_parameters)
|
81
81
|
|
82
82
|
if @image_timer_auto_scroll
|
83
|
-
if canvas.
|
83
|
+
if canvas.n_slides < 3
|
84
84
|
slide_ratio = 1
|
85
85
|
else
|
86
|
-
slide_ratio = (slide.index - 1.0) / (canvas.
|
87
|
-
next_slide_ratio = (slide.index) / (canvas.
|
86
|
+
slide_ratio = (slide.index - 1.0) / (canvas.n_slides - 2.0)
|
87
|
+
next_slide_ratio = (slide.index) / (canvas.n_slides - 2.0)
|
88
88
|
end
|
89
89
|
|
90
90
|
if ratio > slide_ratio and !canvas.last_slide? and
|
data/lib/rabbit/theme/manager.rb
CHANGED
@@ -1,14 +1,28 @@
|
|
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
|
+
|
1
17
|
require "forwardable"
|
2
18
|
|
3
|
-
|
19
|
+
require_relative "applier"
|
4
20
|
|
5
21
|
module Rabbit
|
6
22
|
module Theme
|
7
23
|
class Manager
|
8
24
|
extend Forwardable
|
9
25
|
|
10
|
-
def_delegators(:@canvas, :logger)
|
11
|
-
|
12
26
|
attr_reader :canvas, :name
|
13
27
|
def initialize(canvas, &callback)
|
14
28
|
@canvas = canvas
|
@@ -21,15 +35,11 @@ module Rabbit
|
|
21
35
|
begin
|
22
36
|
@applier.apply_theme(name)
|
23
37
|
rescue ThemeExit
|
24
|
-
logger.info($!.message) if $!.have_message?
|
38
|
+
Rabbit.logger.info($!.message) if $!.have_message?
|
25
39
|
rescue StandardError, LoadError, SyntaxError
|
26
|
-
logger.warn($!)
|
40
|
+
Rabbit.logger.warn($!)
|
27
41
|
end
|
28
42
|
end
|
29
|
-
|
30
|
-
def slides
|
31
|
-
@canvas.slides
|
32
|
-
end
|
33
43
|
end
|
34
44
|
end
|
35
45
|
end
|
@@ -4,8 +4,6 @@ shadow_color = "#c09090"
|
|
4
4
|
line_width = screen_size(0.8)
|
5
5
|
line_width += 1 if (line_width % 2).zero?
|
6
6
|
|
7
|
-
include_theme("image")
|
8
|
-
include_theme("table")
|
9
7
|
include_theme("default-title-text")
|
10
8
|
include_theme("default-text")
|
11
9
|
include_theme("default-title-slide")
|
@@ -25,6 +23,12 @@ include_theme("default-block-quote")
|
|
25
23
|
include_theme("simple-item-mark")
|
26
24
|
include_theme("rabbit-icon")
|
27
25
|
|
26
|
+
include_theme("image")
|
27
|
+
include_theme("video")
|
28
|
+
include_theme("table")
|
29
|
+
include_theme("tag")
|
30
|
+
include_theme("newline-in-slides")
|
31
|
+
|
28
32
|
set_progress_foreground("#ffff00000000")
|
29
33
|
set_progress_background("#ffffeb29ffff")
|
30
34
|
|
@@ -1,6 +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 "pathname"
|
2
18
|
|
3
|
-
|
19
|
+
require_relative "entry"
|
4
20
|
|
5
21
|
module Rabbit
|
6
22
|
module Theme
|
@@ -45,15 +61,15 @@ module Rabbit
|
|
45
61
|
def find_theme(theme_name=name, only_image=false)
|
46
62
|
if theme_name == "."
|
47
63
|
if only_image
|
48
|
-
entry = ImageDirectoryEntry.new(
|
64
|
+
entry = ImageDirectoryEntry.new(".", ".")
|
49
65
|
else
|
50
|
-
entry = DirectoryEntry.new(
|
66
|
+
entry = DirectoryEntry.new(".", ".")
|
51
67
|
end
|
52
68
|
return entry if entry.available?
|
53
69
|
end
|
54
70
|
|
55
71
|
unless only_image
|
56
|
-
entry = FileEntry.new(
|
72
|
+
entry = FileEntry.new(base_directory, theme_name)
|
57
73
|
return entry if entry.available?
|
58
74
|
end
|
59
75
|
|
@@ -72,9 +88,9 @@ module Rabbit
|
|
72
88
|
|
73
89
|
if found_entry.nil?
|
74
90
|
if only_image
|
75
|
-
entry = ImageGemEntry.new(
|
91
|
+
entry = ImageGemEntry.new(theme_name)
|
76
92
|
else
|
77
|
-
entry = GemEntry.new(
|
93
|
+
entry = GemEntry.new(theme_name)
|
78
94
|
end
|
79
95
|
return entry if entry.available?
|
80
96
|
raise LoadError, "can't find theme: #{theme_name}."
|
@@ -145,7 +161,7 @@ module Rabbit
|
|
145
161
|
next if theme_names.has_key?(theme)
|
146
162
|
theme_dir = File.join(File.expand_path(base_name), theme)
|
147
163
|
entry_classes.each do |entry_class|
|
148
|
-
entry = entry_class.new(
|
164
|
+
entry = entry_class.new(theme_dir, theme)
|
149
165
|
if entry.available?
|
150
166
|
block.call(entry) if block
|
151
167
|
themes << entry
|
@@ -15,7 +15,7 @@ match(Slide) do |slides|
|
|
15
15
|
|
16
16
|
slides.add_post_draw_proc(proc_name) do |slide, canvas, x, y, w, h, simulation|
|
17
17
|
unless simulation
|
18
|
-
text = Text.new("#{slide.index}/#{canvas.
|
18
|
+
text = Text.new("#{slide.index}/#{canvas.n_slides - 1}")
|
19
19
|
text.font @slide_number_props
|
20
20
|
text.align = Pango::Alignment::RIGHT
|
21
21
|
text.compile(canvas, x, y, w, h)
|
@@ -95,7 +95,7 @@ match(*(all_table + [TableHead, TableRow, TableHeader])) do |headers|
|
|
95
95
|
header.dirty!
|
96
96
|
header.text_compile(canvas, x, y, header_w, h)
|
97
97
|
end
|
98
|
-
[x, y,
|
98
|
+
[x, y, header.width, h]
|
99
99
|
end
|
100
100
|
|
101
101
|
headers.add_post_draw_proc(name) do |header, canvas, x, y, w, h, simulation|
|
@@ -155,7 +155,7 @@ match(*(all_table + [TableBody, TableRow, TableCell])) do |cells|
|
|
155
155
|
cell.text_compile(canvas, x, base_y, text_width, h)
|
156
156
|
end
|
157
157
|
end
|
158
|
-
[x, y,
|
158
|
+
[x, y, cell.width, h]
|
159
159
|
end
|
160
160
|
|
161
161
|
cell.add_post_draw_proc(name) do |canvas, x, y, w, h, simulation|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2012-
|
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,10 +14,10 @@
|
|
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 "rabbit"
|
18
|
+
require_relative "author-configuration"
|
19
|
+
require_relative "path-manipulatable"
|
20
|
+
require_relative "yaml-loader"
|
21
21
|
|
22
22
|
module Rabbit
|
23
23
|
class ThemeConfiguration
|
@@ -26,12 +26,10 @@ module Rabbit
|
|
26
26
|
|
27
27
|
GEM_NAME_PREFIX = "rabbit-theme"
|
28
28
|
|
29
|
-
attr_accessor :logger
|
30
29
|
attr_accessor :id, :tags, :licenses
|
31
30
|
attr_writer :version
|
32
31
|
attr_accessor :author
|
33
|
-
def initialize
|
34
|
-
@logger = logger || Logger.default
|
32
|
+
def initialize
|
35
33
|
@id = nil
|
36
34
|
@tags = []
|
37
35
|
@version = nil
|
@@ -45,7 +43,7 @@ module Rabbit
|
|
45
43
|
merge!(conf)
|
46
44
|
rescue
|
47
45
|
format = _("Failed to read slide configuration: %s: %s")
|
48
|
-
|
46
|
+
Rabbit.logger.error(format % [path, $!.message])
|
49
47
|
end
|
50
48
|
|
51
49
|
def save(base_dir)
|
@@ -55,7 +53,7 @@ module Rabbit
|
|
55
53
|
end
|
56
54
|
rescue
|
57
55
|
format = _("Failed to write slide configuration: %s: %s")
|
58
|
-
|
56
|
+
Rabbit.logger.error(format % [config_path, $!.message])
|
59
57
|
end
|
60
58
|
|
61
59
|
def merge!(conf)
|
@@ -64,7 +62,7 @@ module Rabbit
|
|
64
62
|
@version = conf["version"]
|
65
63
|
@licenses = conf["licenses"]
|
66
64
|
|
67
|
-
@author = AuthorConfiguration.new
|
65
|
+
@author = AuthorConfiguration.new
|
68
66
|
@author.merge!(conf["author"] || {})
|
69
67
|
end
|
70
68
|
|