rabbit-qt 0.1.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 (710) hide show
  1. checksums.yaml +7 -0
  2. data/COPYING +1 -0
  3. data/GPL +339 -0
  4. data/Gemfile +37 -0
  5. data/README.md +87 -0
  6. data/Rakefile +285 -0
  7. data/bin/rabbirc +86 -0
  8. data/bin/rabbit +22 -0
  9. data/bin/rabbit-command +97 -0
  10. data/bin/rabbit-slide +22 -0
  11. data/bin/rabbit-theme +22 -0
  12. data/data/account.kou.gpg +3 -0
  13. data/data/rabbit/image/clear-blue-images/clear-blue-headline-background.png +0 -0
  14. data/data/rabbit/image/clear-blue-images/clear-blue-icon.png +0 -0
  15. data/data/rabbit/image/clear-blue-images/clear-blue-images.rb +0 -0
  16. data/data/rabbit/image/clear-blue-images/property.rb +4 -0
  17. data/data/rabbit/image/cozmixng-images/cozmixchu.png +0 -0
  18. data/data/rabbit/image/cozmixng-images/cozmixng-images.rb +2 -0
  19. data/data/rabbit/image/cozmixng-images/powered-by-cozmixng.png +0 -0
  20. data/data/rabbit/image/cozmixng-images/property.rb +4 -0
  21. data/data/rabbit/image/dark-gradation-images/background-gradation.png +0 -0
  22. data/data/rabbit/image/dark-gradation-images/dark-gradation-images.rb +2 -0
  23. data/data/rabbit/image/dark-gradation-images/property.rb +4 -0
  24. data/data/rabbit/image/debian-images/bottom.png +0 -0
  25. data/data/rabbit/image/debian-images/debian-images.rb +2 -0
  26. data/data/rabbit/image/debian-images/debian-logo-pink.png +0 -0
  27. data/data/rabbit/image/debian-images/debian-logo.png +0 -0
  28. data/data/rabbit/image/debian-images/debian-whirl.png +0 -0
  29. data/data/rabbit/image/debian-images/item1.png +0 -0
  30. data/data/rabbit/image/debian-images/property.rb +4 -0
  31. data/data/rabbit/image/debian-images/top.png +0 -0
  32. data/data/rabbit/image/nari-images/chibi_nari.png +0 -0
  33. data/data/rabbit/image/nari-images/gc_kun.png +0 -0
  34. data/data/rabbit/image/nari-images/nari-goal-flag.png +0 -0
  35. data/data/rabbit/image/nari-images/nari-images.rb +2 -0
  36. data/data/rabbit/image/nari-images/nari-start-flag.png +0 -0
  37. data/data/rabbit/image/nari-images/property.rb +4 -0
  38. data/data/rabbit/image/rabbit-images/blue-item.png +0 -0
  39. data/data/rabbit/image/rabbit-images/close-quote-blue.png +0 -0
  40. data/data/rabbit/image/rabbit-images/close-quote-brown.png +0 -0
  41. data/data/rabbit/image/rabbit-images/close-quote-light-blue.png +0 -0
  42. data/data/rabbit/image/rabbit-images/goal-flag.png +0 -0
  43. data/data/rabbit/image/rabbit-images/green-item.png +0 -0
  44. data/data/rabbit/image/rabbit-images/kame.png +0 -0
  45. data/data/rabbit/image/rabbit-images/lavie-icon.png +0 -0
  46. data/data/rabbit/image/rabbit-images/lavie-with-logo.png +0 -0
  47. data/data/rabbit/image/rabbit-images/lavie.png +0 -0
  48. data/data/rabbit/image/rabbit-images/mini-alice.png +0 -0
  49. data/data/rabbit/image/rabbit-images/mini-butler-rabbit.png +0 -0
  50. data/data/rabbit/image/rabbit-images/mini-horizontal-bar.png +0 -0
  51. data/data/rabbit/image/rabbit-images/mini-kame-taro.png +0 -0
  52. data/data/rabbit/image/rabbit-images/mini-tanu-kitaro.png +0 -0
  53. data/data/rabbit/image/rabbit-images/mini-usa-taro.png +0 -0
  54. data/data/rabbit/image/rabbit-images/mini-usagi.png +0 -0
  55. data/data/rabbit/image/rabbit-images/mini-vertical-bar.png +0 -0
  56. data/data/rabbit/image/rabbit-images/mini-yukidaru-taro.png +0 -0
  57. data/data/rabbit/image/rabbit-images/open-quote-blue.png +0 -0
  58. data/data/rabbit/image/rabbit-images/open-quote-brown.png +0 -0
  59. data/data/rabbit/image/rabbit-images/open-quote-light-blue.png +0 -0
  60. data/data/rabbit/image/rabbit-images/property.rb +4 -0
  61. data/data/rabbit/image/rabbit-images/rabbit-banner-blue.png +0 -0
  62. data/data/rabbit/image/rabbit-images/rabbit-banner-green.png +0 -0
  63. data/data/rabbit/image/rabbit-images/rabbit-banner-heads.png +0 -0
  64. data/data/rabbit/image/rabbit-images/rabbit-banner-pink.png +0 -0
  65. data/data/rabbit/image/rabbit-images/rabbit-banner.png +0 -0
  66. data/data/rabbit/image/rabbit-images/rabbit-banner2.png +0 -0
  67. data/data/rabbit/image/rabbit-images/rabbit-images.rb +2 -0
  68. data/data/rabbit/image/rabbit-images/rabbit-pink-logo.png +0 -0
  69. data/data/rabbit/image/rabbit-images/rabbit-pink-logo2.png +0 -0
  70. data/data/rabbit/image/rabbit-images/red-item.png +0 -0
  71. data/data/rabbit/image/rabbit-images/red-item2.png +0 -0
  72. data/data/rabbit/image/rabbit-images/start-flag.png +0 -0
  73. data/data/rabbit/image/rabbit-images/tanu-kitaro.png +0 -0
  74. data/data/rabbit/image/rabbit-images/usa-taro.png +0 -0
  75. data/data/rabbit/image/rabbit-images/usagi.png +0 -0
  76. data/data/rabbit/image/rabbit-images/yukiusa.png +0 -0
  77. data/data/rabbit/image/ranguba-images/ranguba-bar.png +0 -0
  78. data/data/rabbit/image/ranguba-images/ranguba-bar.svg +153 -0
  79. data/data/rabbit/image/ranguba-images/ranguba-images.rb +0 -0
  80. data/data/rabbit/image/ranguba-images/ranguba-item-mark-mini.png +0 -0
  81. data/data/rabbit/image/ranguba-images/ranguba-item-mark.png +0 -0
  82. data/data/rabbit/image/ranguba-images/ranguba-item-mark.svg +400 -0
  83. data/data/rabbit/image/ranguba-images/ranguba-mark.png +0 -0
  84. data/data/rabbit/image/ranguba-images/ranguba-mark.svg +587 -0
  85. data/data/rabbit/image/ruby-images/property.rb +4 -0
  86. data/data/rabbit/image/ruby-images/ruby-images.rb +2 -0
  87. data/data/rabbit/image/ruby-images/ruby-pink-circle-icon.png +0 -0
  88. data/data/rabbit/image/ruby-images/ruby-pink-circle-logo.png +0 -0
  89. data/data/rabbit/image/ruby-images/ruby-pink-circle-small-icon.png +0 -0
  90. data/data/rabbit/image/ruby-images/ruby-pink-circle.png +0 -0
  91. data/data/rabbit/image/ruby-images/ruby-pink-polygon-icon.png +0 -0
  92. data/data/rabbit/image/ruby-images/ruby-pink-polygon-logo.png +0 -0
  93. data/data/rabbit/image/ruby-images/ruby-pink-polygon-small-icon.png +0 -0
  94. data/data/rabbit/image/ruby-images/ruby-pink-polygon.png +0 -0
  95. data/data/rabbit/image/rubykaigi2011-images/property.rb +4 -0
  96. data/data/rabbit/image/rubykaigi2011-images/rubykaigi2011-background-black.jpg +0 -0
  97. data/data/rabbit/image/rubykaigi2011-images/rubykaigi2011-background-white.jpg +0 -0
  98. data/data/rabbit/image/rubykaigi2011-images/rubykaigi2011-images.rb +2 -0
  99. data/doc/_config.yml +29 -0
  100. data/doc/_includes/en.menu.html +8 -0
  101. data/doc/_includes/ja.menu.html +8 -0
  102. data/doc/_layouts/en.html +48 -0
  103. data/doc/_layouts/ja.html +48 -0
  104. data/doc/_layouts/skeleton.html +85 -0
  105. data/doc/_plugins/converters/hiki.rb +27 -0
  106. data/doc/_plugins/converters/markdown.rb +15 -0
  107. data/doc/_plugins/converters/rd.rb +73 -0
  108. data/doc/_plugins/support_symlink.rb +11 -0
  109. data/doc/css/rabbit.css +368 -0
  110. data/doc/css/syntax.scss +67 -0
  111. data/doc/en/development.rd +81 -0
  112. data/doc/en/faq.rd +152 -0
  113. data/doc/en/hiki.hiki +326 -0
  114. data/doc/en/how-to-make/hiki.hiki +9 -0
  115. data/doc/en/how-to-make/index.rd +26 -0
  116. data/doc/en/how-to-make/markdown.md +107 -0
  117. data/doc/en/how-to-make/pdf.rd +7 -0
  118. data/doc/en/how-to-make/rd.rd +92 -0
  119. data/doc/en/how-to-make/theme.rd +135 -0
  120. data/doc/en/index.rd +268 -0
  121. data/doc/en/install/homebrew.rd +22 -0
  122. data/doc/en/install/index.rd +50 -0
  123. data/doc/en/install/macports.rd +77 -0
  124. data/doc/en/install/windows.rd +45 -0
  125. data/doc/en/news.rd +2788 -0
  126. data/doc/en/rd.rd +482 -0
  127. data/doc/en/sample/hiki/rabbit.hiki +388 -0
  128. data/doc/en/sample/index.rd +15 -0
  129. data/doc/en/sample/markdown/rabbit.md +387 -0
  130. data/doc/en/sample/rd/rabbit.rd +463 -0
  131. data/doc/en/slides.rd +13 -0
  132. data/doc/en/usage/platform/os-x.rd +13 -0
  133. data/doc/en/usage/rabbit-slide.rd +239 -0
  134. data/doc/en/usage/rabbit-theme.rd +5 -0
  135. data/doc/en/usage/rabbit.rd +376 -0
  136. data/doc/en/usage.rd +24 -0
  137. data/doc/en/users.rd +35 -0
  138. data/doc/favicon.ico +0 -0
  139. data/doc/favicon.png +0 -0
  140. data/doc/images/background-sample.svg +290 -0
  141. data/doc/images/background.png +0 -0
  142. data/doc/images/background.svg +131 -0
  143. data/doc/images/hare-and-tortoise.png +0 -0
  144. data/doc/images/hare-and-tortoise.svg +541 -0
  145. data/doc/images/lavie-icon.png +0 -0
  146. data/doc/images/lavie.png +0 -0
  147. data/doc/images/rabbit-slide-show-logo.png +0 -0
  148. data/doc/images/rabbit-slide-show-logo.svg +597 -0
  149. data/doc/index.html.en +58 -0
  150. data/doc/index.html.ja +58 -0
  151. data/doc/ja/about.rd +21 -0
  152. data/doc/ja/development.rd +78 -0
  153. data/doc/ja/faq.rd +202 -0
  154. data/doc/ja/hiki.hiki +320 -0
  155. data/doc/ja/how-to-make/hiki.hiki +9 -0
  156. data/doc/ja/how-to-make/index.rd +26 -0
  157. data/doc/ja/how-to-make/markdown.md +107 -0
  158. data/doc/ja/how-to-make/pdf.rd +8 -0
  159. data/doc/ja/how-to-make/rd.rd +130 -0
  160. data/doc/ja/how-to-make/theme.rd +142 -0
  161. data/doc/ja/index.rd +283 -0
  162. data/doc/ja/install/homebrew.rd +23 -0
  163. data/doc/ja/install/index.rd +53 -0
  164. data/doc/ja/install/macports.rd +100 -0
  165. data/doc/ja/install/windows.rd +46 -0
  166. data/doc/ja/news.rd +2773 -0
  167. data/doc/ja/rd.rd +490 -0
  168. data/doc/ja/sample/hiki/rabbit.hiki +404 -0
  169. data/doc/ja/sample/index.rd +15 -0
  170. data/doc/ja/sample/markdown/rabbit.md +382 -0
  171. data/doc/ja/sample/rd/rabbit.rd +471 -0
  172. data/doc/ja/slides.rd +29 -0
  173. data/doc/ja/usage/rabbit-slide.rd +220 -0
  174. data/doc/ja/usage/rabbit-theme.rd +152 -0
  175. data/doc/ja/usage/rabbit.rd +377 -0
  176. data/doc/ja/usage.rd +19 -0
  177. data/doc/ja/users.rd +196 -0
  178. data/doc/screenshot.en.rab +10 -0
  179. data/doc/screenshot.ja.rab +10 -0
  180. data/entities/README +10 -0
  181. data/entities/ent2rb.rb +65 -0
  182. data/entities/isoamsa.ent +167 -0
  183. data/entities/isoamsb.ent +143 -0
  184. data/entities/isoamsc.ent +43 -0
  185. data/entities/isoamsn.ent +114 -0
  186. data/entities/isoamso.ent +73 -0
  187. data/entities/isoamsr.ent +204 -0
  188. data/entities/isobox.ent +61 -0
  189. data/entities/isocyr1.ent +88 -0
  190. data/entities/isocyr2.ent +47 -0
  191. data/entities/isodia.ent +35 -0
  192. data/entities/isogrk3.ent +64 -0
  193. data/entities/isolat1.ent +83 -0
  194. data/entities/isolat2.ent +142 -0
  195. data/entities/isomfrk.ent +75 -0
  196. data/entities/isomopf.ent +49 -0
  197. data/entities/isomscr.ent +75 -0
  198. data/entities/isonum.ent +97 -0
  199. data/entities/isopub.ent +105 -0
  200. data/entities/isotech.ent +182 -0
  201. data/entities/mmlalias.ent +564 -0
  202. data/entities/mmlextra.ent +122 -0
  203. data/lib/rabbit/actions.rb +427 -0
  204. data/lib/rabbit/author-configuration.rb +90 -0
  205. data/lib/rabbit/canvas.rb +844 -0
  206. data/lib/rabbit/command/rabbit-slide.rb +898 -0
  207. data/lib/rabbit/command/rabbit-theme.rb +300 -0
  208. data/lib/rabbit/command/rabbit.rb +854 -0
  209. data/lib/rabbit/config.rb +40 -0
  210. data/lib/rabbit/console/roff.rb +84 -0
  211. data/lib/rabbit/console.rb +218 -0
  212. data/lib/rabbit/cursor-manager.rb +66 -0
  213. data/lib/rabbit/dependency-canvas.rb +33 -0
  214. data/lib/rabbit/element/base/draw-hook.rb +75 -0
  215. data/lib/rabbit/element/base.rb +614 -0
  216. data/lib/rabbit/element/block-element.rb +56 -0
  217. data/lib/rabbit/element/block.rb +70 -0
  218. data/lib/rabbit/element/container-element.rb +321 -0
  219. data/lib/rabbit/element/description-list.rb +75 -0
  220. data/lib/rabbit/element/enum-list.rb +53 -0
  221. data/lib/rabbit/element/footnote.rb +48 -0
  222. data/lib/rabbit/element/image-title-slide.rb +34 -0
  223. data/lib/rabbit/element/image.rb +292 -0
  224. data/lib/rabbit/element/index-slide.rb +206 -0
  225. data/lib/rabbit/element/item-list.rb +50 -0
  226. data/lib/rabbit/element/method-list.rb +66 -0
  227. data/lib/rabbit/element/poppler-page.rb +52 -0
  228. data/lib/rabbit/element/poppler-slide.rb +47 -0
  229. data/lib/rabbit/element/poppler-title-slide.rb +45 -0
  230. data/lib/rabbit/element/preformatted.rb +48 -0
  231. data/lib/rabbit/element/slide-element.rb +140 -0
  232. data/lib/rabbit/element/slide.rb +67 -0
  233. data/lib/rabbit/element/syntax-highlighting.rb +31 -0
  234. data/lib/rabbit/element/table.rb +121 -0
  235. data/lib/rabbit/element/tag.rb +60 -0
  236. data/lib/rabbit/element/text-block-element.rb +27 -0
  237. data/lib/rabbit/element/text-container-element.rb +176 -0
  238. data/lib/rabbit/element/text-element.rb +83 -0
  239. data/lib/rabbit/element/text-renderer.rb +378 -0
  240. data/lib/rabbit/element/text.rb +146 -0
  241. data/lib/rabbit/element/title-slide.rb +190 -0
  242. data/lib/rabbit/element/video.rb +265 -0
  243. data/lib/rabbit/element.rb +35 -0
  244. data/lib/rabbit/error.rb +239 -0
  245. data/lib/rabbit/filename.rb +39 -0
  246. data/lib/rabbit/formatter.rb +211 -0
  247. data/lib/rabbit/frame.rb +292 -0
  248. data/lib/rabbit/front.rb +278 -0
  249. data/lib/rabbit/gem-builder.rb +42 -0
  250. data/lib/rabbit/gem-finder.rb +57 -0
  251. data/lib/rabbit/gem-pusher.rb +89 -0
  252. data/lib/rabbit/gesture/handler.rb +253 -0
  253. data/lib/rabbit/gesture/processor.rb +118 -0
  254. data/lib/rabbit/gettext.rb +14 -0
  255. data/lib/rabbit/graffiti/config-dialog.rb +47 -0
  256. data/lib/rabbit/graffiti/processor.rb +132 -0
  257. data/lib/rabbit/gtk.rb +93 -0
  258. data/lib/rabbit/html/generator.rb +477 -0
  259. data/lib/rabbit/html/template.erb +109 -0
  260. data/lib/rabbit/icon.rb +31 -0
  261. data/lib/rabbit/image/base.rb +270 -0
  262. data/lib/rabbit/image/default.rb +42 -0
  263. data/lib/rabbit/image/dia.rb +74 -0
  264. data/lib/rabbit/image/eps.rb +129 -0
  265. data/lib/rabbit/image/gimp.rb +69 -0
  266. data/lib/rabbit/image/mermaid.rb +74 -0
  267. data/lib/rabbit/image/pdf.rb +94 -0
  268. data/lib/rabbit/image/svg.rb +79 -0
  269. data/lib/rabbit/image-data-loader.rb +51 -0
  270. data/lib/rabbit/image.rb +53 -0
  271. data/lib/rabbit/info-window.rb +327 -0
  272. data/lib/rabbit/key-handler.rb +227 -0
  273. data/lib/rabbit/keys.rb +209 -0
  274. data/lib/rabbit/logger/base.rb +147 -0
  275. data/lib/rabbit/logger/gui.rb +113 -0
  276. data/lib/rabbit/logger/stderr.rb +42 -0
  277. data/lib/rabbit/logger.rb +40 -0
  278. data/lib/rabbit/menu.rb +242 -0
  279. data/lib/rabbit/pango-markup.rb +44 -0
  280. data/lib/rabbit/parser/base.rb +31 -0
  281. data/lib/rabbit/parser/ext/aafigure.rb +51 -0
  282. data/lib/rabbit/parser/ext/blockdiag.rb +68 -0
  283. data/lib/rabbit/parser/ext/charty.rb +67 -0
  284. data/lib/rabbit/parser/ext/coderay.rb +85 -0
  285. data/lib/rabbit/parser/ext/enscript.rb +136 -0
  286. data/lib/rabbit/parser/ext/entity.rb +4164 -0
  287. data/lib/rabbit/parser/ext/escape.rb +18 -0
  288. data/lib/rabbit/parser/ext/image.rb +157 -0
  289. data/lib/rabbit/parser/ext/inline.rb +45 -0
  290. data/lib/rabbit/parser/ext/rouge.rb +129 -0
  291. data/lib/rabbit/parser/ext/tex.rb +95 -0
  292. data/lib/rabbit/parser/ext/video.rb +37 -0
  293. data/lib/rabbit/parser/image.rb +62 -0
  294. data/lib/rabbit/parser/markdown/converter.rb +440 -0
  295. data/lib/rabbit/parser/markdown.rb +144 -0
  296. data/lib/rabbit/parser/pause-support.rb +33 -0
  297. data/lib/rabbit/parser/pdf.rb +56 -0
  298. data/lib/rabbit/parser/rd/ext/base.rb +95 -0
  299. data/lib/rabbit/parser/rd/ext/block-verbatim.rb +190 -0
  300. data/lib/rabbit/parser/rd/ext/character-reference.rb +75 -0
  301. data/lib/rabbit/parser/rd/ext/image.rb +46 -0
  302. data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +118 -0
  303. data/lib/rabbit/parser/rd/ext/refer.rb +50 -0
  304. data/lib/rabbit/parser/rd/ext/video.rb +32 -0
  305. data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +458 -0
  306. data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +105 -0
  307. data/lib/rabbit/parser/rd/visitor.rb +72 -0
  308. data/lib/rabbit/parser/rd.rb +92 -0
  309. data/lib/rabbit/parser/wiki/output.rb +545 -0
  310. data/lib/rabbit/parser/wiki.rb +61 -0
  311. data/lib/rabbit/parser.rb +73 -0
  312. data/lib/rabbit/password-reader.rb +34 -0
  313. data/lib/rabbit/path-manipulatable.rb +37 -0
  314. data/lib/rabbit/progress.rb +97 -0
  315. data/lib/rabbit/properties.rb +154 -0
  316. data/lib/rabbit/qt.rb +222 -0
  317. data/lib/rabbit/rabbit.rb +50 -0
  318. data/lib/rabbit/readme-parser.rb +112 -0
  319. data/lib/rabbit/relative-size.rb +28 -0
  320. data/lib/rabbit/renderer/base.rb +412 -0
  321. data/lib/rabbit/renderer/color.rb +130 -0
  322. data/lib/rabbit/renderer/display/base.rb +223 -0
  323. data/lib/rabbit/renderer/display/button-handler.rb +229 -0
  324. data/lib/rabbit/renderer/display/cursor.rb +49 -0
  325. data/lib/rabbit/renderer/display/drawing-area-base.rb +381 -0
  326. data/lib/rabbit/renderer/display/drawing-area-primitive.rb +219 -0
  327. data/lib/rabbit/renderer/display/drawing-area-view-only.rb +57 -0
  328. data/lib/rabbit/renderer/display/drawing-area.rb +29 -0
  329. data/lib/rabbit/renderer/display/gesture.rb +111 -0
  330. data/lib/rabbit/renderer/display/graffiti.rb +127 -0
  331. data/lib/rabbit/renderer/display/hook-handler.rb +64 -0
  332. data/lib/rabbit/renderer/display/info.rb +75 -0
  333. data/lib/rabbit/renderer/display/magnifier.rb +137 -0
  334. data/lib/rabbit/renderer/display/mask.rb +83 -0
  335. data/lib/rabbit/renderer/display/menu.rb +54 -0
  336. data/lib/rabbit/renderer/display/motion-handler.rb +34 -0
  337. data/lib/rabbit/renderer/display/progress.rb +85 -0
  338. data/lib/rabbit/renderer/display/qt-drawing-area-base.rb +336 -0
  339. data/lib/rabbit/renderer/display/qt-drawing-area-primitive.rb +189 -0
  340. data/lib/rabbit/renderer/display/qt-drawing-area-view-only.rb +53 -0
  341. data/lib/rabbit/renderer/display/qt-drawing-area.rb +29 -0
  342. data/lib/rabbit/renderer/display/qt-drawing-widget.rb +85 -0
  343. data/lib/rabbit/renderer/display/scroll-handler.rb +58 -0
  344. data/lib/rabbit/renderer/display/search.rb +114 -0
  345. data/lib/rabbit/renderer/display/spotlight.rb +122 -0
  346. data/lib/rabbit/renderer/display.rb +17 -0
  347. data/lib/rabbit/renderer/engine/cairo.rb +481 -0
  348. data/lib/rabbit/renderer/engine/qt_painter.rb +397 -0
  349. data/lib/rabbit/renderer/engine.rb +18 -0
  350. data/lib/rabbit/renderer/kernel.rb +233 -0
  351. data/lib/rabbit/renderer/offscreen.rb +117 -0
  352. data/lib/rabbit/renderer/print-layout.rb +150 -0
  353. data/lib/rabbit/renderer/printer.rb +223 -0
  354. data/lib/rabbit/renderer/scene-background-widget.rb +95 -0
  355. data/lib/rabbit/renderer/scene-node-widget.rb +40 -0
  356. data/lib/rabbit/renderer/scene.rb +538 -0
  357. data/lib/rabbit/renderer.rb +20 -0
  358. data/lib/rabbit/search-window.rb +90 -0
  359. data/lib/rabbit/searcher.rb +40 -0
  360. data/lib/rabbit/size.rb +100 -0
  361. data/lib/rabbit/slide-configuration.rb +211 -0
  362. data/lib/rabbit/slide.rb +40 -0
  363. data/lib/rabbit/soap/base.rb +17 -0
  364. data/lib/rabbit/soap/driver.rb +61 -0
  365. data/lib/rabbit/soap/server.rb +49 -0
  366. data/lib/rabbit/source/argf.rb +45 -0
  367. data/lib/rabbit/source/base.rb +197 -0
  368. data/lib/rabbit/source/file.rb +85 -0
  369. data/lib/rabbit/source/memory.rb +61 -0
  370. data/lib/rabbit/source/uri.rb +93 -0
  371. data/lib/rabbit/source-generator/hiki.rb +58 -0
  372. data/lib/rabbit/source-generator/markdown.rb +56 -0
  373. data/lib/rabbit/source-generator/rd.rb +60 -0
  374. data/lib/rabbit/source-generator.rb +39 -0
  375. data/lib/rabbit/source.rb +30 -0
  376. data/lib/rabbit/task/slide.rb +221 -0
  377. data/lib/rabbit/task/theme.rb +202 -0
  378. data/lib/rabbit/task.rb +18 -0
  379. data/lib/rabbit/theme/applier.rb +690 -0
  380. data/lib/rabbit/theme/auto-slide/auto-slide.rb +6 -0
  381. data/lib/rabbit/theme/auto-slide/property.rb +4 -0
  382. data/lib/rabbit/theme/background-image-toolkit/background-image-toolkit.rb +125 -0
  383. data/lib/rabbit/theme/base/base.rb +85 -0
  384. data/lib/rabbit/theme/base/property.rb +4 -0
  385. data/lib/rabbit/theme/blue-bar/blue-bar.rb +80 -0
  386. data/lib/rabbit/theme/blue-bar/property.rb +3 -0
  387. data/lib/rabbit/theme/blue-circle/blue-circle.rb +14 -0
  388. data/lib/rabbit/theme/blue-circle/property.rb +3 -0
  389. data/lib/rabbit/theme/body-background-image/body-background-image.rb +8 -0
  390. data/lib/rabbit/theme/centering-rabbit/centering-rabbit.rb +5 -0
  391. data/lib/rabbit/theme/centering-rabbit/property.rb +3 -0
  392. data/lib/rabbit/theme/clear-blue/clear-blue.rb +101 -0
  393. data/lib/rabbit/theme/clear-blue/property.rb +3 -0
  394. data/lib/rabbit/theme/clock/clock.rb +37 -0
  395. data/lib/rabbit/theme/clock/property.rb +21 -0
  396. data/lib/rabbit/theme/color-circle/color-circle.rb +60 -0
  397. data/lib/rabbit/theme/color-circle/property.rb +4 -0
  398. data/lib/rabbit/theme/color-circle-block-quote/color-circle-block-quote.rb +28 -0
  399. data/lib/rabbit/theme/color-circle-block-quote/property.rb +4 -0
  400. data/lib/rabbit/theme/color-circle-common/color-circle-common.rb +48 -0
  401. data/lib/rabbit/theme/color-circle-common/property.rb +3 -0
  402. data/lib/rabbit/theme/color-circle-description/color-circle-description.rb +9 -0
  403. data/lib/rabbit/theme/color-circle-description/property.rb +4 -0
  404. data/lib/rabbit/theme/color-circle-foot-text/color-circle-foot-text.rb +14 -0
  405. data/lib/rabbit/theme/color-circle-foot-text/property.rb +4 -0
  406. data/lib/rabbit/theme/color-circle-item-mark/color-circle-item-mark.rb +77 -0
  407. data/lib/rabbit/theme/color-circle-item-mark/property.rb +4 -0
  408. data/lib/rabbit/theme/color-circle-method-list/color-circle-method-list.rb +8 -0
  409. data/lib/rabbit/theme/color-circle-method-list/property.rb +4 -0
  410. data/lib/rabbit/theme/color-circle-preformatted/color-circle-preformatted.rb +5 -0
  411. data/lib/rabbit/theme/color-circle-preformatted/property.rb +4 -0
  412. data/lib/rabbit/theme/color-circle-slide/color-circle-slide.rb +13 -0
  413. data/lib/rabbit/theme/color-circle-slide/property.rb +4 -0
  414. data/lib/rabbit/theme/color-circle-text/color-circle-text.rb +9 -0
  415. data/lib/rabbit/theme/color-circle-text/property.rb +4 -0
  416. data/lib/rabbit/theme/color-circle-title-slide/color-circle-title-slide.rb +27 -0
  417. data/lib/rabbit/theme/color-circle-title-slide/property.rb +4 -0
  418. data/lib/rabbit/theme/color-circle-title-text/color-circle-title-text.rb +7 -0
  419. data/lib/rabbit/theme/color-circle-title-text/property.rb +4 -0
  420. data/lib/rabbit/theme/cozmixng/cozmixng.rb +44 -0
  421. data/lib/rabbit/theme/cozmixng/property.rb +3 -0
  422. data/lib/rabbit/theme/cozmixng-powered-by/cozmixng-powered-by.rb +6 -0
  423. data/lib/rabbit/theme/cozmixng-powered-by/property.rb +7 -0
  424. data/lib/rabbit/theme/dark-gradation/dark-gradation.rb +187 -0
  425. data/lib/rabbit/theme/dark-gradation/property.rb +3 -0
  426. data/lib/rabbit/theme/day-white/day-white.rb +8 -0
  427. data/lib/rabbit/theme/day-white/property.rb +3 -0
  428. data/lib/rabbit/theme/debian/debian.rb +232 -0
  429. data/lib/rabbit/theme/debian/property.rb +3 -0
  430. data/lib/rabbit/theme/default/default.rb +42 -0
  431. data/lib/rabbit/theme/default/property.rb +3 -0
  432. data/lib/rabbit/theme/default-block-quote/default-block-quote.rb +219 -0
  433. data/lib/rabbit/theme/default-block-quote/property.rb +3 -0
  434. data/lib/rabbit/theme/default-comment/default-comment.rb +5 -0
  435. data/lib/rabbit/theme/default-comment/property.rb +4 -0
  436. data/lib/rabbit/theme/default-description/default-description.rb +64 -0
  437. data/lib/rabbit/theme/default-description/property.rb +5 -0
  438. data/lib/rabbit/theme/default-foot-text/default-foot-text.rb +52 -0
  439. data/lib/rabbit/theme/default-foot-text/property.rb +3 -0
  440. data/lib/rabbit/theme/default-icon/default-icon.rb +4 -0
  441. data/lib/rabbit/theme/default-icon/property.rb +5 -0
  442. data/lib/rabbit/theme/default-item-mark/default-item-mark.rb +104 -0
  443. data/lib/rabbit/theme/default-item-mark/property.rb +4 -0
  444. data/lib/rabbit/theme/default-item-mark-setup/default-item-mark-setup.rb +132 -0
  445. data/lib/rabbit/theme/default-item-mark-setup/property.rb +3 -0
  446. data/lib/rabbit/theme/default-method-list/default-method-list.rb +6 -0
  447. data/lib/rabbit/theme/default-method-list/property.rb +3 -0
  448. data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +56 -0
  449. data/lib/rabbit/theme/default-preformatted/property.rb +3 -0
  450. data/lib/rabbit/theme/default-slide/default-slide.rb +62 -0
  451. data/lib/rabbit/theme/default-slide/property.rb +3 -0
  452. data/lib/rabbit/theme/default-text/default-text.rb +186 -0
  453. data/lib/rabbit/theme/default-text/property.rb +3 -0
  454. data/lib/rabbit/theme/default-title-slide/default-title-slide.rb +13 -0
  455. data/lib/rabbit/theme/default-title-slide/property.rb +6 -0
  456. data/lib/rabbit/theme/default-title-text/default-title-text.rb +53 -0
  457. data/lib/rabbit/theme/default-title-text/property.rb +3 -0
  458. data/lib/rabbit/theme/document.erb +35 -0
  459. data/lib/rabbit/theme/edge-info-toolkit/edge-info-toolkit.rb +87 -0
  460. data/lib/rabbit/theme/edge-info-toolkit/property.rb +3 -0
  461. data/lib/rabbit/theme/emphasize-keyword/emphasize-keyword.rb +16 -0
  462. data/lib/rabbit/theme/emphasize-keyword/property.rb +4 -0
  463. data/lib/rabbit/theme/enishi-green/enishi-green.rb +61 -0
  464. data/lib/rabbit/theme/enishi-green/property.rb +3 -0
  465. data/lib/rabbit/theme/entry.rb +202 -0
  466. data/lib/rabbit/theme/footer-comment/footer-comment.rb +74 -0
  467. data/lib/rabbit/theme/footer-comment/property.rb +3 -0
  468. data/lib/rabbit/theme/footer-logo/footer-logo.rb +30 -0
  469. data/lib/rabbit/theme/footer-logo/property.rb +26 -0
  470. data/lib/rabbit/theme/green-circle/green-circle.rb +14 -0
  471. data/lib/rabbit/theme/green-circle/property.rb +3 -0
  472. data/lib/rabbit/theme/headline-logo/headline-logo.rb +24 -0
  473. data/lib/rabbit/theme/headline-logo/property.rb +10 -0
  474. data/lib/rabbit/theme/icon/icon.rb +3 -0
  475. data/lib/rabbit/theme/icon/property.rb +24 -0
  476. data/lib/rabbit/theme/image/image.rb +80 -0
  477. data/lib/rabbit/theme/image/property.rb +3 -0
  478. data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +134 -0
  479. data/lib/rabbit/theme/image-slide-number/property.rb +64 -0
  480. data/lib/rabbit/theme/image-timer/image-timer.rb +119 -0
  481. data/lib/rabbit/theme/image-timer/property.rb +46 -0
  482. data/lib/rabbit/theme/image-viewer/image-viewer.rb +21 -0
  483. data/lib/rabbit/theme/image-viewer/property.rb +3 -0
  484. data/lib/rabbit/theme/lightning-clear-blue/lightning-clear-blue.rb +13 -0
  485. data/lib/rabbit/theme/lightning-clear-blue/property.rb +3 -0
  486. data/lib/rabbit/theme/lightning-monochrome/lightning-monochrome.rb +15 -0
  487. data/lib/rabbit/theme/lightning-monochrome/property.rb +3 -0
  488. data/lib/rabbit/theme/lightning-rabbit/lightning-rabbit.rb +13 -0
  489. data/lib/rabbit/theme/lightning-rabbit/property.rb +3 -0
  490. data/lib/rabbit/theme/lightning-simple/lightning-simple.rb +60 -0
  491. data/lib/rabbit/theme/lightning-simple/property.rb +3 -0
  492. data/lib/rabbit/theme/lightning-talk/lightning-talk.rb +67 -0
  493. data/lib/rabbit/theme/lightning-talk/property.rb +3 -0
  494. data/lib/rabbit/theme/lightning-talk-toolkit/lightning-talk-toolkit.rb +179 -0
  495. data/lib/rabbit/theme/lightning-talk-toolkit/property.rb +3 -0
  496. data/lib/rabbit/theme/manager.rb +45 -0
  497. data/lib/rabbit/theme/mirror-effect/mirror-effect.rb +27 -0
  498. data/lib/rabbit/theme/mirror-effect/property.rb +3 -0
  499. data/lib/rabbit/theme/nari/nari.rb +215 -0
  500. data/lib/rabbit/theme/nari/property.rb +3 -0
  501. data/lib/rabbit/theme/newline-in-slides/newline-in-slides.rb +29 -0
  502. data/lib/rabbit/theme/newline-in-slides/property.rb +4 -0
  503. data/lib/rabbit/theme/newline-in-title/newline-in-title.rb +7 -0
  504. data/lib/rabbit/theme/newline-in-title/property.rb +4 -0
  505. data/lib/rabbit/theme/night-black/night-black.rb +19 -0
  506. data/lib/rabbit/theme/night-black/property.rb +3 -0
  507. data/lib/rabbit/theme/pdf/pdf.rb +24 -0
  508. data/lib/rabbit/theme/pdf/property.rb +3 -0
  509. data/lib/rabbit/theme/per-slide-background-color/per-slide-background-color.rb +18 -0
  510. data/lib/rabbit/theme/per-slide-background-color/property.rb +16 -0
  511. data/lib/rabbit/theme/per-slide-background-image/per-slide-background-image.rb +11 -0
  512. data/lib/rabbit/theme/per-slide-background-image/property.rb +16 -0
  513. data/lib/rabbit/theme/powered-by/powered-by.rb +67 -0
  514. data/lib/rabbit/theme/powered-by/property.rb +24 -0
  515. data/lib/rabbit/theme/rabbit/property.rb +3 -0
  516. data/lib/rabbit/theme/rabbit/rabbit.rb +57 -0
  517. data/lib/rabbit/theme/rabbit-block-quote/property.rb +4 -0
  518. data/lib/rabbit/theme/rabbit-block-quote/rabbit-block-quote.rb +18 -0
  519. data/lib/rabbit/theme/rabbit-headline-logo/property.rb +5 -0
  520. data/lib/rabbit/theme/rabbit-headline-logo/rabbit-headline-logo.rb +4 -0
  521. data/lib/rabbit/theme/rabbit-icon/property.rb +5 -0
  522. data/lib/rabbit/theme/rabbit-icon/rabbit-icon.rb +4 -0
  523. data/lib/rabbit/theme/rabbit-item-mark/property.rb +5 -0
  524. data/lib/rabbit/theme/rabbit-item-mark/rabbit-item-mark.rb +53 -0
  525. data/lib/rabbit/theme/rabbit-powered-by/property.rb +7 -0
  526. data/lib/rabbit/theme/rabbit-powered-by/rabbit-powered-by.rb +5 -0
  527. data/lib/rabbit/theme/rabbit-title-logo/property.rb +5 -0
  528. data/lib/rabbit/theme/rabbit-title-logo/rabbit-title-logo.rb +4 -0
  529. data/lib/rabbit/theme/ranguba/property.rb +3 -0
  530. data/lib/rabbit/theme/ranguba/ranguba.rb +218 -0
  531. data/lib/rabbit/theme/red-frame/property.rb +3 -0
  532. data/lib/rabbit/theme/red-frame/red-frame.rb +100 -0
  533. data/lib/rabbit/theme/rotate-zoom-effect/property.rb +4 -0
  534. data/lib/rabbit/theme/rotate-zoom-effect/rotate-zoom-effect.rb +51 -0
  535. data/lib/rabbit/theme/ruby-gnome2/property.rb +3 -0
  536. data/lib/rabbit/theme/ruby-gnome2/ruby-gnome2.rb +65 -0
  537. data/lib/rabbit/theme/ruby-gnome2-description/property.rb +7 -0
  538. data/lib/rabbit/theme/ruby-gnome2-description/ruby-gnome2-description.rb +7 -0
  539. data/lib/rabbit/theme/ruby-gnome2-foot-text/property.rb +5 -0
  540. data/lib/rabbit/theme/ruby-gnome2-foot-text/ruby-gnome2-foot-text.rb +3 -0
  541. data/lib/rabbit/theme/ruby-gnome2-headline/property.rb +7 -0
  542. data/lib/rabbit/theme/ruby-gnome2-headline/ruby-gnome2-headline.rb +47 -0
  543. data/lib/rabbit/theme/ruby-gnome2-icon/property.rb +5 -0
  544. data/lib/rabbit/theme/ruby-gnome2-icon/ruby-gnome2-icon.rb +4 -0
  545. data/lib/rabbit/theme/ruby-gnome2-item-mark/property.rb +10 -0
  546. data/lib/rabbit/theme/ruby-gnome2-item-mark/ruby-gnome2-item-mark.rb +65 -0
  547. data/lib/rabbit/theme/ruby-gnome2-preformatted/property.rb +4 -0
  548. data/lib/rabbit/theme/ruby-gnome2-preformatted/ruby-gnome2-preformatted.rb +8 -0
  549. data/lib/rabbit/theme/ruby-gnome2-slide/property.rb +4 -0
  550. data/lib/rabbit/theme/ruby-gnome2-slide/ruby-gnome2-slide.rb +40 -0
  551. data/lib/rabbit/theme/rubykaigi2011/property.rb +3 -0
  552. data/lib/rabbit/theme/rubykaigi2011/rubykaigi2011.rb +48 -0
  553. data/lib/rabbit/theme/scroll-effect/property.rb +3 -0
  554. data/lib/rabbit/theme/scroll-effect/scroll-effect.rb +32 -0
  555. data/lib/rabbit/theme/searcher.rb +179 -0
  556. data/lib/rabbit/theme/show-frame/property.rb +16 -0
  557. data/lib/rabbit/theme/show-frame/show-frame.rb +17 -0
  558. data/lib/rabbit/theme/simple-item-mark/property.rb +5 -0
  559. data/lib/rabbit/theme/simple-item-mark/simple-item-mark.rb +112 -0
  560. data/lib/rabbit/theme/slide-background/property.rb +6 -0
  561. data/lib/rabbit/theme/slide-background/slide-background.rb +3 -0
  562. data/lib/rabbit/theme/slide-background-image/property.rb +10 -0
  563. data/lib/rabbit/theme/slide-background-image/slide-background-image.rb +25 -0
  564. data/lib/rabbit/theme/slide-footer-info/property.rb +43 -0
  565. data/lib/rabbit/theme/slide-footer-info/slide-footer-info.rb +51 -0
  566. data/lib/rabbit/theme/slide-header-info/property.rb +43 -0
  567. data/lib/rabbit/theme/slide-header-info/slide-header-info.rb +42 -0
  568. data/lib/rabbit/theme/slide-logo/property.rb +26 -0
  569. data/lib/rabbit/theme/slide-logo/slide-logo.rb +58 -0
  570. data/lib/rabbit/theme/slide-number/property.rb +21 -0
  571. data/lib/rabbit/theme/slide-number/slide-number.rb +34 -0
  572. data/lib/rabbit/theme/slide-show/property.rb +4 -0
  573. data/lib/rabbit/theme/slide-show/slide-show.rb +31 -0
  574. data/lib/rabbit/theme/stream-comment/property.rb +3 -0
  575. data/lib/rabbit/theme/stream-comment/stream-comment.rb +66 -0
  576. data/lib/rabbit/theme/syntax-highlighting/property.rb +4 -0
  577. data/lib/rabbit/theme/syntax-highlighting/syntax-highlighting.rb +177 -0
  578. data/lib/rabbit/theme/table/property.rb +3 -0
  579. data/lib/rabbit/theme/table/table.rb +173 -0
  580. data/lib/rabbit/theme/tag/property.rb +4 -0
  581. data/lib/rabbit/theme/tag/tag.rb +85 -0
  582. data/lib/rabbit/theme/timer/property.rb +3 -0
  583. data/lib/rabbit/theme/timer/timer.rb +63 -0
  584. data/lib/rabbit/theme/title-background-color/property.rb +10 -0
  585. data/lib/rabbit/theme/title-background-color/title-background-color.rb +17 -0
  586. data/lib/rabbit/theme/title-background-image/property.rb +11 -0
  587. data/lib/rabbit/theme/title-background-image/title-background-image.rb +28 -0
  588. data/lib/rabbit/theme/title-logo/property.rb +23 -0
  589. data/lib/rabbit/theme/title-logo/title-logo.rb +38 -0
  590. data/lib/rabbit/theme/title-on-image-toolkit/property.rb +3 -0
  591. data/lib/rabbit/theme/title-on-image-toolkit/title-on-image-toolkit.rb +140 -0
  592. data/lib/rabbit/theme/title-shadow/property.rb +11 -0
  593. data/lib/rabbit/theme/title-shadow/title-shadow.rb +7 -0
  594. data/lib/rabbit/theme/title-slide-background-image/property.rb +10 -0
  595. data/lib/rabbit/theme/title-slide-background-image/title-slide-background-image.rb +25 -0
  596. data/lib/rabbit/theme/video/property.rb +3 -0
  597. data/lib/rabbit/theme/video/video.rb +5 -0
  598. data/lib/rabbit/theme-configuration.rb +101 -0
  599. data/lib/rabbit/utils.rb +435 -0
  600. data/lib/rabbit/version.rb +19 -0
  601. data/lib/rabbit/xmlrpc/base.rb +6 -0
  602. data/lib/rabbit/xmlrpc/client.rb +33 -0
  603. data/lib/rabbit/xmlrpc/server.rb +39 -0
  604. data/lib/rabbit/yaml-loader.rb +39 -0
  605. data/misc/emacs/README.ja +177 -0
  606. data/misc/emacs/rabbit-mode.el +378 -0
  607. data/misc/github-post-receiver/config.ru +170 -0
  608. data/misc/github-post-receiver/config.yaml.sample +3 -0
  609. data/misc/github-post-receiver/tmp/restart.txt +0 -0
  610. data/misc/make-image-sample.rb +95 -0
  611. data/misc/make-print-sample.rb +95 -0
  612. data/misc/update-rd.rb +85 -0
  613. data/misc/xyzzy/rabbit-mode.l +775 -0
  614. data/po/en/rabbit.po +2110 -0
  615. data/po/fr/rabbit.po +2109 -0
  616. data/po/ja/rabbit.po +2197 -0
  617. data/rabbit-qt.gemspec +80 -0
  618. data/sample/block-quote.rab +13 -0
  619. data/sample/blue-circle.rd +37 -0
  620. data/sample/can_rabbit.rd +425 -0
  621. data/sample/cozmixng.rd +85 -0
  622. data/sample/cozmixng_is_field.png +0 -0
  623. data/sample/cozmixng_is_field.svg +430 -0
  624. data/sample/description-list.rab +17 -0
  625. data/sample/enishi-green.rab +14 -0
  626. data/sample/equation.eps +571 -0
  627. data/sample/gl-sample.rd +8 -0
  628. data/sample/html_and_wiki.png +0 -0
  629. data/sample/html_and_wiki.svg +275 -0
  630. data/sample/image-reflection.rab +12 -0
  631. data/sample/info-window.png +0 -0
  632. data/sample/join_cozmixng.png +0 -0
  633. data/sample/join_cozmixng.svg +293 -0
  634. data/sample/kof2005/gesture-flow.svg +329 -0
  635. data/sample/kof2005/gesture.rb +473 -0
  636. data/sample/kof2005/gtk+-widget.svg +128 -0
  637. data/sample/kof2005/high-light-architecture.svg +203 -0
  638. data/sample/kof2005/high-light-expose.rb +120 -0
  639. data/sample/kof2005/high-light-expose.svg +153 -0
  640. data/sample/kof2005/high-light-widget.rb +147 -0
  641. data/sample/kof2005/high-light-widget.svg +172 -0
  642. data/sample/kof2005/high-light.svg +132 -0
  643. data/sample/kof2005/mask-screenshot.png +0 -0
  644. data/sample/kof2005/mask.rb +105 -0
  645. data/sample/kof2005/mask.svg +120 -0
  646. data/sample/kof2005/ruby-gnome2-logo.png +0 -0
  647. data/sample/kof2005/ruby-pink-circle-logo.png +0 -0
  648. data/sample/kof2005/skip-up-with-ruby-gnome2.rd +450 -0
  649. data/sample/kof2005/widget.svg +202 -0
  650. data/sample/lavie.png +0 -0
  651. data/sample/lightning-talk.rd +50 -0
  652. data/sample/lldn/input.svg +269 -0
  653. data/sample/lldn/interface.svg +410 -0
  654. data/sample/lldn/kame.png +0 -0
  655. data/sample/lldn/lavie.png +0 -0
  656. data/sample/lldn/lldn.rd +212 -0
  657. data/sample/lldn/output.svg +284 -0
  658. data/sample/lldn/rabbit-rwiki.svg +353 -0
  659. data/sample/lldn/rabbit_banner.png +0 -0
  660. data/sample/lldn/rabbit_banner2.png +0 -0
  661. data/sample/m17n.rd +138 -0
  662. data/sample/mermaid.rab +16 -0
  663. data/sample/note.rab +31 -0
  664. data/sample/ppt/hare-and-tortoise-end.png +0 -0
  665. data/sample/ppt/hare-and-tortoise-middle.png +0 -0
  666. data/sample/ppt/hare-and-tortoise-start.png +0 -0
  667. data/sample/ppt/ppt.rd +207 -0
  668. data/sample/ppt/rabbit-with-ruby.png +0 -0
  669. data/sample/pre.rd +123 -0
  670. data/sample/rabbit/theme/festival/festival.rb +6 -0
  671. data/sample/rabbit/theme/gl-sample/gl-sample.rb +29 -0
  672. data/sample/rabbit/theme/image-with-frame/image-with-frame.rb +2 -0
  673. data/sample/rabbit/theme/image-with-no-shadow-frame/image-with-no-shadow-frame.rb +3 -0
  674. data/sample/rabbit/theme/image-without-frame/image-without-frame.rb +2 -0
  675. data/sample/rabbit/theme/kof2005/kof2005.rb +9 -0
  676. data/sample/rabbit/theme/kof2005/property.rb +3 -0
  677. data/sample/rabbit/theme/lightning-talk-with-contact/lightning-talk-with-contact.rb +6 -0
  678. data/sample/rabbit/theme/lldn/lldn.rb +20 -0
  679. data/sample/rabbit/theme/pdf/pdf.rb +16 -0
  680. data/sample/rabbit/theme/pdf/property.rb +4 -0
  681. data/sample/rabbit/theme/ppt/ppt.rb +5 -0
  682. data/sample/rabbit/theme/rabbit-and-tortoise/rabbit-and-tortoise.rb +11 -0
  683. data/sample/rabbit/theme/rectangle-image-slide-number/rectangle-image-slide-number.rb +4 -0
  684. data/sample/rabbit/theme/stop-auto-slide/stop-auto-slide.rb +2 -0
  685. data/sample/rabbit/theme/triangle-image-slide-number/triangle-image-slide-number.rb +5 -0
  686. data/sample/rabbit-balloon.obj +93 -0
  687. data/sample/rabbit-en.hiki +399 -0
  688. data/sample/rabbit-en.md +410 -0
  689. data/sample/rabbit-en.rd +511 -0
  690. data/sample/rabbit-history.svg +280 -0
  691. data/sample/rabbit-implementation.rd +182 -0
  692. data/sample/rabbit-slide-show-logo.svg +597 -0
  693. data/sample/rabbit.dia +408 -0
  694. data/sample/rabbit.hiki +398 -0
  695. data/sample/rabbit.md +423 -0
  696. data/sample/rabbit.rd +520 -0
  697. data/sample/rabbit.xcf +0 -0
  698. data/sample/rabbit_icon.ico +0 -0
  699. data/sample/rabbit_icon.png +0 -0
  700. data/sample/shocker.jpg +0 -0
  701. data/sample/slide-property.hiki +14 -0
  702. data/sample/slide-property.rab +18 -0
  703. data/sample/spiral.svg +29 -0
  704. data/sample/table-en.rd +55 -0
  705. data/sample/table.hiki +34 -0
  706. data/sample/table.rd +55 -0
  707. data/sample/usagi.png +0 -0
  708. data/sample/video.md +19 -0
  709. data/sample/video.rab +17 -0
  710. metadata +1000 -0
@@ -0,0 +1,854 @@
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 "English"
18
+ require "pathname"
19
+
20
+ require_relative "../rabbit"
21
+ require_relative "../slide-configuration"
22
+
23
+ module Rabbit
24
+ module Command
25
+ class Rabbit
26
+ include GetText
27
+
28
+ class << self
29
+ def run(*arguments)
30
+ new.run(arguments)
31
+ end
32
+ end
33
+
34
+ def run(arguments)
35
+ GC.disable
36
+ require "rbconfig"
37
+
38
+ require_relative "../console"
39
+ require_relative "../front"
40
+ require_relative "../renderer"
41
+ require_relative "../source"
42
+
43
+ @options = parse_command_line_arguments(arguments)
44
+
45
+ require_relative "../canvas"
46
+ GC.enable
47
+
48
+ app = QApplication.new
49
+ ::Rabbit.application = app
50
+ GLib.application_name = "Rabbit"
51
+
52
+ succeeded = false
53
+ begin
54
+ succeeded = catch do |abort_tag|
55
+ @abort_tag = abort_tag
56
+ __send__("do_#{@options.action}")
57
+ end
58
+ rescue
59
+ ::Rabbit.logger.error($!)
60
+ end
61
+
62
+ if @options.action == :display && succeeded
63
+ app.exec
64
+ end
65
+
66
+ succeeded
67
+ end
68
+
69
+ private
70
+ def parse_command_line_arguments(arguments)
71
+ Console.parse!(arguments) do |parser, options|
72
+ rest_arguments_from_options_file = []
73
+ options.before_hooks << lambda do |_, _, _|
74
+ rest_arguments_from_options_file = options.rest.dup
75
+ options.rest.clear
76
+ end
77
+ options.after_hooks << lambda do |console, _, _|
78
+ if options.rest.empty?
79
+ options.rest = rest_arguments_from_options_file
80
+ end
81
+ end
82
+
83
+ options.after_hooks << lambda do |console, _, _|
84
+ adjust_rest_arguments(console, parser, options)
85
+ end
86
+
87
+ options.action = :display
88
+ options.options_file = ".rabbit"
89
+ options.theme = "default"
90
+ options.theme_specified = false
91
+ options.comment_theme = nil
92
+ options.allotted_time = ENV["RABBIT_ALLOTTED_TIME"]
93
+ options.base = nil
94
+ options.source_type = :auto
95
+ options.full_screen = false
96
+ options.index_mode = false
97
+ options.initial_slide = 0
98
+ options.geometry = nil
99
+ options.width = 800
100
+ options.height = 600
101
+ options.paper_width = nil
102
+ options.paper_height = nil
103
+ options.saved_image_base_name = nil
104
+ options.saved_image_type = "png"
105
+ options.output_html = false
106
+ options.output_index_html = false
107
+ options.rss_base_uri = nil
108
+ options.encoding = nil
109
+ options.print_out_filename = nil
110
+ options.slides_per_page = 1
111
+ options.draw_scaled_image = nil
112
+ options.margin_left = nil
113
+ options.margin_right = nil
114
+ options.margin_top = nil
115
+ options.margin_bottom = nil
116
+ options.page_margin_left = nil
117
+ options.page_margin_right = nil
118
+ options.page_margin_top = nil
119
+ options.page_margin_bottom = nil
120
+ options.use_druby = true
121
+ options.output_druby_uri = false
122
+ options.use_soap = false
123
+ options.soap_host = "0.0.0.0"
124
+ options.soap_port = 10103
125
+ options.use_xmlrpc = false
126
+ options.xmlrpc_host = "0.0.0.0"
127
+ options.xmlrpc_port = 10104
128
+ options.default_public_level = "all"
129
+ options.public_level = nil
130
+ options.migemo_dictionary_search_path = [
131
+ File.join(RbConfig::CONFIG["prefix"], "share"),
132
+ File.join("", "usr", "local", "share"),
133
+ File.join("", "usr", "share"),
134
+ ].uniq
135
+ options.migemo_dictionary_name = "migemo-dict"
136
+ options.use_gl = false
137
+ options.show_native_window_id = false
138
+ options.source_filename = nil
139
+
140
+
141
+ parser.banner = "#{parser.banner} [SOURCE_INFOS]"
142
+
143
+ parser.category _("Theme")
144
+
145
+ parser.on("-I", "--include=PATH",
146
+ _("Add [PATH] to load path.")) do |path|
147
+ $LOAD_PATH.unshift(File.expand_path(path))
148
+ end
149
+
150
+ parser.on("-t", "--theme=THEME",
151
+ _("Use [THEME] as theme."),
152
+ "(#{options.theme})") do |theme|
153
+ options.theme = theme
154
+ options.theme_specified = true
155
+ end
156
+
157
+ parser.on("--comment-theme=THEME",
158
+ _("Use [THEME] for comment."),
159
+ "(#{options.comment_theme})") do |theme|
160
+ options.comment_theme = theme
161
+ end
162
+
163
+ parser.on("--allotted-time=TIME",
164
+ _("Use [TIME] as allotted time."),
165
+ "(#{options.allotted_time})") do |time|
166
+ options.allotted_time = time
167
+ end
168
+
169
+
170
+ parser.category _("Source")
171
+
172
+ source_type_names = Source.types.collect do |x|
173
+ Console.get_last_name(x).downcase
174
+ end
175
+ source_type_names.unshift("auto")
176
+ source_type_descs = Source.types.collect do |x|
177
+ message = _("When select %s\nspecify %s\nas [SOURCE_INFOS].")
178
+ type = Console.get_last_name(x)
179
+ message = message % [type, _(x.initial_args_description)]
180
+ message.split(/\n/) + [" "]
181
+ end.flatten
182
+ parser.on("-T", "--type=TYPE",
183
+ source_type_names,
184
+ _("Specify source type as [TYPE]."),
185
+ _("Select from [%s].") % source_type_names.join(', '),
186
+ _("Note: case insensitive."),
187
+ "(auto)",
188
+ " ",
189
+ *source_type_descs) do |source_type|
190
+ if source_type == "auto"
191
+ options.source_type = :auto
192
+ else
193
+ options.source_type = Source.types.find do |t|
194
+ Console.get_last_name(t).downcase == source_type.downcase
195
+ end
196
+ end
197
+ end
198
+
199
+ parser.on("-e", "--encoding=ENCODING",
200
+ _("Specify source encoding as [ENCODING]."),
201
+ _("(auto)")) do |encoding|
202
+ options.encoding = encoding
203
+ end
204
+
205
+ parser.on("-B", "--base=BASE",
206
+ _("Specify base URI or path of source as [BASE]."),
207
+ _("(auto)")) do |base|
208
+ options.base = base
209
+ end
210
+
211
+
212
+ parser.category _("Initial state")
213
+
214
+ parser.on("-f", "--[no-]full-screen",
215
+ _("Toggle full screen mode."),
216
+ "(#{options.full_screen ? 'on' : 'off'})") do |bool|
217
+ options.full_screen = bool
218
+ end
219
+
220
+ parser.on("--[no-]index-mode",
221
+ _("Toggle index mode."),
222
+ "(#{options.index_mode ? 'on' : 'off'})") do |bool|
223
+ options.index_mode = bool
224
+ end
225
+
226
+ parser.on("--initial-slide=N", Integer,
227
+ _("Show the Nth slide. (zero-based)"),
228
+ "(#{options.initial_slide})") do |n|
229
+ options.initial_slide = n
230
+ end
231
+
232
+
233
+ parser.category _("Size")
234
+
235
+ parser.on("-g", "--geometry=GEOMETRY",
236
+ _("Set window geometry [GEOMETRY]."),
237
+ _("Format: WIDTHxHEIGHT+X+Y"),
238
+ "(#{options.geometry.inspect})") do |geometry|
239
+ options.geometry = geometry
240
+ end
241
+
242
+ parser.on("-w", "--width=WIDTH",
243
+ Integer,
244
+ _("Set window width to [WIDTH]."),
245
+ "(#{options.width})") do |width|
246
+ options.width = width
247
+ end
248
+
249
+ parser.on("-h", "--height=HEIGHT",
250
+ Integer,
251
+ _("Set window height to [HEIGHT]."),
252
+ "(#{options.height})") do |height|
253
+ options.height = height
254
+ end
255
+
256
+ message = _("Set window width and height to\n" \
257
+ "[WIDTH] and [HEIGHT].")
258
+ message = message.split(/\n/) +
259
+ ["(#{options.width},#{options.height})"]
260
+ parser.on("-S", "--size=WIDTH,HEIGHT",
261
+ Array,
262
+ *message) do |size|
263
+ width, height = size.collect{|x| Integer(x)}
264
+ options.width = width
265
+ options.height = height
266
+ end
267
+
268
+
269
+ parser.category _("Save")
270
+
271
+ parser.on("-s", "--save-as-image",
272
+ _("Save as image and exit.")) do
273
+ options.action = :save_as_image
274
+ end
275
+
276
+ parser.on("-i", "--saved-image-type=TYPE",
277
+ _("Specify saved image type as [TYPE]."),
278
+ "(#{options.saved_image_type})") do |t|
279
+ options.saved_image_type = t
280
+ end
281
+
282
+ parser.on("-b", "--saved-image-base-name=BASE_NAME",
283
+ "--saved-image-basename=BASE_NAME",
284
+ _("Specify saved image base name as [BASE_NAME]."),
285
+ "(" + _("Title of slide") + ")") do |b|
286
+ options.saved_image_base_name = b
287
+ end
288
+
289
+ parser.on("--[no-]output-html",
290
+ _("Output HTML for viewing saved images."),
291
+ "(#{options.output_html})") do |bool|
292
+ options.output_html = bool
293
+ end
294
+
295
+ parser.on("--[no-]output-index-html",
296
+ _("Output index HTML for navigating slides."),
297
+ "(#{options.output_index_html})") do |bool|
298
+ options.output_index_html = bool
299
+ end
300
+
301
+ parser.on("--rss-base-uri=URI",
302
+ _("Specify base URI of RSS as [URI]."),
303
+ _("RSS is generated only when HTML is output."),
304
+ "(#{options.rss_base_uri})") do |uri|
305
+ options.rss_base_uri = uri
306
+ end
307
+
308
+ parser.on("--source-filename=FILENAME",
309
+ _("Specify source filenam as [FILENAME]."),
310
+ "(#{options.source_filename})") do |filename|
311
+ options.source_filename = filename
312
+ end
313
+
314
+ parser.category _("Print")
315
+
316
+ parser.on("-p", "--print",
317
+ _("Print and exit.")) do
318
+ options.action = :print
319
+ end
320
+
321
+ parser.on("-o", "--output-filename=FILENAME",
322
+ _("Specify printed out filename as [FILENAME]."),
323
+ "(\#{%s}.pdf)" % _("Title of slide")) do |f|
324
+ options.print_out_filename = f
325
+ end
326
+
327
+ parser.on("--slides-per-page=SLIDES",
328
+ Integer,
329
+ _("Set slides per page."),
330
+ "(1)") do |slides|
331
+ options.slides_per_page = slides
332
+ end
333
+
334
+ parser.on("--[no-]draw-scaled-image",
335
+ _("Draw scaled image."),
336
+ _("Better look for displaying but lesser look for printing."),
337
+ "(auto)") do |boolean|
338
+ options.draw_scaled_image = boolean
339
+ end
340
+
341
+ parser.category _("Paper")
342
+
343
+ parser.on("--paper-width=WIDTH",
344
+ Integer,
345
+ _("Set paper width to [WIDTH] Pt."),
346
+ _("(landscape A4 width)")) do |width|
347
+ options.paper_width = width
348
+ end
349
+
350
+ parser.on("--paper-height=HEIGHT",
351
+ Integer,
352
+ _("Set paper height to [HEIGHT] Pt."),
353
+ _("(landscape A4 height)")) do |height|
354
+ options.paper_height = height
355
+ end
356
+
357
+ message = _("Set paper width and height to\n" \
358
+ "[WIDTH] Pt and [HEIGHT] Pt.")
359
+ message = message.split(/\n/) + [_("(landscape A4 size)")]
360
+ parser.on("--paper-size=WIDTH,HEIGHT",
361
+ Array,
362
+ *message) do |size|
363
+ width, height = size.collect{|x| Integer(x)}
364
+ options.paper_width = width
365
+ options.paper_height = height
366
+ end
367
+
368
+
369
+ parser.category _("Margin")
370
+
371
+ parser.on("--margin-left=MARGIN",
372
+ Integer,
373
+ _("Set left margin for slides per page mode print."),
374
+ _("(auto)")) do |margin|
375
+ options.margin_left = margin
376
+ end
377
+
378
+ parser.on("--margin-right=MARGIN",
379
+ Integer,
380
+ _("Set right margin for slides per page mode print."),
381
+ _("(auto)")) do |margin|
382
+ options.margin_right = margin
383
+ end
384
+
385
+ parser.on("--margin-top=MARGIN",
386
+ Integer,
387
+ _("Set top margin for slides per page mode print."),
388
+ _("(auto)")) do |margin|
389
+ options.margin_top = margin
390
+ end
391
+
392
+ parser.on("--margin-bottom=MARGIN",
393
+ Integer,
394
+ _("Set bottom margin for slides per page mode print."),
395
+ _("(auto)")) do |margin|
396
+ options.margin_bottom = margin
397
+ end
398
+
399
+ margin1 = _("[ALL]")
400
+ margin2 = _("[TOP_BOTTOM],[LEFT_RIGHT]")
401
+ margin3 = _("[TOP],[LEFT_RIGHT],[BOTTOM]")
402
+ margin4 = _("[TOP],[RIGHT],[BOTTOM],[LEFT]")
403
+ parser.on("--margin={#{margin1}|#{margin2}|#{margin3}|#{margin4}}",
404
+ Array,
405
+ _("Set margin for slides per page mode print.")) do |margins|
406
+ begin
407
+ top, right, bottom, left = Utils.parse_four_way(margins)
408
+ options.margin_top = top
409
+ options.margin_right = right
410
+ options.margin_bottom = bottom
411
+ options.margin_left = left
412
+ rescue ArgumentError
413
+ raise OptionParser::InvalidArgument.new(margins)
414
+ end
415
+ end
416
+
417
+ parser.on("--page-margin-left=MARGIN",
418
+ Integer,
419
+ _("Set left page margin."),
420
+ _("(auto)")) do |margin|
421
+ options.page_margin_left = margin
422
+ end
423
+
424
+ parser.on("--page-margin-right=MARGIN",
425
+ Integer,
426
+ _("Set right page margin."),
427
+ _("(auto)")) do |margin|
428
+ options.page_margin_right = margin
429
+ end
430
+
431
+ parser.on("--page-margin-top=MARGIN",
432
+ Integer,
433
+ _("Set top page margin."),
434
+ _("(auto)")) do |margin|
435
+ options.page_margin_top = margin
436
+ end
437
+
438
+ parser.on("--page-margin-bottom=MARGIN",
439
+ Integer,
440
+ _("Set bottom page margin."),
441
+ _("(auto)")) do |margin|
442
+ options.page_margin_bottom = margin
443
+ end
444
+
445
+ parser.on("--page-margin={#{margin1}|#{margin2}|#{margin3}|#{margin4}}",
446
+ Array,
447
+ _("Set page margin.")) do |margins|
448
+ begin
449
+ top, right, bottom, left = Utils.parse_four_way(margins)
450
+ options.page_margin_top = top
451
+ options.page_margin_right = right
452
+ options.page_margin_bottom = bottom
453
+ options.page_margin_left = left
454
+ rescue ArgumentError
455
+ raise OptionParser::InvalidArgument.new(margins)
456
+ end
457
+ end
458
+
459
+ parser.category _("dRuby")
460
+
461
+ parser.on("--[no-]use-druby",
462
+ _("Specify whether to use dRuby."),
463
+ "(#{options.use_druby})") do |bool|
464
+ options.use_druby = bool
465
+ end
466
+
467
+ parser.on("--druby-uri=URI",
468
+ _("Specify dRuby URI."),
469
+ "(#{options.druby_uri})") do |uri|
470
+ options.druby_uri = uri if uri
471
+ end
472
+
473
+ parser.on("--[no-]output-druby-uri",
474
+ _("Specify whether to output dRuby URI."),
475
+ "(#{options.output_druby_uri})") do |bool|
476
+ options.output_druby_uri = bool
477
+ end
478
+
479
+ parser.category _("SOAP")
480
+
481
+ parser.on("--[no-]use-soap",
482
+ _("Specify whether to use SOAP."),
483
+ "(#{options.use_soap})") do |bool|
484
+ options.use_soap = bool
485
+ end
486
+
487
+ parser.on("--soap-host=HOST",
488
+ _("Specify SOAP host as [HOST]."),
489
+ "(#{options.soap_host})") do |host|
490
+ options.soap_host = host
491
+ end
492
+
493
+ parser.on("--soap-port=PORT",
494
+ Integer,
495
+ _("Specify SOAP port as [PORT]."),
496
+ "(#{options.soap_port})") do |port|
497
+ options.soap_port = port
498
+ end
499
+
500
+ parser.category _("XML-RPC")
501
+
502
+ parser.on("--[no-]use-xmlrpc",
503
+ _("Specify whether to use XML-RPC."),
504
+ "(#{options.use_xmlrpc})") do |bool|
505
+ options.use_xmlrpc = bool
506
+ end
507
+
508
+ parser.on("--xmlrpc-host=HOST",
509
+ _("Specify XML-RPC host as [HOST]."),
510
+ "(#{options.xmlrpc_host})") do |host|
511
+ options.xmlrpc_host = host
512
+ end
513
+
514
+ parser.on("--xmlrpc-port=PORT",
515
+ Integer,
516
+ _("Specify XML-RPC port as [PORT]."),
517
+ "(#{options.xmlrpc_port})") do |port|
518
+ options.xmlrpc_port = port
519
+ end
520
+
521
+ parser.category _("Public level")
522
+
523
+ levels = Front::PublicLevel.constants.sort_by do |const|
524
+ Front::PublicLevel.const_get(const)
525
+ end.collect do |const|
526
+ const.to_s.downcase.gsub(/_/, "-")
527
+ end
528
+ messages = [_("Specify public level.")]
529
+ messages << _("Select from the following:")
530
+ messages << "["
531
+ messages << " "
532
+ levels[0..-2].each do |level|
533
+ messages.last << "#{level}, "
534
+ messages << " " if messages.last.size > 30
535
+ end
536
+ messages.last << levels.last
537
+ messages << "]"
538
+ messages << (_("(%s)") % options.default_public_level)
539
+ parser.on("--public-level=LEVEL", levels, *messages) do |level|
540
+ options.public_level = level
541
+ end
542
+
543
+ parser.category _("Comment")
544
+
545
+ parser.on("--comment-source=FILE",
546
+ _("Deprecated. Just ignored."),
547
+ _("Specify initial comment source."),
548
+ _("(default source)")) do |name|
549
+ end
550
+
551
+ parser.on("--comment-encoding=ENCODING",
552
+ _("Deprecated. Just ignored."),
553
+ _("Specify comment source encoding."),
554
+ _("(auto)")) do |encoding|
555
+ end
556
+
557
+ parser.category _("Migemo")
558
+
559
+ search_path = options.migemo_dictionary_search_path.join(', ')
560
+ parser.on("--migemo-dictionary-search-path=PATH1,PATH2,...",
561
+ Array,
562
+ _("Specify search paths for Migemo static dictionary."),
563
+ _("(%s)") % search_path) do |path|
564
+ options.migemo_dictionary_search_path = path
565
+ end
566
+
567
+ parser.on("--migemo-dictionary-name=NAME",
568
+ Array,
569
+ _("Specify static dictionary name for Migemo."),
570
+ _("(%s)") % options.migemo_dictionary_name) do |name|
571
+ options.migemo_dictionary_name = name
572
+ end
573
+
574
+ parser.category _("3D")
575
+
576
+ parser.on("--[no-]use-gl",
577
+ _("Specify whether to use OpenGL if available."),
578
+ "(#{options.use_gl})") do |bool|
579
+ options.use_gl = bool
580
+ end
581
+
582
+ parser.category _("Others")
583
+
584
+ parser.on("--check-syntax",
585
+ _("Check slide source syntax and exit.")) do
586
+ options.action = :check_syntax
587
+ end
588
+
589
+ parser.on("--[no-]show-native-window-id",
590
+ _("Show a native window ID of the Rabbit window if available."),
591
+ "(#{options.show_native_window_id})") do |bool|
592
+ options.show_native_window_id = bool
593
+ end
594
+ end
595
+ end
596
+
597
+ def adjust_rest_arguments(console, parser, options)
598
+ return unless options.rest.size == 1
599
+
600
+ source = options.rest[0]
601
+ if /\.gem\z/i =~ source
602
+ gem_name = $PREMATCH
603
+ require_relative "../gem-finder"
604
+ finder = GemFinder.new
605
+ spec = finder.find(gem_name, "#{SlideConfiguration::GEM_NAME_PREFIX}-")
606
+ source = spec.gem_dir if spec
607
+ end
608
+
609
+ options_file = File.join(source, options.options_file)
610
+ if File.file?(options_file)
611
+ options.rest.clear
612
+ console.read_options_file(parser, options, options_file)
613
+ end
614
+ end
615
+
616
+ def make_canvas(renderer)
617
+ canvas = Canvas.new(renderer)
618
+ canvas.comment_theme = @options.comment_theme
619
+ canvas.allotted_time = @options.allotted_time
620
+ canvas
621
+ end
622
+
623
+ def choose_source_file_by_dialog
624
+ file_name = QFileDialog.get_open_file_name(
625
+ nil,
626
+ _("Choose a Rabbit source file"),
627
+ @options.base || "",
628
+ "Rabbit files (*.rab);;RD files (*.rd);;Hiki files (*.hiki);;PDF files (*.pdf);;Markdown files (*.md);;All files (*)"
629
+ )
630
+ file_name.empty? ? nil : file_name
631
+ end
632
+
633
+ def make_source
634
+ rest_arguments = @options.rest
635
+ if @options.source_type == :auto
636
+ if rest_arguments.empty?
637
+ file_name = choose_source_file_by_dialog
638
+ throw(@abort_tag, true) if file_name.nil?
639
+ rest_arguments = [file_name]
640
+ @options.source_type = Source::File
641
+ elsif rest_arguments.size == 1 and
642
+ /\A(?:https?|file):\/\//i =~ rest_arguments[0]
643
+ @options.source_type = Source::URI
644
+ else
645
+ @options.source_type = Source::File
646
+ end
647
+ end
648
+ if @options.source_type == Source::ARGF
649
+ rest_arguments = [ARGF]
650
+ end
651
+ source = @options.source_type.new(@options.encoding, *rest_arguments)
652
+ source.base = @options.base if @options.base
653
+ source
654
+ end
655
+
656
+ def make_front(canvas)
657
+ level = @options.public_level
658
+ level ||= @options.default_public_level
659
+ level = level.gsub(/-/, "_").upcase
660
+ canvas.front(Front::PublicLevel.const_get(level))
661
+ end
662
+
663
+ def apply_theme_if_need(target)
664
+ target.apply_theme(@options.theme) if @options.theme_specified
665
+ end
666
+
667
+ def parse(target, source, background=false)
668
+ if background
669
+ callback = Utils.process_pending_events_proc
670
+ else
671
+ callback = nil
672
+ end
673
+ target.parse(source, callback)
674
+ end
675
+
676
+ def setup_image_info(target)
677
+ target.saved_image_type = @options.saved_image_type
678
+ target.saved_image_base_name = @options.saved_image_base_name
679
+ target.output_html = @options.output_html
680
+ target.output_index_html = @options.output_index_html
681
+ target.rss_base_uri = @options.rss_base_uri
682
+ target.source_filename = @options.source_filename
683
+ end
684
+
685
+ def setup_print_info(target)
686
+ target.filename = @options.print_out_filename
687
+ target.slides_per_page = @options.slides_per_page
688
+ target.draw_scaled_image = @options.draw_scaled_image
689
+ end
690
+
691
+ def setup_base_size(target)
692
+ target.base_width = @options.width
693
+ target.base_height = @options.height
694
+ end
695
+
696
+ def setup_paper_size(target)
697
+ target.paper_width = @options.paper_width
698
+ target.paper_height = @options.paper_height
699
+ target.page_margin_left = @options.page_margin_left
700
+ target.page_margin_right = @options.page_margin_right
701
+ target.page_margin_top = @options.page_margin_top
702
+ target.page_margin_bottom = @options.page_margin_bottom
703
+ target.margin_left = @options.margin_left
704
+ target.margin_right = @options.margin_right
705
+ target.margin_top = @options.margin_top
706
+ target.margin_bottom = @options.margin_bottom
707
+ end
708
+
709
+ def setup_migemo_info(target)
710
+ target.migemo_dictionary_search_path =
711
+ @options.migemo_dictionary_search_path
712
+ target.migemo_dictionary_name = @options.migemo_dictionary_name
713
+ end
714
+
715
+ def setup_3d_info(target)
716
+ target.use_gl = @options.use_gl
717
+ end
718
+
719
+ def setup_druby(front)
720
+ require "drb/drb"
721
+ begin
722
+ DRb.start_service(@options.druby_uri, front)
723
+ ::Rabbit.logger.info(DRb.uri) if @options.output_druby_uri
724
+ rescue SocketError
725
+ ::Rabbit.logger.error($!)
726
+ rescue Errno::EADDRINUSE
727
+ ::Rabbit.logger.error(_("dRuby URI <%s> is in use.") % @options.druby_uri)
728
+ end
729
+ end
730
+
731
+ def setup_soap(front)
732
+ require_relative "../soap/server"
733
+ thread = nil
734
+
735
+ begin
736
+ config = {
737
+ :BindAddress => @options.soap_host,
738
+ :Port => @options.soap_port,
739
+ :AddressFamily => Socket::AF_INET,
740
+ :Logger => ::Rabbit.logger,
741
+ }
742
+ server = Rabbit::SOAP::Server.new(front, config)
743
+ prev = trap(:INT) {server.shutdown; trap(:INT, prev)}
744
+ thread = Thread.new {server.start}
745
+ rescue Errno::EADDRINUSE
746
+ ::Rabbit.logger.error(_("port <%s> for SOAP is in use.") % @options.soap_port)
747
+ end
748
+
749
+ thread
750
+ end
751
+
752
+ def setup_xmlrpc(front)
753
+ require_relative "../xmlrpc/server"
754
+ thread = nil
755
+
756
+ begin
757
+ config = {
758
+ :BindAddress => @options.xmlrpc_host,
759
+ :Port => @options.xmlrpc_port,
760
+ :AddressFamily => Socket::AF_INET,
761
+ :Logger => ::Rabbit.logger,
762
+ }
763
+ server = Rabbit::XMLRPC::Server.new(front, config)
764
+ prev = trap(:INT) {server.shutdown; trap(:INT, prev)}
765
+ thread = Thread.new {server.start}
766
+ rescue Errno::EADDRINUSE
767
+ ::Rabbit.logger.error(_("port <%s> for XML-RPC is in use.") % @options.xmlrpc_port)
768
+ end
769
+
770
+ thread
771
+ end
772
+
773
+ def do_print
774
+ source = make_source
775
+ canvas = make_canvas(Renderer::Printer)
776
+ setup_base_size(canvas)
777
+ setup_paper_size(canvas)
778
+ setup_print_info(canvas)
779
+ setup_3d_info(canvas)
780
+ apply_theme_if_need(canvas)
781
+ parse(canvas, source)
782
+ canvas.print
783
+ canvas.quit
784
+ true
785
+ rescue ::Rabbit::NoPrintSupportError
786
+ ::Rabbit.logger.error($!.message)
787
+ false
788
+ end
789
+
790
+ def do_save_as_image
791
+ source = make_source
792
+ canvas = make_canvas(Renderer::Offscreen)
793
+ setup_base_size(canvas)
794
+ setup_image_info(canvas)
795
+ setup_print_info(canvas)
796
+ setup_paper_size(canvas)
797
+ setup_3d_info(canvas)
798
+ apply_theme_if_need(canvas)
799
+ parse(canvas, source)
800
+ canvas.activate("ToggleIndexMode") if @options.index_mode
801
+ canvas.save_as_image
802
+ canvas.quit
803
+
804
+ true
805
+ end
806
+
807
+ def do_display
808
+ source = make_source
809
+ canvas = make_canvas(Renderer::Display::QtDrawingArea)
810
+ frame = Frame.new(canvas)
811
+ frame.geometry = @options.geometry
812
+ setup_base_size(canvas)
813
+ setup_paper_size(canvas)
814
+ setup_image_info(canvas)
815
+ setup_print_info(canvas)
816
+ setup_migemo_info(canvas)
817
+ setup_3d_info(canvas)
818
+ frame.init_gui(@options.width, @options.height, true)
819
+ frame.fullscreen if @options.full_screen
820
+ apply_theme_if_need(frame)
821
+ parse(frame, source, !Utils.windows?)
822
+ canvas.move_to_if_can(@options.initial_slide)
823
+ canvas.activate("ToggleIndexMode") if @options.index_mode
824
+
825
+ front = make_front(canvas)
826
+ setup_druby(front) if @options.use_druby
827
+ setup_soap(front) if @options.use_soap
828
+ setup_xmlrpc(front) if @options.use_xmlrpc
829
+
830
+ true
831
+ end
832
+
833
+ def do_check_syntax
834
+ source = make_source
835
+ canvas = make_canvas(Renderer::Printer)
836
+ exception = nil
837
+ begin
838
+ canvas.parse(source) do |_exception|
839
+ exception = _exception
840
+ end
841
+ rescue
842
+ exception = $!
843
+ end
844
+
845
+ if exception
846
+ ::Rabbit.logger.info(exception.message)
847
+ false
848
+ else
849
+ true
850
+ end
851
+ end
852
+ end
853
+ end
854
+ end