rabbit 0.6.2

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 (620) hide show
  1. data/COPYING +56 -0
  2. data/COPYING.ja +51 -0
  3. data/GPL +340 -0
  4. data/INSTALL.macosx-macports.en +75 -0
  5. data/INSTALL.macosx-macports.ja +101 -0
  6. data/INSTALL.win32.en +74 -0
  7. data/INSTALL.win32.ja +77 -0
  8. data/NEWS.en +337 -0
  9. data/NEWS.ja +338 -0
  10. data/README.en +836 -0
  11. data/README.ja +871 -0
  12. data/Rakefile +82 -0
  13. data/TODO +7 -0
  14. data/bin/rabbirc +86 -0
  15. data/bin/rabbit +759 -0
  16. data/bin/rabbit-command +95 -0
  17. data/bin/rabbit-theme-manager +133 -0
  18. data/bin/rabbit.bat +8 -0
  19. data/bin/rabrick +82 -0
  20. data/data/locale/en/LC_MESSAGES/rabbit.mo +0 -0
  21. data/data/locale/fr/LC_MESSAGES/rabbit.mo +0 -0
  22. data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
  23. data/data/rabbit/image/clear-blue-images/clear-blue-headline-background.png +0 -0
  24. data/data/rabbit/image/clear-blue-images/clear-blue-icon.png +0 -0
  25. data/data/rabbit/image/clear-blue-images/clear-blue-images.rb +0 -0
  26. data/data/rabbit/image/clear-blue-images/property.rb +4 -0
  27. data/data/rabbit/image/cozmixng-images/cozmixchu.png +0 -0
  28. data/data/rabbit/image/cozmixng-images/cozmixng-images.rb +2 -0
  29. data/data/rabbit/image/cozmixng-images/powered-by-cozmixng.png +0 -0
  30. data/data/rabbit/image/cozmixng-images/property.rb +4 -0
  31. data/data/rabbit/image/rabbit-images/blue-item.png +0 -0
  32. data/data/rabbit/image/rabbit-images/close-quote-blue.png +0 -0
  33. data/data/rabbit/image/rabbit-images/close-quote-brown.png +0 -0
  34. data/data/rabbit/image/rabbit-images/close-quote-light-blue.png +0 -0
  35. data/data/rabbit/image/rabbit-images/goal-flag.png +0 -0
  36. data/data/rabbit/image/rabbit-images/green-item.png +0 -0
  37. data/data/rabbit/image/rabbit-images/kame.png +0 -0
  38. data/data/rabbit/image/rabbit-images/lavie-icon.png +0 -0
  39. data/data/rabbit/image/rabbit-images/lavie-with-logo.png +0 -0
  40. data/data/rabbit/image/rabbit-images/lavie.png +0 -0
  41. data/data/rabbit/image/rabbit-images/mini-alice.png +0 -0
  42. data/data/rabbit/image/rabbit-images/mini-horizontal-bar.png +0 -0
  43. data/data/rabbit/image/rabbit-images/mini-kame-taro.png +0 -0
  44. data/data/rabbit/image/rabbit-images/mini-tanu-kitaro.png +0 -0
  45. data/data/rabbit/image/rabbit-images/mini-usa-taro.png +0 -0
  46. data/data/rabbit/image/rabbit-images/mini-usagi.png +0 -0
  47. data/data/rabbit/image/rabbit-images/mini-vertical-bar.png +0 -0
  48. data/data/rabbit/image/rabbit-images/mini-yukidaru-taro.png +0 -0
  49. data/data/rabbit/image/rabbit-images/open-quote-blue.png +0 -0
  50. data/data/rabbit/image/rabbit-images/open-quote-brown.png +0 -0
  51. data/data/rabbit/image/rabbit-images/open-quote-light-blue.png +0 -0
  52. data/data/rabbit/image/rabbit-images/property.rb +4 -0
  53. data/data/rabbit/image/rabbit-images/rabbit-banner-blue.png +0 -0
  54. data/data/rabbit/image/rabbit-images/rabbit-banner-green.png +0 -0
  55. data/data/rabbit/image/rabbit-images/rabbit-banner-heads.png +0 -0
  56. data/data/rabbit/image/rabbit-images/rabbit-banner-pink.png +0 -0
  57. data/data/rabbit/image/rabbit-images/rabbit-banner.png +0 -0
  58. data/data/rabbit/image/rabbit-images/rabbit-banner2.png +0 -0
  59. data/data/rabbit/image/rabbit-images/rabbit-images.rb +2 -0
  60. data/data/rabbit/image/rabbit-images/rabbit-pink-logo.png +0 -0
  61. data/data/rabbit/image/rabbit-images/rabbit-pink-logo2.png +0 -0
  62. data/data/rabbit/image/rabbit-images/red-item.png +0 -0
  63. data/data/rabbit/image/rabbit-images/red-item2.png +0 -0
  64. data/data/rabbit/image/rabbit-images/start-flag.png +0 -0
  65. data/data/rabbit/image/rabbit-images/tanu-kitaro.png +0 -0
  66. data/data/rabbit/image/rabbit-images/usa-taro.png +0 -0
  67. data/data/rabbit/image/rabbit-images/usagi.png +0 -0
  68. data/data/rabbit/image/rabbit-images/yukiusa.png +0 -0
  69. data/data/rabbit/image/ruby-images/property.rb +4 -0
  70. data/data/rabbit/image/ruby-images/ruby-images.rb +2 -0
  71. data/data/rabbit/image/ruby-images/ruby-pink-circle-icon.png +0 -0
  72. data/data/rabbit/image/ruby-images/ruby-pink-circle-logo.png +0 -0
  73. data/data/rabbit/image/ruby-images/ruby-pink-circle-small-icon.png +0 -0
  74. data/data/rabbit/image/ruby-images/ruby-pink-circle.png +0 -0
  75. data/data/rabbit/image/ruby-images/ruby-pink-polygon-icon.png +0 -0
  76. data/data/rabbit/image/ruby-images/ruby-pink-polygon-logo.png +0 -0
  77. data/data/rabbit/image/ruby-images/ruby-pink-polygon-small-icon.png +0 -0
  78. data/data/rabbit/image/ruby-images/ruby-pink-polygon.png +0 -0
  79. data/entities/README +10 -0
  80. data/entities/ent2rb.rb +57 -0
  81. data/entities/isoamsa.ent +167 -0
  82. data/entities/isoamsb.ent +143 -0
  83. data/entities/isoamsc.ent +43 -0
  84. data/entities/isoamsn.ent +114 -0
  85. data/entities/isoamso.ent +73 -0
  86. data/entities/isoamsr.ent +204 -0
  87. data/entities/isobox.ent +61 -0
  88. data/entities/isocyr1.ent +88 -0
  89. data/entities/isocyr2.ent +47 -0
  90. data/entities/isodia.ent +35 -0
  91. data/entities/isogrk3.ent +64 -0
  92. data/entities/isolat1.ent +83 -0
  93. data/entities/isolat2.ent +142 -0
  94. data/entities/isomfrk.ent +75 -0
  95. data/entities/isomopf.ent +49 -0
  96. data/entities/isomscr.ent +75 -0
  97. data/entities/isonum.ent +97 -0
  98. data/entities/isopub.ent +105 -0
  99. data/entities/isotech.ent +182 -0
  100. data/entities/mmlalias.ent +564 -0
  101. data/entities/mmlextra.ent +122 -0
  102. data/lib/rabbit/action.rb +143 -0
  103. data/lib/rabbit/action/basic.rb +304 -0
  104. data/lib/rabbit/action/radio.rb +78 -0
  105. data/lib/rabbit/action/toggle.rb +89 -0
  106. data/lib/rabbit/canvas.rb +760 -0
  107. data/lib/rabbit/comment-canvas.rb +21 -0
  108. data/lib/rabbit/comment/log.rb +74 -0
  109. data/lib/rabbit/console.rb +133 -0
  110. data/lib/rabbit/console/roff.rb +84 -0
  111. data/lib/rabbit/cursor-manager.rb +62 -0
  112. data/lib/rabbit/default-config.rb +16 -0
  113. data/lib/rabbit/dependency-canvas.rb +14 -0
  114. data/lib/rabbit/div/comment-i.erb +7 -0
  115. data/lib/rabbit/div/comment.erb +45 -0
  116. data/lib/rabbit/div/css.erb +1 -0
  117. data/lib/rabbit/div/js.erb +1 -0
  118. data/lib/rabbit/div/log.erb +5 -0
  119. data/lib/rabbit/div/main-i.erb +24 -0
  120. data/lib/rabbit/div/main.css +40 -0
  121. data/lib/rabbit/div/main.erb +33 -0
  122. data/lib/rabbit/div/navi-i.erb +6 -0
  123. data/lib/rabbit/div/navi.erb +6 -0
  124. data/lib/rabbit/div/prototype.js +4320 -0
  125. data/lib/rabbit/div/slide-i.erb +2 -0
  126. data/lib/rabbit/div/slide.erb +5 -0
  127. data/lib/rabbit/div/tofu.rb +309 -0
  128. data/lib/rabbit/element.rb +8 -0
  129. data/lib/rabbit/element/base.rb +499 -0
  130. data/lib/rabbit/element/base/draw-hook.rb +75 -0
  131. data/lib/rabbit/element/block-element.rb +38 -0
  132. data/lib/rabbit/element/block.rb +53 -0
  133. data/lib/rabbit/element/container-element.rb +254 -0
  134. data/lib/rabbit/element/description-list.rb +56 -0
  135. data/lib/rabbit/element/enum-list.rb +33 -0
  136. data/lib/rabbit/element/footnote.rb +32 -0
  137. data/lib/rabbit/element/image-title-slide.rb +18 -0
  138. data/lib/rabbit/element/image.rb +167 -0
  139. data/lib/rabbit/element/index-slide.rb +190 -0
  140. data/lib/rabbit/element/item-list.rb +31 -0
  141. data/lib/rabbit/element/method-list.rb +50 -0
  142. data/lib/rabbit/element/poppler-page.rb +36 -0
  143. data/lib/rabbit/element/poppler-slide.rb +25 -0
  144. data/lib/rabbit/element/poppler-title-slide.rb +23 -0
  145. data/lib/rabbit/element/preformatted.rb +27 -0
  146. data/lib/rabbit/element/slide-element.rb +97 -0
  147. data/lib/rabbit/element/slide.rb +51 -0
  148. data/lib/rabbit/element/table.rb +100 -0
  149. data/lib/rabbit/element/tag.rb +29 -0
  150. data/lib/rabbit/element/text-container-element.rb +104 -0
  151. data/lib/rabbit/element/text-element.rb +59 -0
  152. data/lib/rabbit/element/text-renderer.rb +321 -0
  153. data/lib/rabbit/element/text.rb +82 -0
  154. data/lib/rabbit/element/title-slide.rb +190 -0
  155. data/lib/rabbit/formatter.rb +143 -0
  156. data/lib/rabbit/frame.rb +275 -0
  157. data/lib/rabbit/front.rb +238 -0
  158. data/lib/rabbit/gesture/handler.rb +232 -0
  159. data/lib/rabbit/gesture/processor.rb +118 -0
  160. data/lib/rabbit/gettext.rb +90 -0
  161. data/lib/rabbit/graffiti/config-dialog.rb +57 -0
  162. data/lib/rabbit/graffiti/processor.rb +116 -0
  163. data/lib/rabbit/html/generator.rb +458 -0
  164. data/lib/rabbit/html/template.erb +109 -0
  165. data/lib/rabbit/image.rb +35 -0
  166. data/lib/rabbit/image/base.rb +104 -0
  167. data/lib/rabbit/image/default.rb +27 -0
  168. data/lib/rabbit/image/dia.rb +63 -0
  169. data/lib/rabbit/image/eps.rb +113 -0
  170. data/lib/rabbit/image/gimp.rb +53 -0
  171. data/lib/rabbit/image/pdf.rb +77 -0
  172. data/lib/rabbit/image/svg.rb +78 -0
  173. data/lib/rabbit/info-window.rb +160 -0
  174. data/lib/rabbit/keys.rb +190 -0
  175. data/lib/rabbit/logger.rb +14 -0
  176. data/lib/rabbit/logger/base.rb +129 -0
  177. data/lib/rabbit/logger/gui.rb +172 -0
  178. data/lib/rabbit/logger/stderr.rb +28 -0
  179. data/lib/rabbit/menu.rb +287 -0
  180. data/lib/rabbit/parser.rb +24 -0
  181. data/lib/rabbit/parser/base.rb +20 -0
  182. data/lib/rabbit/parser/ext/anthy.rb +43 -0
  183. data/lib/rabbit/parser/ext/enscript.rb +122 -0
  184. data/lib/rabbit/parser/ext/entity.rb +4178 -0
  185. data/lib/rabbit/parser/ext/escape.rb +18 -0
  186. data/lib/rabbit/parser/ext/image.rb +102 -0
  187. data/lib/rabbit/parser/ext/inline.rb +29 -0
  188. data/lib/rabbit/parser/ext/tex.rb +77 -0
  189. data/lib/rabbit/parser/image.rb +34 -0
  190. data/lib/rabbit/parser/pause-support.rb +32 -0
  191. data/lib/rabbit/parser/pdf.rb +35 -0
  192. data/lib/rabbit/parser/rd.rb +54 -0
  193. data/lib/rabbit/parser/rd/ext/anthy.rb +29 -0
  194. data/lib/rabbit/parser/rd/ext/base.rb +79 -0
  195. data/lib/rabbit/parser/rd/ext/block-verbatim.rb +103 -0
  196. data/lib/rabbit/parser/rd/ext/enscript.rb +24 -0
  197. data/lib/rabbit/parser/rd/ext/entity.rb +38 -0
  198. data/lib/rabbit/parser/rd/ext/image.rb +27 -0
  199. data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +89 -0
  200. data/lib/rabbit/parser/rd/ext/refer.rb +34 -0
  201. data/lib/rabbit/parser/rd/ext/tex.rb +24 -0
  202. data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +424 -0
  203. data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +83 -0
  204. data/lib/rabbit/parser/rd/visitor.rb +56 -0
  205. data/lib/rabbit/parser/wiki.rb +30 -0
  206. data/lib/rabbit/parser/wiki/output.rb +460 -0
  207. data/lib/rabbit/post-setup.rb +8 -0
  208. data/lib/rabbit/pre-clean.rb +2 -0
  209. data/lib/rabbit/pre-distclean.rb +2 -0
  210. data/lib/rabbit/progress.rb +68 -0
  211. data/lib/rabbit/rabbit.rb +222 -0
  212. data/lib/rabbit/renderer.rb +27 -0
  213. data/lib/rabbit/renderer/base.rb +512 -0
  214. data/lib/rabbit/renderer/color.rb +80 -0
  215. data/lib/rabbit/renderer/display.rb +25 -0
  216. data/lib/rabbit/renderer/display/base.rb +93 -0
  217. data/lib/rabbit/renderer/display/button-handler.rb +145 -0
  218. data/lib/rabbit/renderer/display/clutter-embed.rb +634 -0
  219. data/lib/rabbit/renderer/display/comment-drawing-area.rb +173 -0
  220. data/lib/rabbit/renderer/display/comment.rb +194 -0
  221. data/lib/rabbit/renderer/display/cursor.rb +34 -0
  222. data/lib/rabbit/renderer/display/drawing-area-base.rb +395 -0
  223. data/lib/rabbit/renderer/display/drawing-area-primitive.rb +219 -0
  224. data/lib/rabbit/renderer/display/drawing-area-view-only.rb +33 -0
  225. data/lib/rabbit/renderer/display/drawing-area.rb +31 -0
  226. data/lib/rabbit/renderer/display/gesture.rb +94 -0
  227. data/lib/rabbit/renderer/display/gl.rb +98 -0
  228. data/lib/rabbit/renderer/display/graffiti.rb +120 -0
  229. data/lib/rabbit/renderer/display/info.rb +45 -0
  230. data/lib/rabbit/renderer/display/key-handler.rb +303 -0
  231. data/lib/rabbit/renderer/display/magnifier.rb +123 -0
  232. data/lib/rabbit/renderer/display/mask.rb +68 -0
  233. data/lib/rabbit/renderer/display/menu.rb +30 -0
  234. data/lib/rabbit/renderer/display/progress.rb +62 -0
  235. data/lib/rabbit/renderer/display/search.rb +107 -0
  236. data/lib/rabbit/renderer/display/spotlight.rb +117 -0
  237. data/lib/rabbit/renderer/engine.rb +18 -0
  238. data/lib/rabbit/renderer/engine/cairo.rb +438 -0
  239. data/lib/rabbit/renderer/engine/gdk.rb +229 -0
  240. data/lib/rabbit/renderer/gl.rb +176 -0
  241. data/lib/rabbit/renderer/kernel.rb +256 -0
  242. data/lib/rabbit/renderer/pixmap.rb +25 -0
  243. data/lib/rabbit/renderer/pixmap/base.rb +127 -0
  244. data/lib/rabbit/renderer/pixmap/cairo.rb +23 -0
  245. data/lib/rabbit/renderer/pixmap/gdk.rb +29 -0
  246. data/lib/rabbit/renderer/pixmap/gl.rb +46 -0
  247. data/lib/rabbit/renderer/print.rb +31 -0
  248. data/lib/rabbit/renderer/print/base.rb +73 -0
  249. data/lib/rabbit/renderer/print/cairo.rb +130 -0
  250. data/lib/rabbit/renderer/print/layout.rb +123 -0
  251. data/lib/rabbit/renderer/print/multiple.rb +205 -0
  252. data/lib/rabbit/search-window.rb +99 -0
  253. data/lib/rabbit/searcher.rb +106 -0
  254. data/lib/rabbit/soap/base.rb +17 -0
  255. data/lib/rabbit/soap/driver.rb +45 -0
  256. data/lib/rabbit/soap/server.rb +33 -0
  257. data/lib/rabbit/source.rb +14 -0
  258. data/lib/rabbit/source/argf.rb +29 -0
  259. data/lib/rabbit/source/base.rb +164 -0
  260. data/lib/rabbit/source/file.rb +65 -0
  261. data/lib/rabbit/source/hiki.rb +36 -0
  262. data/lib/rabbit/source/memory.rb +41 -0
  263. data/lib/rabbit/source/rwiki.rb +54 -0
  264. data/lib/rabbit/source/slide-share.rb +53 -0
  265. data/lib/rabbit/source/uri.rb +73 -0
  266. data/lib/rabbit/stock.rb +31 -0
  267. data/lib/rabbit/theme-browser.rb +104 -0
  268. data/lib/rabbit/theme-browser/default-tag.yaml +89 -0
  269. data/lib/rabbit/theme-browser/document.rb +200 -0
  270. data/lib/rabbit/theme-browser/ext/block-verbatim.rb +39 -0
  271. data/lib/rabbit/theme-browser/page.rb +133 -0
  272. data/lib/rabbit/theme-browser/rd2document-lib.rb +181 -0
  273. data/lib/rabbit/theme-browser/tag.rb +67 -0
  274. data/lib/rabbit/theme-browser/tree.rb +91 -0
  275. data/lib/rabbit/theme/applier.rb +613 -0
  276. data/lib/rabbit/theme/auto-slide/auto-slide.rb +6 -0
  277. data/lib/rabbit/theme/auto-slide/property.rb +4 -0
  278. data/lib/rabbit/theme/base/base.rb +76 -0
  279. data/lib/rabbit/theme/base/property.rb +4 -0
  280. data/lib/rabbit/theme/blue-bar/blue-bar.rb +93 -0
  281. data/lib/rabbit/theme/blue-bar/property.rb +3 -0
  282. data/lib/rabbit/theme/blue-circle/blue-circle.rb +14 -0
  283. data/lib/rabbit/theme/blue-circle/property.rb +3 -0
  284. data/lib/rabbit/theme/centering-rabbit/centering-rabbit.rb +5 -0
  285. data/lib/rabbit/theme/centering-rabbit/property.rb +3 -0
  286. data/lib/rabbit/theme/clear-blue/clear-blue.rb +100 -0
  287. data/lib/rabbit/theme/clear-blue/property.rb +3 -0
  288. data/lib/rabbit/theme/clock/clock.rb +37 -0
  289. data/lib/rabbit/theme/clock/property.rb +21 -0
  290. data/lib/rabbit/theme/color-circle-block-quote/color-circle-block-quote.rb +26 -0
  291. data/lib/rabbit/theme/color-circle-block-quote/property.rb +4 -0
  292. data/lib/rabbit/theme/color-circle-common/color-circle-common.rb +48 -0
  293. data/lib/rabbit/theme/color-circle-common/property.rb +3 -0
  294. data/lib/rabbit/theme/color-circle-description/color-circle-description.rb +9 -0
  295. data/lib/rabbit/theme/color-circle-description/property.rb +4 -0
  296. data/lib/rabbit/theme/color-circle-foot-text/color-circle-foot-text.rb +14 -0
  297. data/lib/rabbit/theme/color-circle-foot-text/property.rb +4 -0
  298. data/lib/rabbit/theme/color-circle-item-mark/color-circle-item-mark.rb +77 -0
  299. data/lib/rabbit/theme/color-circle-item-mark/property.rb +4 -0
  300. data/lib/rabbit/theme/color-circle-method-list/color-circle-method-list.rb +8 -0
  301. data/lib/rabbit/theme/color-circle-method-list/property.rb +4 -0
  302. data/lib/rabbit/theme/color-circle-preformatted/color-circle-preformatted.rb +5 -0
  303. data/lib/rabbit/theme/color-circle-preformatted/property.rb +4 -0
  304. data/lib/rabbit/theme/color-circle-slide/color-circle-slide.rb +13 -0
  305. data/lib/rabbit/theme/color-circle-slide/property.rb +4 -0
  306. data/lib/rabbit/theme/color-circle-text/color-circle-text.rb +9 -0
  307. data/lib/rabbit/theme/color-circle-text/property.rb +4 -0
  308. data/lib/rabbit/theme/color-circle-title-slide/color-circle-title-slide.rb +27 -0
  309. data/lib/rabbit/theme/color-circle-title-slide/property.rb +4 -0
  310. data/lib/rabbit/theme/color-circle-title-text/color-circle-title-text.rb +7 -0
  311. data/lib/rabbit/theme/color-circle-title-text/property.rb +4 -0
  312. data/lib/rabbit/theme/color-circle/color-circle.rb +40 -0
  313. data/lib/rabbit/theme/color-circle/property.rb +4 -0
  314. data/lib/rabbit/theme/comment/comment.rb +5 -0
  315. data/lib/rabbit/theme/comment/property.rb +3 -0
  316. data/lib/rabbit/theme/cozmixng-powered-by/cozmixng-powered-by.rb +6 -0
  317. data/lib/rabbit/theme/cozmixng-powered-by/property.rb +7 -0
  318. data/lib/rabbit/theme/cozmixng/cozmixng.rb +55 -0
  319. data/lib/rabbit/theme/cozmixng/property.rb +3 -0
  320. data/lib/rabbit/theme/day-white/day-white.rb +14 -0
  321. data/lib/rabbit/theme/day-white/property.rb +3 -0
  322. data/lib/rabbit/theme/default-block-quote/default-block-quote.rb +113 -0
  323. data/lib/rabbit/theme/default-block-quote/property.rb +3 -0
  324. data/lib/rabbit/theme/default-description/default-description.rb +64 -0
  325. data/lib/rabbit/theme/default-description/property.rb +5 -0
  326. data/lib/rabbit/theme/default-foot-text/default-foot-text.rb +52 -0
  327. data/lib/rabbit/theme/default-foot-text/property.rb +3 -0
  328. data/lib/rabbit/theme/default-icon/default-icon.rb +4 -0
  329. data/lib/rabbit/theme/default-icon/property.rb +5 -0
  330. data/lib/rabbit/theme/default-item-mark-setup/default-item-mark-setup.rb +116 -0
  331. data/lib/rabbit/theme/default-item-mark-setup/property.rb +3 -0
  332. data/lib/rabbit/theme/default-item-mark/default-item-mark.rb +92 -0
  333. data/lib/rabbit/theme/default-item-mark/property.rb +4 -0
  334. data/lib/rabbit/theme/default-method-list/default-method-list.rb +6 -0
  335. data/lib/rabbit/theme/default-method-list/property.rb +3 -0
  336. data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +37 -0
  337. data/lib/rabbit/theme/default-preformatted/property.rb +3 -0
  338. data/lib/rabbit/theme/default-slide/default-slide.rb +33 -0
  339. data/lib/rabbit/theme/default-slide/property.rb +3 -0
  340. data/lib/rabbit/theme/default-text/default-text.rb +183 -0
  341. data/lib/rabbit/theme/default-text/property.rb +3 -0
  342. data/lib/rabbit/theme/default-title-slide/default-title-slide.rb +13 -0
  343. data/lib/rabbit/theme/default-title-slide/property.rb +6 -0
  344. data/lib/rabbit/theme/default-title-text/default-title-text.rb +48 -0
  345. data/lib/rabbit/theme/default-title-text/property.rb +3 -0
  346. data/lib/rabbit/theme/default/default.rb +22 -0
  347. data/lib/rabbit/theme/default/property.rb +3 -0
  348. data/lib/rabbit/theme/document.erb +35 -0
  349. data/lib/rabbit/theme/edge-info-toolkit/edge-info-toolkit.rb +77 -0
  350. data/lib/rabbit/theme/edge-info-toolkit/property.rb +3 -0
  351. data/lib/rabbit/theme/emphasize-keyword/emphasize-keyword.rb +16 -0
  352. data/lib/rabbit/theme/emphasize-keyword/property.rb +4 -0
  353. data/lib/rabbit/theme/entry.rb +121 -0
  354. data/lib/rabbit/theme/footer-logo/footer-logo.rb +30 -0
  355. data/lib/rabbit/theme/footer-logo/property.rb +26 -0
  356. data/lib/rabbit/theme/green-circle/green-circle.rb +14 -0
  357. data/lib/rabbit/theme/green-circle/property.rb +3 -0
  358. data/lib/rabbit/theme/headline-logo/headline-logo.rb +24 -0
  359. data/lib/rabbit/theme/headline-logo/property.rb +10 -0
  360. data/lib/rabbit/theme/icon/icon.rb +8 -0
  361. data/lib/rabbit/theme/icon/property.rb +24 -0
  362. data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +111 -0
  363. data/lib/rabbit/theme/image-slide-number/property.rb +64 -0
  364. data/lib/rabbit/theme/image-timer/image-timer.rb +109 -0
  365. data/lib/rabbit/theme/image-timer/property.rb +46 -0
  366. data/lib/rabbit/theme/image-viewer/image-viewer.rb +7 -0
  367. data/lib/rabbit/theme/image-viewer/property.rb +3 -0
  368. data/lib/rabbit/theme/image/image.rb +72 -0
  369. data/lib/rabbit/theme/image/property.rb +3 -0
  370. data/lib/rabbit/theme/lightning-clear-blue/lightning-clear-blue.rb +13 -0
  371. data/lib/rabbit/theme/lightning-clear-blue/property.rb +3 -0
  372. data/lib/rabbit/theme/lightning-rabbit/lightning-rabbit.rb +13 -0
  373. data/lib/rabbit/theme/lightning-rabbit/property.rb +3 -0
  374. data/lib/rabbit/theme/lightning-simple/lightning-simple.rb +60 -0
  375. data/lib/rabbit/theme/lightning-simple/property.rb +3 -0
  376. data/lib/rabbit/theme/lightning-talk-toolkit/lightning-talk-toolkit.rb +171 -0
  377. data/lib/rabbit/theme/lightning-talk-toolkit/property.rb +3 -0
  378. data/lib/rabbit/theme/lightning-talk/lightning-talk.rb +65 -0
  379. data/lib/rabbit/theme/lightning-talk/property.rb +3 -0
  380. data/lib/rabbit/theme/manager.rb +35 -0
  381. data/lib/rabbit/theme/mirror-effect/mirror-effect.rb +27 -0
  382. data/lib/rabbit/theme/mirror-effect/property.rb +3 -0
  383. data/lib/rabbit/theme/newline-in-slides/newline-in-slides.rb +3 -0
  384. data/lib/rabbit/theme/newline-in-slides/property.rb +4 -0
  385. data/lib/rabbit/theme/newline-in-title/newline-in-title.rb +7 -0
  386. data/lib/rabbit/theme/newline-in-title/property.rb +4 -0
  387. data/lib/rabbit/theme/night-black/night-black.rb +25 -0
  388. data/lib/rabbit/theme/night-black/property.rb +3 -0
  389. data/lib/rabbit/theme/pdf-tortoise-and-hare/pdf-tortoise-and-hare.rb +18 -0
  390. data/lib/rabbit/theme/pdf-tortoise-and-hare/property.rb +3 -0
  391. data/lib/rabbit/theme/pdf/pdf.rb +4 -0
  392. data/lib/rabbit/theme/pdf/property.rb +3 -0
  393. data/lib/rabbit/theme/powered-by/powered-by.rb +67 -0
  394. data/lib/rabbit/theme/powered-by/property.rb +24 -0
  395. data/lib/rabbit/theme/rabbit-block-quote/property.rb +4 -0
  396. data/lib/rabbit/theme/rabbit-block-quote/rabbit-block-quote.rb +16 -0
  397. data/lib/rabbit/theme/rabbit-headline-logo/property.rb +5 -0
  398. data/lib/rabbit/theme/rabbit-headline-logo/rabbit-headline-logo.rb +4 -0
  399. data/lib/rabbit/theme/rabbit-icon/property.rb +5 -0
  400. data/lib/rabbit/theme/rabbit-icon/rabbit-icon.rb +4 -0
  401. data/lib/rabbit/theme/rabbit-item-mark/property.rb +5 -0
  402. data/lib/rabbit/theme/rabbit-item-mark/rabbit-item-mark.rb +53 -0
  403. data/lib/rabbit/theme/rabbit-powered-by/property.rb +7 -0
  404. data/lib/rabbit/theme/rabbit-powered-by/rabbit-powered-by.rb +5 -0
  405. data/lib/rabbit/theme/rabbit-title-logo/property.rb +5 -0
  406. data/lib/rabbit/theme/rabbit-title-logo/rabbit-title-logo.rb +4 -0
  407. data/lib/rabbit/theme/rabbit/property.rb +3 -0
  408. data/lib/rabbit/theme/rabbit/rabbit.rb +63 -0
  409. data/lib/rabbit/theme/red-frame/property.rb +3 -0
  410. data/lib/rabbit/theme/red-frame/red-frame.rb +96 -0
  411. data/lib/rabbit/theme/rotate-zoom-effect/property.rb +4 -0
  412. data/lib/rabbit/theme/rotate-zoom-effect/rotate-zoom-effect.rb +51 -0
  413. data/lib/rabbit/theme/ruby-gnome2-description/property.rb +7 -0
  414. data/lib/rabbit/theme/ruby-gnome2-description/ruby-gnome2-description.rb +7 -0
  415. data/lib/rabbit/theme/ruby-gnome2-foot-text/property.rb +5 -0
  416. data/lib/rabbit/theme/ruby-gnome2-foot-text/ruby-gnome2-foot-text.rb +3 -0
  417. data/lib/rabbit/theme/ruby-gnome2-headline/property.rb +7 -0
  418. data/lib/rabbit/theme/ruby-gnome2-headline/ruby-gnome2-headline.rb +47 -0
  419. data/lib/rabbit/theme/ruby-gnome2-icon/property.rb +5 -0
  420. data/lib/rabbit/theme/ruby-gnome2-icon/ruby-gnome2-icon.rb +4 -0
  421. data/lib/rabbit/theme/ruby-gnome2-item-mark/property.rb +10 -0
  422. data/lib/rabbit/theme/ruby-gnome2-item-mark/ruby-gnome2-item-mark.rb +65 -0
  423. data/lib/rabbit/theme/ruby-gnome2-preformatted/property.rb +4 -0
  424. data/lib/rabbit/theme/ruby-gnome2-preformatted/ruby-gnome2-preformatted.rb +8 -0
  425. data/lib/rabbit/theme/ruby-gnome2-slide/property.rb +4 -0
  426. data/lib/rabbit/theme/ruby-gnome2-slide/ruby-gnome2-slide.rb +40 -0
  427. data/lib/rabbit/theme/ruby-gnome2/property.rb +3 -0
  428. data/lib/rabbit/theme/ruby-gnome2/ruby-gnome2.rb +61 -0
  429. data/lib/rabbit/theme/scroll-effect/property.rb +3 -0
  430. data/lib/rabbit/theme/scroll-effect/scroll-effect.rb +32 -0
  431. data/lib/rabbit/theme/searcher.rb +120 -0
  432. data/lib/rabbit/theme/show-frame/property.rb +16 -0
  433. data/lib/rabbit/theme/show-frame/show-frame.rb +17 -0
  434. data/lib/rabbit/theme/simple-item-mark/property.rb +5 -0
  435. data/lib/rabbit/theme/simple-item-mark/simple-item-mark.rb +112 -0
  436. data/lib/rabbit/theme/slide-background-image/property.rb +10 -0
  437. data/lib/rabbit/theme/slide-background-image/slide-background-image.rb +25 -0
  438. data/lib/rabbit/theme/slide-background/property.rb +6 -0
  439. data/lib/rabbit/theme/slide-background/slide-background.rb +3 -0
  440. data/lib/rabbit/theme/slide-footer-info/property.rb +43 -0
  441. data/lib/rabbit/theme/slide-footer-info/slide-footer-info.rb +42 -0
  442. data/lib/rabbit/theme/slide-header-info/property.rb +43 -0
  443. data/lib/rabbit/theme/slide-header-info/slide-header-info.rb +42 -0
  444. data/lib/rabbit/theme/slide-logo/property.rb +26 -0
  445. data/lib/rabbit/theme/slide-logo/slide-logo.rb +30 -0
  446. data/lib/rabbit/theme/slide-number/property.rb +21 -0
  447. data/lib/rabbit/theme/slide-number/slide-number.rb +28 -0
  448. data/lib/rabbit/theme/slide-show/property.rb +4 -0
  449. data/lib/rabbit/theme/slide-show/slide-show.rb +31 -0
  450. data/lib/rabbit/theme/table/property.rb +3 -0
  451. data/lib/rabbit/theme/table/table.rb +169 -0
  452. data/lib/rabbit/theme/timer/property.rb +3 -0
  453. data/lib/rabbit/theme/timer/timer.rb +63 -0
  454. data/lib/rabbit/theme/title-background-color/property.rb +10 -0
  455. data/lib/rabbit/theme/title-background-color/title-background-color.rb +17 -0
  456. data/lib/rabbit/theme/title-background-image/property.rb +11 -0
  457. data/lib/rabbit/theme/title-background-image/title-background-image.rb +25 -0
  458. data/lib/rabbit/theme/title-logo/property.rb +23 -0
  459. data/lib/rabbit/theme/title-logo/title-logo.rb +38 -0
  460. data/lib/rabbit/theme/title-on-image-toolkit/property.rb +3 -0
  461. data/lib/rabbit/theme/title-on-image-toolkit/title-on-image-toolkit.rb +122 -0
  462. data/lib/rabbit/theme/title-shadow/property.rb +11 -0
  463. data/lib/rabbit/theme/title-shadow/title-shadow.rb +33 -0
  464. data/lib/rabbit/trackball.rb +228 -0
  465. data/lib/rabbit/utils.rb +459 -0
  466. data/lib/rabbit/xmlrpc/base.rb +6 -0
  467. data/lib/rabbit/xmlrpc/client.rb +17 -0
  468. data/lib/rabbit/xmlrpc/server.rb +23 -0
  469. data/lib/rt/rt2html-lib.rb +157 -0
  470. data/lib/rt/rtparser.rb +226 -0
  471. data/lib/rt/rtvisitor.rb +68 -0
  472. data/lib/rwiki/soap/common.rb +5 -0
  473. data/lib/rwiki/soap/driver.rb +43 -0
  474. data/lib/rwiki/soap/servant.rb +78 -0
  475. data/misc/emacs/README.ja +177 -0
  476. data/misc/emacs/rabbit-mode.el +375 -0
  477. data/misc/make-image-sample.rb +94 -0
  478. data/misc/make-print-sample.rb +95 -0
  479. data/misc/update-rd.rb +78 -0
  480. data/misc/xyzzy/rabbit-mode.l +775 -0
  481. data/po/en/rabbit.po +2356 -0
  482. data/po/fr/rabbit.po +2452 -0
  483. data/po/ja/rabbit.po +2465 -0
  484. data/sample/asahina/alice.png +0 -0
  485. data/sample/asahina/yukiusa.png +0 -0
  486. data/sample/blue-circle.rd +37 -0
  487. data/sample/can_rabbit.rd +470 -0
  488. data/sample/cozmixng.rd +85 -0
  489. data/sample/cozmixng_is_field.png +0 -0
  490. data/sample/cozmixng_is_field.svg +430 -0
  491. data/sample/equation.eps +571 -0
  492. data/sample/gl-sample.rd +10 -0
  493. data/sample/html_and_wiki.png +0 -0
  494. data/sample/html_and_wiki.svg +275 -0
  495. data/sample/join_cozmixng.png +0 -0
  496. data/sample/join_cozmixng.svg +293 -0
  497. data/sample/kof2005/gesture-flow.svg +329 -0
  498. data/sample/kof2005/gesture.rb +473 -0
  499. data/sample/kof2005/gtk+-widget.svg +128 -0
  500. data/sample/kof2005/high-light-architecture.svg +203 -0
  501. data/sample/kof2005/high-light-expose.rb +120 -0
  502. data/sample/kof2005/high-light-expose.svg +153 -0
  503. data/sample/kof2005/high-light-widget.rb +147 -0
  504. data/sample/kof2005/high-light-widget.svg +172 -0
  505. data/sample/kof2005/high-light.svg +132 -0
  506. data/sample/kof2005/mask-screenshot.png +0 -0
  507. data/sample/kof2005/mask.rb +105 -0
  508. data/sample/kof2005/mask.svg +120 -0
  509. data/sample/kof2005/ruby-gnome2-logo.png +0 -0
  510. data/sample/kof2005/ruby-pink-circle-logo.png +0 -0
  511. data/sample/kof2005/skip-up-with-ruby-gnome2.rd +450 -0
  512. data/sample/kof2005/widget.svg +202 -0
  513. data/sample/kou/clear-blue-headline-background.svg +283 -0
  514. data/sample/kou/clear-blue-icon.svg +194 -0
  515. data/sample/kou/horizontal-bar.svg +82 -0
  516. data/sample/kou/quote.svg +497 -0
  517. data/sample/kou/vertical-bar.svg +70 -0
  518. data/sample/lavie.png +0 -0
  519. data/sample/lightning-talk.rd +50 -0
  520. data/sample/lldn/input.svg +269 -0
  521. data/sample/lldn/interface.svg +410 -0
  522. data/sample/lldn/kame.png +0 -0
  523. data/sample/lldn/lavie.png +0 -0
  524. data/sample/lldn/lldn.rd +212 -0
  525. data/sample/lldn/output.svg +284 -0
  526. data/sample/lldn/rabbit-rwiki.svg +353 -0
  527. data/sample/lldn/rabbit_banner.png +0 -0
  528. data/sample/lldn/rabbit_banner2.png +0 -0
  529. data/sample/m17n.rd +138 -0
  530. data/sample/momo/banner/bn1.png +0 -0
  531. data/sample/momo/banner/bn2.png +0 -0
  532. data/sample/momo/banner/bn_psd.psd +0 -0
  533. data/sample/momo/banner/bn_psd2.psd +0 -0
  534. data/sample/momo/tailavi/tailavi-ruby.png +0 -0
  535. data/sample/momo/tailavi/tailavi-ruby.psd +0 -0
  536. data/sample/momo/tailavi/tailavi-taiyaki.png +0 -0
  537. data/sample/momo/tailavi/tailavi-taiyaki.psd +0 -0
  538. data/sample/momo/tailavi/tailavi-yokubari.png +0 -0
  539. data/sample/momo/tailavi/tailavi-yokubari.psd +0 -0
  540. data/sample/momo/tailavi/taiyaki.png +0 -0
  541. data/sample/momo/tailavi/taiyaki.psd +0 -0
  542. data/sample/momo/usako/blue_dot.png +0 -0
  543. data/sample/momo/usako/green_dot.png +0 -0
  544. data/sample/momo/usako/rabbit.png +0 -0
  545. data/sample/momo/usako/rabbit_mimi.png +0 -0
  546. data/sample/momo/usako/rabbit_mimi2.png +0 -0
  547. data/sample/momo/usako/red_dot.png +0 -0
  548. data/sample/momo/usako/ruby.png +0 -0
  549. data/sample/momo/usako/ruby_new.png +0 -0
  550. data/sample/momo/usako/usa1.png +0 -0
  551. data/sample/momo/usako/usa2.png +0 -0
  552. data/sample/momo/usako/usa3.png +0 -0
  553. data/sample/momo/usako/usako_psd.psd +0 -0
  554. data/sample/momo/usako/usako_psd_100.png +0 -0
  555. data/sample/momo/usako/usako_psd_200.png +0 -0
  556. data/sample/ppt/hare-and-tortoise-end.png +0 -0
  557. data/sample/ppt/hare-and-tortoise-middle.png +0 -0
  558. data/sample/ppt/hare-and-tortoise-start.png +0 -0
  559. data/sample/ppt/ppt.rd +207 -0
  560. data/sample/ppt/rabbit-with-ruby.png +0 -0
  561. data/sample/pre.rd +112 -0
  562. data/sample/rabbit-balloon.eps +233 -0
  563. data/sample/rabbit-balloon.obj +93 -0
  564. data/sample/rabbit-en.rd +376 -0
  565. data/sample/rabbit-history.svg +280 -0
  566. data/sample/rabbit-implementation.rd +187 -0
  567. data/sample/rabbit.dia +408 -0
  568. data/sample/rabbit.hiki +328 -0
  569. data/sample/rabbit.rd +383 -0
  570. data/sample/rabbit.xcf +0 -0
  571. data/sample/rabbit/theme/festival/festival.rb +6 -0
  572. data/sample/rabbit/theme/gl-sample/gl-sample.rb +29 -0
  573. data/sample/rabbit/theme/image-with-frame/image-with-frame.rb +2 -0
  574. data/sample/rabbit/theme/image-with-no-shadow-frame/image-with-no-shadow-frame.rb +3 -0
  575. data/sample/rabbit/theme/image-without-frame/image-without-frame.rb +2 -0
  576. data/sample/rabbit/theme/kof2005/kof2005.rb +9 -0
  577. data/sample/rabbit/theme/kof2005/property.rb +3 -0
  578. data/sample/rabbit/theme/lightning-talk-with-contact/lightning-talk-with-contact.rb +6 -0
  579. data/sample/rabbit/theme/lldn/lldn.rb +20 -0
  580. data/sample/rabbit/theme/pdf/pdf.rb +16 -0
  581. data/sample/rabbit/theme/pdf/property.rb +4 -0
  582. data/sample/rabbit/theme/ppt/ppt.rb +5 -0
  583. data/sample/rabbit/theme/rabbit-and-tortoise/rabbit-and-tortoise.rb +11 -0
  584. data/sample/rabbit/theme/rectangle-image-slide-number/rectangle-image-slide-number.rb +4 -0
  585. data/sample/rabbit/theme/stop-auto-slide/stop-auto-slide.rb +2 -0
  586. data/sample/rabbit/theme/triangle-image-slide-number/triangle-image-slide-number.rb +5 -0
  587. data/sample/rabbit_icon.ico +0 -0
  588. data/sample/rabbit_icon.png +0 -0
  589. data/sample/shocker.jpg +0 -0
  590. data/sample/slide-property.hiki +14 -0
  591. data/sample/slide-property.rab +18 -0
  592. data/sample/sode/kame-color.riff +0 -0
  593. data/sample/sode/kame.riff +0 -0
  594. data/sample/spiral.svg +29 -0
  595. data/sample/table-en.rd +55 -0
  596. data/sample/table.rd +55 -0
  597. data/sample/theme-bench-en.rab +127 -0
  598. data/sample/theme-bench.rab +128 -0
  599. data/sample/usagi.png +0 -0
  600. data/sample/usatti/kame-taro.png +0 -0
  601. data/sample/usatti/rabbit-pink-logo.png +0 -0
  602. data/sample/usatti/rabbit-pink-logo2.png +0 -0
  603. data/sample/usatti/ruby-pink-circle-logo.png +0 -0
  604. data/sample/usatti/ruby-pink-circle.png +0 -0
  605. data/sample/usatti/ruby-pink-polygon-logo.png +0 -0
  606. data/sample/usatti/ruby-pink-polygon.png +0 -0
  607. data/sample/usatti/tanu-kitaro.png +0 -0
  608. data/sample/usatti/usa-taro.png +0 -0
  609. data/sample/usatti/yukidaru-taro.png +0 -0
  610. data/setup.rb +1585 -0
  611. data/test/rabbit-test-utils.rb +24 -0
  612. data/test/run-test.rb +11 -0
  613. data/test/test_applier.rb +42 -0
  614. data/test/test_color.rb +42 -0
  615. data/test/test_element.rb +91 -0
  616. data/test/test_source.rb +47 -0
  617. data/test/test_utils.rb +50 -0
  618. data/update-mo.rb +20 -0
  619. data/update-po.rb +57 -0
  620. metadata +703 -0
data/Rakefile ADDED
@@ -0,0 +1,82 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'find'
4
+ require 'rubygems'
5
+ require 'hoe'
6
+
7
+ base_dir = File.expand_path(File.dirname(__FILE__))
8
+ $LOAD_PATH.unshift(File.join(base_dir, 'lib'))
9
+ require 'rabbit/rabbit'
10
+
11
+ truncate_base_dir = Proc.new do |x|
12
+ x.gsub(/\A#{Regexp.escape(base_dir + File::SEPARATOR)}/, '')
13
+ end
14
+
15
+ manifest = File.join(base_dir, "Manifest.txt")
16
+ manifest_contents = []
17
+ base_dir_included_components = %w(COPYING COPYING.ja GPL Manifest.txt
18
+ INSTALL.macosx-macports.en
19
+ INSTALL.macosx-macports.ja
20
+ INSTALL.win32.en
21
+ INSTALL.win32.ja
22
+ NEWS.en
23
+ NEWS.ja
24
+ README.en
25
+ README.ja
26
+ Rakefile TODO setup.rb
27
+ update-mo.rb update-po.rb)
28
+ excluded_components = %w(.svn .test-result .tmp doc log tmp pkg config.rb)
29
+ excluded_suffixes = %w(.po~)
30
+ white_list_paths = []
31
+ Find.find(base_dir + File::SEPARATOR) do |target|
32
+ target = truncate_base_dir[target]
33
+ components = target.split(File::SEPARATOR)
34
+ next if components.empty?
35
+ if components.size == 1 and !File.directory?(target)
36
+ next unless base_dir_included_components.include?(components[0])
37
+ end
38
+ unless white_list_paths.include?(target)
39
+ Find.prune if (excluded_components - components) != excluded_components
40
+ next if /~\z/ =~ target
41
+ next if excluded_suffixes.include?(File.extname(target))
42
+ end
43
+ manifest_contents << target if File.file?(target)
44
+ end
45
+
46
+ File.open(manifest, "w") do |f|
47
+ f.puts manifest_contents.sort.join("\n")
48
+ end
49
+ at_exit do
50
+ FileUtils.rm_f(manifest)
51
+ end
52
+
53
+ ENV["VERSION"] = Rabbit::VERSION
54
+ project = Hoe.spec('rabbit') do
55
+ self.version = Rabbit::VERSION
56
+ self.rubyforge_name = 'rabbit'
57
+ self.author = ['Kouhei Sutou']
58
+ self.email = ['kou@cozmixng.org']
59
+ self.summary = 'Rabbit is an RD-document-based presentation application.'
60
+ self.url = 'http://www.cozmixng.org/~rwiki/?cmd=view;name=Rabbit'
61
+ self.test_globs = ['test/test_*.rb']
62
+ self.changes = File.read('NEWS.en').split(/^== /)[1].gsub(/^==/, '').strip
63
+ self.extra_deps = [
64
+ ['hikidoc'],
65
+ # ['gettext'],
66
+ ]
67
+ self.description = self.summary # FIXME
68
+ end
69
+
70
+ rule '.png' => ['.svg'] do |t|
71
+ sh("inkscape", "--export-png", t.name, t.source)
72
+ end
73
+
74
+ ["icon", "headline-background"].each do |base_name|
75
+ full_base_name = "clear-blue-#{base_name}"
76
+ png = "data/rabbit/image/clear-blue-images/#{full_base_name}.png"
77
+ svg = "sample/kou/#{full_base_name}.svg"
78
+ task :images => png
79
+ file png => svg do |t|
80
+ sh("inkscape", "--export-png", t.name, *t.prerequisites)
81
+ end
82
+ end
data/TODO ADDED
@@ -0,0 +1,7 @@
1
+ * [BUG]: PDF slide doesn't scale???
2
+ * improve Clutter support.
3
+ * support GStreamer.
4
+ * support MeCab for clever wrapping.
5
+ * support SilverCity or CodeRay.
6
+ * [nori] write manpage (converted from something like RD or DocBook XML).
7
+ * support GooCanvas.
data/bin/rabbirc ADDED
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- ruby -*-
3
+
4
+ require 'rubygems'
5
+ require 'net/irc'
6
+ require 'drb'
7
+ require 'nkf'
8
+ require "optparse"
9
+ require "ostruct"
10
+
11
+ class RabbIRC < Net::IRC::Client
12
+ def initialize(*args)
13
+ super
14
+ @rabbit = DRb::DRbObject.new_with_uri(@opts.rabbit_uri)
15
+ end
16
+
17
+ def on_rpl_welcome(m)
18
+ super
19
+ @opts.join_to.each do |channel|
20
+ post(JOIN, channel)
21
+ end
22
+ end
23
+
24
+ def on_privmsg(m)
25
+ channel, message = *m
26
+ if @opts.join_to.include?(channel)
27
+ begin
28
+ @rabbit.append_comment(NKF.nkf('-w', message))
29
+ rescue DRb::DRbConnError
30
+ @log.error("RABBIT: #{$!.message} (#{$!.class})")
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ options = OpenStruct.new
37
+ options.server = "irc.freenode.net"
38
+ options.port = 6667
39
+ options.nick = 'rabbirc'
40
+ options.user = ENV['USER'] || ENV['USERNAME']
41
+ options.real = "rabbirc bot"
42
+ options.channels = ['#rabbirc']
43
+ options.rabbit_uri = 'druby://localhost:10101'
44
+
45
+ opts = OptionParser.new do |opts|
46
+ opts.on("--server=SERVER", "IRC server (#{options.server})") do |server|
47
+ options.server = server
48
+ end
49
+
50
+ opts.on("--port=PORT", Integer, "IRC port (#{options.port})") do |port|
51
+ options.port = port
52
+ end
53
+
54
+ opts.on("--nick=NAME", "IRC nick name (#{options.nick})") do |nick|
55
+ options.nick = nick
56
+ end
57
+
58
+ opts.on("--user=NAME", "IRC user name (#{options.user})") do |user|
59
+ options.user = user
60
+ end
61
+
62
+ opts.on("--real=NAME", "IRC real name (#{options.real})") do |real|
63
+ options.real = real
64
+ end
65
+
66
+ opts.on("--channels=CHANNEL1,CHANNEL2,...", Array,
67
+ "IRC channels to join specified as comma separated list",
68
+ "(#{options.channels.inspect})") do |channels|
69
+ options.channels = channels
70
+ end
71
+
72
+ opts.on("--rabbit-uri=URI",
73
+ "Rabbit's dRuby URI(#{options.rabbit_uri})") do |uri|
74
+ options.rabbit_uri = uri
75
+ end
76
+ end
77
+
78
+ opts.parse!(ARGV)
79
+
80
+ rabbirc = RabbIRC.new(options.server, options.port,
81
+ :nick => options.nick,
82
+ :user => options.user,
83
+ :real => options.real,
84
+ :join_to => options.channels,
85
+ :rabbit_uri => options.rabbit_uri)
86
+ rabbirc.start
data/bin/rabbit ADDED
@@ -0,0 +1,759 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- ruby -*-
3
+
4
+ GC.disable
5
+ require "rbconfig"
6
+
7
+ require "rabbit/console"
8
+ require "rabbit/source"
9
+ require "rabbit/renderer"
10
+ require "rabbit/front"
11
+
12
+ def parse_args(args=ARGV, logger=nil)
13
+ Rabbit::Console.parse!(args, logger) do |opts, options|
14
+ options.theme = "default"
15
+ options.theme_specified = false
16
+ options.base = nil
17
+ options.source_type = Rabbit::Source::File
18
+ options.full_screen = false
19
+ options.index_mode = false
20
+ options.geometry = nil
21
+ options.width = 800
22
+ options.height = 600
23
+ options.paper_width = nil
24
+ options.paper_height = nil
25
+ options.save_as_image = false
26
+ options.saved_image_base_name = nil
27
+ options.saved_image_type = "png"
28
+ options.output_html = false
29
+ options.output_index_html = false
30
+ options.rss_base_uri = nil
31
+ options.encoding = nil
32
+ options.print = false
33
+ options.print_out_filename = nil
34
+ options.slides_per_page = 1
35
+ options.margin_left = nil
36
+ options.margin_right = nil
37
+ options.margin_top = nil
38
+ options.margin_bottom = nil
39
+ options.page_margin_left = nil
40
+ options.page_margin_right = nil
41
+ options.page_margin_top = nil
42
+ options.page_margin_bottom = nil
43
+ options.use_druby = true
44
+ options.druby_uri = "druby://:10101"
45
+ options.output_druby_uri = false
46
+ options.use_soap = false
47
+ options.soap_host = "0.0.0.0"
48
+ options.soap_port = 10103
49
+ options.use_xmlrpc = false
50
+ options.xmlrpc_host = "0.0.0.0"
51
+ options.xmlrpc_port = 10104
52
+ options.server = false
53
+ options.default_public_level = "strict"
54
+ options.public_level = nil
55
+ options.comment_source = nil
56
+ options.comment_encoding = nil
57
+ options.migemo_dictionary_search_path = [
58
+ File.join(Config::CONFIG["prefix"], "share"),
59
+ File.join("", "usr", "local", "share"),
60
+ File.join("", "usr", "share"),
61
+ ].uniq
62
+ options.migemo_dictionary_name = "migemo-dict"
63
+ options.use_gl = false
64
+ options.show_native_window_id = false
65
+
66
+
67
+ opts.banner = "#{opts.banner} [SOURCE_INFOS]"
68
+
69
+ opts.category _("Theme")
70
+
71
+ opts.on("-I", "--include=PATH",
72
+ _("Add [PATH] to load path.")) do |path|
73
+ $LOAD_PATH.unshift(path)
74
+ end
75
+
76
+ opts.on("-t", "--theme=THEME",
77
+ _("Use [THEME] as theme."),
78
+ "(#{options.theme})") do |theme|
79
+ options.theme = theme
80
+ options.theme_specified = true
81
+ end
82
+
83
+
84
+ opts.category _("Source")
85
+
86
+ source_type_names = Rabbit::Source.types.collect do |x|
87
+ Rabbit::Console.get_last_name(x).downcase
88
+ end
89
+ source_type_descs = Rabbit::Source.types.collect do |x|
90
+ message = _("When select %s\nspecify %s\nas [SOURCE_INFOS].")
91
+ type = Rabbit::Console.get_last_name(x)
92
+ message = message % [type, _(x.initial_args_description)]
93
+ message.split(/\n/) + [" "]
94
+ end.flatten
95
+ opts.on("-T", "--type=TYPE",
96
+ source_type_names,
97
+ _("Specify source type as [TYPE]."),
98
+ _("Select from [%s].") % source_type_names.join(', '),
99
+ _("Note: case insensitive."),
100
+ "(#{Rabbit::Console.get_last_name(options.source_type)})",
101
+ _("(ARGV: if no filename is given)"),
102
+ " ",
103
+ *source_type_descs) do |source_type|
104
+ options.source_type = Rabbit::Source.types.find do |t|
105
+ Rabbit::Console.get_last_name(t).downcase == source_type.downcase
106
+ end
107
+ end
108
+
109
+ opts.on("-e", "--encoding=ENCODING",
110
+ _("Specify source encoding as [ENCODING]."),
111
+ _("(auto)")) do |encoding|
112
+ options.encoding = encoding
113
+ end
114
+
115
+ opts.on("-B", "--base=BASE",
116
+ _("Specify base URI or path of source as [BASE]."),
117
+ _("(auto)")) do |base|
118
+ options.base = base
119
+ end
120
+
121
+
122
+ opts.category _("Initial state")
123
+
124
+ opts.on("-f", "--[no-]full-screen",
125
+ _("Toggle full screen mode."),
126
+ "(#{options.full_screen ? 'on' : 'off'})") do |bool|
127
+ options.full_screen = bool
128
+ end
129
+
130
+ opts.on("--[no-]index-mode",
131
+ _("Toggle index mode."),
132
+ "(#{options.index_mode ? 'on' : 'off'})") do |bool|
133
+ options.index_mode = bool
134
+ end
135
+
136
+
137
+ opts.category _("Size")
138
+
139
+ opts.on("-g", "--geometry=GEOMETRY",
140
+ _("Set window geometry [GEOMETRY]."),
141
+ _("Format: WIDTHxHEIGHT+X+Y"),
142
+ "(#{options.geometry.inspect})") do |geometry|
143
+ options.geometry = geometry
144
+ end
145
+
146
+ opts.on("-w", "--width=WIDTH",
147
+ Integer,
148
+ _("Set window width to [WIDTH]."),
149
+ "(#{options.width})") do |width|
150
+ options.width = width
151
+ end
152
+
153
+ opts.on("-h", "--height=HEIGHT",
154
+ Integer,
155
+ _("Set window height to [HEIGHT]."),
156
+ "(#{options.height})") do |height|
157
+ options.height = height
158
+ end
159
+
160
+ message = _("Set window width and height to\n" \
161
+ "[WIDTH] and [HEIGHT].")
162
+ message = message.split(/\n/) + ["(#{options.width},#{options.height})"]
163
+ opts.on("-S", "--size=WIDTH,HEIGHT",
164
+ Array,
165
+ *message) do |size|
166
+ width, height = size.collect{|x| Integer(x)}
167
+ options.width = width
168
+ options.height = height
169
+ end
170
+
171
+
172
+ opts.category _("Save")
173
+
174
+ opts.on("-s", "--save-as-image",
175
+ _("Save as image and exit.")) do
176
+ options.save_as_image = true
177
+ end
178
+
179
+ opts.on("-i", "--saved-image-type=TYPE",
180
+ _("Specify saved image type as [TYPE]."),
181
+ "(#{options.saved_image_type})") do |t|
182
+ options.saved_image_type = t
183
+ end
184
+
185
+ opts.on("-b", "--saved-image-base-name=BASE_NAME",
186
+ "--saved-image-basename=BASE_NAME",
187
+ _("Specify saved image base name as [BASE_NAME]."),
188
+ "(" + _("Title of slide") + ")") do |b|
189
+ options.saved_image_base_name = b
190
+ end
191
+
192
+ opts.on("--[no-]output-html",
193
+ _("Output HTML for viewing saved images."),
194
+ "(#{options.output_html})") do |bool|
195
+ options.output_html = bool
196
+ end
197
+
198
+ opts.on("--[no-]output-index-html",
199
+ _("Output index HTML for navigating slides."),
200
+ "(#{options.output_index_html})") do |bool|
201
+ options.output_index_html = bool
202
+ end
203
+
204
+ opts.on("--rss-base-uri=URI",
205
+ _("Specify base URI of RSS as [URI]."),
206
+ _("RSS is generated only when HTML is output."),
207
+ "(#{options.rss_base_uri})") do |uri|
208
+ options.rss_base_uri = uri
209
+ end
210
+
211
+ opts.category _("Print")
212
+
213
+ opts.on("-p", "--print",
214
+ _("Print and exit.")) do
215
+ options.print = true
216
+ end
217
+
218
+ opts.on("-o", "--output-filename=FILENAME",
219
+ _("Specify printed out filename as [FILENAME]."),
220
+ "(\#{%s}.pdf)" % _("Title of slide")) do |f|
221
+ options.print_out_filename = f
222
+ end
223
+
224
+ opts.on("--slides-per-page=SLIDES",
225
+ Integer,
226
+ _("Set slides per page."),
227
+ "(1)") do |slides|
228
+ options.slides_per_page = slides
229
+ end
230
+
231
+
232
+ opts.category _("Paper")
233
+
234
+ opts.on("--paper-width=WIDTH",
235
+ Integer,
236
+ _("Set paper width to [WIDTH] Pt."),
237
+ _("(landscape A4 width)")) do |width|
238
+ options.paper_width = width
239
+ end
240
+
241
+ opts.on("--paper-height=HEIGHT",
242
+ Integer,
243
+ _("Set paper height to [HEIGHT] Pt."),
244
+ _("(landscape A4 height)")) do |height|
245
+ options.paper_height = height
246
+ end
247
+
248
+ message = _("Set paper width and height to\n" \
249
+ "[WIDTH] Pt and [HEIGHT] Pt.")
250
+ message = message.split(/\n/) + [_("(landscape A4 size)")]
251
+ opts.on("--paper-size=WIDTH,HEIGHT",
252
+ Array,
253
+ *message) do |size|
254
+ width, height = size.collect{|x| Integer(x)}
255
+ options.paper_width = width
256
+ options.paper_height = height
257
+ end
258
+
259
+
260
+ opts.category _("Margin")
261
+
262
+ opts.on("--margin-left=MARGIN",
263
+ Integer,
264
+ _("Set left margin for slides per page mode print."),
265
+ _("(auto)")) do |margin|
266
+ options.margin_left = margin
267
+ end
268
+
269
+ opts.on("--margin-right=MARGIN",
270
+ Integer,
271
+ _("Set right margin for slides per page mode print."),
272
+ _("(auto)")) do |margin|
273
+ options.margin_right = margin
274
+ end
275
+
276
+ opts.on("--margin-top=MARGIN",
277
+ Integer,
278
+ _("Set top margin for slides per page mode print."),
279
+ _("(auto)")) do |margin|
280
+ options.margin_top = margin
281
+ end
282
+
283
+ opts.on("--margin-bottom=MARGIN",
284
+ Integer,
285
+ _("Set bottom margin for slides per page mode print."),
286
+ _("(auto)")) do |margin|
287
+ options.margin_bottom = margin
288
+ end
289
+
290
+ margin1 = _("[ALL]")
291
+ margin2 = _("[TOP_BOTTOM],[LEFT_RIGHT]")
292
+ margin3 = _("[TOP],[LEFT_RIGHT],[BOTTOM]")
293
+ margin4 = _("[TOP],[RIGHT],[BOTTOM],[LEFT]")
294
+ opts.on("--margin={#{margin1}|#{margin2}|#{margin3}|#{margin4}}",
295
+ Array,
296
+ _("Set margin for slides per page mode print.")) do |margins|
297
+ begin
298
+ top, right, bottom, left = Rabbit::Utils.parse_four_way(margins)
299
+ options.margin_top = top
300
+ options.margin_right = right
301
+ options.margin_bottom = bottom
302
+ options.margin_left = left
303
+ rescue ArgumentError
304
+ raise OptionParser::InvalidArgument.new(margins)
305
+ end
306
+ end
307
+
308
+ opts.on("--page-margin-left=MARGIN",
309
+ Integer,
310
+ _("Set left page margin."),
311
+ _("(auto)")) do |margin|
312
+ options.page_margin_left = margin
313
+ end
314
+
315
+ opts.on("--page-margin-right=MARGIN",
316
+ Integer,
317
+ _("Set right page margin."),
318
+ _("(auto)")) do |margin|
319
+ options.page_margin_right = margin
320
+ end
321
+
322
+ opts.on("--page-margin-top=MARGIN",
323
+ Integer,
324
+ _("Set top page margin."),
325
+ _("(auto)")) do |margin|
326
+ options.page_margin_top = margin
327
+ end
328
+
329
+ opts.on("--page-margin-bottom=MARGIN",
330
+ Integer,
331
+ _("Set bottom page margin."),
332
+ _("(auto)")) do |margin|
333
+ options.page_margin_bottom = margin
334
+ end
335
+
336
+ opts.on("--page-margin={#{margin1}|#{margin2}|#{margin3}|#{margin4}}",
337
+ Array,
338
+ _("Set page margin.")) do |margins|
339
+ begin
340
+ top, right, bottom, left = Utils.parse_four_dimensions(margins)
341
+ options.page_margin_top = top
342
+ options.page_margin_right = right
343
+ options.page_margin_bottom = bottom
344
+ options.page_margin_left = left
345
+ rescue ArgumentError
346
+ raise OptionParser::InvalidArgument.new(margins)
347
+ end
348
+ end
349
+
350
+ opts.category _("dRuby")
351
+
352
+ opts.on("--[no-]use-druby",
353
+ _("Specify whether to use dRuby."),
354
+ "(#{options.use_druby})") do |bool|
355
+ options.use_druby = bool
356
+ end
357
+
358
+ opts.on("--druby-uri=URI",
359
+ _("Specify dRuby URI."),
360
+ "(#{options.druby_uri})") do |uri|
361
+ options.druby_uri = uri if uri
362
+ end
363
+
364
+ opts.on("--[no-]output-druby-uri",
365
+ _("Specify whether to output dRuby URI."),
366
+ "(#{options.output_druby_uri})") do |bool|
367
+ options.output_druby_uri = bool
368
+ end
369
+
370
+ opts.category _("SOAP")
371
+
372
+ opts.on("--[no-]use-soap",
373
+ _("Specify whether to use SOAP."),
374
+ "(#{options.use_soap})") do |bool|
375
+ options.use_soap = bool
376
+ end
377
+
378
+ opts.on("--soap-host=HOST",
379
+ _("Specify SOAP host as [HOST]."),
380
+ "(#{options.soap_host})") do |port|
381
+ begin
382
+ options.soap_host = host
383
+ end
384
+ end
385
+
386
+ opts.on("--soap-port=PORT",
387
+ _("Specify SOAP port as [PORT]."),
388
+ "(#{options.soap_port})") do |port|
389
+ begin
390
+ options.soap_port = Integer(port) if port
391
+ rescue ArgumentError
392
+ raise OptionParser::InvalidArgument.new(port)
393
+ end
394
+ end
395
+
396
+ opts.category _("XML-RPC")
397
+
398
+ opts.on("--[no-]use-xmlrpc",
399
+ _("Specify whether to use XML-RPC."),
400
+ "(#{options.use_xmlrpc})") do |bool|
401
+ options.use_xmlrpc = bool
402
+ end
403
+
404
+ opts.on("--xmlrpc-host=HOST",
405
+ _("Specify XML-RPC host as [HOST]."),
406
+ "(#{options.xmlrpc_host})") do |port|
407
+ begin
408
+ options.xmlrpc_host = host
409
+ end
410
+ end
411
+
412
+ opts.on("--xmlrpc-port=PORT",
413
+ _("Specify XML-RPC port as [PORT]."),
414
+ "(#{options.xmlrpc_port})") do |port|
415
+ begin
416
+ options.xmlrpc_port = Integer(port) if port
417
+ rescue ArgumentError
418
+ raise OptionParser::InvalidArgument.new(port)
419
+ end
420
+ end
421
+
422
+ opts.category _("Server")
423
+
424
+ opts.on("--[no-]server",
425
+ _("Specify whether to run as server."),
426
+ "(#{options.server})") do |bool|
427
+ options.server = bool
428
+ end
429
+
430
+ opts.category _("Public level")
431
+
432
+ levels = Rabbit::Front::PublicLevel.constants.sort_by do |const|
433
+ Rabbit::Front::PublicLevel.const_get(const)
434
+ end.collect do |const|
435
+ const.to_s.downcase.gsub(/_/, "-")
436
+ end
437
+ messages = [_("Specify public level.")]
438
+ messages << _("Select from the following:")
439
+ messages << "["
440
+ messages << " "
441
+ levels[0..-2].each do |level|
442
+ messages.last << "#{level}, "
443
+ messages << " " if messages.last.size > 30
444
+ end
445
+ messages.last << levels.last
446
+ messages << "]"
447
+ messages << _("(#{options.default_public_level})")
448
+ opts.on("--public-level=LEVEL", levels, *messages) do |level|
449
+ options.public_level = level
450
+ end
451
+
452
+ opts.category _("Comment")
453
+
454
+ opts.on("--comment-source=FILE",
455
+ _("Specify initial comment source."),
456
+ _("(default source)")) do |name|
457
+ options.comment_source = name
458
+ end
459
+
460
+ opts.on("--comment-encoding=ENCODING",
461
+ _("Specify comment source encoding."),
462
+ _("(auto)")) do |encoding|
463
+ options.comment_encoding = encoding
464
+ end
465
+
466
+ opts.category _("Migemo")
467
+
468
+ search_path = options.migemo_dictionary_search_path.join(', ')
469
+ opts.on("--migemo-dictionary-search-path=PATH1,PATH2,...",
470
+ Array,
471
+ _("Specify search paths for Migemo static dictionary."),
472
+ _("(#{search_path})")) do |path|
473
+ options.migemo_dictionary_search_path = path
474
+ end
475
+
476
+ opts.on("--migemo-dictionary-name=NAME",
477
+ Array,
478
+ _("Specify static dictionary name for Migemo."),
479
+ _("(#{options.migemo_dictionary_name})")) do |name|
480
+ options.migemo_dictionary_name = name
481
+ end
482
+
483
+ opts.category _("3D")
484
+
485
+ opts.on("--[no-]use-gl",
486
+ _("Specify whether to use OpenGL if available."),
487
+ "(#{options.use_gl})") do |bool|
488
+ options.use_gl = bool
489
+ end
490
+
491
+ opts.category _("Others")
492
+
493
+ opts.on("--[no-]show-native-window-id",
494
+ _("Show a native window ID of the Rabbit window if available."),
495
+ _("e.g. The ID is the ID of X resource on X window system."),
496
+ "(#{options.show_native_window_id})") do |bool|
497
+ options.show_native_window_id = bool
498
+ end
499
+ end
500
+ end
501
+
502
+ def make_canvas(options, logger, renderer)
503
+ args = [
504
+ logger, renderer,
505
+ options.comment_source, options.comment_encoding,
506
+ ]
507
+ Rabbit::Canvas.new(*args)
508
+ end
509
+
510
+ def make_source(options, argv, logger)
511
+ if options.source_type == Rabbit::Source::File and argv.empty?
512
+ options.source_type = Rabbit::Source::ARGF
513
+ end
514
+ if options.source_type == Rabbit::Source::ARGF
515
+ infos = [ARGF]
516
+ else
517
+ infos = argv
518
+ end
519
+ options.source_type.new(options.encoding, logger, *infos)
520
+ end
521
+
522
+ def make_front(canvas, options)
523
+ level = options.public_level
524
+ if options.source_type == Rabbit::Source::Memory or options.server
525
+ level ||= "all"
526
+ end
527
+ level ||= options.default_public_level
528
+ level = level.gsub(/-/, "_").upcase
529
+ canvas.front(Rabbit::Front::PublicLevel.const_get(level))
530
+ end
531
+
532
+ def apply_theme_if_need(target, options)
533
+ target.apply_theme(options.theme) if options.theme_specified
534
+ end
535
+
536
+ def parse(target, options, logger, background=false)
537
+ source = make_source(options, ARGV, logger)
538
+ source.base = options.base if options.base
539
+ if background
540
+ callback = Rabbit::Utils.process_pending_events_proc
541
+ else
542
+ callback = nil
543
+ end
544
+ target.parse(source, callback)
545
+ end
546
+
547
+ def setup_image_info(target, options)
548
+ target.saved_image_type = options.saved_image_type
549
+ target.saved_image_base_name = options.saved_image_base_name
550
+ target.output_html = options.output_html
551
+ target.output_index_html = options.output_index_html
552
+ target.rss_base_uri = options.rss_base_uri
553
+ end
554
+
555
+ def setup_print_info(target, options)
556
+ target.filename = options.print_out_filename
557
+ target.slides_per_page = options.slides_per_page
558
+ end
559
+
560
+ def setup_size(target, options)
561
+ target.width = options.width
562
+ target.height = options.height
563
+ end
564
+
565
+ def setup_paper_size(target, options)
566
+ target.paper_width = options.paper_width
567
+ target.paper_height = options.paper_height
568
+ target.page_margin_left = options.page_margin_left
569
+ target.page_margin_right = options.page_margin_right
570
+ target.page_margin_top = options.page_margin_top
571
+ target.page_margin_bottom = options.page_margin_bottom
572
+ target.margin_left = options.margin_left
573
+ target.margin_right = options.margin_right
574
+ target.margin_top = options.margin_top
575
+ target.margin_bottom = options.margin_bottom
576
+ end
577
+
578
+ def setup_migemo_info(target, options)
579
+ target.migemo_dictionary_search_path = options.migemo_dictionary_search_path
580
+ target.migemo_dictionary_name = options.migemo_dictionary_name
581
+ end
582
+
583
+ def setup_3d_info(target, options)
584
+ target.use_gl = options.use_gl
585
+ end
586
+
587
+ def setup_druby(front, options, logger)
588
+ require "drb/drb"
589
+ begin
590
+ DRb.start_service(options.druby_uri, front)
591
+ logger.info(DRb.uri) if options.output_druby_uri
592
+ rescue SocketError
593
+ logger.error($!)
594
+ rescue Errno::EADDRINUSE
595
+ logger.error(_("dRuby URI <%s> is in use.") % options.druby_uri)
596
+ end
597
+ end
598
+
599
+ def setup_soap(front, options, logger)
600
+ require "rabbit/soap/server"
601
+ thread = nil
602
+
603
+ begin
604
+ config = {
605
+ :BindAddress => options.soap_host,
606
+ :Port => options.soap_port,
607
+ :AddressFamily => Socket::AF_INET,
608
+ :Logger => logger,
609
+ }
610
+ server = Rabbit::SOAP::Server.new(front, config)
611
+ prev = trap(:INT) {server.shutdown; trap(:INT, prev)}
612
+ thread = Thread.new {server.start}
613
+ rescue Errno::EADDRINUSE
614
+ logger.error(_("port <%s> for SOAP is in use.") % options.soap_port)
615
+ end
616
+
617
+ thread
618
+ end
619
+
620
+ def setup_xmlrpc(front, options, logger)
621
+ require "rabbit/xmlrpc/server"
622
+ thread = nil
623
+
624
+ begin
625
+ config = {
626
+ :BindAddress => options.xmlrpc_host,
627
+ :Port => options.xmlrpc_port,
628
+ :AddressFamily => Socket::AF_INET,
629
+ :Logger => logger,
630
+ }
631
+ server = Rabbit::XMLRPC::Server.new(front, config)
632
+ prev = trap(:INT) {server.shutdown; trap(:INT, prev)}
633
+ thread = Thread.new {server.start}
634
+ rescue Errno::EADDRINUSE
635
+ logger.error(_("port <%s> for XML-RPC is in use.") % options.xmlrpc_port)
636
+ end
637
+
638
+ thread
639
+ end
640
+
641
+ def do_print(options, logger)
642
+ renderer = Rabbit::Renderer.printable_renderer(options.slides_per_page)
643
+ canvas = make_canvas(options, logger, renderer)
644
+ setup_paper_size(canvas, options)
645
+ setup_print_info(canvas, options)
646
+ setup_3d_info(canvas, options)
647
+ apply_theme_if_need(canvas, options)
648
+ parse(canvas, options, logger)
649
+ canvas.print
650
+ canvas.quit
651
+ rescue Rabbit::NoPrintSupportError
652
+ logger.error($!.message)
653
+ end
654
+
655
+ def do_save_as_image(options, logger)
656
+ Rabbit::Renderer::Pixmap.init
657
+ Rabbit.gui_init
658
+
659
+ canvas = make_canvas(options, logger, Rabbit::Renderer::Pixmap)
660
+ setup_size(canvas, options)
661
+ setup_image_info(canvas, options)
662
+ setup_print_info(canvas, options)
663
+ setup_paper_size(canvas, options)
664
+ setup_3d_info(canvas, options)
665
+ apply_theme_if_need(canvas, options)
666
+ parse(canvas, options, logger)
667
+ canvas.activate("ToggleIndexMode") if options.index_mode
668
+ canvas.save_as_image
669
+ canvas.quit
670
+ end
671
+
672
+ def do_display(options, logger)
673
+ Rabbit::Renderer::Display.init
674
+ Rabbit.gui_init
675
+
676
+ canvas = make_canvas(options, logger, Rabbit::Renderer::Display)
677
+ frame = Rabbit::Frame.new(logger, canvas)
678
+ frame.geometry = options.geometry
679
+ setup_paper_size(canvas, options)
680
+ setup_image_info(canvas, options)
681
+ setup_print_info(canvas, options)
682
+ setup_migemo_info(canvas, options)
683
+ setup_3d_info(canvas, options)
684
+ frame.init_gui(options.width, options.height, true)
685
+ frame.fullscreen if options.full_screen
686
+ native_window = frame.window.window
687
+ if options.show_native_window_id and native_window.respond_to?(:xid)
688
+ logger.info(_("Window ID: %d") % native_window.xid)
689
+ end
690
+ apply_theme_if_need(frame, options)
691
+ parse(frame, options, logger, !Rabbit::Utils.windows?)
692
+ canvas.activate("ToggleIndexMode") if options.index_mode
693
+
694
+ front = make_front(canvas, options)
695
+ setup_druby(front, options, logger) if options.use_druby
696
+ setup_soap(front, options, logger) if options.use_soap
697
+ setup_xmlrpc(front, options, logger) if options.use_xmlrpc
698
+
699
+ Gtk.main
700
+ end
701
+
702
+ def do_server(options, logger)
703
+ Rabbit.gui_init
704
+
705
+ # GLib::Log.cancel_handler
706
+ # GLib::Log.set_handler(nil, GLib::Log::LEVEL_ERROR)
707
+
708
+ canvas = make_canvas(options, logger, Rabbit::Renderer::Pixmap)
709
+ setup_size(canvas, options)
710
+ setup_paper_size(canvas, options)
711
+ setup_image_info(canvas, options)
712
+ setup_print_info(canvas, options)
713
+ setup_3d_info(canvas, options)
714
+ apply_theme_if_need(canvas, options)
715
+ parse(canvas, options, logger)
716
+
717
+ soap_server_thread = nil
718
+ xmlrpc_server_thread = nil
719
+
720
+ front = make_front(canvas, options)
721
+ setup_druby(front, options, logger) if options.use_druby
722
+ if options.use_soap
723
+ soap_server_thread = setup_soap(front, options, logger)
724
+ end
725
+ if options.use_xmlrpc
726
+ xmlrpc_server_thread = setup_xmlrpc(front, options, logger)
727
+ end
728
+
729
+ soap_server_thread.join if soap_server_thread
730
+ xmlrpc_server_thread.join if xmlrpc_server_thread
731
+ if options.use_druby
732
+ prev = trap(:INT) do
733
+ logger.info(_("going to shutdown..."))
734
+ DRb.thread.exit
735
+ logger.info(_("DRb.thread done."))
736
+ trap(:INT, prev)
737
+ end
738
+ DRb.thread.join
739
+ end
740
+ end
741
+
742
+ def main
743
+ options, logger = parse_args
744
+
745
+ require "rabbit/canvas"
746
+ GC.enable
747
+
748
+ if options.save_as_image
749
+ do_save_as_image(options, logger)
750
+ elsif options.print
751
+ do_print(options, logger)
752
+ elsif options.server
753
+ do_server(options, logger)
754
+ else
755
+ do_display(options, logger)
756
+ end
757
+ end
758
+
759
+ main