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.
Files changed (241) hide show
  1. checksums.yaml +4 -4
  2. data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
  3. data/doc/_config.yml +2 -2
  4. data/doc/en/news.rd +63 -0
  5. data/doc/ja/news.rd +63 -0
  6. data/lib/rabbit/actions.rb +446 -0
  7. data/lib/rabbit/author-configuration.rb +7 -10
  8. data/lib/rabbit/canvas.rb +74 -42
  9. data/lib/rabbit/command/rabbit-slide.rb +11 -13
  10. data/lib/rabbit/command/rabbit-theme.rb +10 -12
  11. data/lib/rabbit/command/rabbit.rb +31 -43
  12. data/lib/rabbit/console.rb +20 -22
  13. data/lib/rabbit/dependency-canvas.rb +2 -2
  14. data/lib/rabbit/element/base.rb +93 -6
  15. data/lib/rabbit/element/block-element.rb +17 -1
  16. data/lib/rabbit/element/block.rb +17 -1
  17. data/lib/rabbit/element/container-element.rb +59 -3
  18. data/lib/rabbit/element/description-list.rb +18 -2
  19. data/lib/rabbit/element/enum-list.rb +18 -2
  20. data/lib/rabbit/element/footnote.rb +18 -2
  21. data/lib/rabbit/element/image-title-slide.rb +17 -1
  22. data/lib/rabbit/element/image.rb +32 -2
  23. data/lib/rabbit/element/index-slide.rb +29 -13
  24. data/lib/rabbit/element/item-list.rb +18 -2
  25. data/lib/rabbit/element/method-list.rb +18 -2
  26. data/lib/rabbit/element/poppler-page.rb +17 -1
  27. data/lib/rabbit/element/poppler-slide.rb +18 -2
  28. data/lib/rabbit/element/poppler-title-slide.rb +18 -2
  29. data/lib/rabbit/element/preformatted.rb +18 -2
  30. data/lib/rabbit/element/slide-element.rb +29 -2
  31. data/lib/rabbit/element/slide.rb +18 -2
  32. data/lib/rabbit/element/syntax-highlighting.rb +17 -1
  33. data/lib/rabbit/element/table.rb +19 -3
  34. data/lib/rabbit/element/tag.rb +18 -2
  35. data/lib/rabbit/element/text-block-element.rb +18 -2
  36. data/lib/rabbit/element/text-container-element.rb +41 -2
  37. data/lib/rabbit/element/text-element.rb +17 -1
  38. data/lib/rabbit/element/text-renderer.rb +17 -1
  39. data/lib/rabbit/element/text.rb +4 -4
  40. data/lib/rabbit/element/title-slide.rb +19 -3
  41. data/lib/rabbit/element/video.rb +157 -56
  42. data/lib/rabbit/element.rb +20 -20
  43. data/lib/rabbit/formatter.rb +18 -1
  44. data/lib/rabbit/frame.rb +101 -93
  45. data/lib/rabbit/front.rb +11 -4
  46. data/lib/rabbit/gem-finder.rb +4 -8
  47. data/lib/rabbit/gem-pusher.rb +4 -4
  48. data/lib/rabbit/gesture/handler.rb +26 -21
  49. data/lib/rabbit/graffiti/config-dialog.rb +18 -2
  50. data/lib/rabbit/graffiti/processor.rb +20 -4
  51. data/lib/rabbit/gtk.rb +48 -14
  52. data/lib/rabbit/html/generator.rb +18 -18
  53. data/{test/helper/fixture.rb → lib/rabbit/icon.rb} +16 -6
  54. data/lib/rabbit/image/base.rb +7 -6
  55. data/lib/rabbit/image/default.rb +17 -1
  56. data/lib/rabbit/image/dia.rb +2 -2
  57. data/lib/rabbit/image/eps.rb +16 -2
  58. data/lib/rabbit/image/gimp.rb +28 -11
  59. data/lib/rabbit/image/mermaid.rb +3 -3
  60. data/lib/rabbit/image/pdf.rb +3 -3
  61. data/lib/rabbit/image/svg.rb +2 -2
  62. data/lib/rabbit/image.rb +8 -8
  63. data/lib/rabbit/info-window.rb +55 -18
  64. data/lib/rabbit/key-handler.rb +381 -0
  65. data/lib/rabbit/keys.rb +31 -2
  66. data/lib/rabbit/logger/base.rb +17 -1
  67. data/lib/rabbit/logger/gui.rb +20 -4
  68. data/lib/rabbit/logger/stderr.rb +16 -2
  69. data/lib/rabbit/logger.rb +4 -4
  70. data/lib/rabbit/menu.rb +200 -220
  71. data/lib/rabbit/parser/base.rb +17 -1
  72. data/lib/rabbit/parser/ext/aafigure.rb +17 -1
  73. data/lib/rabbit/parser/ext/blockdiag.rb +17 -1
  74. data/lib/rabbit/parser/ext/charty.rb +2 -2
  75. data/lib/rabbit/parser/ext/coderay.rb +20 -4
  76. data/lib/rabbit/parser/ext/enscript.rb +31 -15
  77. data/lib/rabbit/parser/ext/entity.rb +17 -1
  78. data/lib/rabbit/parser/ext/image.rb +6 -6
  79. data/lib/rabbit/parser/ext/inline.rb +17 -1
  80. data/lib/rabbit/parser/ext/rouge.rb +7 -4
  81. data/lib/rabbit/parser/ext/tex.rb +18 -2
  82. data/lib/rabbit/parser/ext/video.rb +4 -4
  83. data/lib/rabbit/parser/image.rb +20 -4
  84. data/lib/rabbit/parser/markdown/converter.rb +12 -13
  85. data/lib/rabbit/parser/markdown.rb +18 -2
  86. data/lib/rabbit/parser/pause-support.rb +1 -0
  87. data/lib/rabbit/parser/pdf.rb +3 -3
  88. data/lib/rabbit/parser/rd/ext/base.rb +20 -4
  89. data/lib/rabbit/parser/rd/ext/block-verbatim.rb +24 -28
  90. data/lib/rabbit/parser/rd/ext/character-reference.rb +18 -2
  91. data/lib/rabbit/parser/rd/ext/image.rb +3 -3
  92. data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +6 -6
  93. data/lib/rabbit/parser/rd/ext/refer.rb +18 -2
  94. data/lib/rabbit/parser/rd/ext/video.rb +19 -2
  95. data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +24 -8
  96. data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +18 -2
  97. data/lib/rabbit/parser/rd/visitor.rb +18 -2
  98. data/lib/rabbit/parser/rd.rb +18 -2
  99. data/lib/rabbit/parser/wiki/output.rb +25 -28
  100. data/lib/rabbit/parser/wiki.rb +18 -2
  101. data/lib/rabbit/parser.rb +6 -6
  102. data/lib/rabbit/path-manipulatable.rb +4 -4
  103. data/lib/rabbit/progress.rb +17 -1
  104. data/lib/rabbit/properties.rb +3 -3
  105. data/lib/rabbit/rabbit.rb +15 -7
  106. data/lib/rabbit/readme-parser.rb +4 -6
  107. data/lib/rabbit/renderer/base.rb +44 -36
  108. data/lib/rabbit/renderer/color.rb +18 -2
  109. data/lib/rabbit/renderer/display/base.rb +10 -12
  110. data/lib/rabbit/renderer/display/button-handler.rb +141 -60
  111. data/lib/rabbit/renderer/display/cursor.rb +4 -5
  112. data/lib/rabbit/renderer/display/drawing-area-base.rb +32 -48
  113. data/lib/rabbit/renderer/display/drawing-area-primitive.rb +10 -61
  114. data/lib/rabbit/renderer/display/drawing-area-view-only.rb +19 -8
  115. data/lib/rabbit/renderer/display/drawing-area.rb +19 -15
  116. data/lib/rabbit/renderer/display/gesture.rb +9 -9
  117. data/lib/rabbit/renderer/display/graffiti.rb +22 -13
  118. data/lib/rabbit/renderer/display/info.rb +22 -2
  119. data/lib/rabbit/renderer/display/magnifier.rb +30 -17
  120. data/lib/rabbit/renderer/display/mask.rb +17 -1
  121. data/lib/rabbit/renderer/display/menu.rb +27 -3
  122. data/lib/rabbit/renderer/display/motion-handler.rb +45 -0
  123. data/lib/rabbit/renderer/display/progress.rb +17 -2
  124. data/lib/rabbit/renderer/display/scroll-handler.rb +60 -13
  125. data/lib/rabbit/renderer/display/search.rb +19 -2
  126. data/lib/rabbit/renderer/display/spotlight.rb +39 -25
  127. data/lib/rabbit/renderer/display.rb +16 -36
  128. data/lib/rabbit/renderer/engine/cairo.rb +4 -11
  129. data/lib/rabbit/renderer/engine.rb +17 -1
  130. data/lib/rabbit/renderer/kernel.rb +2 -20
  131. data/lib/rabbit/renderer/offscreen.rb +8 -14
  132. data/lib/rabbit/renderer/print-layout.rb +2 -2
  133. data/lib/rabbit/renderer/printer.rb +9 -16
  134. data/lib/rabbit/renderer/scene-background-widget.rb +95 -0
  135. data/lib/rabbit/renderer/scene-node-widget.rb +63 -0
  136. data/lib/rabbit/renderer/scene.rb +508 -0
  137. data/lib/rabbit/renderer.rb +6 -6
  138. data/lib/rabbit/search-window.rb +18 -2
  139. data/lib/rabbit/searcher.rb +15 -1
  140. data/lib/rabbit/size.rb +9 -1
  141. data/lib/rabbit/slide-configuration.rb +11 -14
  142. data/lib/rabbit/soap/driver.rb +20 -4
  143. data/lib/rabbit/soap/server.rb +17 -1
  144. data/lib/rabbit/source/argf.rb +5 -5
  145. data/lib/rabbit/source/base.rb +5 -6
  146. data/lib/rabbit/source/file.rb +5 -5
  147. data/lib/rabbit/source/memory.rb +20 -4
  148. data/lib/rabbit/source/uri.rb +9 -11
  149. data/lib/rabbit/source-generator/hiki.rb +2 -7
  150. data/lib/rabbit/source-generator/markdown.rb +2 -7
  151. data/lib/rabbit/source-generator/rd.rb +2 -7
  152. data/lib/rabbit/source-generator.rb +4 -4
  153. data/lib/rabbit/source.rb +5 -5
  154. data/lib/rabbit/task/slide.rb +13 -11
  155. data/lib/rabbit/task/theme.rb +8 -11
  156. data/lib/rabbit/task.rb +3 -3
  157. data/lib/rabbit/theme/applier.rb +27 -11
  158. data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
  159. data/lib/rabbit/theme/color-circle/color-circle.rb +18 -1
  160. data/lib/rabbit/theme/cozmixng/cozmixng.rb +1 -1
  161. data/lib/rabbit/theme/default/default.rb +1 -0
  162. data/lib/rabbit/theme/default-icon/default-icon.rb +1 -1
  163. data/lib/rabbit/theme/default-item-mark-setup/default-item-mark-setup.rb +17 -1
  164. data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +9 -1
  165. data/lib/rabbit/theme/enishi-green/enishi-green.rb +1 -1
  166. data/lib/rabbit/theme/entry.rb +10 -12
  167. data/lib/rabbit/theme/icon/icon.rb +3 -8
  168. data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +5 -5
  169. data/lib/rabbit/theme/image-timer/image-timer.rb +3 -3
  170. data/lib/rabbit/theme/lightning-simple/lightning-simple.rb +1 -0
  171. data/lib/rabbit/theme/lightning-talk/lightning-talk.rb +1 -0
  172. data/lib/rabbit/theme/manager.rb +19 -9
  173. data/lib/rabbit/theme/rabbit-icon/rabbit-icon.rb +1 -1
  174. data/lib/rabbit/theme/ranguba/ranguba.rb +1 -1
  175. data/lib/rabbit/theme/red-frame/red-frame.rb +6 -2
  176. data/lib/rabbit/theme/ruby-gnome2/ruby-gnome2.rb +1 -0
  177. data/lib/rabbit/theme/ruby-gnome2-icon/ruby-gnome2-icon.rb +1 -1
  178. data/lib/rabbit/theme/searcher.rb +23 -7
  179. data/lib/rabbit/theme/slide-number/slide-number.rb +1 -1
  180. data/lib/rabbit/theme/slide-show/slide-show.rb +1 -1
  181. data/lib/rabbit/theme/table/table.rb +2 -2
  182. data/lib/rabbit/theme/video/property.rb +3 -0
  183. data/lib/rabbit/theme/video/video.rb +5 -0
  184. data/lib/rabbit/theme-configuration.rb +9 -11
  185. data/lib/rabbit/utils.rb +12 -94
  186. data/lib/rabbit/version.rb +1 -1
  187. data/lib/rabbit/xmlrpc/client.rb +17 -1
  188. data/lib/rabbit/xmlrpc/server.rb +17 -1
  189. data/po/en/rabbit.edit.po +324 -316
  190. data/po/en/rabbit.po +61 -55
  191. data/po/fr/rabbit.edit.po +324 -316
  192. data/po/fr/rabbit.po +61 -55
  193. data/po/ja/rabbit.edit.po +345 -370
  194. data/po/ja/rabbit.po +83 -80
  195. data/rabbit.gemspec +4 -2
  196. data/sample/block-quote.rab +13 -0
  197. data/sample/description-list.rab +17 -0
  198. data/sample/mermaid.rab +16 -0
  199. data/sample/rabbit-en.hiki +0 -1
  200. data/sample/rabbit-en.md +0 -1
  201. data/sample/rabbit-en.rd +0 -1
  202. data/sample/rabbit.hiki +0 -1
  203. data/sample/rabbit.md +0 -1
  204. data/sample/rabbit.rd +0 -1
  205. data/sample/video.rab +17 -0
  206. metadata +33 -65
  207. data/lib/rabbit/action/basic.rb +0 -304
  208. data/lib/rabbit/action/radio.rb +0 -78
  209. data/lib/rabbit/action/toggle.rb +0 -82
  210. data/lib/rabbit/action.rb +0 -140
  211. data/lib/rabbit/renderer/display/gl.rb +0 -98
  212. data/lib/rabbit/renderer/display/key-handler.rb +0 -321
  213. data/lib/rabbit/renderer/gl.rb +0 -95
  214. data/lib/rabbit/renderer/screen.rb +0 -286
  215. data/lib/rabbit/renderer/widget/drawing-area.rb +0 -93
  216. data/lib/rabbit/stock.rb +0 -31
  217. data/lib/rabbit/trackball.rb +0 -228
  218. data/lib/rabbit/video-window.rb +0 -123
  219. data/test/command/test-rabbit.rb +0 -101
  220. data/test/helper/parser.rb +0 -48
  221. data/test/helper.rb +0 -24
  222. data/test/image/test-dia.rb +0 -54
  223. data/test/image/test-eps.rb +0 -41
  224. data/test/parser/test-markdown.rb +0 -360
  225. data/test/parser/test-rd.rb +0 -43
  226. data/test/parser/test-wiki.rb +0 -71
  227. data/test/run-test.rb +0 -27
  228. data/test/source-generator/test-hiki.rb +0 -68
  229. data/test/source-generator/test-markdown.rb +0 -67
  230. data/test/source-generator/test-rd.rb +0 -69
  231. data/test/test-applier.rb +0 -73
  232. data/test/test-author-configuration.rb +0 -37
  233. data/test/test-canvas.rb +0 -70
  234. data/test/test-color.rb +0 -51
  235. data/test/test-element.rb +0 -103
  236. data/test/test-readme-parser.rb +0 -160
  237. data/test/test-size.rb +0 -155
  238. data/test/test-slide-configuration.rb +0 -74
  239. data/test/test-source.rb +0 -122
  240. data/test/test-theme-configuration.rb +0 -47
  241. data/test/test-utils.rb +0 -64
@@ -1,12 +1,28 @@
1
- require 'delegate'
2
- require 'forwardable'
3
-
4
- require 'rabbit/utils'
5
- require 'rabbit/element'
6
- require 'rabbit/image'
7
- require 'rabbit/theme/searcher'
8
- require 'rabbit/renderer/color'
9
- require "rabbit/size"
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
- @theme.slides
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
- canvas.logger
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
- canvas.logger.error(format % not_set_variables.inspect)
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")
@@ -19,7 +19,7 @@ include_theme("cozmixng-powered-by")
19
19
  include_theme("title-logo")
20
20
 
21
21
  @icon_images = ["cozmixchu.png"]
22
- include_theme("icon")
22
+ # include_theme("icon")
23
23
 
24
24
 
25
25
  match(Slide, HeadLine) do |heads|
@@ -18,6 +18,7 @@ include_theme("default-block-quote")
18
18
  include_theme("default-foot-text")
19
19
  include_theme("default-description")
20
20
  include_theme("image")
21
+ include_theme("video")
21
22
  include_theme("table")
22
23
  include_theme("newline-in-slides")
23
24
 
@@ -1,4 +1,4 @@
1
1
  add_image_path("ruby-images")
2
2
 
3
3
  @icon_images = ["ruby-pink-circle-small-icon.png", "ruby-pink-polygon-icon.png"]
4
- include_theme("icon")
4
+ # include_theme("icon")
@@ -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
- canvas.logger.warn(format % type.inspect)
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.keep_in_size if @preformatted_keep_in_size
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
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2005-2012 Kouhei Sutou <kou@cozmixng.org>
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 'erb'
17
+ require "erb"
18
18
 
19
- require 'rabbit/rabbit'
20
- require "rabbit/gem-finder"
21
- require "rabbit/theme-configuration"
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(logger, theme_dir, name)
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
- @logger.warn($!) if @logger
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(logger, name)
156
+ def initialize(name)
159
157
  @spec = nil
160
158
  if valid_gem_name?(name)
161
- finder = GemFinder.new(logger)
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(logger, theme_dir, name)
167
+ super(theme_dir, name)
170
168
  end
171
169
 
172
170
  def available?
@@ -1,8 +1,3 @@
1
- @icon_images ||= []
2
- if @icon_image
3
- @icon_images.unshift(@icon_image)
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.slide_size < 2
54
+ if canvas.n_slides < 2
55
55
  max_text_length = 1
56
56
  else
57
- max_text_length = Math.log10(canvas.slide_size - 1).truncate + 1
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.slide_size.to_s,
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.slide_size - 1).to_s
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.slide_size
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.slide_size < 3
83
+ if canvas.n_slides < 3
84
84
  slide_ratio = 1
85
85
  else
86
- slide_ratio = (slide.index - 1.0) / (canvas.slide_size - 2.0)
87
- next_slide_ratio = (slide.index) / (canvas.slide_size - 2.0)
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
@@ -1,4 +1,5 @@
1
1
  include_theme("image")
2
+ include_theme("video")
2
3
  include_theme("table")
3
4
 
4
5
  normal_font_size = @normal_font_size
@@ -3,6 +3,7 @@ include_theme("default-slide")
3
3
  include_theme("default-title-text")
4
4
  include_theme("default-text")
5
5
  include_theme("image")
6
+ include_theme("video")
6
7
  include_theme("lightning-talk-toolkit")
7
8
 
8
9
  match(TitleSlide) do |slides|
@@ -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
- require 'rabbit/theme/applier'
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
@@ -1,4 +1,4 @@
1
1
  add_image_path("rabbit-images")
2
2
 
3
3
  @icon_images = ["lavie-icon.png"]
4
- include_theme("icon")
4
+ # include_theme("icon")
@@ -52,7 +52,7 @@ end
52
52
  include_theme("default")
53
53
 
54
54
  @icon_images = ["ranguba-mark.png"]
55
- include_theme("icon")
55
+ # include_theme("icon")
56
56
 
57
57
  @slide_logo_image = "ranguba-mark.png"
58
58
  @slide_logo_position = Proc.new do |slide, canvas|
@@ -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
 
@@ -2,6 +2,7 @@ add_image_path("ruby-images")
2
2
  add_image_path("rabbit-images")
3
3
 
4
4
  include_theme("image")
5
+ include_theme("video")
5
6
  include_theme("table")
6
7
  include_theme("default-title-text")
7
8
  include_theme("default-text")
@@ -1,4 +1,4 @@
1
1
  add_image_path("ruby-images")
2
2
 
3
3
  @icon_images = ["ruby-pink-circle.png"]
4
- include_theme("icon")
4
+ # include_theme("icon")
@@ -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
- require 'rabbit/theme/entry'
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(@logger, ".", ".")
64
+ entry = ImageDirectoryEntry.new(".", ".")
49
65
  else
50
- entry = DirectoryEntry.new(@logger, ".", ".")
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(@logger, base_directory, theme_name)
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(@logger, theme_name)
91
+ entry = ImageGemEntry.new(theme_name)
76
92
  else
77
- entry = GemEntry.new(@logger, theme_name)
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(@logger, theme_dir, theme)
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.slide_size - 1}")
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)
@@ -1,7 +1,7 @@
1
1
  theme_exit unless display?
2
2
 
3
3
  if canvas.allotted_time
4
- default_slide_show_span = (canvas.allotted_time / canvas.slide_size.to_f).round
4
+ default_slide_show_span = (canvas.allotted_time / canvas.n_slides.to_f).round
5
5
  else
6
6
  default_slide_show_span = 60
7
7
  end
@@ -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, w, h]
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, w, h]
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|
@@ -0,0 +1,3 @@
1
+ @category = N_("Toolkit")
2
+ @title = N_("Video")
3
+ @description = N_("video rendering")
@@ -0,0 +1,5 @@
1
+ proc_name = "video"
2
+
3
+ match("**", Video) do |videos|
4
+ videos.horizontal_centering = true
5
+ end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2012-2021 Sutou Kouhei <kou@cozmixng.org>
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
- require "rabbit/gettext"
18
- require "rabbit/author-configuration"
19
- require "rabbit/path-manipulatable"
20
- require "rabbit/yaml-loader"
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(logger=nil)
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
- @logger.error(format % [path, $!.message])
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
- @logger.error(format % [config_path, $!.message])
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(@logger)
65
+ @author = AuthorConfiguration.new
68
66
  @author.merge!(conf["author"] || {})
69
67
  end
70
68