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,122 @@
1
+
2
+ <!--
3
+ File mmlextra.ent produced by the XSL script characters.xsl
4
+ from input data in unicode.xml.
5
+
6
+ Please report any errors to David Carlisle
7
+ via the public W3C list www-math@w3.org.
8
+
9
+ The numeric character values assigned to each entity
10
+ (should) match the Unicode assignments in Unicode 4.0.
11
+
12
+ -->
13
+
14
+ <!ENTITY % plane1D "&#38;#38;#x1D">
15
+
16
+ <!ENTITY af "&#x02061;" ><!--character showing function application in presentation tagging -->
17
+ <!ENTITY aopf "%plane1D;552;" ><!-- -->
18
+ <!ENTITY asympeq "&#x0224D;" ><!--Old ISOAMSR asymp (for HTML compatibility) -->
19
+ <!ENTITY bopf "%plane1D;553;" ><!-- -->
20
+ <!ENTITY copf "%plane1D;554;" ><!-- -->
21
+ <!ENTITY Cross "&#x02A2F;" ><!--cross or vector product -->
22
+ <!ENTITY DD "&#x02145;" ><!--D for use in differentials, e.g., within integrals -->
23
+ <!ENTITY dd "&#x02146;" ><!--d for use in differentials, e.g., within integrals -->
24
+ <!ENTITY dopf "%plane1D;555;" ><!-- -->
25
+ <!ENTITY DownArrowBar "&#x02913;" ><!--down arrow to bar -->
26
+ <!ENTITY DownBreve " &#x00311;" ><!--breve, inverted (non-spacing) -->
27
+ <!ENTITY DownLeftRightVector "&#x02950;" ><!--left-down-right-down harpoon -->
28
+ <!ENTITY DownLeftTeeVector "&#x0295E;" ><!--left-down harpoon from bar -->
29
+ <!ENTITY DownLeftVectorBar "&#x02956;" ><!--left-down harpoon to bar -->
30
+ <!ENTITY DownRightTeeVector "&#x0295F;" ><!--right-down harpoon from bar -->
31
+ <!ENTITY DownRightVectorBar "&#x02957;" ><!--right-down harpoon to bar -->
32
+ <!ENTITY ee "&#x02147;" ><!--e use for the exponential base of the natural logarithms -->
33
+ <!ENTITY EmptySmallSquare "&#x025FB;" ><!--empty small square -->
34
+ <!ENTITY EmptyVerySmallSquare "&#x025AB;" ><!--empty small square -->
35
+ <!ENTITY eopf "%plane1D;556;" ><!-- -->
36
+ <!ENTITY Equal "&#x02A75;" ><!--two consecutive equal signs -->
37
+ <!ENTITY FilledSmallSquare "&#x025FC;" ><!--filled small square -->
38
+ <!ENTITY FilledVerySmallSquare "&#x025AA;" ><!--filled very small square -->
39
+ <!ENTITY fopf "%plane1D;557;" ><!-- -->
40
+ <!ENTITY gopf "%plane1D;558;" ><!-- -->
41
+ <!ENTITY GreaterGreater "&#x02AA2;" ><!--alias for GT -->
42
+ <!ENTITY Hat "&#x0005E;" ><!--circumflex accent -->
43
+ <!ENTITY hopf "%plane1D;559;" ><!-- -->
44
+ <!ENTITY HorizontalLine "&#x02500;" ><!--short horizontal line -->
45
+ <!ENTITY ic "&#x02063;" ><!--short form of &InvisibleComma; -->
46
+ <!ENTITY ii "&#x02148;" ><!--i for use as a square root of -1 -->
47
+ <!ENTITY iopf "%plane1D;55A;" ><!-- -->
48
+ <!ENTITY it "&#x02062;" ><!--marks multiplication when it is understood without a mark -->
49
+ <!ENTITY jopf "%plane1D;55B;" ><!-- -->
50
+ <!ENTITY kopf "%plane1D;55C;" ><!-- -->
51
+ <!ENTITY larrb "&#x021E4;" ><!--leftwards arrow to bar -->
52
+ <!ENTITY LeftDownTeeVector "&#x02961;" ><!--down-left harpoon from bar -->
53
+ <!ENTITY LeftDownVectorBar "&#x02959;" ><!--down-left harpoon to bar -->
54
+ <!ENTITY LeftRightVector "&#x0294E;" ><!--left-up-right-up harpoon -->
55
+ <!ENTITY LeftTeeVector "&#x0295A;" ><!--left-up harpoon from bar -->
56
+ <!ENTITY LeftTriangleBar "&#x029CF;" ><!--left triangle, vertical bar -->
57
+ <!ENTITY LeftUpDownVector "&#x02951;" ><!--up-left-down-left harpoon -->
58
+ <!ENTITY LeftUpTeeVector "&#x02960;" ><!--up-left harpoon from bar -->
59
+ <!ENTITY LeftUpVectorBar "&#x02958;" ><!--up-left harpoon to bar -->
60
+ <!ENTITY LeftVectorBar "&#x02952;" ><!--left-up harpoon to bar -->
61
+ <!ENTITY LessLess "&#x02AA1;" ><!--alias for Lt -->
62
+ <!ENTITY lopf "%plane1D;55D;" ><!-- -->
63
+ <!ENTITY mapstodown "&#x021A7;" ><!--downwards arrow from bar -->
64
+ <!ENTITY mapstoleft "&#x021A4;" ><!--leftwards arrow from bar -->
65
+ <!ENTITY mapstoup "&#x021A5;" ><!--upwards arrow from bar -->
66
+ <!ENTITY MediumSpace "&#x0205F;" ><!--space of width 4/18 em -->
67
+ <!ENTITY mopf "%plane1D;55E;" ><!-- -->
68
+ <!ENTITY nbump "&#x0224E;&#x00338;" ><!--not bumpy equals -->
69
+ <!ENTITY nbumpe "&#x0224F;&#x00338;" ><!--not bumpy single equals -->
70
+ <!ENTITY nesim "&#x02242;&#x00338;" ><!--not equal or similar -->
71
+ <!ENTITY NewLine "&#x0000A;" ><!--force a line break; line feed -->
72
+ <!ENTITY NoBreak "&#x02060;" ><!--never break line here -->
73
+ <!ENTITY nopf "%plane1D;55F;" ><!-- -->
74
+ <!ENTITY NotCupCap "&#x0226D;" ><!--alias for &nasymp; -->
75
+ <!ENTITY NotHumpEqual "&#x0224F;&#x00338;" ><!--alias for &nbumpe; -->
76
+ <!ENTITY NotLeftTriangleBar "&#x029CF;&#x00338;" ><!--not left triangle, vertical bar -->
77
+ <!ENTITY NotNestedGreaterGreater "&#x02AA2;&#x00338;" ><!--not double greater-than sign -->
78
+ <!ENTITY NotNestedLessLess "&#x02AA1;&#x00338;" ><!--not double less-than sign -->
79
+ <!ENTITY NotRightTriangleBar "&#x029D0;&#x00338;" ><!--not vertical bar, right triangle -->
80
+ <!ENTITY NotSquareSubset "&#x0228F;&#x00338;" ><!--square not subset -->
81
+ <!ENTITY NotSquareSuperset "&#x02290;&#x00338;" ><!--negated set-like partial order operator -->
82
+ <!ENTITY NotSucceedsTilde "&#x0227F;&#x00338;" ><!--not succeeds or similar -->
83
+ <!ENTITY oopf "%plane1D;560;" ><!-- -->
84
+ <!ENTITY OverBar "&#x000AF;" ><!--over bar -->
85
+ <!ENTITY OverBrace "&#x0FE37;" ><!--over brace -->
86
+ <!ENTITY OverBracket "&#x023B4;" ><!--over bracket -->
87
+ <!ENTITY OverParenthesis "&#x0FE35;" ><!--over parenthesis -->
88
+ <!ENTITY planckh "&#x0210E;" ><!--the ring (skew field) of quaternions -->
89
+ <!ENTITY popf "%plane1D;561;" ><!-- -->
90
+ <!ENTITY Product "&#x0220F;" ><!--alias for &prod; -->
91
+ <!ENTITY qopf "%plane1D;562;" ><!-- -->
92
+ <!ENTITY rarrb "&#x021E5;" ><!--leftwards arrow to bar -->
93
+ <!ENTITY RightDownTeeVector "&#x0295D;" ><!--down-right harpoon from bar -->
94
+ <!ENTITY RightDownVectorBar "&#x02955;" ><!--down-right harpoon to bar -->
95
+ <!ENTITY RightTeeVector "&#x0295B;" ><!--right-up harpoon from bar -->
96
+ <!ENTITY RightTriangleBar "&#x029D0;" ><!--vertical bar, right triangle -->
97
+ <!ENTITY RightUpDownVector "&#x0294F;" ><!--up-right-down-right harpoon -->
98
+ <!ENTITY RightUpTeeVector "&#x0295C;" ><!--up-right harpoon from bar -->
99
+ <!ENTITY RightUpVectorBar "&#x02954;" ><!--up-right harpoon to bar -->
100
+ <!ENTITY RightVectorBar "&#x02953;" ><!--up-right harpoon to bar -->
101
+ <!ENTITY ropf "%plane1D;563;" ><!-- -->
102
+ <!ENTITY RoundImplies "&#x02970;" ><!--round implies -->
103
+ <!ENTITY RuleDelayed "&#x029F4;" ><!--rule-delayed (colon right arrow) -->
104
+ <!ENTITY sopf "%plane1D;564;" ><!-- -->
105
+ <!ENTITY Tab "&#x00009;" ><!--tabulator stop; horizontal tabulation -->
106
+ <!ENTITY ThickSpace "&#x02009;&#x0200A;&#x0200A;" ><!--space of width 5/18 em -->
107
+ <!ENTITY topf "%plane1D;565;" ><!-- -->
108
+ <!ENTITY UnderBar " &#x00332;" ><!--combining low line -->
109
+ <!ENTITY UnderBrace "&#x0FE38;" ><!--under brace -->
110
+ <!ENTITY UnderBracket "&#x023B5;" ><!--under bracket -->
111
+ <!ENTITY UnderParenthesis "&#x0FE36;" ><!--under parenthesis -->
112
+ <!ENTITY uopf "%plane1D;566;" ><!-- -->
113
+ <!ENTITY UpArrowBar "&#x02912;" ><!--up arrow to bar -->
114
+ <!ENTITY Upsilon "&#x003A5;" ><!--ISOGRK1 Ugr, HTML4 Upsilon -->
115
+ <!ENTITY VerticalLine "&#x0007C;" ><!--alias ISONUM verbar -->
116
+ <!ENTITY VerticalSeparator "&#x02758;" ><!--vertical separating operator -->
117
+ <!ENTITY vopf "%plane1D;567;" ><!-- -->
118
+ <!ENTITY wopf "%plane1D;568;" ><!-- -->
119
+ <!ENTITY xopf "%plane1D;569;" ><!-- -->
120
+ <!ENTITY yopf "%plane1D;56A;" ><!-- -->
121
+ <!ENTITY ZeroWidthSpace "&#x0200B;" ><!--zero width space -->
122
+ <!ENTITY zopf "%plane1D;56B;" ><!-- -->
@@ -0,0 +1,427 @@
1
+ # Copyright (C) 2005-2025 Sutou Kouhei <kou@cozmixng.org>
2
+ #
3
+ # This program is free software; you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation; either version 2 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License along
14
+ # with this program; if not, write to the Free Software Foundation, Inc.,
15
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
+
17
+ require_relative "icon"
18
+
19
+ module Rabbit
20
+ Action = Struct.new(:name,
21
+ :parameter_type,
22
+ :initial_state,
23
+ :update_state,
24
+ :update_enabled,
25
+ :label,
26
+ :icon,
27
+ :icon_name,
28
+ :activate) do
29
+ attr_accessor :state, :enabled
30
+
31
+ def enabled?
32
+ !!enabled
33
+ end
34
+
35
+ def initialize(*)
36
+ super
37
+ self.enabled = true
38
+ if initial_state.nil?
39
+ self.state = update_state.call if update_state
40
+ else
41
+ self.state = initial_state
42
+ end
43
+ end
44
+
45
+ def update
46
+ self.state = update_state.call if update_state
47
+ self.enabled = update_enabled.call if update_enabled
48
+ end
49
+
50
+ def trigger(parameter = nil)
51
+ activate.call(self, parameter)
52
+ end
53
+
54
+ def change_state(new_state)
55
+ self.state = new_state
56
+ end
57
+ end
58
+
59
+ class Actions
60
+ include GetText
61
+
62
+ def initialize(canvas)
63
+ @canvas = canvas
64
+ @actions = {}
65
+
66
+ build_move_actions
67
+ build_output_actions
68
+ build_window_actions
69
+ build_theme_actions
70
+ build_view_actions
71
+ build_graffiti_actions
72
+ build_content_actions
73
+ build_hole_actions
74
+ build_search_actions
75
+ build_log_level_actions
76
+ build_quit_actions
77
+ end
78
+
79
+ def update_status
80
+ @actions.each_value(&:update)
81
+ end
82
+
83
+ def find_action(name)
84
+ @actions[name]
85
+ end
86
+
87
+ def [](name)
88
+ @actions[name]
89
+ end
90
+
91
+ private
92
+ def guard
93
+ begin
94
+ yield
95
+ rescue Exception
96
+ Rabbit.logger.warn($!)
97
+ end
98
+ end
99
+
100
+ def build_action(name,
101
+ parameter_type: nil,
102
+ initial_state: nil,
103
+ update_state: nil,
104
+ update_enabled: nil,
105
+ label: nil,
106
+ icon: nil,
107
+ icon_name: nil)
108
+ activate = lambda do |action, parameter|
109
+ guard do
110
+ yield(action, parameter)
111
+ end
112
+ end
113
+ action = Action.new(name,
114
+ parameter_type,
115
+ initial_state,
116
+ update_state,
117
+ update_enabled,
118
+ label,
119
+ icon,
120
+ icon_name,
121
+ activate)
122
+ @actions[name] = action
123
+ end
124
+
125
+ def build_move_actions
126
+ build_action("Next",
127
+ update_enabled: lambda {@canvas.have_next?},
128
+ label: _("Next"),
129
+ icon_name: "go-next") do
130
+ @canvas.move_to_next_if_can
131
+ end
132
+ build_action("Previous",
133
+ update_enabled: lambda {@canvas.have_previous?},
134
+ label: _("Previous"),
135
+ icon_name: "go-previous") do
136
+ @canvas.move_to_previous_if_can
137
+ end
138
+ build_action("NextSlide",
139
+ update_enabled: lambda {@canvas.have_next_slide?},
140
+ label: _("Next slide"),
141
+ icon_name: "go-next") do
142
+ @canvas.move_to_next_if_can
143
+ end
144
+ build_action("PreviousSlide",
145
+ update_enabled: lambda {@canvas.have_previous_slide?},
146
+ label: _("Previous slide"),
147
+ icon_name: "go-previous") do
148
+ @canvas.move_to_previous_if_can
149
+ end
150
+ build_action("FirstSlide",
151
+ update_enabled: lambda {not @canvas.first_slide?},
152
+ label: _("First slide"),
153
+ icon_name: "go-first") do
154
+ @canvas.move_to_first
155
+ end
156
+ build_action("LastSlide",
157
+ update_enabled: lambda {not @canvas.last_slide?},
158
+ label: _("Last slide"),
159
+ icon_name: "go-last") do
160
+ @canvas.move_to_last
161
+ end
162
+ build_action("JumpToSlide",
163
+ parameter_type: "i",
164
+ label: _("Jump to slide"),
165
+ icon_name: "go-jump") do |action, index|
166
+ @canvas.move_to_if_can(index)
167
+ end
168
+ build_action("JumpToRelativeSlide",
169
+ parameter_type: "i",
170
+ label: _("Jump to relative slide"),
171
+ icon_name: "go-jump") do |action, index|
172
+ @canvas.move_to_if_can(@canvas.current_index + index)
173
+ end
174
+ end
175
+
176
+ def build_output_actions
177
+ build_action("SaveAsImage",
178
+ update_enabled: lambda {not @canvas.processing?},
179
+ label: _("Save as image"),
180
+ icon_name: "document-save") do
181
+ @canvas.save_as_image
182
+ end
183
+ build_action("Print",
184
+ update_enabled: lambda {not @canvas.processing?},
185
+ label: _("Print"),
186
+ icon_name: "document-print") do
187
+ @canvas.print
188
+ end
189
+ end
190
+
191
+ def build_window_actions
192
+ build_action("Iconify",
193
+ update_state: lambda {false},
194
+ label: _("Iconify"),
195
+ icon: Icon.rabbit) do
196
+ @canvas.iconify
197
+ end
198
+ build_action("ToggleFullscreen",
199
+ update_enabled: lambda {not @canvas.applying?},
200
+ update_state: lambda {@canvas.fullscreen?},
201
+ label: _("Fullscreen"),
202
+ icon_name: "view-fullscreen") do
203
+ @canvas.toggle_fullscreen
204
+ end
205
+ end
206
+
207
+ def build_theme_actions
208
+ build_action("ChangeTheme",
209
+ parameter_type: "s",
210
+ update_enabled: lambda {not @canvas.applying?},
211
+ label: _("Change theme")) do |action, name|
212
+ @canvas.apply_theme(name)
213
+ end
214
+ build_action("MergeTheme",
215
+ parameter_type: "s",
216
+ update_enabled: lambda {not @canvas.applying?},
217
+ label: _("Merge theme")) do |action, name|
218
+ @canvas.merge_theme(name)
219
+ end
220
+ build_action("ReloadTheme",
221
+ update_enabled: lambda {not @canvas.applying?},
222
+ label: _("Reload theme"),
223
+ icon_name: "view-refresh") do
224
+ @canvas.reload_theme
225
+ end
226
+ end
227
+
228
+ def build_view_actions
229
+ build_action("Redraw",
230
+ label: _("Redraw"),
231
+ icon_name: "view-refresh") do
232
+ @canvas.redraw
233
+ end
234
+ build_action("CacheAllSlides",
235
+ update_enabled: lambda {not @canvas.processing?},
236
+ label: _("Cache all slides")) do
237
+ @canvas.cache_all_slides
238
+ end
239
+ build_action("ResetAdjustment",
240
+ label: _("Reset adjustment"),
241
+ icon_name: "edit-clear") do
242
+ @canvas.rest_adjustment
243
+ end
244
+ build_action("ResetTimer",
245
+ label: _("Reset timer"),
246
+ icon_name: "edit-clear") do
247
+ @canvas.reset_timer
248
+ end
249
+ build_action("ToggleSpotlight",
250
+ update_state: lambda {@canvas.spotlighting?},
251
+ label: _("Spotlight")) do |action|
252
+ @canvas.toggle_spotlight
253
+ action.update
254
+ end
255
+ build_action("ToggleMagnifier",
256
+ update_state: lambda {@canvas.magnifying?},
257
+ label: _("Magnifier")) do |action|
258
+ @canvas.toggle_magnifier
259
+ action.update
260
+ end
261
+ end
262
+
263
+ def graffiti_available?
264
+ @canvas.graffiti_mode? or @canvas.have_graffiti?
265
+ end
266
+
267
+ def build_graffiti_actions
268
+ build_action("ToggleGraffitiMode",
269
+ initial_state: false,
270
+ update_state: lambda {@canvas.graffiti_mode?},
271
+ label: _("Graffiti mode")) do |action|
272
+ @canvas.toggle_graffiti_mode
273
+ action.update
274
+ end
275
+ build_action("ClearGraffiti",
276
+ update_enabled: lambda {graffiti_available?},
277
+ label: _("Clear graffiti"),
278
+ icon_name: "edit-clear") do
279
+ @canvas.clear_graffiti
280
+ end
281
+ build_action("UndoGraffiti",
282
+ update_enabled: lambda {graffiti_available?},
283
+ label: _("Undo graffiti"),
284
+ icon_name: "edit-undo") do
285
+ @canvas.undo_graffiti
286
+ end
287
+ build_action("ChangeGraffitiColor",
288
+ update_enabled: lambda {graffiti_available?},
289
+ label: _("Change graffiti color")) do
290
+ @canvas.change_graffiti_color
291
+ end
292
+ end
293
+
294
+ def build_content_actions
295
+ build_action("ClearSlide",
296
+ label: _("Clear slide"),
297
+ icon_name: "edit-clear") do
298
+ @canvas.clear_slide
299
+ end
300
+ build_action("ToggleIndexMode",
301
+ update_enabled: lambda {not @canvas.processing?},
302
+ update_state: lambda {@canvas.index_mode?},
303
+ label: _("Index mode")) do |action|
304
+ @canvas.toggle_index_mode
305
+ action.update
306
+ end
307
+ build_action("ToggleInfoWindow",
308
+ update_state: lambda {@canvas.info_window_showing?},
309
+ label: _("Information window")) do |action|
310
+ @canvas.toggle_info_window
311
+ action.update
312
+ end
313
+ build_action("ToggleTerminal",
314
+ update_state: lambda {@canvas.in_terminal?},
315
+ label: _("Terminal")) do
316
+ @canvas.toggle_terminal
317
+ end
318
+ build_action("ChangeBlankMode",
319
+ parameter_type: "s",
320
+ initial_state: "show",
321
+ label: _("Change blank mode")) do |action, parameter|
322
+ case parameter
323
+ when "show"
324
+ if @canvas.whiteouting?
325
+ @canvas.toggle_whiteout
326
+ elsif @canvas.blackouting?
327
+ @canvas.toggle_blackout
328
+ end
329
+ when "whiteout"
330
+ @canvas.toggle_whiteout
331
+ when "blackout"
332
+ @canvas.toggle_blackout
333
+ end
334
+ action.change_state(parameter)
335
+ end
336
+ build_action("ToggleWhiteout",
337
+ update_state: lambda {@canvas.whiteouting?},
338
+ label: _("Whiteout")) do
339
+ if @canvas.whiteouting?
340
+ self["ChangeBlankMode"]&.trigger("show")
341
+ else
342
+ self["ChangeBlankMode"]&.trigger("whiteout")
343
+ end
344
+ end
345
+ build_action("ToggleBlackout",
346
+ update_state: lambda {@canvas.blackouting?},
347
+ label: _("Blackout")) do
348
+ if @canvas.blackouting?
349
+ self["ChangeBlankMode"]&.trigger("show")
350
+ else
351
+ self["ChangeBlankMode"]&.trigger("blackout")
352
+ end
353
+ end
354
+ end
355
+
356
+ def build_hole_actions
357
+ build_action("ExpandHole",
358
+ label: _("Expand hole")) do
359
+ @canvas.expand_hole
360
+ end
361
+ build_action("NarrowHole",
362
+ label: _("Narrow hole")) do
363
+ @canvas.narrow_hole
364
+ end
365
+ end
366
+
367
+ def build_search_actions
368
+ build_action("SearchSlideForward",
369
+ update_enabled: lambda {not @canvas.searching?},
370
+ label: _("Search slide forward"),
371
+ icon_name: "system-search") do
372
+ @canvas.search_slide(true)
373
+ update_status
374
+ end
375
+ build_action("SearchSlideBackward",
376
+ update_enabled: lambda {not @canvas.searching?},
377
+ label: _("Search slide backward"),
378
+ icon_name: "system-search") do
379
+ @canvas.search_slide(false)
380
+ update_status
381
+ end
382
+ build_action("SearchSlideForwardNext",
383
+ update_enabled: lambda {@canvas.searching?},
384
+ label: _("Search slide forward next"),
385
+ icon_name: "system-search") do
386
+ @canvas.search_slide(true)
387
+ update_status
388
+ end
389
+ build_action("SearchSlideBackwardNext",
390
+ update_enabled: lambda {@canvas.searching?},
391
+ label: _("Search slide backward next"),
392
+ icon_name: "system-search") do
393
+ @canvas.search_slide(false)
394
+ update_status
395
+ end
396
+ build_action("StopSlideSearch",
397
+ update_enabled: lambda {@canvas.searching?},
398
+ label: _("Stop search slide"),
399
+ icon_name: "system-search") do
400
+ @canvas.stop_search_slide
401
+ update_status
402
+ end
403
+ end
404
+
405
+ def build_log_level_actions
406
+ initial_state = Logger::Severity.name(Rabbit.logger.level)
407
+ build_action("ChangeLogLevel",
408
+ parameter_type: "s",
409
+ initial_state: initial_state,
410
+ label: _("Change log level")) do |action, parameter|
411
+ Rabbit.logger.level = Logger::Severity.level(parameter)
412
+ action.change_state(parameter)
413
+ end
414
+ end
415
+
416
+ def build_quit_actions
417
+ build_action("Quit",
418
+ label: _("Quit"),
419
+ icon_name: "application-exit") do
420
+ if !@canvas.processing? or
421
+ @canvas.confirm(_("Now processing... Do you really quit?"))
422
+ @canvas.quit
423
+ end
424
+ end
425
+ end
426
+ end
427
+ end
@@ -0,0 +1,90 @@
1
+ # Copyright (C) 2012-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_relative "path-manipulatable"
18
+ require_relative "rabbit"
19
+ require_relative "yaml-loader"
20
+
21
+ module Rabbit
22
+ class AuthorConfiguration
23
+ include GetText
24
+ include PathManipulatable
25
+
26
+ attr_accessor :name, :email, :markup_language
27
+ attr_accessor :rubygems_user, :slideshare_user, :speaker_deck_user
28
+ def initialize
29
+ clear
30
+ end
31
+
32
+ def load
33
+ return unless File.exist?(path)
34
+ conf = YAMLLoader.load(File.read(path))
35
+ clear
36
+ merge!(conf)
37
+ rescue
38
+ format = _("Failed to read author configuration: %s: %s")
39
+ Rabbit.logger.error(format % [path, $!.message])
40
+ end
41
+
42
+ def save
43
+ create_directory(File.dirname(path))
44
+ create_file(path) do |conf_file|
45
+ conf_file.print(to_yaml)
46
+ end
47
+ rescue
48
+ format = _("Failed to write author configuration: %s: %s")
49
+ Rabbit.logger.error(format % [path, $!.message])
50
+ end
51
+
52
+ def clear
53
+ @markup_language = nil
54
+ @name = nil
55
+ @email = nil
56
+ @rubygems_user = nil
57
+ @slideshare_user = nil
58
+ @speaker_deck_user = nil
59
+ end
60
+
61
+ def merge!(conf)
62
+ @markup_language = conf["markup_language"] || @markup_language
63
+ @name = conf["name"] || @name
64
+ @email = conf["email"] || @email
65
+ @rubygems_user = conf["rubygems_user"] || @rubygems_user
66
+ @slideshare_user = conf["slideshare_user"] || @slideshare_user
67
+ @speaker_deck_user = conf["speaker_deck_user"] || @spearker_deck_user
68
+ end
69
+
70
+ def to_hash
71
+ {
72
+ "markup_language" => @markup_language,
73
+ "name" => @name,
74
+ "email" => @email,
75
+ "rubygems_user" => @rubygems_user,
76
+ "slideshare_user" => @slideshare_user,
77
+ "speaker_deck_user" => @speaker_deck_user,
78
+ }
79
+ end
80
+
81
+ def to_yaml
82
+ to_hash.to_yaml
83
+ end
84
+
85
+ private
86
+ def path
87
+ File.expand_path("~/.rabbit/author.yaml")
88
+ end
89
+ end
90
+ end