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.
- checksums.yaml +7 -0
- data/COPYING +1 -0
- data/GPL +339 -0
- data/Gemfile +37 -0
- data/README.md +87 -0
- data/Rakefile +285 -0
- data/bin/rabbirc +86 -0
- data/bin/rabbit +22 -0
- data/bin/rabbit-command +97 -0
- data/bin/rabbit-slide +22 -0
- data/bin/rabbit-theme +22 -0
- data/data/account.kou.gpg +3 -0
- data/data/rabbit/image/clear-blue-images/clear-blue-headline-background.png +0 -0
- data/data/rabbit/image/clear-blue-images/clear-blue-icon.png +0 -0
- data/data/rabbit/image/clear-blue-images/clear-blue-images.rb +0 -0
- data/data/rabbit/image/clear-blue-images/property.rb +4 -0
- data/data/rabbit/image/cozmixng-images/cozmixchu.png +0 -0
- data/data/rabbit/image/cozmixng-images/cozmixng-images.rb +2 -0
- data/data/rabbit/image/cozmixng-images/powered-by-cozmixng.png +0 -0
- data/data/rabbit/image/cozmixng-images/property.rb +4 -0
- data/data/rabbit/image/dark-gradation-images/background-gradation.png +0 -0
- data/data/rabbit/image/dark-gradation-images/dark-gradation-images.rb +2 -0
- data/data/rabbit/image/dark-gradation-images/property.rb +4 -0
- data/data/rabbit/image/debian-images/bottom.png +0 -0
- data/data/rabbit/image/debian-images/debian-images.rb +2 -0
- data/data/rabbit/image/debian-images/debian-logo-pink.png +0 -0
- data/data/rabbit/image/debian-images/debian-logo.png +0 -0
- data/data/rabbit/image/debian-images/debian-whirl.png +0 -0
- data/data/rabbit/image/debian-images/item1.png +0 -0
- data/data/rabbit/image/debian-images/property.rb +4 -0
- data/data/rabbit/image/debian-images/top.png +0 -0
- data/data/rabbit/image/nari-images/chibi_nari.png +0 -0
- data/data/rabbit/image/nari-images/gc_kun.png +0 -0
- data/data/rabbit/image/nari-images/nari-goal-flag.png +0 -0
- data/data/rabbit/image/nari-images/nari-images.rb +2 -0
- data/data/rabbit/image/nari-images/nari-start-flag.png +0 -0
- data/data/rabbit/image/nari-images/property.rb +4 -0
- data/data/rabbit/image/rabbit-images/blue-item.png +0 -0
- data/data/rabbit/image/rabbit-images/close-quote-blue.png +0 -0
- data/data/rabbit/image/rabbit-images/close-quote-brown.png +0 -0
- data/data/rabbit/image/rabbit-images/close-quote-light-blue.png +0 -0
- data/data/rabbit/image/rabbit-images/goal-flag.png +0 -0
- data/data/rabbit/image/rabbit-images/green-item.png +0 -0
- data/data/rabbit/image/rabbit-images/kame.png +0 -0
- data/data/rabbit/image/rabbit-images/lavie-icon.png +0 -0
- data/data/rabbit/image/rabbit-images/lavie-with-logo.png +0 -0
- data/data/rabbit/image/rabbit-images/lavie.png +0 -0
- data/data/rabbit/image/rabbit-images/mini-alice.png +0 -0
- data/data/rabbit/image/rabbit-images/mini-butler-rabbit.png +0 -0
- data/data/rabbit/image/rabbit-images/mini-horizontal-bar.png +0 -0
- data/data/rabbit/image/rabbit-images/mini-kame-taro.png +0 -0
- data/data/rabbit/image/rabbit-images/mini-tanu-kitaro.png +0 -0
- data/data/rabbit/image/rabbit-images/mini-usa-taro.png +0 -0
- data/data/rabbit/image/rabbit-images/mini-usagi.png +0 -0
- data/data/rabbit/image/rabbit-images/mini-vertical-bar.png +0 -0
- data/data/rabbit/image/rabbit-images/mini-yukidaru-taro.png +0 -0
- data/data/rabbit/image/rabbit-images/open-quote-blue.png +0 -0
- data/data/rabbit/image/rabbit-images/open-quote-brown.png +0 -0
- data/data/rabbit/image/rabbit-images/open-quote-light-blue.png +0 -0
- data/data/rabbit/image/rabbit-images/property.rb +4 -0
- data/data/rabbit/image/rabbit-images/rabbit-banner-blue.png +0 -0
- data/data/rabbit/image/rabbit-images/rabbit-banner-green.png +0 -0
- data/data/rabbit/image/rabbit-images/rabbit-banner-heads.png +0 -0
- data/data/rabbit/image/rabbit-images/rabbit-banner-pink.png +0 -0
- data/data/rabbit/image/rabbit-images/rabbit-banner.png +0 -0
- data/data/rabbit/image/rabbit-images/rabbit-banner2.png +0 -0
- data/data/rabbit/image/rabbit-images/rabbit-images.rb +2 -0
- data/data/rabbit/image/rabbit-images/rabbit-pink-logo.png +0 -0
- data/data/rabbit/image/rabbit-images/rabbit-pink-logo2.png +0 -0
- data/data/rabbit/image/rabbit-images/red-item.png +0 -0
- data/data/rabbit/image/rabbit-images/red-item2.png +0 -0
- data/data/rabbit/image/rabbit-images/start-flag.png +0 -0
- data/data/rabbit/image/rabbit-images/tanu-kitaro.png +0 -0
- data/data/rabbit/image/rabbit-images/usa-taro.png +0 -0
- data/data/rabbit/image/rabbit-images/usagi.png +0 -0
- data/data/rabbit/image/rabbit-images/yukiusa.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-bar.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-bar.svg +153 -0
- data/data/rabbit/image/ranguba-images/ranguba-images.rb +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-item-mark-mini.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-item-mark.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-item-mark.svg +400 -0
- data/data/rabbit/image/ranguba-images/ranguba-mark.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-mark.svg +587 -0
- data/data/rabbit/image/ruby-images/property.rb +4 -0
- data/data/rabbit/image/ruby-images/ruby-images.rb +2 -0
- data/data/rabbit/image/ruby-images/ruby-pink-circle-icon.png +0 -0
- data/data/rabbit/image/ruby-images/ruby-pink-circle-logo.png +0 -0
- data/data/rabbit/image/ruby-images/ruby-pink-circle-small-icon.png +0 -0
- data/data/rabbit/image/ruby-images/ruby-pink-circle.png +0 -0
- data/data/rabbit/image/ruby-images/ruby-pink-polygon-icon.png +0 -0
- data/data/rabbit/image/ruby-images/ruby-pink-polygon-logo.png +0 -0
- data/data/rabbit/image/ruby-images/ruby-pink-polygon-small-icon.png +0 -0
- data/data/rabbit/image/ruby-images/ruby-pink-polygon.png +0 -0
- data/data/rabbit/image/rubykaigi2011-images/property.rb +4 -0
- data/data/rabbit/image/rubykaigi2011-images/rubykaigi2011-background-black.jpg +0 -0
- data/data/rabbit/image/rubykaigi2011-images/rubykaigi2011-background-white.jpg +0 -0
- data/data/rabbit/image/rubykaigi2011-images/rubykaigi2011-images.rb +2 -0
- data/doc/_config.yml +29 -0
- data/doc/_includes/en.menu.html +8 -0
- data/doc/_includes/ja.menu.html +8 -0
- data/doc/_layouts/en.html +48 -0
- data/doc/_layouts/ja.html +48 -0
- data/doc/_layouts/skeleton.html +85 -0
- data/doc/_plugins/converters/hiki.rb +27 -0
- data/doc/_plugins/converters/markdown.rb +15 -0
- data/doc/_plugins/converters/rd.rb +73 -0
- data/doc/_plugins/support_symlink.rb +11 -0
- data/doc/css/rabbit.css +368 -0
- data/doc/css/syntax.scss +67 -0
- data/doc/en/development.rd +81 -0
- data/doc/en/faq.rd +152 -0
- data/doc/en/hiki.hiki +326 -0
- data/doc/en/how-to-make/hiki.hiki +9 -0
- data/doc/en/how-to-make/index.rd +26 -0
- data/doc/en/how-to-make/markdown.md +107 -0
- data/doc/en/how-to-make/pdf.rd +7 -0
- data/doc/en/how-to-make/rd.rd +92 -0
- data/doc/en/how-to-make/theme.rd +135 -0
- data/doc/en/index.rd +268 -0
- data/doc/en/install/homebrew.rd +22 -0
- data/doc/en/install/index.rd +50 -0
- data/doc/en/install/macports.rd +77 -0
- data/doc/en/install/windows.rd +45 -0
- data/doc/en/news.rd +2788 -0
- data/doc/en/rd.rd +482 -0
- data/doc/en/sample/hiki/rabbit.hiki +388 -0
- data/doc/en/sample/index.rd +15 -0
- data/doc/en/sample/markdown/rabbit.md +387 -0
- data/doc/en/sample/rd/rabbit.rd +463 -0
- data/doc/en/slides.rd +13 -0
- data/doc/en/usage/platform/os-x.rd +13 -0
- data/doc/en/usage/rabbit-slide.rd +239 -0
- data/doc/en/usage/rabbit-theme.rd +5 -0
- data/doc/en/usage/rabbit.rd +376 -0
- data/doc/en/usage.rd +24 -0
- data/doc/en/users.rd +35 -0
- data/doc/favicon.ico +0 -0
- data/doc/favicon.png +0 -0
- data/doc/images/background-sample.svg +290 -0
- data/doc/images/background.png +0 -0
- data/doc/images/background.svg +131 -0
- data/doc/images/hare-and-tortoise.png +0 -0
- data/doc/images/hare-and-tortoise.svg +541 -0
- data/doc/images/lavie-icon.png +0 -0
- data/doc/images/lavie.png +0 -0
- data/doc/images/rabbit-slide-show-logo.png +0 -0
- data/doc/images/rabbit-slide-show-logo.svg +597 -0
- data/doc/index.html.en +58 -0
- data/doc/index.html.ja +58 -0
- data/doc/ja/about.rd +21 -0
- data/doc/ja/development.rd +78 -0
- data/doc/ja/faq.rd +202 -0
- data/doc/ja/hiki.hiki +320 -0
- data/doc/ja/how-to-make/hiki.hiki +9 -0
- data/doc/ja/how-to-make/index.rd +26 -0
- data/doc/ja/how-to-make/markdown.md +107 -0
- data/doc/ja/how-to-make/pdf.rd +8 -0
- data/doc/ja/how-to-make/rd.rd +130 -0
- data/doc/ja/how-to-make/theme.rd +142 -0
- data/doc/ja/index.rd +283 -0
- data/doc/ja/install/homebrew.rd +23 -0
- data/doc/ja/install/index.rd +53 -0
- data/doc/ja/install/macports.rd +100 -0
- data/doc/ja/install/windows.rd +46 -0
- data/doc/ja/news.rd +2773 -0
- data/doc/ja/rd.rd +490 -0
- data/doc/ja/sample/hiki/rabbit.hiki +404 -0
- data/doc/ja/sample/index.rd +15 -0
- data/doc/ja/sample/markdown/rabbit.md +382 -0
- data/doc/ja/sample/rd/rabbit.rd +471 -0
- data/doc/ja/slides.rd +29 -0
- data/doc/ja/usage/rabbit-slide.rd +220 -0
- data/doc/ja/usage/rabbit-theme.rd +152 -0
- data/doc/ja/usage/rabbit.rd +377 -0
- data/doc/ja/usage.rd +19 -0
- data/doc/ja/users.rd +196 -0
- data/doc/screenshot.en.rab +10 -0
- data/doc/screenshot.ja.rab +10 -0
- data/entities/README +10 -0
- data/entities/ent2rb.rb +65 -0
- data/entities/isoamsa.ent +167 -0
- data/entities/isoamsb.ent +143 -0
- data/entities/isoamsc.ent +43 -0
- data/entities/isoamsn.ent +114 -0
- data/entities/isoamso.ent +73 -0
- data/entities/isoamsr.ent +204 -0
- data/entities/isobox.ent +61 -0
- data/entities/isocyr1.ent +88 -0
- data/entities/isocyr2.ent +47 -0
- data/entities/isodia.ent +35 -0
- data/entities/isogrk3.ent +64 -0
- data/entities/isolat1.ent +83 -0
- data/entities/isolat2.ent +142 -0
- data/entities/isomfrk.ent +75 -0
- data/entities/isomopf.ent +49 -0
- data/entities/isomscr.ent +75 -0
- data/entities/isonum.ent +97 -0
- data/entities/isopub.ent +105 -0
- data/entities/isotech.ent +182 -0
- data/entities/mmlalias.ent +564 -0
- data/entities/mmlextra.ent +122 -0
- data/lib/rabbit/actions.rb +427 -0
- data/lib/rabbit/author-configuration.rb +90 -0
- data/lib/rabbit/canvas.rb +844 -0
- data/lib/rabbit/command/rabbit-slide.rb +898 -0
- data/lib/rabbit/command/rabbit-theme.rb +300 -0
- data/lib/rabbit/command/rabbit.rb +854 -0
- data/lib/rabbit/config.rb +40 -0
- data/lib/rabbit/console/roff.rb +84 -0
- data/lib/rabbit/console.rb +218 -0
- data/lib/rabbit/cursor-manager.rb +66 -0
- data/lib/rabbit/dependency-canvas.rb +33 -0
- data/lib/rabbit/element/base/draw-hook.rb +75 -0
- data/lib/rabbit/element/base.rb +614 -0
- data/lib/rabbit/element/block-element.rb +56 -0
- data/lib/rabbit/element/block.rb +70 -0
- data/lib/rabbit/element/container-element.rb +321 -0
- data/lib/rabbit/element/description-list.rb +75 -0
- data/lib/rabbit/element/enum-list.rb +53 -0
- data/lib/rabbit/element/footnote.rb +48 -0
- data/lib/rabbit/element/image-title-slide.rb +34 -0
- data/lib/rabbit/element/image.rb +292 -0
- data/lib/rabbit/element/index-slide.rb +206 -0
- data/lib/rabbit/element/item-list.rb +50 -0
- data/lib/rabbit/element/method-list.rb +66 -0
- data/lib/rabbit/element/poppler-page.rb +52 -0
- data/lib/rabbit/element/poppler-slide.rb +47 -0
- data/lib/rabbit/element/poppler-title-slide.rb +45 -0
- data/lib/rabbit/element/preformatted.rb +48 -0
- data/lib/rabbit/element/slide-element.rb +140 -0
- data/lib/rabbit/element/slide.rb +67 -0
- data/lib/rabbit/element/syntax-highlighting.rb +31 -0
- data/lib/rabbit/element/table.rb +121 -0
- data/lib/rabbit/element/tag.rb +60 -0
- data/lib/rabbit/element/text-block-element.rb +27 -0
- data/lib/rabbit/element/text-container-element.rb +176 -0
- data/lib/rabbit/element/text-element.rb +83 -0
- data/lib/rabbit/element/text-renderer.rb +378 -0
- data/lib/rabbit/element/text.rb +146 -0
- data/lib/rabbit/element/title-slide.rb +190 -0
- data/lib/rabbit/element/video.rb +265 -0
- data/lib/rabbit/element.rb +35 -0
- data/lib/rabbit/error.rb +239 -0
- data/lib/rabbit/filename.rb +39 -0
- data/lib/rabbit/formatter.rb +211 -0
- data/lib/rabbit/frame.rb +292 -0
- data/lib/rabbit/front.rb +278 -0
- data/lib/rabbit/gem-builder.rb +42 -0
- data/lib/rabbit/gem-finder.rb +57 -0
- data/lib/rabbit/gem-pusher.rb +89 -0
- data/lib/rabbit/gesture/handler.rb +253 -0
- data/lib/rabbit/gesture/processor.rb +118 -0
- data/lib/rabbit/gettext.rb +14 -0
- data/lib/rabbit/graffiti/config-dialog.rb +47 -0
- data/lib/rabbit/graffiti/processor.rb +132 -0
- data/lib/rabbit/gtk.rb +93 -0
- data/lib/rabbit/html/generator.rb +477 -0
- data/lib/rabbit/html/template.erb +109 -0
- data/lib/rabbit/icon.rb +31 -0
- data/lib/rabbit/image/base.rb +270 -0
- data/lib/rabbit/image/default.rb +42 -0
- data/lib/rabbit/image/dia.rb +74 -0
- data/lib/rabbit/image/eps.rb +129 -0
- data/lib/rabbit/image/gimp.rb +69 -0
- data/lib/rabbit/image/mermaid.rb +74 -0
- data/lib/rabbit/image/pdf.rb +94 -0
- data/lib/rabbit/image/svg.rb +79 -0
- data/lib/rabbit/image-data-loader.rb +51 -0
- data/lib/rabbit/image.rb +53 -0
- data/lib/rabbit/info-window.rb +327 -0
- data/lib/rabbit/key-handler.rb +227 -0
- data/lib/rabbit/keys.rb +209 -0
- data/lib/rabbit/logger/base.rb +147 -0
- data/lib/rabbit/logger/gui.rb +113 -0
- data/lib/rabbit/logger/stderr.rb +42 -0
- data/lib/rabbit/logger.rb +40 -0
- data/lib/rabbit/menu.rb +242 -0
- data/lib/rabbit/pango-markup.rb +44 -0
- data/lib/rabbit/parser/base.rb +31 -0
- data/lib/rabbit/parser/ext/aafigure.rb +51 -0
- data/lib/rabbit/parser/ext/blockdiag.rb +68 -0
- data/lib/rabbit/parser/ext/charty.rb +67 -0
- data/lib/rabbit/parser/ext/coderay.rb +85 -0
- data/lib/rabbit/parser/ext/enscript.rb +136 -0
- data/lib/rabbit/parser/ext/entity.rb +4164 -0
- data/lib/rabbit/parser/ext/escape.rb +18 -0
- data/lib/rabbit/parser/ext/image.rb +157 -0
- data/lib/rabbit/parser/ext/inline.rb +45 -0
- data/lib/rabbit/parser/ext/rouge.rb +129 -0
- data/lib/rabbit/parser/ext/tex.rb +95 -0
- data/lib/rabbit/parser/ext/video.rb +37 -0
- data/lib/rabbit/parser/image.rb +62 -0
- data/lib/rabbit/parser/markdown/converter.rb +440 -0
- data/lib/rabbit/parser/markdown.rb +144 -0
- data/lib/rabbit/parser/pause-support.rb +33 -0
- data/lib/rabbit/parser/pdf.rb +56 -0
- data/lib/rabbit/parser/rd/ext/base.rb +95 -0
- data/lib/rabbit/parser/rd/ext/block-verbatim.rb +190 -0
- data/lib/rabbit/parser/rd/ext/character-reference.rb +75 -0
- data/lib/rabbit/parser/rd/ext/image.rb +46 -0
- data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +118 -0
- data/lib/rabbit/parser/rd/ext/refer.rb +50 -0
- data/lib/rabbit/parser/rd/ext/video.rb +32 -0
- data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +458 -0
- data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +105 -0
- data/lib/rabbit/parser/rd/visitor.rb +72 -0
- data/lib/rabbit/parser/rd.rb +92 -0
- data/lib/rabbit/parser/wiki/output.rb +545 -0
- data/lib/rabbit/parser/wiki.rb +61 -0
- data/lib/rabbit/parser.rb +73 -0
- data/lib/rabbit/password-reader.rb +34 -0
- data/lib/rabbit/path-manipulatable.rb +37 -0
- data/lib/rabbit/progress.rb +97 -0
- data/lib/rabbit/properties.rb +154 -0
- data/lib/rabbit/qt.rb +222 -0
- data/lib/rabbit/rabbit.rb +50 -0
- data/lib/rabbit/readme-parser.rb +112 -0
- data/lib/rabbit/relative-size.rb +28 -0
- data/lib/rabbit/renderer/base.rb +412 -0
- data/lib/rabbit/renderer/color.rb +130 -0
- data/lib/rabbit/renderer/display/base.rb +223 -0
- data/lib/rabbit/renderer/display/button-handler.rb +229 -0
- data/lib/rabbit/renderer/display/cursor.rb +49 -0
- data/lib/rabbit/renderer/display/drawing-area-base.rb +381 -0
- data/lib/rabbit/renderer/display/drawing-area-primitive.rb +219 -0
- data/lib/rabbit/renderer/display/drawing-area-view-only.rb +57 -0
- data/lib/rabbit/renderer/display/drawing-area.rb +29 -0
- data/lib/rabbit/renderer/display/gesture.rb +111 -0
- data/lib/rabbit/renderer/display/graffiti.rb +127 -0
- data/lib/rabbit/renderer/display/hook-handler.rb +64 -0
- data/lib/rabbit/renderer/display/info.rb +75 -0
- data/lib/rabbit/renderer/display/magnifier.rb +137 -0
- data/lib/rabbit/renderer/display/mask.rb +83 -0
- data/lib/rabbit/renderer/display/menu.rb +54 -0
- data/lib/rabbit/renderer/display/motion-handler.rb +34 -0
- data/lib/rabbit/renderer/display/progress.rb +85 -0
- data/lib/rabbit/renderer/display/qt-drawing-area-base.rb +336 -0
- data/lib/rabbit/renderer/display/qt-drawing-area-primitive.rb +189 -0
- data/lib/rabbit/renderer/display/qt-drawing-area-view-only.rb +53 -0
- data/lib/rabbit/renderer/display/qt-drawing-area.rb +29 -0
- data/lib/rabbit/renderer/display/qt-drawing-widget.rb +85 -0
- data/lib/rabbit/renderer/display/scroll-handler.rb +58 -0
- data/lib/rabbit/renderer/display/search.rb +114 -0
- data/lib/rabbit/renderer/display/spotlight.rb +122 -0
- data/lib/rabbit/renderer/display.rb +17 -0
- data/lib/rabbit/renderer/engine/cairo.rb +481 -0
- data/lib/rabbit/renderer/engine/qt_painter.rb +397 -0
- data/lib/rabbit/renderer/engine.rb +18 -0
- data/lib/rabbit/renderer/kernel.rb +233 -0
- data/lib/rabbit/renderer/offscreen.rb +117 -0
- data/lib/rabbit/renderer/print-layout.rb +150 -0
- data/lib/rabbit/renderer/printer.rb +223 -0
- data/lib/rabbit/renderer/scene-background-widget.rb +95 -0
- data/lib/rabbit/renderer/scene-node-widget.rb +40 -0
- data/lib/rabbit/renderer/scene.rb +538 -0
- data/lib/rabbit/renderer.rb +20 -0
- data/lib/rabbit/search-window.rb +90 -0
- data/lib/rabbit/searcher.rb +40 -0
- data/lib/rabbit/size.rb +100 -0
- data/lib/rabbit/slide-configuration.rb +211 -0
- data/lib/rabbit/slide.rb +40 -0
- data/lib/rabbit/soap/base.rb +17 -0
- data/lib/rabbit/soap/driver.rb +61 -0
- data/lib/rabbit/soap/server.rb +49 -0
- data/lib/rabbit/source/argf.rb +45 -0
- data/lib/rabbit/source/base.rb +197 -0
- data/lib/rabbit/source/file.rb +85 -0
- data/lib/rabbit/source/memory.rb +61 -0
- data/lib/rabbit/source/uri.rb +93 -0
- data/lib/rabbit/source-generator/hiki.rb +58 -0
- data/lib/rabbit/source-generator/markdown.rb +56 -0
- data/lib/rabbit/source-generator/rd.rb +60 -0
- data/lib/rabbit/source-generator.rb +39 -0
- data/lib/rabbit/source.rb +30 -0
- data/lib/rabbit/task/slide.rb +221 -0
- data/lib/rabbit/task/theme.rb +202 -0
- data/lib/rabbit/task.rb +18 -0
- data/lib/rabbit/theme/applier.rb +690 -0
- data/lib/rabbit/theme/auto-slide/auto-slide.rb +6 -0
- data/lib/rabbit/theme/auto-slide/property.rb +4 -0
- data/lib/rabbit/theme/background-image-toolkit/background-image-toolkit.rb +125 -0
- data/lib/rabbit/theme/base/base.rb +85 -0
- data/lib/rabbit/theme/base/property.rb +4 -0
- data/lib/rabbit/theme/blue-bar/blue-bar.rb +80 -0
- data/lib/rabbit/theme/blue-bar/property.rb +3 -0
- data/lib/rabbit/theme/blue-circle/blue-circle.rb +14 -0
- data/lib/rabbit/theme/blue-circle/property.rb +3 -0
- data/lib/rabbit/theme/body-background-image/body-background-image.rb +8 -0
- data/lib/rabbit/theme/centering-rabbit/centering-rabbit.rb +5 -0
- data/lib/rabbit/theme/centering-rabbit/property.rb +3 -0
- data/lib/rabbit/theme/clear-blue/clear-blue.rb +101 -0
- data/lib/rabbit/theme/clear-blue/property.rb +3 -0
- data/lib/rabbit/theme/clock/clock.rb +37 -0
- data/lib/rabbit/theme/clock/property.rb +21 -0
- data/lib/rabbit/theme/color-circle/color-circle.rb +60 -0
- data/lib/rabbit/theme/color-circle/property.rb +4 -0
- data/lib/rabbit/theme/color-circle-block-quote/color-circle-block-quote.rb +28 -0
- data/lib/rabbit/theme/color-circle-block-quote/property.rb +4 -0
- data/lib/rabbit/theme/color-circle-common/color-circle-common.rb +48 -0
- data/lib/rabbit/theme/color-circle-common/property.rb +3 -0
- data/lib/rabbit/theme/color-circle-description/color-circle-description.rb +9 -0
- data/lib/rabbit/theme/color-circle-description/property.rb +4 -0
- data/lib/rabbit/theme/color-circle-foot-text/color-circle-foot-text.rb +14 -0
- data/lib/rabbit/theme/color-circle-foot-text/property.rb +4 -0
- data/lib/rabbit/theme/color-circle-item-mark/color-circle-item-mark.rb +77 -0
- data/lib/rabbit/theme/color-circle-item-mark/property.rb +4 -0
- data/lib/rabbit/theme/color-circle-method-list/color-circle-method-list.rb +8 -0
- data/lib/rabbit/theme/color-circle-method-list/property.rb +4 -0
- data/lib/rabbit/theme/color-circle-preformatted/color-circle-preformatted.rb +5 -0
- data/lib/rabbit/theme/color-circle-preformatted/property.rb +4 -0
- data/lib/rabbit/theme/color-circle-slide/color-circle-slide.rb +13 -0
- data/lib/rabbit/theme/color-circle-slide/property.rb +4 -0
- data/lib/rabbit/theme/color-circle-text/color-circle-text.rb +9 -0
- data/lib/rabbit/theme/color-circle-text/property.rb +4 -0
- data/lib/rabbit/theme/color-circle-title-slide/color-circle-title-slide.rb +27 -0
- data/lib/rabbit/theme/color-circle-title-slide/property.rb +4 -0
- data/lib/rabbit/theme/color-circle-title-text/color-circle-title-text.rb +7 -0
- data/lib/rabbit/theme/color-circle-title-text/property.rb +4 -0
- data/lib/rabbit/theme/cozmixng/cozmixng.rb +44 -0
- data/lib/rabbit/theme/cozmixng/property.rb +3 -0
- data/lib/rabbit/theme/cozmixng-powered-by/cozmixng-powered-by.rb +6 -0
- data/lib/rabbit/theme/cozmixng-powered-by/property.rb +7 -0
- data/lib/rabbit/theme/dark-gradation/dark-gradation.rb +187 -0
- data/lib/rabbit/theme/dark-gradation/property.rb +3 -0
- data/lib/rabbit/theme/day-white/day-white.rb +8 -0
- data/lib/rabbit/theme/day-white/property.rb +3 -0
- data/lib/rabbit/theme/debian/debian.rb +232 -0
- data/lib/rabbit/theme/debian/property.rb +3 -0
- data/lib/rabbit/theme/default/default.rb +42 -0
- data/lib/rabbit/theme/default/property.rb +3 -0
- data/lib/rabbit/theme/default-block-quote/default-block-quote.rb +219 -0
- data/lib/rabbit/theme/default-block-quote/property.rb +3 -0
- data/lib/rabbit/theme/default-comment/default-comment.rb +5 -0
- data/lib/rabbit/theme/default-comment/property.rb +4 -0
- data/lib/rabbit/theme/default-description/default-description.rb +64 -0
- data/lib/rabbit/theme/default-description/property.rb +5 -0
- data/lib/rabbit/theme/default-foot-text/default-foot-text.rb +52 -0
- data/lib/rabbit/theme/default-foot-text/property.rb +3 -0
- data/lib/rabbit/theme/default-icon/default-icon.rb +4 -0
- data/lib/rabbit/theme/default-icon/property.rb +5 -0
- data/lib/rabbit/theme/default-item-mark/default-item-mark.rb +104 -0
- data/lib/rabbit/theme/default-item-mark/property.rb +4 -0
- data/lib/rabbit/theme/default-item-mark-setup/default-item-mark-setup.rb +132 -0
- data/lib/rabbit/theme/default-item-mark-setup/property.rb +3 -0
- data/lib/rabbit/theme/default-method-list/default-method-list.rb +6 -0
- data/lib/rabbit/theme/default-method-list/property.rb +3 -0
- data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +56 -0
- data/lib/rabbit/theme/default-preformatted/property.rb +3 -0
- data/lib/rabbit/theme/default-slide/default-slide.rb +62 -0
- data/lib/rabbit/theme/default-slide/property.rb +3 -0
- data/lib/rabbit/theme/default-text/default-text.rb +186 -0
- data/lib/rabbit/theme/default-text/property.rb +3 -0
- data/lib/rabbit/theme/default-title-slide/default-title-slide.rb +13 -0
- data/lib/rabbit/theme/default-title-slide/property.rb +6 -0
- data/lib/rabbit/theme/default-title-text/default-title-text.rb +53 -0
- data/lib/rabbit/theme/default-title-text/property.rb +3 -0
- data/lib/rabbit/theme/document.erb +35 -0
- data/lib/rabbit/theme/edge-info-toolkit/edge-info-toolkit.rb +87 -0
- data/lib/rabbit/theme/edge-info-toolkit/property.rb +3 -0
- data/lib/rabbit/theme/emphasize-keyword/emphasize-keyword.rb +16 -0
- data/lib/rabbit/theme/emphasize-keyword/property.rb +4 -0
- data/lib/rabbit/theme/enishi-green/enishi-green.rb +61 -0
- data/lib/rabbit/theme/enishi-green/property.rb +3 -0
- data/lib/rabbit/theme/entry.rb +202 -0
- data/lib/rabbit/theme/footer-comment/footer-comment.rb +74 -0
- data/lib/rabbit/theme/footer-comment/property.rb +3 -0
- data/lib/rabbit/theme/footer-logo/footer-logo.rb +30 -0
- data/lib/rabbit/theme/footer-logo/property.rb +26 -0
- data/lib/rabbit/theme/green-circle/green-circle.rb +14 -0
- data/lib/rabbit/theme/green-circle/property.rb +3 -0
- data/lib/rabbit/theme/headline-logo/headline-logo.rb +24 -0
- data/lib/rabbit/theme/headline-logo/property.rb +10 -0
- data/lib/rabbit/theme/icon/icon.rb +3 -0
- data/lib/rabbit/theme/icon/property.rb +24 -0
- data/lib/rabbit/theme/image/image.rb +80 -0
- data/lib/rabbit/theme/image/property.rb +3 -0
- data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +134 -0
- data/lib/rabbit/theme/image-slide-number/property.rb +64 -0
- data/lib/rabbit/theme/image-timer/image-timer.rb +119 -0
- data/lib/rabbit/theme/image-timer/property.rb +46 -0
- data/lib/rabbit/theme/image-viewer/image-viewer.rb +21 -0
- data/lib/rabbit/theme/image-viewer/property.rb +3 -0
- data/lib/rabbit/theme/lightning-clear-blue/lightning-clear-blue.rb +13 -0
- data/lib/rabbit/theme/lightning-clear-blue/property.rb +3 -0
- data/lib/rabbit/theme/lightning-monochrome/lightning-monochrome.rb +15 -0
- data/lib/rabbit/theme/lightning-monochrome/property.rb +3 -0
- data/lib/rabbit/theme/lightning-rabbit/lightning-rabbit.rb +13 -0
- data/lib/rabbit/theme/lightning-rabbit/property.rb +3 -0
- data/lib/rabbit/theme/lightning-simple/lightning-simple.rb +60 -0
- data/lib/rabbit/theme/lightning-simple/property.rb +3 -0
- data/lib/rabbit/theme/lightning-talk/lightning-talk.rb +67 -0
- data/lib/rabbit/theme/lightning-talk/property.rb +3 -0
- data/lib/rabbit/theme/lightning-talk-toolkit/lightning-talk-toolkit.rb +179 -0
- data/lib/rabbit/theme/lightning-talk-toolkit/property.rb +3 -0
- data/lib/rabbit/theme/manager.rb +45 -0
- data/lib/rabbit/theme/mirror-effect/mirror-effect.rb +27 -0
- data/lib/rabbit/theme/mirror-effect/property.rb +3 -0
- data/lib/rabbit/theme/nari/nari.rb +215 -0
- data/lib/rabbit/theme/nari/property.rb +3 -0
- data/lib/rabbit/theme/newline-in-slides/newline-in-slides.rb +29 -0
- data/lib/rabbit/theme/newline-in-slides/property.rb +4 -0
- data/lib/rabbit/theme/newline-in-title/newline-in-title.rb +7 -0
- data/lib/rabbit/theme/newline-in-title/property.rb +4 -0
- data/lib/rabbit/theme/night-black/night-black.rb +19 -0
- data/lib/rabbit/theme/night-black/property.rb +3 -0
- data/lib/rabbit/theme/pdf/pdf.rb +24 -0
- data/lib/rabbit/theme/pdf/property.rb +3 -0
- data/lib/rabbit/theme/per-slide-background-color/per-slide-background-color.rb +18 -0
- data/lib/rabbit/theme/per-slide-background-color/property.rb +16 -0
- data/lib/rabbit/theme/per-slide-background-image/per-slide-background-image.rb +11 -0
- data/lib/rabbit/theme/per-slide-background-image/property.rb +16 -0
- data/lib/rabbit/theme/powered-by/powered-by.rb +67 -0
- data/lib/rabbit/theme/powered-by/property.rb +24 -0
- data/lib/rabbit/theme/rabbit/property.rb +3 -0
- data/lib/rabbit/theme/rabbit/rabbit.rb +57 -0
- data/lib/rabbit/theme/rabbit-block-quote/property.rb +4 -0
- data/lib/rabbit/theme/rabbit-block-quote/rabbit-block-quote.rb +18 -0
- data/lib/rabbit/theme/rabbit-headline-logo/property.rb +5 -0
- data/lib/rabbit/theme/rabbit-headline-logo/rabbit-headline-logo.rb +4 -0
- data/lib/rabbit/theme/rabbit-icon/property.rb +5 -0
- data/lib/rabbit/theme/rabbit-icon/rabbit-icon.rb +4 -0
- data/lib/rabbit/theme/rabbit-item-mark/property.rb +5 -0
- data/lib/rabbit/theme/rabbit-item-mark/rabbit-item-mark.rb +53 -0
- data/lib/rabbit/theme/rabbit-powered-by/property.rb +7 -0
- data/lib/rabbit/theme/rabbit-powered-by/rabbit-powered-by.rb +5 -0
- data/lib/rabbit/theme/rabbit-title-logo/property.rb +5 -0
- data/lib/rabbit/theme/rabbit-title-logo/rabbit-title-logo.rb +4 -0
- data/lib/rabbit/theme/ranguba/property.rb +3 -0
- data/lib/rabbit/theme/ranguba/ranguba.rb +218 -0
- data/lib/rabbit/theme/red-frame/property.rb +3 -0
- data/lib/rabbit/theme/red-frame/red-frame.rb +100 -0
- data/lib/rabbit/theme/rotate-zoom-effect/property.rb +4 -0
- data/lib/rabbit/theme/rotate-zoom-effect/rotate-zoom-effect.rb +51 -0
- data/lib/rabbit/theme/ruby-gnome2/property.rb +3 -0
- data/lib/rabbit/theme/ruby-gnome2/ruby-gnome2.rb +65 -0
- data/lib/rabbit/theme/ruby-gnome2-description/property.rb +7 -0
- data/lib/rabbit/theme/ruby-gnome2-description/ruby-gnome2-description.rb +7 -0
- data/lib/rabbit/theme/ruby-gnome2-foot-text/property.rb +5 -0
- data/lib/rabbit/theme/ruby-gnome2-foot-text/ruby-gnome2-foot-text.rb +3 -0
- data/lib/rabbit/theme/ruby-gnome2-headline/property.rb +7 -0
- data/lib/rabbit/theme/ruby-gnome2-headline/ruby-gnome2-headline.rb +47 -0
- data/lib/rabbit/theme/ruby-gnome2-icon/property.rb +5 -0
- data/lib/rabbit/theme/ruby-gnome2-icon/ruby-gnome2-icon.rb +4 -0
- data/lib/rabbit/theme/ruby-gnome2-item-mark/property.rb +10 -0
- data/lib/rabbit/theme/ruby-gnome2-item-mark/ruby-gnome2-item-mark.rb +65 -0
- data/lib/rabbit/theme/ruby-gnome2-preformatted/property.rb +4 -0
- data/lib/rabbit/theme/ruby-gnome2-preformatted/ruby-gnome2-preformatted.rb +8 -0
- data/lib/rabbit/theme/ruby-gnome2-slide/property.rb +4 -0
- data/lib/rabbit/theme/ruby-gnome2-slide/ruby-gnome2-slide.rb +40 -0
- data/lib/rabbit/theme/rubykaigi2011/property.rb +3 -0
- data/lib/rabbit/theme/rubykaigi2011/rubykaigi2011.rb +48 -0
- data/lib/rabbit/theme/scroll-effect/property.rb +3 -0
- data/lib/rabbit/theme/scroll-effect/scroll-effect.rb +32 -0
- data/lib/rabbit/theme/searcher.rb +179 -0
- data/lib/rabbit/theme/show-frame/property.rb +16 -0
- data/lib/rabbit/theme/show-frame/show-frame.rb +17 -0
- data/lib/rabbit/theme/simple-item-mark/property.rb +5 -0
- data/lib/rabbit/theme/simple-item-mark/simple-item-mark.rb +112 -0
- data/lib/rabbit/theme/slide-background/property.rb +6 -0
- data/lib/rabbit/theme/slide-background/slide-background.rb +3 -0
- data/lib/rabbit/theme/slide-background-image/property.rb +10 -0
- data/lib/rabbit/theme/slide-background-image/slide-background-image.rb +25 -0
- data/lib/rabbit/theme/slide-footer-info/property.rb +43 -0
- data/lib/rabbit/theme/slide-footer-info/slide-footer-info.rb +51 -0
- data/lib/rabbit/theme/slide-header-info/property.rb +43 -0
- data/lib/rabbit/theme/slide-header-info/slide-header-info.rb +42 -0
- data/lib/rabbit/theme/slide-logo/property.rb +26 -0
- data/lib/rabbit/theme/slide-logo/slide-logo.rb +58 -0
- data/lib/rabbit/theme/slide-number/property.rb +21 -0
- data/lib/rabbit/theme/slide-number/slide-number.rb +34 -0
- data/lib/rabbit/theme/slide-show/property.rb +4 -0
- data/lib/rabbit/theme/slide-show/slide-show.rb +31 -0
- data/lib/rabbit/theme/stream-comment/property.rb +3 -0
- data/lib/rabbit/theme/stream-comment/stream-comment.rb +66 -0
- data/lib/rabbit/theme/syntax-highlighting/property.rb +4 -0
- data/lib/rabbit/theme/syntax-highlighting/syntax-highlighting.rb +177 -0
- data/lib/rabbit/theme/table/property.rb +3 -0
- data/lib/rabbit/theme/table/table.rb +173 -0
- data/lib/rabbit/theme/tag/property.rb +4 -0
- data/lib/rabbit/theme/tag/tag.rb +85 -0
- data/lib/rabbit/theme/timer/property.rb +3 -0
- data/lib/rabbit/theme/timer/timer.rb +63 -0
- data/lib/rabbit/theme/title-background-color/property.rb +10 -0
- data/lib/rabbit/theme/title-background-color/title-background-color.rb +17 -0
- data/lib/rabbit/theme/title-background-image/property.rb +11 -0
- data/lib/rabbit/theme/title-background-image/title-background-image.rb +28 -0
- data/lib/rabbit/theme/title-logo/property.rb +23 -0
- data/lib/rabbit/theme/title-logo/title-logo.rb +38 -0
- data/lib/rabbit/theme/title-on-image-toolkit/property.rb +3 -0
- data/lib/rabbit/theme/title-on-image-toolkit/title-on-image-toolkit.rb +140 -0
- data/lib/rabbit/theme/title-shadow/property.rb +11 -0
- data/lib/rabbit/theme/title-shadow/title-shadow.rb +7 -0
- data/lib/rabbit/theme/title-slide-background-image/property.rb +10 -0
- data/lib/rabbit/theme/title-slide-background-image/title-slide-background-image.rb +25 -0
- data/lib/rabbit/theme/video/property.rb +3 -0
- data/lib/rabbit/theme/video/video.rb +5 -0
- data/lib/rabbit/theme-configuration.rb +101 -0
- data/lib/rabbit/utils.rb +435 -0
- data/lib/rabbit/version.rb +19 -0
- data/lib/rabbit/xmlrpc/base.rb +6 -0
- data/lib/rabbit/xmlrpc/client.rb +33 -0
- data/lib/rabbit/xmlrpc/server.rb +39 -0
- data/lib/rabbit/yaml-loader.rb +39 -0
- data/misc/emacs/README.ja +177 -0
- data/misc/emacs/rabbit-mode.el +378 -0
- data/misc/github-post-receiver/config.ru +170 -0
- data/misc/github-post-receiver/config.yaml.sample +3 -0
- data/misc/github-post-receiver/tmp/restart.txt +0 -0
- data/misc/make-image-sample.rb +95 -0
- data/misc/make-print-sample.rb +95 -0
- data/misc/update-rd.rb +85 -0
- data/misc/xyzzy/rabbit-mode.l +775 -0
- data/po/en/rabbit.po +2110 -0
- data/po/fr/rabbit.po +2109 -0
- data/po/ja/rabbit.po +2197 -0
- data/rabbit-qt.gemspec +80 -0
- data/sample/block-quote.rab +13 -0
- data/sample/blue-circle.rd +37 -0
- data/sample/can_rabbit.rd +425 -0
- data/sample/cozmixng.rd +85 -0
- data/sample/cozmixng_is_field.png +0 -0
- data/sample/cozmixng_is_field.svg +430 -0
- data/sample/description-list.rab +17 -0
- data/sample/enishi-green.rab +14 -0
- data/sample/equation.eps +571 -0
- data/sample/gl-sample.rd +8 -0
- data/sample/html_and_wiki.png +0 -0
- data/sample/html_and_wiki.svg +275 -0
- data/sample/image-reflection.rab +12 -0
- data/sample/info-window.png +0 -0
- data/sample/join_cozmixng.png +0 -0
- data/sample/join_cozmixng.svg +293 -0
- data/sample/kof2005/gesture-flow.svg +329 -0
- data/sample/kof2005/gesture.rb +473 -0
- data/sample/kof2005/gtk+-widget.svg +128 -0
- data/sample/kof2005/high-light-architecture.svg +203 -0
- data/sample/kof2005/high-light-expose.rb +120 -0
- data/sample/kof2005/high-light-expose.svg +153 -0
- data/sample/kof2005/high-light-widget.rb +147 -0
- data/sample/kof2005/high-light-widget.svg +172 -0
- data/sample/kof2005/high-light.svg +132 -0
- data/sample/kof2005/mask-screenshot.png +0 -0
- data/sample/kof2005/mask.rb +105 -0
- data/sample/kof2005/mask.svg +120 -0
- data/sample/kof2005/ruby-gnome2-logo.png +0 -0
- data/sample/kof2005/ruby-pink-circle-logo.png +0 -0
- data/sample/kof2005/skip-up-with-ruby-gnome2.rd +450 -0
- data/sample/kof2005/widget.svg +202 -0
- data/sample/lavie.png +0 -0
- data/sample/lightning-talk.rd +50 -0
- data/sample/lldn/input.svg +269 -0
- data/sample/lldn/interface.svg +410 -0
- data/sample/lldn/kame.png +0 -0
- data/sample/lldn/lavie.png +0 -0
- data/sample/lldn/lldn.rd +212 -0
- data/sample/lldn/output.svg +284 -0
- data/sample/lldn/rabbit-rwiki.svg +353 -0
- data/sample/lldn/rabbit_banner.png +0 -0
- data/sample/lldn/rabbit_banner2.png +0 -0
- data/sample/m17n.rd +138 -0
- data/sample/mermaid.rab +16 -0
- data/sample/note.rab +31 -0
- data/sample/ppt/hare-and-tortoise-end.png +0 -0
- data/sample/ppt/hare-and-tortoise-middle.png +0 -0
- data/sample/ppt/hare-and-tortoise-start.png +0 -0
- data/sample/ppt/ppt.rd +207 -0
- data/sample/ppt/rabbit-with-ruby.png +0 -0
- data/sample/pre.rd +123 -0
- data/sample/rabbit/theme/festival/festival.rb +6 -0
- data/sample/rabbit/theme/gl-sample/gl-sample.rb +29 -0
- data/sample/rabbit/theme/image-with-frame/image-with-frame.rb +2 -0
- data/sample/rabbit/theme/image-with-no-shadow-frame/image-with-no-shadow-frame.rb +3 -0
- data/sample/rabbit/theme/image-without-frame/image-without-frame.rb +2 -0
- data/sample/rabbit/theme/kof2005/kof2005.rb +9 -0
- data/sample/rabbit/theme/kof2005/property.rb +3 -0
- data/sample/rabbit/theme/lightning-talk-with-contact/lightning-talk-with-contact.rb +6 -0
- data/sample/rabbit/theme/lldn/lldn.rb +20 -0
- data/sample/rabbit/theme/pdf/pdf.rb +16 -0
- data/sample/rabbit/theme/pdf/property.rb +4 -0
- data/sample/rabbit/theme/ppt/ppt.rb +5 -0
- data/sample/rabbit/theme/rabbit-and-tortoise/rabbit-and-tortoise.rb +11 -0
- data/sample/rabbit/theme/rectangle-image-slide-number/rectangle-image-slide-number.rb +4 -0
- data/sample/rabbit/theme/stop-auto-slide/stop-auto-slide.rb +2 -0
- data/sample/rabbit/theme/triangle-image-slide-number/triangle-image-slide-number.rb +5 -0
- data/sample/rabbit-balloon.obj +93 -0
- data/sample/rabbit-en.hiki +399 -0
- data/sample/rabbit-en.md +410 -0
- data/sample/rabbit-en.rd +511 -0
- data/sample/rabbit-history.svg +280 -0
- data/sample/rabbit-implementation.rd +182 -0
- data/sample/rabbit-slide-show-logo.svg +597 -0
- data/sample/rabbit.dia +408 -0
- data/sample/rabbit.hiki +398 -0
- data/sample/rabbit.md +423 -0
- data/sample/rabbit.rd +520 -0
- data/sample/rabbit.xcf +0 -0
- data/sample/rabbit_icon.ico +0 -0
- data/sample/rabbit_icon.png +0 -0
- data/sample/shocker.jpg +0 -0
- data/sample/slide-property.hiki +14 -0
- data/sample/slide-property.rab +18 -0
- data/sample/spiral.svg +29 -0
- data/sample/table-en.rd +55 -0
- data/sample/table.hiki +34 -0
- data/sample/table.rd +55 -0
- data/sample/usagi.png +0 -0
- data/sample/video.md +19 -0
- data/sample/video.rab +17 -0
- metadata +1000 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Copyright (C) 2007-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 "parser/markdown"
|
|
18
|
+
require_relative "parser/pdf"
|
|
19
|
+
require_relative "parser/rd"
|
|
20
|
+
require_relative "parser/wiki"
|
|
21
|
+
|
|
22
|
+
# Image is fallback
|
|
23
|
+
require_relative "parser/image"
|
|
24
|
+
|
|
25
|
+
module Rabbit
|
|
26
|
+
module Parser
|
|
27
|
+
include GetText
|
|
28
|
+
|
|
29
|
+
module_function
|
|
30
|
+
def parse(canvas, source, **options)
|
|
31
|
+
parser = Base.find_loader(source)
|
|
32
|
+
if parser.nil?
|
|
33
|
+
format = _("unsupported format. (supported: %s)")
|
|
34
|
+
format_names = Base.loaders.collect do |loader|
|
|
35
|
+
loader.format_name
|
|
36
|
+
end
|
|
37
|
+
message = format % "[#{format_names.join(', ')}]"
|
|
38
|
+
raise UnsupportedFormatError.new(message)
|
|
39
|
+
end
|
|
40
|
+
parser.new(canvas, source, **options).parse
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def normalize_property_name(name)
|
|
44
|
+
name.gsub(/_/, "-").strip
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
class SlidePropertySetter
|
|
48
|
+
def initialize(slide)
|
|
49
|
+
@slide = slide
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def apply(element)
|
|
53
|
+
return unless element.is_a?(Element::DescriptionList)
|
|
54
|
+
element.each do |item|
|
|
55
|
+
name = Parser.normalize_property_name(item.term.text)
|
|
56
|
+
@slide[name] = item.content.text.strip
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
class NoteSetter
|
|
62
|
+
def initialize(slide)
|
|
63
|
+
@slide = slide
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def apply(element)
|
|
67
|
+
return unless element.is_a?(Element::Paragraph)
|
|
68
|
+
@slide['note'] ||= ""
|
|
69
|
+
@slide['note'] << element.text
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Copyright (C) 2012-2016 Kouhei Sutou <kou@cozmixng.org>
|
|
2
|
+
#
|
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
6
|
+
# (at your option) any later version.
|
|
7
|
+
#
|
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
+
# GNU General Public License for more details.
|
|
12
|
+
#
|
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
16
|
+
|
|
17
|
+
module Rabbit
|
|
18
|
+
class PasswordReader
|
|
19
|
+
def initialize(prompt)
|
|
20
|
+
@prompt = prompt
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def read
|
|
24
|
+
print(@prompt)
|
|
25
|
+
system("/bin/stty -echo") if $stdin.tty?
|
|
26
|
+
$stdin.gets.chomp
|
|
27
|
+
ensure
|
|
28
|
+
if $stdin.tty?
|
|
29
|
+
system("/bin/stty echo")
|
|
30
|
+
puts
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
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 "fileutils"
|
|
18
|
+
require "pathname"
|
|
19
|
+
|
|
20
|
+
require_relative "rabbit"
|
|
21
|
+
|
|
22
|
+
module Rabbit
|
|
23
|
+
module PathManipulatable
|
|
24
|
+
include GetText
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
def create_directory(path)
|
|
28
|
+
Rabbit.logger.info(_("Creating directory: %s") % path)
|
|
29
|
+
FileUtils.mkdir_p(path)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def create_file(path, &block)
|
|
33
|
+
Rabbit.logger.info(_("Creating file: %s") % path)
|
|
34
|
+
File.open(path, "w", &block)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Copyright (C) 2004-2025 Sutou Kouhei <kou@cozmixng.org>
|
|
2
|
+
#
|
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
6
|
+
# (at your option) any later version.
|
|
7
|
+
#
|
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
+
# GNU General Public License for more details.
|
|
12
|
+
#
|
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
16
|
+
|
|
17
|
+
require_relative "qt"
|
|
18
|
+
|
|
19
|
+
module Rabbit
|
|
20
|
+
class Progress
|
|
21
|
+
attr_reader :window, :foreground, :background
|
|
22
|
+
def initialize
|
|
23
|
+
@width = 100
|
|
24
|
+
@height = 20
|
|
25
|
+
@foreground = nil
|
|
26
|
+
@background = nil
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def foreground=(color)
|
|
30
|
+
@foreground = color
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def background=(color)
|
|
34
|
+
@background = color
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def clear_color
|
|
38
|
+
@foreground = nil
|
|
39
|
+
@background = nil
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def start_progress(max, parent)
|
|
43
|
+
return if max.zero?
|
|
44
|
+
|
|
45
|
+
@window = QWidget.new(nil, ::Qt::Popup)
|
|
46
|
+
@window.resize(@width, @height)
|
|
47
|
+
@bar = QProgressBar.new(@window)
|
|
48
|
+
layout = QVBoxLayout.new(@window)
|
|
49
|
+
layout.set_contents_margins(0, 0, 0, 0)
|
|
50
|
+
layout.add_widget(@bar)
|
|
51
|
+
@bar.set_minimum(0)
|
|
52
|
+
@bar.set_maximum(max)
|
|
53
|
+
@bar.set_value(0)
|
|
54
|
+
@bar.set_text_visible(false)
|
|
55
|
+
@current = 0
|
|
56
|
+
@max = max.to_f
|
|
57
|
+
@window.show
|
|
58
|
+
|
|
59
|
+
setup_progress_color
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def update_progress(i)
|
|
63
|
+
return if @max.nil?
|
|
64
|
+
|
|
65
|
+
@current = i
|
|
66
|
+
@bar.set_value(@current)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def end_progress
|
|
70
|
+
return if @max.nil?
|
|
71
|
+
|
|
72
|
+
@current = @max.to_i
|
|
73
|
+
@bar.set_value(@current)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def hide
|
|
77
|
+
@max = nil
|
|
78
|
+
@window&.close
|
|
79
|
+
@bar = nil
|
|
80
|
+
@window = nil
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
private
|
|
84
|
+
def setup_progress_color
|
|
85
|
+
css_parts = []
|
|
86
|
+
if @foreground
|
|
87
|
+
css_parts << "QProgressBar::chunk { background-color: #{@foreground.to_css_rgba}; }"
|
|
88
|
+
end
|
|
89
|
+
if @background
|
|
90
|
+
css_parts << "QProgressBar { background-color: #{@background.to_css_rgba}; }"
|
|
91
|
+
end
|
|
92
|
+
unless css_parts.empty?
|
|
93
|
+
@bar.set_style_sheet(css_parts.join("\n"))
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Copyright (C) 2020-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 "relative-size"
|
|
18
|
+
require_relative "yaml-loader"
|
|
19
|
+
|
|
20
|
+
module Rabbit
|
|
21
|
+
class Properties
|
|
22
|
+
include Enumerable
|
|
23
|
+
|
|
24
|
+
def initialize(data)
|
|
25
|
+
@data = normalize(data)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def [](key)
|
|
29
|
+
@data[normalize_key(key)]
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def []=(key, value)
|
|
33
|
+
@data[normalize_key(key)] = value
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def each(&block)
|
|
37
|
+
@data.each(&block)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def get_boolean(key, default=nil)
|
|
41
|
+
value = self[key]
|
|
42
|
+
return default if value.nil?
|
|
43
|
+
true_value?(value)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def get_integer(key, default=nil)
|
|
47
|
+
integer_value(self[key] || default)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def get_float(key, default=nil)
|
|
51
|
+
float_value(self[key] || default)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def get_size(key, filename, default=nil)
|
|
55
|
+
size_value(self[key] || default, filename, key)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def get_relative_size(key, filename, default=nil)
|
|
59
|
+
relative_size_value(self[key] || default,
|
|
60
|
+
filename,
|
|
61
|
+
key)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def draws
|
|
65
|
+
targets = @data.select do |key, _|
|
|
66
|
+
/\Adraw\d+\z/.match?(key)
|
|
67
|
+
end
|
|
68
|
+
targets = targets.sort_by do |key, _|
|
|
69
|
+
Integer(key[/\d+/], 10)
|
|
70
|
+
end
|
|
71
|
+
targets.collect do |_, value|
|
|
72
|
+
YAMLLoader.load(value)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def respond_to_missing?(name, include_private)
|
|
77
|
+
@data.key?(normalize_key(name.to_s.gsub(/\?\z/, "")))
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def method_missing(name, *args, &block)
|
|
81
|
+
case args.size
|
|
82
|
+
when 0
|
|
83
|
+
key = name.to_s
|
|
84
|
+
if key.end_with?("?")
|
|
85
|
+
key = key[0..-2]
|
|
86
|
+
is_predict = true
|
|
87
|
+
else
|
|
88
|
+
is_predict = false
|
|
89
|
+
end
|
|
90
|
+
key = normalize_key(key)
|
|
91
|
+
return super unless @data.key?(key)
|
|
92
|
+
value = @data[key]
|
|
93
|
+
if is_predict
|
|
94
|
+
true_value?(value)
|
|
95
|
+
else
|
|
96
|
+
value
|
|
97
|
+
end
|
|
98
|
+
when 1
|
|
99
|
+
key = name.to_s
|
|
100
|
+
return super unless key.end_with?("=")
|
|
101
|
+
key = key[0..-2]
|
|
102
|
+
@data[normalize_key(key)] = args[0]
|
|
103
|
+
else
|
|
104
|
+
super
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
private
|
|
109
|
+
def normalize(data)
|
|
110
|
+
normalized_data = {}
|
|
111
|
+
(data || {}).each do |key, value|
|
|
112
|
+
normalized_data[normalize_key(key)] = value
|
|
113
|
+
end
|
|
114
|
+
normalized_data
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def normalize_key(key)
|
|
118
|
+
key.to_s.gsub(/-/, "_")
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def true_value?(value)
|
|
122
|
+
value == true or value == "true"
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def integer_value(value)
|
|
126
|
+
return nil if value.nil?
|
|
127
|
+
Integer(value, 10)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def float_value(value)
|
|
131
|
+
return nil if value.nil?
|
|
132
|
+
Float(value)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def size_value(value, filename, name)
|
|
136
|
+
return nil if value.nil?
|
|
137
|
+
begin
|
|
138
|
+
Integer(value, 10)
|
|
139
|
+
rescue ArgumentError
|
|
140
|
+
raise InvalidSizeError.new(filename, name, value)
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def relative_size_value(value, filename, name)
|
|
145
|
+
return nil if value.nil?
|
|
146
|
+
begin
|
|
147
|
+
value = Float(value)
|
|
148
|
+
rescue ArgumentError
|
|
149
|
+
raise InvalidSizeError.new(filename, name, value)
|
|
150
|
+
end
|
|
151
|
+
RelativeSize.new(value)
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
data/lib/rabbit/qt.rb
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
# Copyright (C) 2025 Rabbit Qt Contributors
|
|
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 "qt6/qtwidgets"
|
|
18
|
+
require "pango"
|
|
19
|
+
|
|
20
|
+
module Rabbit
|
|
21
|
+
module Qt
|
|
22
|
+
def self.init
|
|
23
|
+
# QApplication is created in command/rabbit.rb
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.process_pending_events
|
|
27
|
+
QApplication.process_events
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# QObject that wraps a Ruby block as a slot.
|
|
31
|
+
# Used to bridge ruby-qt6's signal/slot system with Ruby blocks.
|
|
32
|
+
# Provides multiple fire() overloads for different signal signatures.
|
|
33
|
+
class SignalCallback < RubyQt6::Bando::QObject
|
|
34
|
+
q_object do
|
|
35
|
+
slot "fire()"
|
|
36
|
+
slot "fire_bool(bool)"
|
|
37
|
+
slot "fire_string(QString)"
|
|
38
|
+
slot "fire_int(int)"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def initialize(block, parent = nil)
|
|
42
|
+
super(parent)
|
|
43
|
+
@block = block
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# ruby-qt6 dispatches slot "X()" to Ruby method "_rubyqt6_slot_X"
|
|
47
|
+
def _rubyqt6_slot_fire
|
|
48
|
+
@block.call
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def _rubyqt6_slot_fire_bool(val)
|
|
52
|
+
@block.call(val)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def _rubyqt6_slot_fire_string(val)
|
|
56
|
+
@block.call(val)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def _rubyqt6_slot_fire_int(val)
|
|
60
|
+
@block.call(val)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Map signal parameter types to the appropriate slot name
|
|
65
|
+
SIGNAL_SLOT_MAP = {
|
|
66
|
+
"" => "fire",
|
|
67
|
+
"bool" => "fire_bool",
|
|
68
|
+
"QString" => "fire_string",
|
|
69
|
+
"int" => "fire_int",
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
# Store callback references to prevent GC
|
|
73
|
+
@_callback_refs = []
|
|
74
|
+
|
|
75
|
+
# Connect a Qt signal to a Ruby block.
|
|
76
|
+
# Automatically selects the right slot based on signal parameters.
|
|
77
|
+
def self.connect_signal(signal, &block)
|
|
78
|
+
callback = SignalCallback.new(block)
|
|
79
|
+
# Determine the slot name from the signal's parameter types
|
|
80
|
+
metamethod = signal.instance_variable_get(:@metamethod)
|
|
81
|
+
params = metamethod.parameters rescue []
|
|
82
|
+
if params.empty?
|
|
83
|
+
slot_name = "fire"
|
|
84
|
+
else
|
|
85
|
+
param_type = params.first.to_s
|
|
86
|
+
slot_name = SIGNAL_SLOT_MAP[param_type] || "fire"
|
|
87
|
+
end
|
|
88
|
+
signal.connect(callback, slot_name)
|
|
89
|
+
@_callback_refs << callback
|
|
90
|
+
callback
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Run a block once after delay_ms milliseconds.
|
|
94
|
+
def self.single_shot(delay_ms, &block)
|
|
95
|
+
callback = SignalCallback.new(block)
|
|
96
|
+
timer = QTimer.new
|
|
97
|
+
timer.set_single_shot(true)
|
|
98
|
+
timer.timeout.connect(callback, "fire")
|
|
99
|
+
timer.start(delay_ms.to_i)
|
|
100
|
+
ref = [timer, callback]
|
|
101
|
+
@_callback_refs << ref
|
|
102
|
+
# Auto-cleanup after firing
|
|
103
|
+
original_fire = callback.method(:_rubyqt6_slot_fire)
|
|
104
|
+
refs = @_callback_refs
|
|
105
|
+
callback.define_singleton_method(:_rubyqt6_slot_fire) do
|
|
106
|
+
original_fire.call
|
|
107
|
+
refs.delete(ref)
|
|
108
|
+
end
|
|
109
|
+
timer
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Timer manager providing GLib::Timeout/GLib::Source compatible API
|
|
113
|
+
module TimerManager
|
|
114
|
+
@timers = {}
|
|
115
|
+
@next_id = 1
|
|
116
|
+
@mutex = Mutex.new
|
|
117
|
+
|
|
118
|
+
def self.add(interval_ms, &block)
|
|
119
|
+
@mutex.synchronize do
|
|
120
|
+
id = @next_id
|
|
121
|
+
@next_id += 1
|
|
122
|
+
@timers[id] = { interval: interval_ms, block: block, active: true }
|
|
123
|
+
schedule_next(id)
|
|
124
|
+
id
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def self.remove(id)
|
|
129
|
+
@mutex.synchronize do
|
|
130
|
+
timer_entry = @timers.delete(id)
|
|
131
|
+
timer_entry[:active] = false if timer_entry
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
private
|
|
136
|
+
def self.schedule_next(id)
|
|
137
|
+
timer_entry = @timers[id]
|
|
138
|
+
return unless timer_entry && timer_entry[:active]
|
|
139
|
+
interval = timer_entry[:interval]
|
|
140
|
+
::Rabbit::Qt.single_shot(interval) do
|
|
141
|
+
entry = @mutex.synchronize { @timers[id] }
|
|
142
|
+
next unless entry && entry[:active]
|
|
143
|
+
result = entry[:block].call
|
|
144
|
+
@mutex.synchronize do
|
|
145
|
+
if result == false
|
|
146
|
+
@timers.delete(id)
|
|
147
|
+
elsif @timers[id] && @timers[id][:active]
|
|
148
|
+
schedule_next(id)
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# GLib compatibility layer for code that uses GLib timers
|
|
158
|
+
# (themes, elements, images, front, etc.)
|
|
159
|
+
#
|
|
160
|
+
# The real glib2 gem may already be loaded (as a dependency of pango,
|
|
161
|
+
# gdk_pixbuf2, etc.). We monkey-patch its modules to use QTimer
|
|
162
|
+
# instead of the GLib main loop (which we don't run — we use Qt's
|
|
163
|
+
# event loop).
|
|
164
|
+
|
|
165
|
+
require "glib2"
|
|
166
|
+
|
|
167
|
+
module GLib
|
|
168
|
+
# GLib::Source is a Class in the real glib2 gem, so we patch it directly.
|
|
169
|
+
Source::REMOVE = false unless Source.const_defined?(:REMOVE)
|
|
170
|
+
Source::CONTINUE = true unless Source.const_defined?(:CONTINUE)
|
|
171
|
+
|
|
172
|
+
class Source
|
|
173
|
+
class << self
|
|
174
|
+
alias_method :_original_remove, :remove if method_defined?(:remove)
|
|
175
|
+
|
|
176
|
+
def remove(id)
|
|
177
|
+
Rabbit::Qt::TimerManager.remove(id)
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
module Timeout
|
|
183
|
+
class << self
|
|
184
|
+
alias_method :_original_add, :add if method_defined?(:add)
|
|
185
|
+
|
|
186
|
+
def add(interval_ms, &block)
|
|
187
|
+
Rabbit::Qt::TimerManager.add(interval_ms, &block)
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
alias_method :_original_add_seconds, :add_seconds if method_defined?(:add_seconds)
|
|
191
|
+
|
|
192
|
+
def add_seconds(interval_s, &block)
|
|
193
|
+
add(interval_s * 1000, &block)
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
module Idle
|
|
199
|
+
class << self
|
|
200
|
+
alias_method :_original_add, :add if method_defined?(:add)
|
|
201
|
+
|
|
202
|
+
def add(&block)
|
|
203
|
+
Rabbit::Qt.single_shot(0, &block)
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
class << self
|
|
209
|
+
def application_name=(name)
|
|
210
|
+
QApplication.set_application_name(name) if defined?(QApplication)
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
# Minimal Gtk compatibility for theme files that call Gtk.idle_add
|
|
216
|
+
unless defined?(Gtk) && Gtk.respond_to?(:idle_add)
|
|
217
|
+
module Gtk
|
|
218
|
+
def self.idle_add(&block)
|
|
219
|
+
GLib::Idle.add(&block)
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Copyright (C) 2004-2025 Sutou Kouhei <kou@cozmixng.org>
|
|
2
|
+
#
|
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
6
|
+
# (at your option) any later version.
|
|
7
|
+
#
|
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
+
# GNU General Public License for more details.
|
|
12
|
+
#
|
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
16
|
+
|
|
17
|
+
require_relative "config"
|
|
18
|
+
|
|
19
|
+
require_relative "gettext"
|
|
20
|
+
require_relative "version"
|
|
21
|
+
|
|
22
|
+
require_relative "error"
|
|
23
|
+
require_relative "logger"
|
|
24
|
+
|
|
25
|
+
module Rabbit
|
|
26
|
+
TMP_DIR_NAME = ".tmp"
|
|
27
|
+
|
|
28
|
+
@@application = nil
|
|
29
|
+
@@logger = nil
|
|
30
|
+
@@gui_init_procs = []
|
|
31
|
+
@@cleanup_procs = []
|
|
32
|
+
|
|
33
|
+
class << self
|
|
34
|
+
def application
|
|
35
|
+
@@application
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def application=(app)
|
|
39
|
+
@@application = app
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def logger
|
|
43
|
+
@@logger ||= Logger.default
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def logger=(logger)
|
|
47
|
+
@@logger = logger
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|