rabbit 2.2.1 → 3.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.
Files changed (177) hide show
  1. checksums.yaml +5 -5
  2. data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
  3. data/doc/_config.yml +2 -2
  4. data/doc/_layouts/en.html +1 -1
  5. data/doc/_layouts/ja.html +1 -1
  6. data/doc/en/news.rd +140 -0
  7. data/doc/en/sample/hiki/rabbit.hiki +2 -2
  8. data/doc/en/sample/markdown/rabbit.md +1 -1
  9. data/doc/en/sample/rd/rabbit.rd +1 -1
  10. data/doc/en/usage/rabbit-slide.rd +3 -3
  11. data/doc/images/screenshots/en/blue-circle-raw.png +0 -0
  12. data/doc/images/screenshots/en/blue-circle.png +0 -0
  13. data/doc/images/screenshots/en/clear-blue-raw.png +0 -0
  14. data/doc/images/screenshots/en/clear-blue.png +0 -0
  15. data/doc/images/screenshots/en/cozmixng-raw.png +0 -0
  16. data/doc/images/screenshots/en/cozmixng.png +0 -0
  17. data/doc/images/screenshots/en/dark-gradation-raw.png +0 -0
  18. data/doc/images/screenshots/en/dark-gradation.png +0 -0
  19. data/doc/images/screenshots/en/day-white-raw.png +0 -0
  20. data/doc/images/screenshots/en/day-white.png +0 -0
  21. data/doc/images/screenshots/en/debian-raw.png +0 -0
  22. data/doc/images/screenshots/en/debian.png +0 -0
  23. data/doc/images/screenshots/en/green-circle-raw.png +0 -0
  24. data/doc/images/screenshots/en/green-circle.png +0 -0
  25. data/doc/images/screenshots/en/night-black-raw.png +0 -0
  26. data/doc/images/screenshots/en/night-black.png +0 -0
  27. data/doc/images/screenshots/en/rabbit-raw.png +0 -0
  28. data/doc/images/screenshots/en/rabbit.png +0 -0
  29. data/doc/images/screenshots/en/ranguba-raw.png +0 -0
  30. data/doc/images/screenshots/en/ranguba.png +0 -0
  31. data/doc/images/screenshots/en/red-frame-raw.png +0 -0
  32. data/doc/images/screenshots/en/red-frame.png +0 -0
  33. data/doc/images/screenshots/en/ruby-gnome2-raw.png +0 -0
  34. data/doc/images/screenshots/en/ruby-gnome2.png +0 -0
  35. data/doc/images/screenshots/en/rubykaigi2011-raw.png +0 -0
  36. data/doc/images/screenshots/en/rubykaigi2011.png +0 -0
  37. data/doc/images/screenshots/ja/blue-circle-raw.png +0 -0
  38. data/doc/images/screenshots/ja/blue-circle.png +0 -0
  39. data/doc/images/screenshots/ja/clear-blue-raw.png +0 -0
  40. data/doc/images/screenshots/ja/clear-blue.png +0 -0
  41. data/doc/images/screenshots/ja/cozmixng-raw.png +0 -0
  42. data/doc/images/screenshots/ja/cozmixng.png +0 -0
  43. data/doc/images/screenshots/ja/dark-gradation-raw.png +0 -0
  44. data/doc/images/screenshots/ja/dark-gradation.png +0 -0
  45. data/doc/images/screenshots/ja/day-white-raw.png +0 -0
  46. data/doc/images/screenshots/ja/day-white.png +0 -0
  47. data/doc/images/screenshots/ja/debian-raw.png +0 -0
  48. data/doc/images/screenshots/ja/debian.png +0 -0
  49. data/doc/images/screenshots/ja/green-circle-raw.png +0 -0
  50. data/doc/images/screenshots/ja/green-circle.png +0 -0
  51. data/doc/images/screenshots/ja/night-black-raw.png +0 -0
  52. data/doc/images/screenshots/ja/night-black.png +0 -0
  53. data/doc/images/screenshots/ja/rabbit-raw.png +0 -0
  54. data/doc/images/screenshots/ja/rabbit.png +0 -0
  55. data/doc/images/screenshots/ja/ranguba-raw.png +0 -0
  56. data/doc/images/screenshots/ja/ranguba.png +0 -0
  57. data/doc/images/screenshots/ja/red-frame-raw.png +0 -0
  58. data/doc/images/screenshots/ja/red-frame.png +0 -0
  59. data/doc/images/screenshots/ja/ruby-gnome2-raw.png +0 -0
  60. data/doc/images/screenshots/ja/ruby-gnome2.png +0 -0
  61. data/doc/images/screenshots/ja/rubykaigi2011-raw.png +0 -0
  62. data/doc/images/screenshots/ja/rubykaigi2011.png +0 -0
  63. data/doc/ja/how-to-make/index.rd +1 -1
  64. data/doc/ja/news.rd +143 -0
  65. data/doc/ja/sample/hiki/rabbit.hiki +2 -2
  66. data/doc/ja/sample/markdown/rabbit.md +1 -1
  67. data/doc/ja/sample/rd/rabbit.rd +1 -1
  68. data/doc/ja/slides.rd +1 -1
  69. data/doc/ja/usage/rabbit-slide.rd +3 -3
  70. data/doc/ja/users.rd +1 -1
  71. data/lib/rabbit/action.rb +23 -4
  72. data/lib/rabbit/canvas.rb +70 -14
  73. data/lib/rabbit/command/rabbit-slide.rb +252 -67
  74. data/lib/rabbit/command/rabbit-slide.ui +180 -0
  75. data/lib/rabbit/command/rabbit.rb +14 -20
  76. data/lib/rabbit/console.rb +9 -3
  77. data/lib/rabbit/dependency-canvas.rb +19 -1
  78. data/lib/rabbit/element.rb +34 -7
  79. data/lib/rabbit/element/poppler-page.rb +1 -2
  80. data/lib/rabbit/element/text-container-element.rb +2 -2
  81. data/lib/rabbit/element/text-renderer.rb +5 -4
  82. data/lib/rabbit/element/title-slide.rb +8 -0
  83. data/lib/rabbit/element/video.rb +1 -2
  84. data/lib/rabbit/filename.rb +39 -0
  85. data/lib/rabbit/formatter.rb +61 -30
  86. data/lib/rabbit/frame.rb +1 -19
  87. data/lib/rabbit/front.rb +23 -2
  88. data/lib/rabbit/gesture/handler.rb +21 -2
  89. data/lib/rabbit/graffiti/config-dialog.rb +15 -18
  90. data/lib/rabbit/gtk.rb +2 -191
  91. data/lib/rabbit/html/generator.rb +38 -30
  92. data/lib/rabbit/image-data-loader.rb +6 -1
  93. data/lib/rabbit/image.rb +22 -4
  94. data/lib/rabbit/image/base.rb +34 -2
  95. data/lib/rabbit/image/default.rb +1 -1
  96. data/lib/rabbit/image/eps.rb +1 -1
  97. data/lib/rabbit/image/gimp.rb +1 -1
  98. data/lib/rabbit/info-window.rb +27 -15
  99. data/lib/rabbit/logger/gui.rb +21 -23
  100. data/lib/rabbit/logger/stderr.rb +1 -1
  101. data/lib/rabbit/pango-markup.rb +44 -0
  102. data/lib/rabbit/parser.rb +20 -3
  103. data/lib/rabbit/parser/ext/image.rb +25 -8
  104. data/lib/rabbit/parser/ext/video.rb +21 -2
  105. data/lib/rabbit/parser/markdown.rb +1 -2
  106. data/lib/rabbit/parser/pdf.rb +23 -7
  107. data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +20 -0
  108. data/lib/rabbit/progress.rb +34 -23
  109. data/lib/rabbit/renderer.rb +17 -23
  110. data/lib/rabbit/renderer/base.rb +31 -57
  111. data/lib/rabbit/renderer/color.rb +46 -53
  112. data/lib/rabbit/renderer/display/base.rb +71 -62
  113. data/lib/rabbit/renderer/display/button-handler.rb +2 -1
  114. data/lib/rabbit/renderer/display/clutter-embed.rb +60 -26
  115. data/lib/rabbit/renderer/display/drawing-area-base.rb +1 -1
  116. data/lib/rabbit/renderer/display/drawing-area-primitive.rb +34 -21
  117. data/lib/rabbit/renderer/display/graffiti.rb +1 -3
  118. data/lib/rabbit/renderer/display/hook-handler.rb +8 -4
  119. data/lib/rabbit/renderer/display/key-handler.rb +7 -2
  120. data/lib/rabbit/renderer/display/magnifier.rb +2 -2
  121. data/lib/rabbit/renderer/display/progress.rb +10 -2
  122. data/lib/rabbit/renderer/display/spotlight.rb +2 -2
  123. data/lib/rabbit/renderer/engine/cairo.rb +0 -3
  124. data/lib/rabbit/renderer/kernel.rb +54 -0
  125. data/lib/rabbit/renderer/offscreen.rb +14 -6
  126. data/lib/rabbit/renderer/print-layout.rb +150 -0
  127. data/lib/rabbit/renderer/printer.rb +236 -0
  128. data/lib/rabbit/renderer/screen.rb +288 -0
  129. data/lib/rabbit/renderer/widget/drawing-area.rb +93 -0
  130. data/lib/rabbit/size.rb +52 -25
  131. data/lib/rabbit/slide-configuration.rb +56 -12
  132. data/lib/rabbit/source.rb +24 -8
  133. data/lib/rabbit/task/slide.rb +1 -1
  134. data/lib/rabbit/theme/applier.rb +26 -9
  135. data/lib/rabbit/theme/base/base.rb +7 -7
  136. data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
  137. data/lib/rabbit/theme/image-timer/image-timer.rb +3 -1
  138. data/lib/rabbit/theme/image-viewer/image-viewer.rb +13 -1
  139. data/lib/rabbit/theme/image/image.rb +4 -4
  140. data/lib/rabbit/theme/lightning-talk-toolkit/lightning-talk-toolkit.rb +3 -1
  141. data/lib/rabbit/theme/tag/tag.rb +12 -4
  142. data/lib/rabbit/version.rb +2 -2
  143. data/lib/rabbit/video-window.rb +75 -89
  144. data/misc/emacs/rabbit-mode.el +11 -7
  145. data/po/en/rabbit.edit.po +189 -185
  146. data/po/en/rabbit.po +15 -12
  147. data/po/fr/rabbit.edit.po +189 -185
  148. data/po/fr/rabbit.po +15 -12
  149. data/po/ja/rabbit.edit.po +190 -186
  150. data/po/ja/rabbit.po +16 -13
  151. data/rabbit.gemspec +34 -16
  152. data/test/command/test-rabbit.rb +100 -0
  153. data/test/{rabbit-test-utils.rb → helper.rb} +7 -4
  154. data/test/{rabbit-test-utils → helper}/fixture.rb +2 -2
  155. data/test/{rabbit-test-utils → helper}/parser.rb +2 -2
  156. data/test/image/test-dia.rb +2 -2
  157. data/test/image/test-eps.rb +2 -2
  158. data/test/parser/test-markdown.rb +3 -5
  159. data/test/parser/test-rd.rb +1 -3
  160. data/test/parser/test-wiki.rb +3 -5
  161. data/test/run-test.rb +3 -3
  162. data/test/test-applier.rb +60 -29
  163. data/test/test-canvas.rb +70 -0
  164. data/test/test-color.rb +18 -9
  165. data/test/test-element.rb +15 -3
  166. data/test/test-size.rb +25 -22
  167. data/test/test-slide-configuration.rb +16 -6
  168. data/test/test-source.rb +15 -5
  169. data/test/test-utils.rb +15 -1
  170. metadata +55 -84
  171. data/lib/rabbit/renderer/print.rb +0 -31
  172. data/lib/rabbit/renderer/print/base.rb +0 -78
  173. data/lib/rabbit/renderer/print/cairo.rb +0 -122
  174. data/lib/rabbit/renderer/print/layout.rb +0 -123
  175. data/lib/rabbit/renderer/print/multiple.rb +0 -202
  176. data/lib/rabbit/source/hiki.rb +0 -36
  177. data/lib/rabbit/source/slide-share.rb +0 -53
@@ -0,0 +1,180 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Generated with glade 3.22.1 -->
3
+ <interface>
4
+ <requires lib="gtk+" version="3.20"/>
5
+ <object class="GtkDialog" id="dialog">
6
+ <property name="can_focus">False</property>
7
+ <property name="type_hint">dialog</property>
8
+ <child>
9
+ <placeholder/>
10
+ </child>
11
+ <child internal-child="vbox">
12
+ <object class="GtkBox">
13
+ <property name="can_focus">False</property>
14
+ <property name="orientation">vertical</property>
15
+ <property name="spacing">2</property>
16
+ <child internal-child="action_area">
17
+ <object class="GtkButtonBox">
18
+ <property name="can_focus">False</property>
19
+ <property name="layout_style">end</property>
20
+ <child>
21
+ <object class="GtkButton" id="cancel-button">
22
+ <property name="label">gtk-cancel</property>
23
+ <property name="visible">True</property>
24
+ <property name="can_focus">True</property>
25
+ <property name="receives_default">True</property>
26
+ <property name="use_stock">True</property>
27
+ </object>
28
+ <packing>
29
+ <property name="expand">True</property>
30
+ <property name="fill">True</property>
31
+ <property name="position">0</property>
32
+ </packing>
33
+ </child>
34
+ <child>
35
+ <object class="GtkButton" id="apply-button">
36
+ <property name="label">gtk-apply</property>
37
+ <property name="visible">True</property>
38
+ <property name="can_focus">True</property>
39
+ <property name="receives_default">True</property>
40
+ <property name="use_stock">True</property>
41
+ </object>
42
+ <packing>
43
+ <property name="expand">True</property>
44
+ <property name="fill">True</property>
45
+ <property name="position">1</property>
46
+ </packing>
47
+ </child>
48
+ </object>
49
+ <packing>
50
+ <property name="expand">False</property>
51
+ <property name="fill">False</property>
52
+ <property name="position">0</property>
53
+ </packing>
54
+ </child>
55
+ <child>
56
+ <object class="GtkBox">
57
+ <property name="visible">True</property>
58
+ <property name="can_focus">False</property>
59
+ <property name="orientation">vertical</property>
60
+ <child>
61
+ <object class="GtkFrame">
62
+ <property name="visible">True</property>
63
+ <property name="can_focus">False</property>
64
+ <property name="label_xalign">0</property>
65
+ <property name="shadow_type">none</property>
66
+ <child>
67
+ <object class="GtkAlignment">
68
+ <property name="visible">True</property>
69
+ <property name="can_focus">False</property>
70
+ <property name="left_padding">12</property>
71
+ <child>
72
+ <object class="GtkGrid">
73
+ <property name="visible">True</property>
74
+ <property name="can_focus">False</property>
75
+ <child>
76
+ <object class="GtkLabel">
77
+ <property name="visible">True</property>
78
+ <property name="can_focus">False</property>
79
+ <property name="halign">end</property>
80
+ <property name="label" translatable="yes">ID:</property>
81
+ </object>
82
+ <packing>
83
+ <property name="left_attach">0</property>
84
+ <property name="top_attach">0</property>
85
+ </packing>
86
+ </child>
87
+ <child>
88
+ <object class="GtkEntry" id="slide-id">
89
+ <property name="visible">True</property>
90
+ <property name="can_focus">True</property>
91
+ <property name="placeholder_text" translatable="yes">rubykaigi2012</property>
92
+ </object>
93
+ <packing>
94
+ <property name="left_attach">1</property>
95
+ <property name="top_attach">0</property>
96
+ </packing>
97
+ </child>
98
+ <child>
99
+ <object class="GtkLabel">
100
+ <property name="visible">True</property>
101
+ <property name="can_focus">False</property>
102
+ <property name="halign">end</property>
103
+ <property name="label" translatable="yes">Base name:</property>
104
+ </object>
105
+ <packing>
106
+ <property name="left_attach">0</property>
107
+ <property name="top_attach">1</property>
108
+ </packing>
109
+ </child>
110
+ <child>
111
+ <object class="GtkEntry" id="slide-base-name">
112
+ <property name="visible">True</property>
113
+ <property name="can_focus">True</property>
114
+ <property name="placeholder_text" translatable="yes">rabbit-introduction</property>
115
+ </object>
116
+ <packing>
117
+ <property name="left_attach">1</property>
118
+ <property name="top_attach">1</property>
119
+ </packing>
120
+ </child>
121
+ <child>
122
+ <object class="GtkLabel">
123
+ <property name="visible">True</property>
124
+ <property name="can_focus">False</property>
125
+ <property name="label" translatable="yes">Markup language:</property>
126
+ </object>
127
+ <packing>
128
+ <property name="left_attach">0</property>
129
+ <property name="top_attach">2</property>
130
+ </packing>
131
+ </child>
132
+ <child>
133
+ <object class="GtkComboBoxText" id="slide-markup-language">
134
+ <property name="visible">True</property>
135
+ <property name="can_focus">False</property>
136
+ </object>
137
+ <packing>
138
+ <property name="left_attach">1</property>
139
+ <property name="top_attach">2</property>
140
+ </packing>
141
+ </child>
142
+ </object>
143
+ </child>
144
+ </object>
145
+ </child>
146
+ <child type="label">
147
+ <object class="GtkLabel">
148
+ <property name="visible">True</property>
149
+ <property name="can_focus">False</property>
150
+ <property name="label" translatable="yes">Slide information</property>
151
+ </object>
152
+ </child>
153
+ </object>
154
+ <packing>
155
+ <property name="expand">False</property>
156
+ <property name="fill">True</property>
157
+ <property name="position">0</property>
158
+ </packing>
159
+ </child>
160
+ <child>
161
+ <placeholder/>
162
+ </child>
163
+ <child>
164
+ <placeholder/>
165
+ </child>
166
+ </object>
167
+ <packing>
168
+ <property name="expand">False</property>
169
+ <property name="fill">True</property>
170
+ <property name="position">1</property>
171
+ </packing>
172
+ </child>
173
+ </object>
174
+ </child>
175
+ <action-widgets>
176
+ <action-widget response="-6">cancel-button</action-widget>
177
+ <action-widget response="-10">apply-button</action-widget>
178
+ </action-widgets>
179
+ </object>
180
+ </interface>
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2004-2014 Kouhei Sutou <kou@cozmixng.org>
1
+ # Copyright (C) 2004-2019 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
@@ -142,7 +142,6 @@ module Rabbit
142
142
  options.migemo_dictionary_name = "migemo-dict"
143
143
  options.use_gl = false
144
144
  options.show_native_window_id = false
145
- options.keep_above = false
146
145
  options.source_filename = nil
147
146
 
148
147
 
@@ -587,14 +586,6 @@ module Rabbit
587
586
  options.use_gl = bool
588
587
  end
589
588
 
590
- parser.category _("Display")
591
-
592
- parser.on("--[no-]keep-above",
593
- _("Specify whether to keep above window."),
594
- "(#{options.keep_above})") do |bool|
595
- options.keep_above = bool
596
- end
597
-
598
589
  parser.category _("Others")
599
590
 
600
591
  parser.on("--check-syntax",
@@ -727,9 +718,9 @@ module Rabbit
727
718
  target.draw_scaled_image = @options.draw_scaled_image
728
719
  end
729
720
 
730
- def setup_size(target)
731
- target.width = @options.width
732
- target.height = @options.height
721
+ def setup_base_size(target)
722
+ target.base_width = @options.width
723
+ target.base_height = @options.height
733
724
  end
734
725
 
735
726
  def setup_paper_size(target)
@@ -811,8 +802,8 @@ module Rabbit
811
802
 
812
803
  def do_print
813
804
  source = make_source
814
- renderer = Renderer.printable_renderer(@options.slides_per_page)
815
- canvas = make_canvas(renderer)
805
+ canvas = make_canvas(Renderer::Printer)
806
+ setup_base_size(canvas)
816
807
  setup_paper_size(canvas)
817
808
  setup_print_info(canvas)
818
809
  setup_3d_info(canvas)
@@ -829,7 +820,7 @@ module Rabbit
829
820
  def do_save_as_image
830
821
  source = make_source
831
822
  canvas = make_canvas(Renderer::Offscreen)
832
- setup_size(canvas)
823
+ setup_base_size(canvas)
833
824
  setup_image_info(canvas)
834
825
  setup_print_info(canvas)
835
826
  setup_paper_size(canvas)
@@ -851,10 +842,14 @@ module Rabbit
851
842
  Renderer::Display.init(display_init_options)
852
843
 
853
844
  source = make_source
854
- canvas = make_canvas(Renderer::Display)
845
+ if ENV["RABBIT_RENDERER"] == "screen"
846
+ canvas = make_canvas(Renderer::Screen)
847
+ else
848
+ canvas = make_canvas(Renderer::Display)
849
+ end
855
850
  frame = Frame.new(@logger, canvas)
856
851
  frame.geometry = @options.geometry
857
- frame.force_keep_above = @options.keep_above
852
+ setup_base_size(canvas)
858
853
  setup_paper_size(canvas)
859
854
  setup_image_info(canvas)
860
855
  setup_print_info(canvas)
@@ -881,8 +876,7 @@ module Rabbit
881
876
 
882
877
  def do_check_syntax
883
878
  source = make_source
884
- renderer = Renderer.printable_renderer(1)
885
- canvas = make_canvas(renderer)
879
+ canvas = make_canvas(Renderer::Printer)
886
880
  exception = nil
887
881
  begin
888
882
  canvas.parse(source) do |_exception|
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2005-2012 Kouhei Sutou <kou@cozmixng.org>
1
+ # Copyright (C) 2005-2017 Kouhei Sutou <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
@@ -18,6 +18,8 @@ require 'English'
18
18
 
19
19
  require "shellwords"
20
20
  require "optparse"
21
+ require "optparse/date"
22
+ require "optparse/time"
21
23
  require "ostruct"
22
24
  require "uri"
23
25
  require "pathname"
@@ -79,8 +81,12 @@ module Rabbit
79
81
  options.after_hooks.each do |hook|
80
82
  hook.call(self, parser, options)
81
83
  end
82
- rescue
83
- @logger.fatal($!.message)
84
+ rescue => error
85
+ @logger.error("#{error.class}: #{error.message}")
86
+ error.backtrace.each do |line|
87
+ @logger.error(line)
88
+ end
89
+ raise
84
90
  end
85
91
 
86
92
  [options, options.logger]
@@ -1,4 +1,20 @@
1
- require 'rabbit/canvas'
1
+ # Copyright (C) 2006-2019 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 "rabbit/canvas"
2
18
 
3
19
  module Rabbit
4
20
  class DependencyCanvas < Canvas
@@ -10,6 +26,8 @@ module Rabbit
10
26
  def initialize(parent, *rest, &block)
11
27
  @parent = parent
12
28
  super(*rest, &block)
29
+ self.base_width = @parent.base_width
30
+ self.base_height = @parent.base_height
13
31
  end
14
32
  end
15
33
  end
@@ -1,8 +1,35 @@
1
- require 'rabbit/utils'
1
+ # Copyright (C) 2017 Kouhei Sutou <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
- module Rabbit
4
- module Element
5
- dir = ::File.join("rabbit", "element")
6
- Utils.require_files_under_directory_in_load_path(dir)
7
- end
8
- end
17
+ require "rabbit/element/block"
18
+ require "rabbit/element/description-list"
19
+ require "rabbit/element/enum-list"
20
+ require "rabbit/element/footnote"
21
+ require "rabbit/element/image-title-slide"
22
+ require "rabbit/element/image"
23
+ require "rabbit/element/index-slide"
24
+ require "rabbit/element/item-list"
25
+ require "rabbit/element/method-list"
26
+ require "rabbit/element/poppler-slide"
27
+ require "rabbit/element/poppler-title-slide"
28
+ require "rabbit/element/preformatted"
29
+ require "rabbit/element/slide"
30
+ require "rabbit/element/syntax-highlighting"
31
+ require "rabbit/element/table"
32
+ require "rabbit/element/tag"
33
+ require "rabbit/element/text"
34
+ require "rabbit/element/title-slide"
35
+ require "rabbit/element/video"
@@ -24,8 +24,7 @@ module Rabbit
24
24
  end
25
25
 
26
26
  def text
27
- rectangle = Poppler::Rectangle.new(0, 0, @width, @height)
28
- @page.get_text(rectangle)
27
+ @page.text
29
28
  end
30
29
 
31
30
  def clear_theme
@@ -107,7 +107,7 @@ module Rabbit
107
107
  super(my_font_size)
108
108
  end
109
109
 
110
- private
110
+ protected
111
111
  # TODO: This is too workaround. :<
112
112
  def draw_sub_elements(canvas, x, y, w, h)
113
113
  draw_sub_elements_recursive(canvas, x, y, w, h, 0) do
@@ -122,7 +122,7 @@ module Rabbit
122
122
  else
123
123
  draw_sub_elements_recursive(canvas, x, y, w, h, i + 1) do
124
124
  element = @elements[i]
125
- if element.respond_to?(:draw_sub_elements)
125
+ if element.is_a?(TextContainerElement)
126
126
  element.draw_sub_elements(canvas, x, y, w, h) do
127
127
  yield
128
128
  end
@@ -206,13 +206,13 @@ module Rabbit
206
206
  end
207
207
 
208
208
  def setup_layout(layout, w)
209
- if @wrap_mode
210
- layout.set_width(w * Pango::SCALE)
211
- layout.set_wrap(@wrap_mode)
209
+ layout.set_wrap(@wrap_mode) if @wrap_mode
210
+ layout.set_alignment(@align)
211
+ if @wrap_mode or layout.alignment != Pango::Alignment::LEFT
212
+ layout.set_width((w * Pango::SCALE).ceil)
212
213
  else
213
214
  layout.set_width(-1)
214
215
  end
215
- layout.set_alignment(@align)
216
216
  indent = @indent
217
217
  indent = indent.value if indent.respond_to?(:value)
218
218
  layout.set_indent(indent)
@@ -325,6 +325,7 @@ module Rabbit
325
325
  break if new_size == size
326
326
  set_computed_font_size(new_size)
327
327
  compile(canvas, x, y, w, h)
328
+ break if !@wrap_mode and @layout.wrapped?
328
329
  break if compare.call(*@layout.pixel_size)
329
330
  size = new_size
330
331
  end
@@ -39,6 +39,14 @@ module Rabbit
39
39
  self["allotted-time"]
40
40
  end
41
41
 
42
+ def start_time
43
+ self["start-time"]
44
+ end
45
+
46
+ def end_time
47
+ self["end-time"]
48
+ end
49
+
42
50
  def to_html(generator)
43
51
  "<div class=\"title-slide\">\n#{super}\n</div>"
44
52
  end
@@ -77,8 +77,7 @@ module Rabbit
77
77
  unless simulation
78
78
  if canvas.display?
79
79
  require "rabbit/video-window"
80
- @video_window ||= VideoWindow.new(self)
81
- @video_window.show(canvas.window)
80
+ VideoWindow.show(canvas.window, self)
82
81
  else
83
82
  draw_layout(canvas, x, y)
84
83
  end