rabbit 2.2.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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