rabbit 0.9.3 → 1.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 (213) hide show
  1. data/Gemfile +9 -2
  2. data/Rakefile +11 -4
  3. data/TODO +0 -2
  4. data/bin/rabbirack +95 -0
  5. data/bin/rabbit +23 -2
  6. data/bin/rabbiter +9 -0
  7. data/data/locale/en/LC_MESSAGES/rabbit.mo +0 -0
  8. data/data/locale/fr/LC_MESSAGES/rabbit.mo +0 -0
  9. data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
  10. data/doc/_layouts/en.html +1 -1
  11. data/doc/_layouts/ja.html +1 -1
  12. data/doc/_layouts/skeleton.html +1 -1
  13. data/doc/_site/css/rabbit.css +41 -1
  14. data/doc/_site/en/development.html +2 -2
  15. data/doc/_site/en/faq.html +2 -2
  16. data/doc/_site/en/hiki.html +2 -2
  17. data/doc/_site/en/how-to-make/hiki.html +2 -2
  18. data/doc/_site/en/how-to-make/index.html +2 -2
  19. data/doc/_site/en/how-to-make/pdf.html +2 -2
  20. data/doc/_site/en/how-to-make/rd.html +2 -2
  21. data/doc/_site/en/how-to-make/theme.html +2 -2
  22. data/doc/_site/en/index.html +20 -20
  23. data/doc/_site/en/install/homebrew.html +6 -12
  24. data/doc/_site/en/install/index.html +5 -3
  25. data/doc/_site/en/install/macports.html +2 -2
  26. data/doc/_site/en/install/windows.html +2 -2
  27. data/doc/_site/en/news.html +172 -61
  28. data/doc/_site/en/rd.html +2 -2
  29. data/doc/_site/en/sample/hiki/rabbit.html +3 -3
  30. data/doc/_site/en/sample/index.html +2 -2
  31. data/doc/_site/en/sample/rd/rabbit.html +3 -3
  32. data/doc/_site/en/slides.html +2 -2
  33. data/doc/_site/en/usage.html +60 -60
  34. data/doc/_site/en/users.html +2 -2
  35. data/doc/_site/images/screenshots/en/blue-circle.png +0 -0
  36. data/doc/_site/images/screenshots/en/clear-blue-raw.png +0 -0
  37. data/doc/_site/images/screenshots/en/clear-blue.png +0 -0
  38. data/doc/_site/images/screenshots/en/cozmixng-raw.png +0 -0
  39. data/doc/_site/images/screenshots/en/cozmixng.png +0 -0
  40. data/doc/_site/images/screenshots/en/dark-gradation.png +0 -0
  41. data/doc/_site/images/screenshots/en/day-white.png +0 -0
  42. data/doc/_site/images/screenshots/en/debian.png +0 -0
  43. data/doc/_site/images/screenshots/en/green-circle.png +0 -0
  44. data/doc/_site/images/screenshots/en/night-black.png +0 -0
  45. data/doc/_site/images/screenshots/en/rabbit-raw.png +0 -0
  46. data/doc/_site/images/screenshots/en/rabbit.png +0 -0
  47. data/doc/_site/images/screenshots/en/ranguba-raw.png +0 -0
  48. data/doc/_site/images/screenshots/en/ranguba.png +0 -0
  49. data/doc/_site/images/screenshots/en/red-frame.png +0 -0
  50. data/doc/_site/images/screenshots/en/ruby-gnome2.png +0 -0
  51. data/doc/_site/images/screenshots/ja/blue-circle.png +0 -0
  52. data/doc/_site/images/screenshots/ja/clear-blue-raw.png +0 -0
  53. data/doc/_site/images/screenshots/ja/clear-blue.png +0 -0
  54. data/doc/_site/images/screenshots/ja/cozmixng-raw.png +0 -0
  55. data/doc/_site/images/screenshots/ja/cozmixng.png +0 -0
  56. data/doc/_site/images/screenshots/ja/dark-gradation.png +0 -0
  57. data/doc/_site/images/screenshots/ja/day-white.png +0 -0
  58. data/doc/_site/images/screenshots/ja/debian.png +0 -0
  59. data/doc/_site/images/screenshots/ja/green-circle.png +0 -0
  60. data/doc/_site/images/screenshots/ja/night-black.png +0 -0
  61. data/doc/_site/images/screenshots/ja/rabbit-raw.png +0 -0
  62. data/doc/_site/images/screenshots/ja/rabbit.png +0 -0
  63. data/doc/_site/images/screenshots/ja/ranguba-raw.png +0 -0
  64. data/doc/_site/images/screenshots/ja/ranguba.png +0 -0
  65. data/doc/_site/images/screenshots/ja/red-frame.png +0 -0
  66. data/doc/_site/images/screenshots/ja/ruby-gnome2.png +0 -0
  67. data/doc/_site/index.html.en +8 -2
  68. data/doc/_site/index.html.ja +8 -2
  69. data/doc/_site/ja/about.html +2 -2
  70. data/doc/_site/ja/development.html +2 -2
  71. data/doc/_site/ja/faq.html +25 -14
  72. data/doc/_site/ja/hiki.html +2 -2
  73. data/doc/_site/ja/how-to-make/hiki.html +2 -2
  74. data/doc/_site/ja/how-to-make/index.html +2 -2
  75. data/doc/_site/ja/how-to-make/pdf.html +2 -2
  76. data/doc/_site/ja/how-to-make/rd.html +2 -2
  77. data/doc/_site/ja/how-to-make/theme.html +2 -2
  78. data/doc/_site/ja/index.html +2 -2
  79. data/doc/_site/ja/install/homebrew.html +6 -12
  80. data/doc/_site/ja/install/index.html +5 -3
  81. data/doc/_site/ja/install/macports.html +3 -6
  82. data/doc/_site/ja/install/windows.html +2 -2
  83. data/doc/_site/ja/news.html +165 -61
  84. data/doc/_site/ja/rd.html +2 -2
  85. data/doc/_site/ja/sample/hiki/rabbit.html +3 -3
  86. data/doc/_site/ja/sample/index.html +2 -2
  87. data/doc/_site/ja/sample/rd/rabbit.html +3 -3
  88. data/doc/_site/ja/slides.html +2 -2
  89. data/doc/_site/ja/usage.html +60 -69
  90. data/doc/_site/ja/users.html +2 -2
  91. data/doc/css/rabbit.css +41 -1
  92. data/doc/en/index.rd +1 -1
  93. data/doc/en/install/homebrew.rd +2 -11
  94. data/doc/en/install/index.rd +2 -0
  95. data/doc/en/news.rd +117 -3
  96. data/doc/en/sample/hiki/rabbit.hiki +1 -1
  97. data/doc/en/sample/rd/rabbit.rd +1 -1
  98. data/doc/en/usage.rd +12 -17
  99. data/doc/images/screenshots/en/blue-circle.png +0 -0
  100. data/doc/images/screenshots/en/clear-blue-raw.png +0 -0
  101. data/doc/images/screenshots/en/clear-blue.png +0 -0
  102. data/doc/images/screenshots/en/cozmixng-raw.png +0 -0
  103. data/doc/images/screenshots/en/cozmixng.png +0 -0
  104. data/doc/images/screenshots/en/dark-gradation.png +0 -0
  105. data/doc/images/screenshots/en/day-white.png +0 -0
  106. data/doc/images/screenshots/en/debian.png +0 -0
  107. data/doc/images/screenshots/en/green-circle.png +0 -0
  108. data/doc/images/screenshots/en/night-black.png +0 -0
  109. data/doc/images/screenshots/en/rabbit-raw.png +0 -0
  110. data/doc/images/screenshots/en/rabbit.png +0 -0
  111. data/doc/images/screenshots/en/ranguba-raw.png +0 -0
  112. data/doc/images/screenshots/en/ranguba.png +0 -0
  113. data/doc/images/screenshots/en/red-frame.png +0 -0
  114. data/doc/images/screenshots/en/ruby-gnome2.png +0 -0
  115. data/doc/images/screenshots/ja/blue-circle.png +0 -0
  116. data/doc/images/screenshots/ja/clear-blue-raw.png +0 -0
  117. data/doc/images/screenshots/ja/clear-blue.png +0 -0
  118. data/doc/images/screenshots/ja/cozmixng-raw.png +0 -0
  119. data/doc/images/screenshots/ja/cozmixng.png +0 -0
  120. data/doc/images/screenshots/ja/dark-gradation.png +0 -0
  121. data/doc/images/screenshots/ja/day-white.png +0 -0
  122. data/doc/images/screenshots/ja/debian.png +0 -0
  123. data/doc/images/screenshots/ja/green-circle.png +0 -0
  124. data/doc/images/screenshots/ja/night-black.png +0 -0
  125. data/doc/images/screenshots/ja/rabbit-raw.png +0 -0
  126. data/doc/images/screenshots/ja/rabbit.png +0 -0
  127. data/doc/images/screenshots/ja/ranguba-raw.png +0 -0
  128. data/doc/images/screenshots/ja/ranguba.png +0 -0
  129. data/doc/images/screenshots/ja/red-frame.png +0 -0
  130. data/doc/images/screenshots/ja/ruby-gnome2.png +0 -0
  131. data/doc/index.html.en +6 -0
  132. data/doc/index.html.ja +6 -0
  133. data/doc/ja/faq.rd +21 -3
  134. data/doc/ja/install/homebrew.rd +2 -11
  135. data/doc/ja/install/index.rd +2 -0
  136. data/doc/ja/install/macports.rd +1 -6
  137. data/doc/ja/news.rd +109 -3
  138. data/doc/ja/sample/hiki/rabbit.hiki +1 -1
  139. data/doc/ja/sample/rd/rabbit.rd +1 -1
  140. data/doc/ja/usage.rd +11 -29
  141. data/lib/rabbit/canvas.rb +7 -4
  142. data/lib/rabbit/console.rb +1 -1
  143. data/lib/rabbit/div/main-i.erb +1 -1
  144. data/lib/rabbit/div/main.erb +1 -1
  145. data/lib/rabbit/element/base.rb +17 -1
  146. data/lib/rabbit/element/image.rb +1 -0
  147. data/lib/rabbit/element/preformatted.rb +8 -3
  148. data/lib/rabbit/element/syntax-highlighting.rb +15 -0
  149. data/lib/rabbit/element/text-renderer.rb +3 -3
  150. data/lib/rabbit/element/text.rb +0 -12
  151. data/lib/rabbit/element/title-slide.rb +1 -25
  152. data/lib/rabbit/formatter.rb +26 -6
  153. data/lib/rabbit/front.rb +10 -6
  154. data/lib/rabbit/html/template.erb +1 -1
  155. data/lib/rabbit/image.rb +1 -1
  156. data/lib/rabbit/keys.rb +70 -70
  157. data/lib/rabbit/middleware/config.ru +42 -0
  158. data/lib/rabbit/middleware/controller.rb +66 -0
  159. data/lib/rabbit/middleware/public/stylesheets/rabbirack.css +12 -0
  160. data/lib/rabbit/middleware/views/index.haml +13 -0
  161. data/lib/rabbit/middleware/views/layout.haml +8 -0
  162. data/lib/rabbit/parser/ext/aafigure.rb +1 -1
  163. data/lib/rabbit/parser/ext/blockdiag.rb +46 -0
  164. data/lib/rabbit/parser/ext/coderay.rb +66 -0
  165. data/lib/rabbit/parser/ext/emacs.rb +116 -0
  166. data/lib/rabbit/parser/ext/enscript.rb +15 -22
  167. data/lib/rabbit/parser/rd.rb +8 -2
  168. data/lib/rabbit/parser/rd/ext/block-verbatim.rb +53 -16
  169. data/lib/rabbit/parser/wiki.rb +3 -1
  170. data/lib/rabbit/parser/wiki/output.rb +28 -16
  171. data/lib/rabbit/rabbit.rb +7 -1
  172. data/lib/rabbit/renderer/display.rb +14 -2
  173. data/lib/rabbit/renderer/display/clutter-embed.rb +1 -1
  174. data/lib/rabbit/renderer/display/key-handler.rb +12 -12
  175. data/lib/rabbit/soap/base.rb +1 -1
  176. data/lib/rabbit/theme-browser.rb +2 -2
  177. data/lib/rabbit/theme/base/base.rb +7 -0
  178. data/lib/rabbit/theme/default-comment/default-comment.rb +9 -0
  179. data/lib/rabbit/theme/default-comment/property.rb +4 -0
  180. data/lib/rabbit/theme/default-item-mark-setup/default-item-mark-setup.rb +1 -1
  181. data/lib/rabbit/theme/default-slide/default-slide.rb +2 -2
  182. data/lib/rabbit/theme/default-text/default-text.rb +5 -0
  183. data/lib/rabbit/theme/default/default.rb +6 -7
  184. data/lib/rabbit/theme/footer-comment/footer-comment.rb +35 -8
  185. data/lib/rabbit/theme/pdf/pdf.rb +18 -0
  186. data/lib/rabbit/theme/rabbit-powered-by/rabbit-powered-by.rb +1 -1
  187. data/lib/rabbit/theme/syntax-highlighting/property.rb +4 -0
  188. data/lib/rabbit/theme/syntax-highlighting/syntax-highlighting.rb +139 -0
  189. data/lib/rabbit/theme/title-shadow/title-shadow.rb +1 -1
  190. data/lib/rabbit/theme/twitter-comment/twitter-comment.rb +1 -1
  191. data/lib/rabbit/twitter.rb +28 -4
  192. data/lib/rabbit/utils.rb +40 -12
  193. data/po/en/rabbit.po +175 -145
  194. data/po/fr/rabbit.po +180 -149
  195. data/po/ja/rabbit.po +176 -148
  196. data/po/rabbit.pot +175 -145
  197. data/sample/can_rabbit.rd +0 -21
  198. data/sample/rabbit-en.hiki +21 -2
  199. data/sample/rabbit-en.rd +42 -2
  200. data/sample/rabbit-implementation.rd +0 -5
  201. data/sample/rabbit.hiki +19 -16
  202. data/sample/rabbit.rd +42 -11
  203. data/sample/test.hiki +31 -0
  204. data/sample/test.rab +30 -0
  205. metadata +84 -58
  206. data/lib/rabbit/parser/ext/anthy.rb +0 -43
  207. data/lib/rabbit/parser/rd/ext/aafigure.rb +0 -18
  208. data/lib/rabbit/parser/rd/ext/anthy.rb +0 -29
  209. data/lib/rabbit/parser/rd/ext/enscript.rb +0 -24
  210. data/lib/rabbit/parser/rd/ext/tex.rb +0 -24
  211. data/lib/rabbit/source/rwiki.rb +0 -54
  212. data/lib/rabbit/theme/pdf-tortoise-and-hare/pdf-tortoise-and-hare.rb +0 -18
  213. data/lib/rabbit/theme/pdf-tortoise-and-hare/property.rb +0 -3
@@ -5,7 +5,15 @@ require "rabbit/parser/base"
5
5
  module Rabbit
6
6
  module Parser
7
7
  class RD < Base
8
+ end
9
+ end
10
+ end
11
+
12
+ require "rabbit/parser/rd/rd2rabbit-lib"
8
13
 
14
+ module Rabbit
15
+ module Parser
16
+ class RD
9
17
  push_loader(self)
10
18
  class << self
11
19
  def match?(source)
@@ -53,5 +61,3 @@ module Rabbit
53
61
  end
54
62
  end
55
63
  end
56
-
57
- require "rabbit/parser/rd/rd2rabbit-lib"
@@ -8,10 +8,12 @@ rescue LoadError
8
8
  end
9
9
  require 'rabbit/parser/rd/ext/base'
10
10
  require 'rabbit/parser/rd/ext/image'
11
- require 'rabbit/parser/rd/ext/enscript'
12
- require 'rabbit/parser/rd/ext/tex'
13
- require 'rabbit/parser/rd/ext/aafigure'
14
- require 'rabbit/parser/rd/ext/anthy'
11
+ require 'rabbit/parser/ext/enscript'
12
+ require 'rabbit/parser/ext/tex'
13
+ require 'rabbit/parser/ext/aafigure'
14
+ require 'rabbit/parser/ext/blockdiag'
15
+ require 'rabbit/parser/ext/coderay'
16
+ require 'rabbit/parser/ext/emacs'
15
17
 
16
18
  module Rabbit
17
19
  module Parser
@@ -19,10 +21,6 @@ module Rabbit
19
21
  module Ext
20
22
  class BlockVerbatim < Base
21
23
  include Image
22
- include Enscript
23
- include TeX
24
- include AAFigure
25
- include Anthy
26
24
  include GetText
27
25
 
28
26
  def default_ext_block_verbatim(label, source, content, visitor)
@@ -65,27 +63,66 @@ module Rabbit
65
63
  def ext_block_verb_enscript(label, source, content, visitor)
66
64
  return nil unless /^enscript (\w+)$/i =~ label
67
65
  lang = $1.downcase.untaint
68
- enscript_block(label, lang, source, content, visitor)
69
- end
70
66
 
71
- def ext_block_verb_anthy(label, source, content, visitor)
72
- return nil unless /^anthy$/i =~ label
73
- anthy_hiragana_to_kanji(label, source, content, visitor)
67
+ src, prop = parse_source(source)
68
+ logger = visitor.logger
69
+
70
+ result = nil
71
+ if Parser::Ext::Enscript.check_availability(lang, logger)
72
+ result = Parser::Ext::Enscript.highlight(lang, src, logger)
73
+ end
74
+ result || default_ext_block_verbatim(label, src, src, visitor)
74
75
  end
75
76
 
76
77
  def ext_block_verb_LaTeX(label, source, content, visitor)
77
78
  return nil unless /^LaTeX$/i =~ label
78
- make_image_by_LaTeX(source, visitor)
79
+ make_image_from_file(source, visitor) do |src_file_path, prop|
80
+ Parser::Ext::TeX.make_image_by_LaTeX(src_file_path, prop, visitor)
81
+ end
79
82
  end
80
83
 
81
84
  def ext_block_verb_mimeTeX(label, source, content, visitor)
82
85
  return nil unless /^mimeTeX$/i =~ label
83
- make_image_by_mimeTeX(source, visitor)
86
+ make_image_from_file(source, visitor) do |src_file_path, prop|
87
+ Parser::Ext::TeX.make_image_by_mimeTeX(src_file_path, prop,
88
+ visitor)
89
+ end
84
90
  end
85
91
 
86
92
  def ext_block_verb_aafigure(label, source, content, visitor)
87
93
  return nil unless /^aafigure$/i =~ label
88
- make_image_by_aafigure(source, visitor)
94
+ make_image_from_file(source, visitor) do |src_file_path, prop|
95
+ Parser::Ext::AAFigure.make_image(src_file_path, prop, visitor)
96
+ end
97
+ end
98
+
99
+ def ext_block_verb_blockdiag(label, source, content, visitor)
100
+ return nil unless /^blockdiag$/i =~ label
101
+ make_image_from_file(source, visitor) do |src_file_path, prop|
102
+ Parser::Ext::BlockDiag.make_image(src_file_path, prop, visitor)
103
+ end
104
+ end
105
+
106
+ def ext_block_verb_coderay(label, source, content, visitor)
107
+ return nil unless /^coderay (\w+)$/i =~ label
108
+ lang = $1.downcase.untaint
109
+
110
+ src, prop = parse_source(source)
111
+ logger = visitor.logger
112
+
113
+ result = Parser::Ext::CodeRay.highlight(lang, src, logger)
114
+ result || default_ext_block_verbatim(label, src, src, visitor)
115
+ end
116
+
117
+ def ext_block_verb_emacs(label, source, content, visitor)
118
+ return nil unless /^emacs(?:\s+(.+))?$/i =~ label
119
+ mode_line = $1.untaint
120
+
121
+ src, prop = parse_source(source)
122
+ logger = visitor.logger
123
+
124
+ result = Parser::Ext::Emacs.highlight(src, logger, mode_line)
125
+ result || default_ext_block_verbatim(label, src, src, visitor)
89
126
  end
90
127
 
91
128
  def ext_block_verb_rt(label, source, content, visitor)
@@ -13,7 +13,9 @@ module Rabbit
13
13
  unshift_loader(self)
14
14
  class << self
15
15
  def match?(source)
16
- /^!/.match(source.read[0, 500])
16
+ head = source.read[0, 500]
17
+ head.force_encoding("ASCII-8BIT") if head.respond_to?(:force_encoding)
18
+ /^!/.match(head)
17
19
  end
18
20
  end
19
21
 
@@ -6,7 +6,9 @@ require 'rabbit/parser/ext/image'
6
6
  require 'rabbit/parser/ext/enscript'
7
7
  require 'rabbit/parser/ext/tex'
8
8
  require 'rabbit/parser/ext/aafigure'
9
- require 'rabbit/parser/ext/anthy'
9
+ require 'rabbit/parser/ext/blockdiag'
10
+ require 'rabbit/parser/ext/coderay'
11
+ require 'rabbit/parser/ext/emacs'
10
12
  require 'rabbit/parser/ext/entity'
11
13
 
12
14
  module Rabbit
@@ -262,8 +264,8 @@ module Rabbit
262
264
  lang = info ? info.downcase : nil
263
265
  result = nil
264
266
 
265
- if lang and Ext::Enscript.check_availability(lang, @canvas.logger)
266
- result = Ext::Enscript.highlight(lang, contents, @canvas.logger)
267
+ if lang
268
+ result = Ext::CodeRay.highlight(lang, contents, @canvas.logger)
267
269
  end
268
270
 
269
271
  if result
@@ -453,21 +455,10 @@ module Rabbit
453
455
  end
454
456
  end
455
457
 
456
- def anthy(source)
457
- unless Ext::Anthy.available?
458
- @output.canvas.logger.warn(_("Anthy isn't available"))
459
- return nil
460
- end
461
-
462
- converted_source = Ext::Anthy.hiragana_to_kanji(source)
463
- converted_source =
464
- Ext::Escape.escape_meta_character(converted_source)
465
- Paragraph.new(Text.new(converted_source))
466
- end
467
-
468
458
  def LaTeX(source, props={})
469
459
  args = [@output.canvas, source]
470
460
  Ext::Image.make_image_from_file(*args) do |src_file_path|
461
+ props = Utils.stringify_hash_key(props)
471
462
  args = [src_file_path, props, @output.canvas]
472
463
  [Ext::TeX.make_image_by_LaTeX(*args), props]
473
464
  end
@@ -477,6 +468,7 @@ module Rabbit
477
468
  def mimeTeX(source, props={})
478
469
  args = [@output.canvas, source]
479
470
  Ext::Image.make_image_from_file(*args) do |src_file_path|
471
+ props = Utils.stringify_hash_key(props)
480
472
  args = [src_file_path, props, @output.canvas]
481
473
  [Ext::TeX.make_image_by_mimeTeX(*args), props]
482
474
  end
@@ -486,11 +478,31 @@ module Rabbit
486
478
  def aafigure(source, props={})
487
479
  args = [@output.canvas, source]
488
480
  Ext::Image.make_image_from_file(*args) do |src_file_path|
481
+ props = Utils.stringify_hash_key(props)
482
+ args = [src_file_path, props, @output.canvas]
483
+ [Ext::AAFigure.make_image(*args), props]
484
+ end
485
+ end
486
+
487
+ def blockdiag(source, props={})
488
+ args = [@output.canvas, source]
489
+ Ext::Image.make_image_from_file(*args) do |src_file_path|
490
+ props = Utils.stringify_hash_key(props)
489
491
  args = [src_file_path, props, @output.canvas]
490
- [Ext::AAFigure.make_image_by_aafigure(*args), props]
492
+ [Ext::BlockDiag.make_image(*args), props]
491
493
  end
492
494
  end
493
495
 
496
+ def coderay(lang, source)
497
+ logger = @output.canvas.logger
498
+ Ext::CodeRay.highlight(lang, source, logger)
499
+ end
500
+
501
+ def emacs(source, mode_line=nil)
502
+ logger = @output.canvas.logger
503
+ Ext::Emacs.highlight(source, logger, mode_line)
504
+ end
505
+
494
506
  def tag(name, value=nil)
495
507
  if value
496
508
  CustomTag.new(name, @output.text(value))
data/lib/rabbit/rabbit.rb CHANGED
@@ -8,7 +8,7 @@ require "rabbit/gettext"
8
8
 
9
9
  module Rabbit
10
10
 
11
- VERSION = "0.9.3"
11
+ VERSION = "1.0.0"
12
12
 
13
13
  TMP_DIR_NAME = ".tmp"
14
14
 
@@ -101,6 +101,12 @@ module Rabbit
101
101
  end
102
102
  end
103
103
 
104
+ class BlockDiagCanNotHandleError < ImageLoadWithExternalCommandError
105
+ def initialize(command, additional_info=nil)
106
+ super("blockdiag", command, additional_info)
107
+ end
108
+ end
109
+
104
110
  class UnknownPropertyError < Error
105
111
  attr_reader :name
106
112
  def initialize(name)
@@ -7,7 +7,11 @@ module Rabbit
7
7
 
8
8
  class << self
9
9
  @initialized = false
10
- def init
10
+ @preferred_class_name = nil
11
+ def init(options={})
12
+ if options.has_key?(:preferred_class_name)
13
+ @preferred_class_name = options[:preferred_class_name]
14
+ end
11
15
  unless @initialized
12
16
  @initialized = true
13
17
  dir = ::File.join("rabbit", "renderer", "display")
@@ -17,7 +21,15 @@ module Rabbit
17
21
 
18
22
  def new(*args, &block)
19
23
  init
20
- corresponding_class_under_module(self).new(*args, &block)
24
+ target_class = nil
25
+ if @preferred_class_name
26
+ if const_defined?(@preferred_class_name)
27
+ target_class = const_get(@preferred_class_name)
28
+ target_class = nil unless target_class.is_a?(Class)
29
+ end
30
+ end
31
+ target_class ||= corresponding_class_under_module(self)
32
+ target_class.new(*args, &block)
21
33
  end
22
34
  end
23
35
  end
@@ -27,7 +27,7 @@ module Rabbit
27
27
  class ClutterEmbed
28
28
  class << self
29
29
  def priority
30
- 200
30
+ 0
31
31
  end
32
32
  end
33
33
 
@@ -76,14 +76,14 @@ module Rabbit
76
76
  mod = mod.inject(no_mod) do |result, item|
77
77
  result | item
78
78
  end
79
- keys = (0..9).collect{|i| Gdk::Keyval.const_get("GDK_#{i}")}
79
+ keys = (0..9).collect{|i| Gdk::Keyval.const_get("GDK_KEY_#{i}")}
80
80
  set_keys(keys, mod) do |group, obj, val, modifier|
81
- index = calc_slide_number(val - Gdk::Keyval::GDK_0, modifier)
81
+ index = calc_slide_number(val - Gdk::Keyval::GDK_KEY_0, modifier)
82
82
  @canvas.activate("JumpTo") {index}
83
83
  end
84
- keys = (0..9).collect{|i| Gdk::Keyval.const_get("GDK_KP_#{i}")}
84
+ keys = (0..9).collect{|i| Gdk::Keyval.const_get("GDK_KEY_KP_#{i}")}
85
85
  set_keys(keys, mod) do |group, obj, val, modifier|
86
- index = calc_slide_number(val - Gdk::Keyval::GDK_KP_0, modifier)
86
+ index = calc_slide_number(val - Gdk::Keyval::GDK_KEY_KP_0, modifier)
87
87
  @canvas.activate("JumpTo") {index}
88
88
  end
89
89
  end
@@ -254,16 +254,16 @@ module Rabbit
254
254
 
255
255
  def set_key_press_event(widget)
256
256
  prev_keys = [
257
- Gdk::Keyval::GDK_Up,
258
- Gdk::Keyval::GDK_Left,
259
- Gdk::Keyval::GDK_KP_Up,
260
- Gdk::Keyval::GDK_KP_Left,
257
+ Gdk::Keyval::GDK_KEY_Up,
258
+ Gdk::Keyval::GDK_KEY_Left,
259
+ Gdk::Keyval::GDK_KEY_KP_Up,
260
+ Gdk::Keyval::GDK_KEY_KP_Left,
261
261
  ]
262
262
  next_keys = [
263
- Gdk::Keyval::GDK_Right,
264
- Gdk::Keyval::GDK_Down,
265
- Gdk::Keyval::GDK_KP_Right,
266
- Gdk::Keyval::GDK_KP_Down,
263
+ Gdk::Keyval::GDK_KEY_Right,
264
+ Gdk::Keyval::GDK_KEY_Down,
265
+ Gdk::Keyval::GDK_KEY_KP_Right,
266
+ Gdk::Keyval::GDK_KEY_KP_Down,
267
267
  ]
268
268
  widget.signal_connect("key_press_event") do |_widget, event|
269
269
  handled = true
@@ -1,6 +1,6 @@
1
1
  module Rabbit
2
2
  module SOAP
3
- NS = "http://www.cozmixng.org/ns/rabbit/0.0.1/"
3
+ NS = "http://rabbit-shockers.org/ns/rabbit/0.0.1/"
4
4
 
5
5
  module_function
6
6
  def element_name(name)
@@ -70,9 +70,9 @@ module Rabbit
70
70
  @window.signal_connect("key_press_event") do |widget, event|
71
71
  if event.state.control_mask?
72
72
  case event.keyval
73
- when Gdk::Keyval::GDK_q
73
+ when Gdk::Keyval::GDK_KEY_q
74
74
  @window.destroy
75
- when Gdk::Keyval::GDK_r
75
+ when Gdk::Keyval::GDK_KEY_r
76
76
  page.reload
77
77
  end
78
78
  end
@@ -1,3 +1,10 @@
1
+ @foreground = "black"
2
+ @background = "white"
3
+ @shadow_color = "#fff9"
4
+
5
+ set_foreground(@foreground)
6
+ set_background(@background)
7
+
1
8
  @xx_large_font_size = screen_size(15 * Pango::SCALE)
2
9
  @x_large_font_size = screen_size(11 * Pango::SCALE)
3
10
  @large_font_size = screen_size(7 * Pango::SCALE)
@@ -0,0 +1,9 @@
1
+ if canvas.comment_theme
2
+ include_theme(canvas.comment_theme)
3
+ else
4
+ if display? and canvas.renderer.widget.class.name == "Clutter::GtkEmbed"
5
+ include_theme("clutter-comment")
6
+ else
7
+ include_theme("footer-comment")
8
+ end
9
+ end
@@ -0,0 +1,4 @@
1
+ @category = N_("Toolkit")
2
+ @title = N_("DefaultComment")
3
+ @abstract = N_("Toolkit to set up default comment theme.")
4
+ @description = N_("Sets up default comment theme.")
@@ -17,7 +17,7 @@ def setup_default_item_mark_type(type, item, canvas, x, y, w, h, color)
17
17
  canvas.draw_circle(true, x, y, w, h, color)
18
18
  when "check", "dash"
19
19
  props = {
20
- "font_family" => @font_family,
20
+ "font-family" => @font_family,
21
21
  "weight" => "bold",
22
22
  "foreground" => canvas.make_color(color).to_gdk_format,
23
23
  }.merge(item.first.text_props)
@@ -44,9 +44,9 @@ match(Slide, HeadLine) do |headlines|
44
44
  slide = headline.slide
45
45
  headline.hide if slide.hide_title?
46
46
  color = slide["headline-color"]
47
- headline.prop_set("foreground", color) if color
47
+ headline.font("color", color) if color
48
48
  shadow_color = slide["headline-shadow-color"]
49
- headline["shadow-color"] = shadow_color if shadow_color
49
+ headline.font("shadow-color" => shadow_color) if shadow_color
50
50
  end
51
51
  end
52
52
 
@@ -77,6 +77,11 @@ match("**", PreformattedText) do |texts|
77
77
  set_font_family(texts, @monospace_font_family)
78
78
  end
79
79
 
80
+ match("**", SyntaxHighlightingText) do |texts|
81
+ texts.prop_set("size", @normal_font_size)
82
+ set_font_family(texts, @monospace_font_family)
83
+ end
84
+
80
85
  match("**", Keyword) do |texts|
81
86
  texts.prop_set("weight", "bold")
82
87
  end
@@ -1,5 +1,6 @@
1
- @default_foreground ||= "black"
2
- @default_background ||= "white"
1
+ @default_foreground ||= @foreground
2
+ @default_background ||= @background
3
+ @default_shadow_color ||= @shadow_color
3
4
 
4
5
  set_foreground(@default_foreground)
5
6
  set_background(@default_background)
@@ -29,8 +30,6 @@ include_theme("body-background-image")
29
30
 
30
31
  include_theme("tag")
31
32
 
32
- if display? and canvas.renderer.widget.class.name == "Clutter::GtkEmbed"
33
- include_theme("clutter-comment")
34
- else
35
- include_theme("footer-comment")
36
- end
33
+ include_theme("syntax-highlighting")
34
+
35
+ include_theme("default-comment")
@@ -2,12 +2,21 @@ theme_exit unless display?
2
2
 
3
3
  proc_name = "footer-comment"
4
4
 
5
+ @footer_comment_color ||= @foreground
6
+ @footer_comment_shadow_color ||= @shadow_color
5
7
  @footer_comment_props ||= {
6
- "size" => (@xx_small_font_size * 0.5).ceil,
8
+ "size" => (@x_small_font_size * 0.5).ceil,
7
9
  "font_family" => @font_family,
10
+ "color" => @footer_comment_color,
11
+ "shadow-color" => @footer_comment_shadow_color,
12
+ }
13
+ @footer_comment_padding ||= {
14
+ :left => 3 * @space,
15
+ :right => 3 * @space,
16
+ :bottom => (@space * 0.5).ceil,
8
17
  }
9
- @footer_comment_color ||= @default_foreground
10
18
  @footer_comment_min_display_time ||= 1
19
+ @footer_comment_keep_last_comment ||= false
11
20
 
12
21
  match(SlideElement) do |slides|
13
22
  slides.delete_post_draw_proc_by_name(proc_name)
@@ -17,8 +26,13 @@ match(SlideElement) do |slides|
17
26
 
18
27
  comments = []
19
28
  canvas.on_comment(proc_name) do |comment|
29
+ if comments.empty?
30
+ GLib::Timeout.add_seconds(@footer_comment_min_display_time) do
31
+ canvas.activate("Redraw")
32
+ not comments.empty?
33
+ end
34
+ end
20
35
  comments << comment
21
- canvas.activate("Redraw")
22
36
  end
23
37
 
24
38
  redraw_time = Time.now
@@ -29,16 +43,29 @@ match(SlideElement) do |slides|
29
43
  text = Text.new(ERB::Util.h(content.strip.gsub("\n", " ")))
30
44
  if Time.now - redraw_time > @footer_comment_min_display_time
31
45
  redraw_time = Time.now
32
- comments.shift if comments.size > 1
46
+ if @footer_comment_keep_last_comment
47
+ comments.shift if comments.size > 1
48
+ else
49
+ comments.shift
50
+ end
33
51
  end
34
- text.font @footer_comment_props
35
52
  set_font_family(text)
53
+ text.font @footer_comment_props
54
+ text.padding_with @footer_comment_padding
36
55
  text.compile(canvas, x, y, w, h)
37
- text.layout.set_width(w * Pango::SCALE)
56
+
57
+ # set horizontal
38
58
  text_x = x
59
+ text_w = w - text.padding_left - text.padding_right
60
+ text.compile(canvas, text_x, y, text_w, h)
61
+
62
+ # set vertical
39
63
  text_y = canvas.height - slide.margin_bottom - slide.padding_bottom
40
- text_y -= text.layout.pixel_size[1]
41
- canvas.draw_layout(text.layout, text_x, text_y, @footer_comment_color)
64
+ text_y -= text.height
65
+ text_h = h - text.height
66
+ text.compile(canvas, text_x, text_y, text_w, text_h)
67
+
68
+ text.draw
42
69
  end
43
70
  end
44
71
  [x, y, w, h]