lacci 0.2.1 → 0.3.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 +4 -4
- data/Gemfile +2 -2
- data/Gemfile.lock +79 -0
- data/Rakefile +1 -4
- data/lib/lacci/scarpe_cli.rb +71 -0
- data/lib/lacci/scarpe_core.rb +22 -0
- data/lib/lacci/version.rb +13 -0
- data/lib/scarpe/niente/app.rb +23 -0
- data/lib/scarpe/niente/display_service.rb +62 -0
- data/lib/scarpe/niente/drawable.rb +57 -0
- data/lib/scarpe/niente/logger.rb +29 -0
- data/lib/scarpe/niente/shoes_spec.rb +87 -0
- data/lib/scarpe/niente.rb +20 -0
- data/lib/shoes/app.rb +165 -43
- data/lib/{scarpe → shoes}/background.rb +2 -2
- data/lib/{scarpe → shoes}/border.rb +2 -2
- data/lib/shoes/builtins.rb +63 -0
- data/lib/shoes/changelog.rb +52 -0
- data/lib/{scarpe → shoes}/colors.rb +3 -1
- data/lib/shoes/constants.rb +24 -3
- data/lib/{scarpe → shoes}/display_service.rb +45 -23
- data/lib/{scarpe → shoes}/download.rb +7 -7
- data/lib/shoes/drawable.rb +380 -0
- data/lib/shoes/drawables/arc.rb +49 -0
- data/lib/shoes/drawables/arrow.rb +41 -0
- data/lib/shoes/drawables/button.rb +73 -0
- data/lib/shoes/drawables/check.rb +29 -0
- data/lib/{scarpe → shoes/drawables}/document_root.rb +5 -5
- data/lib/{scarpe → shoes/drawables}/edit_box.rb +6 -6
- data/lib/{scarpe → shoes/drawables}/edit_line.rb +6 -6
- data/lib/shoes/drawables/flow.rb +22 -0
- data/lib/{scarpe → shoes/drawables}/image.rb +7 -13
- data/lib/shoes/drawables/line.rb +20 -0
- data/lib/shoes/drawables/link.rb +34 -0
- data/lib/shoes/drawables/list_box.rb +56 -0
- data/lib/shoes/drawables/para.rb +118 -0
- data/lib/shoes/drawables/progress.rb +14 -0
- data/lib/shoes/drawables/radio.rb +33 -0
- data/lib/shoes/drawables/rect.rb +17 -0
- data/lib/shoes/drawables/shape.rb +36 -0
- data/lib/shoes/drawables/slot.rb +87 -0
- data/lib/{scarpe → shoes/drawables}/span.rb +8 -7
- data/lib/{scarpe → shoes/drawables}/stack.rb +10 -4
- data/lib/shoes/drawables/star.rb +50 -0
- data/lib/shoes/drawables/subscription_item.rb +93 -0
- data/lib/shoes/drawables/text_drawable.rb +63 -0
- data/lib/shoes/drawables/video.rb +16 -0
- data/lib/shoes/drawables/widget.rb +69 -0
- data/lib/shoes/drawables.rb +31 -0
- data/lib/shoes/errors.rb +28 -0
- data/lib/shoes/log.rb +71 -0
- data/lib/shoes/ruby_extensions.rb +15 -0
- data/lib/shoes/spacing.rb +9 -0
- data/lib/shoes-spec.rb +93 -0
- data/lib/shoes.rb +93 -11
- metadata +67 -557
- data/.rubocop.yml +0 -85
- data/.ruby-version +0 -1
- data/.vscode/extensions.json +0 -5
- data/.yardopts +0 -12
- data/CHANGELOG.md +0 -19
- data/CODE_OF_CONDUCT.md +0 -84
- data/CONTRIBUTING.md +0 -20
- data/LICENSE.txt +0 -21
- data/README.md +0 -178
- data/bin/console +0 -15
- data/bin/setup +0 -8
- data/dev.yml +0 -7
- data/docs/static/PKGBUILD +0 -47
- data/docs/static/Shoes.icns +0 -0
- data/docs/static/avatar.png +0 -0
- data/docs/static/code_highlighter.js +0 -188
- data/docs/static/code_highlighter_ruby.js +0 -26
- data/docs/static/icon-debug.png +0 -0
- data/docs/static/icon-error.png +0 -0
- data/docs/static/icon-info.png +0 -0
- data/docs/static/icon-warn.png +0 -0
- data/docs/static/listbox_button1.png +0 -0
- data/docs/static/listbox_button2.png +0 -0
- data/docs/static/man-app.png +0 -0
- data/docs/static/man-builds.png +0 -0
- data/docs/static/man-builds1.png +0 -0
- data/docs/static/man-editor-notepad.png +0 -0
- data/docs/static/man-editor-osx.png +0 -0
- data/docs/static/man-ele-background.png +0 -0
- data/docs/static/man-ele-border.png +0 -0
- data/docs/static/man-ele-button.png +0 -0
- data/docs/static/man-ele-check.png +0 -0
- data/docs/static/man-ele-editbox.png +0 -0
- data/docs/static/man-ele-editline.png +0 -0
- data/docs/static/man-ele-image.png +0 -0
- data/docs/static/man-ele-listbox.png +0 -0
- data/docs/static/man-ele-progress.png +0 -0
- data/docs/static/man-ele-radio.png +0 -0
- data/docs/static/man-ele-shape.png +0 -0
- data/docs/static/man-ele-textblock.png +0 -0
- data/docs/static/man-ele-video.png +0 -0
- data/docs/static/man-intro-dmg.png +0 -0
- data/docs/static/man-intro-exe.png +0 -0
- data/docs/static/man-look-tiger.png +0 -0
- data/docs/static/man-look-ubuntu.png +0 -0
- data/docs/static/man-look-vista.png +0 -0
- data/docs/static/man-run-osx.png +0 -0
- data/docs/static/man-run-vista.png +0 -0
- data/docs/static/man-run-xp.png +0 -0
- data/docs/static/man-shot1.png +0 -0
- data/docs/static/manual-en.txt +0 -3529
- data/docs/static/manual-ja.txt +0 -2829
- data/docs/static/manual.css +0 -171
- data/docs/static/manual.md +0 -3528
- data/docs/static/menu-corner1.png +0 -0
- data/docs/static/menu-corner2.png +0 -0
- data/docs/static/menu-gray.png +0 -0
- data/docs/static/menu-left.png +0 -0
- data/docs/static/menu-right.png +0 -0
- data/docs/static/menu-top.png +0 -0
- data/docs/static/shoes-dmg.jpg +0 -0
- data/docs/static/shoes-icon-blue.png +0 -0
- data/docs/static/shoes-icon.png +0 -0
- data/docs/static/shoes-manual-apps.gif +0 -0
- data/docs/static/shoes_main_window.png +0 -0
- data/docs/static/stripe.png +0 -0
- data/docs/static/stubs/blank.exe +0 -0
- data/docs/static/stubs/blank.hfz +0 -0
- data/docs/static/stubs/blank.run +0 -375
- data/docs/static/stubs/cocoa-install +0 -0
- data/docs/static/stubs/sh-install +0 -49
- data/docs/static/stubs/shoes-stub-inject.exe +0 -0
- data/docs/static/stubs/shoes-stub.exe +0 -0
- data/docs/static/tutor-back.png +0 -0
- data/docs/yard/catscradle.md +0 -44
- data/docs/yard/template/default/fulldoc/html/setup.rb +0 -13
- data/docs/yard/template/default/layout/html/setup.rb +0 -9
- data/examples/backdround_with_image.rb +0 -16
- data/examples/bloopsaphone/working/1901_by_Aanand_Prasad.rb +0 -478
- data/examples/bloopsaphone/working/b1.rb +0 -64
- data/examples/bloopsaphone/working/b2.rb +0 -36
- data/examples/bloopsaphone/working/bloops_test.rb +0 -41
- data/examples/bloopsaphone/working/bloopsaphone_theme_song_by_why.rb +0 -31
- data/examples/bloopsaphone/working/feepogram.rb +0 -67
- data/examples/bloopsaphone/working/simpsons_theme_song_by_why.rb +0 -14
- data/examples/bloopsaphone/working/tune_cheeky_drat.rb +0 -210
- data/examples/button.rb +0 -10
- data/examples/button_alert.rb +0 -6
- data/examples/button_go_away.rb +0 -6
- data/examples/button_with_position_and_size.rb +0 -7
- data/examples/coffee.rb +0 -14
- data/examples/download.rb +0 -5
- data/examples/download_and_show_image.rb +0 -28
- data/examples/edit_box.rb +0 -8
- data/examples/edit_line.rb +0 -8
- data/examples/fill.rb +0 -25
- data/examples/flow.rb +0 -11
- data/examples/fonts.rb +0 -6
- data/examples/gen.rb +0 -140
- data/examples/get_headers.rb +0 -10
- data/examples/hello_world.rb +0 -3
- data/examples/highlander.rb +0 -87
- data/examples/image/clickable_image.rb +0 -5
- data/examples/image/image.rb +0 -3
- data/examples/image/image_size.rb +0 -7
- data/examples/image/image_with_position_and_size.rb +0 -3
- data/examples/info.rb +0 -9
- data/examples/legacy/not_checked/expert/colours.rb +0 -105
- data/examples/legacy/not_checked/expert/curve-animation.rb +0 -31
- data/examples/legacy/not_checked/expert/curve-control-point.rb +0 -51
- data/examples/legacy/not_checked/expert/custom-list-box.rb +0 -53
- data/examples/legacy/not_checked/expert/definr.rb +0 -23
- data/examples/legacy/not_checked/expert/funnies.rb +0 -56
- data/examples/legacy/not_checked/expert/minesweeper.rb +0 -267
- data/examples/legacy/not_checked/expert/othello.rb +0 -318
- data/examples/legacy/not_checked/expert/pong.rb +0 -62
- data/examples/legacy/not_checked/expert/tankspank.rb +0 -385
- data/examples/legacy/not_checked/expert/tooltips.rb +0 -45
- data/examples/legacy/not_checked/expert/url.rb +0 -37
- data/examples/legacy/not_checked/expert/video-player.rb +0 -256
- data/examples/legacy/not_checked/good/_why-stories.rb +0 -44
- data/examples/legacy/not_checked/good/_why-stories.yaml +0 -387
- data/examples/legacy/not_checked/good/arc.rb +0 -37
- data/examples/legacy/not_checked/good/cardflip.rb +0 -141
- data/examples/legacy/not_checked/good/clock.rb +0 -51
- data/examples/legacy/not_checked/good/console.rb +0 -21
- data/examples/legacy/not_checked/good/follow.rb +0 -26
- data/examples/legacy/not_checked/good/image-rotate.rb +0 -14
- data/examples/legacy/not_checked/good/paris.svg +0 -7236
- data/examples/legacy/not_checked/good/path-animation.rb +0 -46
- data/examples/legacy/not_checked/good/plots.rb +0 -100
- data/examples/legacy/not_checked/good/reminder.rb +0 -174
- data/examples/legacy/not_checked/good/svgview.rb +0 -113
- data/examples/legacy/not_checked/good/vjot.rb +0 -56
- data/examples/legacy/not_checked/shoes-contrib/.gitignore +0 -2
- data/examples/legacy/not_checked/shoes-contrib/README.md +0 -34
- data/examples/legacy/not_checked/shoes-contrib/animation/animate-ovals.rb +0 -21
- data/examples/legacy/not_checked/shoes-contrib/animation/flowers.rb +0 -59
- data/examples/legacy/not_checked/shoes-contrib/animation/happy-trails.rb +0 -31
- data/examples/legacy/not_checked/shoes-contrib/animation/mice-satellites.rb +0 -27
- data/examples/legacy/not_checked/shoes-contrib/animation/oval-motion.rb +0 -12
- data/examples/legacy/not_checked/shoes-contrib/animation/pink-bubbles.rb +0 -34
- data/examples/legacy/not_checked/shoes-contrib/animation/pulsate.rb +0 -18
- data/examples/legacy/not_checked/shoes-contrib/animation/rotating-star.rb +0 -18
- data/examples/legacy/not_checked/shoes-contrib/app/download-and-save.rb +0 -11
- data/examples/legacy/not_checked/shoes-contrib/app/download.rb +0 -10
- data/examples/legacy/not_checked/shoes-contrib/app/get-google.rb +0 -11
- data/examples/legacy/not_checked/shoes-contrib/app/mouse-detection.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/app/resizeable-false.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/art/bubble-bullseye.rb +0 -23
- data/examples/legacy/not_checked/shoes-contrib/art/faded.rb +0 -17
- data/examples/legacy/not_checked/shoes-contrib/art/fill-oval.rb +0 -5
- data/examples/legacy/not_checked/shoes-contrib/art/mask.rb +0 -15
- data/examples/legacy/not_checked/shoes-contrib/art/oval-gradient.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/art/star-gradient.rb +0 -4
- data/examples/legacy/not_checked/shoes-contrib/basic/basic-edit-box.rb +0 -8
- data/examples/legacy/not_checked/shoes-contrib/basic/basic-new-window.rb +0 -8
- data/examples/legacy/not_checked/shoes-contrib/basic/basic-oval-image.rb +0 -8
- data/examples/legacy/not_checked/shoes-contrib/basic/basic-oval-shape.rb +0 -8
- data/examples/legacy/not_checked/shoes-contrib/basic/basic-oval.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/basic/class-book.rb +0 -43
- data/examples/legacy/not_checked/shoes-contrib/basic/class-book.yaml +0 -387
- data/examples/legacy/not_checked/shoes-contrib/basic/clock.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/basic/edit-stack +0 -14
- data/examples/legacy/not_checked/shoes-contrib/basic/gradient-shoes.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/basic/list_box-shape-report.rb +0 -19
- data/examples/legacy/not_checked/shoes-contrib/basic/rect-arrow.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/basic/scribble.rb +0 -8
- data/examples/legacy/not_checked/shoes-contrib/basic/search.rb +0 -32
- data/examples/legacy/not_checked/shoes-contrib/basic/shoes-notes.rb +0 -16
- data/examples/legacy/not_checked/shoes-contrib/basic/url-shoes-subclassing.rb +0 -24
- data/examples/legacy/not_checked/shoes-contrib/browser.rb +0 -21
- data/examples/legacy/not_checked/shoes-contrib/elements/background-column.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/elements/background.rb +0 -4
- data/examples/legacy/not_checked/shoes-contrib/elements/basic-fps.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/elements/border-cat.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/elements/button-block.rb +0 -8
- data/examples/legacy/not_checked/shoes-contrib/elements/check-mate.rb +0 -15
- data/examples/legacy/not_checked/shoes-contrib/elements/common-styles.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/elements/displace-animation.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/elements/edit_box-character-count.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/elements/edit_line-character-count.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/elements/image-icon.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/elements/list_box-select-class.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/elements/list_box.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/elements/move-flow-animate.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/elements/phat-button.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/elements/popup.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/elements/progress-bar.rb +0 -10
- data/examples/legacy/not_checked/shoes-contrib/elements/radio-dreamcast-favs.rb +0 -17
- data/examples/legacy/not_checked/shoes-contrib/elements/timer.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/elements/width-introspec.rb +0 -8
- data/examples/legacy/not_checked/shoes-contrib/events/background-hover.rb +0 -11
- data/examples/legacy/not_checked/shoes-contrib/events/motion-detect.rb +0 -9
- data/examples/legacy/not_checked/shoes-contrib/events/pressed-key.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/expert/expert-funnies.rb +0 -51
- data/examples/legacy/not_checked/shoes-contrib/expert/expert-irb.rb +0 -112
- data/examples/legacy/not_checked/shoes-contrib/expert/expert-othello.rb +0 -319
- data/examples/legacy/not_checked/shoes-contrib/good/good-arc.rb +0 -37
- data/examples/legacy/not_checked/shoes-contrib/good/good-clock.rb +0 -51
- data/examples/legacy/not_checked/shoes-contrib/good/good-follow.rb +0 -26
- data/examples/legacy/not_checked/shoes-contrib/good/good-reminder.rb +0 -174
- data/examples/legacy/not_checked/shoes-contrib/good/good-vjot.rb +0 -56
- data/examples/legacy/not_checked/shoes-contrib/kernel/ask.rb +0 -4
- data/examples/legacy/not_checked/shoes-contrib/kernel/ask_color.rb +0 -4
- data/examples/legacy/not_checked/shoes-contrib/kernel/ask_open_file.rb +0 -4
- data/examples/legacy/not_checked/shoes-contrib/kernel/ask_save_file.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/kernel/confirm.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/kernel/debug.rb +0 -4
- data/examples/legacy/not_checked/shoes-contrib/kernel/exit.rb +0 -5
- data/examples/legacy/not_checked/shoes-contrib/kernel/font.rb +0 -5
- data/examples/legacy/not_checked/shoes-contrib/kernel/fonts.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/manipulation/append-slot.rb +0 -9
- data/examples/legacy/not_checked/shoes-contrib/manipulation/clear-slot.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/manipulation/prepend-slot.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/manipulation/roll.rb +0 -17
- data/examples/legacy/not_checked/shoes-contrib/position/gutter-margin.rb +0 -5
- data/examples/legacy/not_checked/shoes-contrib/position/stack-width.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-accordion.rb +0 -75
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-anim-shapes.rb +0 -17
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-anim-text.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-arc.rb +0 -23
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-bounce.rb +0 -24
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-calc.rb +0 -70
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-chipmunk.rb +0 -26
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-control-sizes.rb +0 -24
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-curve.rb +0 -26
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-dialogs.rb +0 -29
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-downloader.rb +0 -27
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-draw.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-editor.rb +0 -28
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-form.rb +0 -28
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-form.shy +0 -0
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-mask.rb +0 -21
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-menu.rb +0 -31
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-menu1.rb +0 -35
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-rubygems.rb +0 -29
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-slide.rb +0 -45
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-sphere.rb +0 -28
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-sqlite3.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-timer.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-video.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/styles/alignment.rb +0 -4
- data/examples/legacy/not_checked/shoes-contrib/styles/attachment.rb +0 -5
- data/examples/legacy/not_checked/shoes-contrib/styles/emphasis.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/styles/gradient-angle.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/styles/para-methods.rb +0 -5
- data/examples/legacy/not_checked/shoes-contrib/styles/para-red-underlined.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/styles/para-style-method.rb +0 -4
- data/examples/legacy/not_checked/shoes-dep-samples/expert-game-of-life.rb +0 -243
- data/examples/legacy/not_checked/shoes-dep-samples/expert-othello.rb +0 -319
- data/examples/legacy/not_checked/shoes-dep-samples/good-clock.rb +0 -51
- data/examples/legacy/not_checked/shoes-dep-samples/good-follow.rb +0 -26
- data/examples/legacy/not_checked/shoes-dep-samples/good-reminder.rb +0 -174
- data/examples/legacy/not_checked/shoes-dep-samples/good-vjot.rb +0 -56
- data/examples/legacy/not_checked/shoes-dep-samples/simple-accordion.rb +0 -75
- data/examples/legacy/not_checked/shoes-dep-samples/simple-anim-shapes.rb +0 -17
- data/examples/legacy/not_checked/shoes-dep-samples/simple-anim-text.rb +0 -13
- data/examples/legacy/not_checked/shoes-dep-samples/simple-arc.rb +0 -23
- data/examples/legacy/not_checked/shoes-dep-samples/simple-bounce.rb +0 -24
- data/examples/legacy/not_checked/shoes-dep-samples/simple-calc.rb +0 -70
- data/examples/legacy/not_checked/shoes-dep-samples/simple-chipmunk.rb +0 -26
- data/examples/legacy/not_checked/shoes-dep-samples/simple-control-sizes.rb +0 -24
- data/examples/legacy/not_checked/shoes-dep-samples/simple-curve.rb +0 -26
- data/examples/legacy/not_checked/shoes-dep-samples/simple-dialogs.rb +0 -29
- data/examples/legacy/not_checked/shoes-dep-samples/simple-draw.rb +0 -13
- data/examples/legacy/not_checked/shoes-dep-samples/simple-editor.rb +0 -28
- data/examples/legacy/not_checked/shoes-dep-samples/simple-form.rb +0 -28
- data/examples/legacy/not_checked/shoes-dep-samples/simple-form.shy +0 -0
- data/examples/legacy/not_checked/shoes-dep-samples/simple-mask.rb +0 -21
- data/examples/legacy/not_checked/shoes-dep-samples/simple-menu.rb +0 -31
- data/examples/legacy/not_checked/shoes-dep-samples/simple-menu1.rb +0 -35
- data/examples/legacy/not_checked/shoes-dep-samples/simple-rubygems.rb +0 -29
- data/examples/legacy/not_checked/shoes-dep-samples/simple-slide.rb +0 -45
- data/examples/legacy/not_checked/shoes-dep-samples/simple-sphere.rb +0 -28
- data/examples/legacy/not_checked/shoes-dep-samples/simple-sqlite3.rb +0 -13
- data/examples/legacy/not_checked/shoes-dep-samples/simple-timer.rb +0 -13
- data/examples/legacy/not_checked/shoes-dep-samples/simple-video.rb +0 -13
- data/examples/legacy/not_checked/shoes3-tests/AnemicCinema1926marcelDuchampCut.mp4 +0 -0
- data/examples/legacy/not_checked/shoes3-tests/button/button.rb +0 -53
- data/examples/legacy/not_checked/shoes3-tests/cache/cache.rb +0 -41
- data/examples/legacy/not_checked/shoes3-tests/combo/combo.rb +0 -24
- data/examples/legacy/not_checked/shoes3-tests/curl/bare.rb +0 -34
- data/examples/legacy/not_checked/shoes3-tests/curl/downloader.rb +0 -40
- data/examples/legacy/not_checked/shoes3-tests/curl/m1.rb +0 -11
- data/examples/legacy/not_checked/shoes3-tests/curl/m2.rb +0 -12
- data/examples/legacy/not_checked/shoes3-tests/curl/m3.rb +0 -11
- data/examples/legacy/not_checked/shoes3-tests/curl/m4.rb +0 -5
- data/examples/legacy/not_checked/shoes3-tests/curl/typ.rb +0 -30
- data/examples/legacy/not_checked/shoes3-tests/cursor/c1.rb +0 -21
- data/examples/legacy/not_checked/shoes3-tests/decoration.rb +0 -14
- data/examples/legacy/not_checked/shoes3-tests/dialogs/ask.rb +0 -6
- data/examples/legacy/not_checked/shoes3-tests/dialogs/confirm.rb +0 -6
- data/examples/legacy/not_checked/shoes3-tests/editbox/editbox.rb +0 -36
- data/examples/legacy/not_checked/shoes3-tests/editline/editline.rb +0 -27
- data/examples/legacy/not_checked/shoes3-tests/events/button.rb +0 -32
- data/examples/legacy/not_checked/shoes3-tests/events/button.yaml +0 -40
- data/examples/legacy/not_checked/shoes3-tests/events/capture.rb +0 -57
- data/examples/legacy/not_checked/shoes3-tests/events/chipmunk.yaml +0 -47
- data/examples/legacy/not_checked/shoes3-tests/events/event0.rb +0 -8
- data/examples/legacy/not_checked/shoes3-tests/events/event1.rb +0 -51
- data/examples/legacy/not_checked/shoes3-tests/events/event1.yaml +0 -26
- data/examples/legacy/not_checked/shoes3-tests/events/event2.rb +0 -46
- data/examples/legacy/not_checked/shoes3-tests/events/event3.rb +0 -44
- data/examples/legacy/not_checked/shoes3-tests/events/event4.rb +0 -65
- data/examples/legacy/not_checked/shoes3-tests/events/event5.rb +0 -17
- data/examples/legacy/not_checked/shoes3-tests/events/event6.rb +0 -51
- data/examples/legacy/not_checked/shoes3-tests/events/replay.rb +0 -60
- data/examples/legacy/not_checked/shoes3-tests/gapp/fullscreen.rb +0 -38
- data/examples/legacy/not_checked/shoes3-tests/gapp/icon.rb +0 -56
- data/examples/legacy/not_checked/shoes3-tests/gapp/mon1.rb +0 -46
- data/examples/legacy/not_checked/shoes3-tests/gapp/settings1.rb +0 -22
- data/examples/legacy/not_checked/shoes3-tests/gapp/title1.rb +0 -34
- data/examples/legacy/not_checked/shoes3-tests/indian.m4a +0 -0
- data/examples/legacy/not_checked/shoes3-tests/menus/event.rb +0 -33
- data/examples/legacy/not_checked/shoes3-tests/menus/menu1.rb +0 -8
- data/examples/legacy/not_checked/shoes3-tests/menus/menu2.rb +0 -25
- data/examples/legacy/not_checked/shoes3-tests/menus/menu3.rb +0 -103
- data/examples/legacy/not_checked/shoes3-tests/menus/menu4.rb +0 -41
- data/examples/legacy/not_checked/shoes3-tests/menus/tests.txt +0 -42
- data/examples/legacy/not_checked/shoes3-tests/opacity.rb +0 -13
- data/examples/legacy/not_checked/shoes3-tests/plot/^IRX.R +0 -5219
- data/examples/legacy/not_checked/shoes3-tests/plot/^SPX +0 -5219
- data/examples/legacy/not_checked/shoes3-tests/plot/cstest.rb +0 -51
- data/examples/legacy/not_checked/shoes3-tests/plot/gr1.rb +0 -73
- data/examples/legacy/not_checked/shoes3-tests/plot/gr2.rb +0 -40
- data/examples/legacy/not_checked/shoes3-tests/plot/gr3.rb +0 -47
- data/examples/legacy/not_checked/shoes3-tests/plot/gr4.rb +0 -35
- data/examples/legacy/not_checked/shoes3-tests/plot/gr5.rb +0 -31
- data/examples/legacy/not_checked/shoes3-tests/plot/gr6.rb +0 -35
- data/examples/legacy/not_checked/shoes3-tests/plot/gr7.rb +0 -37
- data/examples/legacy/not_checked/shoes3-tests/plot/grcsv.rb +0 -219
- data/examples/legacy/not_checked/shoes3-tests/plot/manual.rb +0 -40
- data/examples/legacy/not_checked/shoes3-tests/progress/progress.rb +0 -29
- data/examples/legacy/not_checked/shoes3-tests/radio/clear.rb +0 -20
- data/examples/legacy/not_checked/shoes3-tests/radio/group.rb +0 -18
- data/examples/legacy/not_checked/shoes3-tests/radio/multiple.rb +0 -32
- data/examples/legacy/not_checked/shoes3-tests/radio/nogroup.rb +0 -9
- data/examples/legacy/not_checked/shoes3-tests/simpletest.svg +0 -14
- data/examples/legacy/not_checked/shoes3-tests/spinner.rb +0 -15
- data/examples/legacy/not_checked/shoes3-tests/svg.rb +0 -208
- data/examples/legacy/not_checked/shoes3-tests/switch/switch.rb +0 -28
- data/examples/legacy/not_checked/shoes3-tests/systray/back.rb +0 -20
- data/examples/legacy/not_checked/shoes3-tests/systray/note.rb +0 -17
- data/examples/legacy/not_checked/shoes3-tests/terminal/cursor.rb +0 -27
- data/examples/legacy/not_checked/shoes3-tests/terminal/ed.rb +0 -65
- data/examples/legacy/not_checked/shoes3-tests/terminal/el.rb +0 -50
- data/examples/legacy/not_checked/shoes3-tests/terminal/logattr.rb +0 -31
- data/examples/legacy/not_checked/shoes3-tests/tests_color.rb +0 -138
- data/examples/legacy/not_checked/shoes3-tests/tests_svg.rb +0 -228
- data/examples/legacy/not_checked/shoes3-tests/tests_video_vlc.rb +0 -186
- data/examples/legacy/not_checked/shoes3-tests/tooltips.rb +0 -20
- data/examples/legacy/not_checked/shoes3-tests/video_vlc.rb +0 -242
- data/examples/legacy/not_checked/shoes3-tests/wheel/wheel1.rb +0 -21
- data/examples/legacy/not_checked/simple/accordion.rb +0 -81
- data/examples/legacy/not_checked/simple/anim-shapes.rb +0 -17
- data/examples/legacy/not_checked/simple/anim-text.rb +0 -13
- data/examples/legacy/not_checked/simple/arc.rb +0 -23
- data/examples/legacy/not_checked/simple/bounce.rb +0 -24
- data/examples/legacy/not_checked/simple/chipmunk.rb +0 -26
- data/examples/legacy/not_checked/simple/control-sizes.rb +0 -24
- data/examples/legacy/not_checked/simple/curve-control-points.rb +0 -24
- data/examples/legacy/not_checked/simple/curve.rb +0 -26
- data/examples/legacy/not_checked/simple/dialogs.rb +0 -29
- data/examples/legacy/not_checked/simple/downloader.rb +0 -40
- data/examples/legacy/not_checked/simple/downloader1.rb +0 -31
- data/examples/legacy/not_checked/simple/draw.rb +0 -13
- data/examples/legacy/not_checked/simple/editor.rb +0 -28
- data/examples/legacy/not_checked/simple/form.rb +0 -30
- data/examples/legacy/not_checked/simple/image.rb +0 -21
- data/examples/legacy/not_checked/simple/info.rb +0 -78
- data/examples/legacy/not_checked/simple/mask.rb +0 -21
- data/examples/legacy/not_checked/simple/mask2.rb +0 -27
- data/examples/legacy/not_checked/simple/menu.rb +0 -31
- data/examples/legacy/not_checked/simple/menu1.rb +0 -35
- data/examples/legacy/not_checked/simple/slide.rb +0 -45
- data/examples/legacy/not_checked/simple/sphere.rb +0 -28
- data/examples/legacy/not_checked/superleg.rb +0 -244
- data/examples/legacy/working/shoes-contrib/basic/a-poem.rb +0 -24
- data/examples/legacy/working/shoes-contrib/basic/basic-blocks-instances.rb +0 -7
- data/examples/legacy/working/shoes-contrib/basic/basic-blocks.rb +0 -7
- data/examples/legacy/working/shoes-contrib/basic/basic-slot.rb +0 -8
- data/examples/legacy/working/shoes-contrib/basic/intro.rb +0 -20
- data/examples/legacy/working/shoes-contrib/basic/two-column.rb +0 -12
- data/examples/legacy/working/shoes-contrib/elements/edit_box.rb +0 -6
- data/examples/legacy/working/shoes-contrib/kernel/alert.rb +0 -3
- data/examples/legacy/working/simple/calc.rb +0 -71
- data/examples/legacy/working/simple/sqlite3.rb +0 -27
- data/examples/legacy/working/simple/timer.rb +0 -13
- data/examples/line.rb +0 -5
- data/examples/link.rb +0 -20
- data/examples/list_box.rb +0 -8
- data/examples/local_fonts.rb +0 -4
- data/examples/local_images.rb +0 -4
- data/examples/motion_events.rb +0 -20
- data/examples/para/collection_of_arguments.rb +0 -9
- data/examples/para/hello_world.rb +0 -5
- data/examples/para/hide_and_show.rb +0 -9
- data/examples/para/rainbow.rb +0 -11
- data/examples/para/rainbow_2.rb +0 -11
- data/examples/para/sizes.rb +0 -11
- data/examples/para/sizes_2.rb +0 -12
- data/examples/para/strong.rb +0 -3
- data/examples/para_text_widgets.rb +0 -4
- data/examples/parse_xl_funnies.rb +0 -58
- data/examples/pirate.png +0 -0
- data/examples/raw_flow.rb +0 -11
- data/examples/ruby_racer.rb +0 -50
- data/examples/selfitude.rb +0 -18
- data/examples/shapes/arc.rb +0 -8
- data/examples/shapes/shapes.rb +0 -8
- data/examples/shapes/shapes_fill.rb +0 -10
- data/examples/shapes/star.rb +0 -5
- data/examples/shoes_school.rb +0 -66
- data/examples/shoes_splorer.rb +0 -150
- data/examples/simple_slides.rb +0 -73
- data/examples/skip_ci/parrot.rb +0 -22
- data/examples/skip_ci/say.rb +0 -20
- data/examples/sleepless.rb +0 -26
- data/examples/slots.rb +0 -10
- data/examples/spacing.rb +0 -18
- data/examples/span.rb +0 -6
- data/examples/stack/background.rb +0 -35
- data/examples/stack/border.rb +0 -11
- data/examples/stack/gradients.rb +0 -6
- data/examples/stack/raw_stack.rb +0 -8
- data/examples/stack/stack.rb +0 -27
- data/examples/text_change.rb +0 -4
- data/examples/text_sizes.rb +0 -10
- data/examples/timmy.rb +0 -109
- data/examples/title_and_resize.rb +0 -3
- data/examples/video.rb +0 -10
- data/exe/scarpe +0 -107
- data/fonts/Pacifico.ttf +0 -0
- data/lib/scarpe/alert.rb +0 -19
- data/lib/scarpe/arc.rb +0 -49
- data/lib/scarpe/base64.rb +0 -27
- data/lib/scarpe/button.rb +0 -35
- data/lib/scarpe/cats_cradle.rb +0 -255
- data/lib/scarpe/fill.rb +0 -23
- data/lib/scarpe/flow.rb +0 -18
- data/lib/scarpe/font.rb +0 -14
- data/lib/scarpe/glibui/README.md +0 -34
- data/lib/scarpe/glibui/alert.rb +0 -65
- data/lib/scarpe/glibui/app.rb +0 -27
- data/lib/scarpe/glibui/background.rb +0 -18
- data/lib/scarpe/glibui/border.rb +0 -22
- data/lib/scarpe/glibui/button.rb +0 -38
- data/lib/scarpe/glibui/dimensions.rb +0 -22
- data/lib/scarpe/glibui/document_root.rb +0 -33
- data/lib/scarpe/glibui/edit_box.rb +0 -44
- data/lib/scarpe/glibui/edit_line.rb +0 -43
- data/lib/scarpe/glibui/flow.rb +0 -33
- data/lib/scarpe/glibui/html.rb +0 -77
- data/lib/scarpe/glibui/image.rb +0 -36
- data/lib/scarpe/glibui/link.rb +0 -29
- data/lib/scarpe/glibui/local_display.rb +0 -62
- data/lib/scarpe/glibui/para.rb +0 -84
- data/lib/scarpe/glibui/spacing.rb +0 -41
- data/lib/scarpe/glibui/stack.rb +0 -33
- data/lib/scarpe/glibui/text_widget.rb +0 -30
- data/lib/scarpe/glibui/widget.rb +0 -81
- data/lib/scarpe/glibui.rb +0 -29
- data/lib/scarpe/libui/alert.rb +0 -9
- data/lib/scarpe/libui/button.rb +0 -18
- data/lib/scarpe/libui/colors.rb +0 -157
- data/lib/scarpe/libui/core.rb +0 -66
- data/lib/scarpe/libui/flow.rb +0 -16
- data/lib/scarpe/libui/libui.rb +0 -45
- data/lib/scarpe/libui/notepad.md +0 -26
- data/lib/scarpe/libui/para.rb +0 -154
- data/lib/scarpe/libui/stack.rb +0 -34
- data/lib/scarpe/line.rb +0 -25
- data/lib/scarpe/link.rb +0 -25
- data/lib/scarpe/list_box.rb +0 -25
- data/lib/scarpe/logger.rb +0 -159
- data/lib/scarpe/para.rb +0 -92
- data/lib/scarpe/promises.rb +0 -405
- data/lib/scarpe/shape.rb +0 -20
- data/lib/scarpe/slot.rb +0 -7
- data/lib/scarpe/spacing.rb +0 -9
- data/lib/scarpe/star.rb +0 -47
- data/lib/scarpe/subscription_item.rb +0 -60
- data/lib/scarpe/unit_test_helpers.rb +0 -236
- data/lib/scarpe/version.rb +0 -5
- data/lib/scarpe/video.rb +0 -15
- data/lib/scarpe/widgets.rb +0 -35
- data/lib/scarpe/wv/alert.rb +0 -65
- data/lib/scarpe/wv/app.rb +0 -104
- data/lib/scarpe/wv/arc.rb +0 -57
- data/lib/scarpe/wv/background.rb +0 -27
- data/lib/scarpe/wv/border.rb +0 -24
- data/lib/scarpe/wv/button.rb +0 -50
- data/lib/scarpe/wv/control_interface.rb +0 -147
- data/lib/scarpe/wv/control_interface_test.rb +0 -234
- data/lib/scarpe/wv/dimensions.rb +0 -22
- data/lib/scarpe/wv/document_root.rb +0 -8
- data/lib/scarpe/wv/edit_box.rb +0 -44
- data/lib/scarpe/wv/edit_line.rb +0 -43
- data/lib/scarpe/wv/fill.rb +0 -30
- data/lib/scarpe/wv/flow.rb +0 -24
- data/lib/scarpe/wv/font.rb +0 -36
- data/lib/scarpe/wv/html.rb +0 -108
- data/lib/scarpe/wv/image.rb +0 -41
- data/lib/scarpe/wv/line.rb +0 -38
- data/lib/scarpe/wv/link.rb +0 -29
- data/lib/scarpe/wv/list_box.rb +0 -50
- data/lib/scarpe/wv/para.rb +0 -90
- data/lib/scarpe/wv/shape.rb +0 -35
- data/lib/scarpe/wv/shape_helper.rb +0 -44
- data/lib/scarpe/wv/slot.rb +0 -81
- data/lib/scarpe/wv/spacing.rb +0 -41
- data/lib/scarpe/wv/span.rb +0 -66
- data/lib/scarpe/wv/stack.rb +0 -24
- data/lib/scarpe/wv/star.rb +0 -64
- data/lib/scarpe/wv/subscription_item.rb +0 -50
- data/lib/scarpe/wv/text_widget.rb +0 -30
- data/lib/scarpe/wv/video.rb +0 -42
- data/lib/scarpe/wv/web_wrangler.rb +0 -683
- data/lib/scarpe/wv/webview_local_display.rb +0 -73
- data/lib/scarpe/wv/webview_relay_display.rb +0 -185
- data/lib/scarpe/wv/widget.rb +0 -185
- data/lib/scarpe/wv/wv_display_worker.rb +0 -65
- data/lib/scarpe/wv.rb +0 -43
- data/lib/scarpe/wv_local.rb +0 -6
- data/lib/scarpe/wv_relay.rb +0 -6
- data/lib/scarpe.rb +0 -29
- data/lib/shoes/text_widget.rb +0 -52
- data/lib/shoes/widget.rb +0 -209
- data/logger/debug_web_wrangler.json +0 -4
- data/logger/scarpe_wv_test.json +0 -4
- data/scarpe-0.2.0.gem +0 -0
- data/scarpe.gemspec +0 -44
- data/scarpegen.rb +0 -193
- data/sig/scarpe.rbs +0 -4
- data/templates/basic_class_template.erb +0 -38
- data/templates/class_template_with_event_bind.erb +0 -27
- data/templates/class_template_with_shapes.erb +0 -43
- data/templates/example_template.erb +0 -3
- data/templates/module_template.erb +0 -12
- data/templates/webview_template.erb +0 -27
@@ -1,11 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
require "nokogiri"
|
6
|
-
|
7
|
-
module Shoes
|
8
|
-
class Widget
|
3
|
+
class Shoes
|
4
|
+
class Drawable
|
9
5
|
class ResponseWrapper
|
10
6
|
attr_reader :response
|
11
7
|
|
@@ -23,10 +19,14 @@ module Shoes
|
|
23
19
|
end
|
24
20
|
|
25
21
|
def download(url, method: "GET", save: nil, styles: {}, &block)
|
22
|
+
require "net/http"
|
23
|
+
require "openssl"
|
24
|
+
require "nokogiri"
|
25
|
+
|
26
26
|
@block = block
|
27
27
|
|
28
28
|
Thread.new do
|
29
|
-
logger =
|
29
|
+
logger = Shoes::Log.logger("Shoes::App#download")
|
30
30
|
begin
|
31
31
|
uri = URI(url)
|
32
32
|
response = perform_request(uri, method, styles)
|
@@ -0,0 +1,380 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Shoes
|
4
|
+
# Shoes::Drawable
|
5
|
+
#
|
6
|
+
# This is the display-service portable Shoes Drawable interface. Visible Shoes
|
7
|
+
# drawables like buttons inherit from this. Compound drawables made of multiple
|
8
|
+
# different smaller Drawables inherit from it in their various apps or libraries.
|
9
|
+
# The Shoes Drawable helps build a Shoes-side drawable tree, with parents and
|
10
|
+
# children. Any API that applies to all drawables (e.g. remove) should be
|
11
|
+
# defined here.
|
12
|
+
#
|
13
|
+
class Drawable < Shoes::Linkable
|
14
|
+
include Shoes::Log
|
15
|
+
include Shoes::Colors
|
16
|
+
|
17
|
+
# All Drawables have these so they go in Shoes::Drawable and are inherited
|
18
|
+
@shoes_events = ["parent", "destroy", "prop_change"]
|
19
|
+
|
20
|
+
class << self
|
21
|
+
attr_accessor :drawable_classes
|
22
|
+
attr_accessor :drawable_default_styles
|
23
|
+
attr_accessor :widget_classes
|
24
|
+
|
25
|
+
def inherited(subclass)
|
26
|
+
Shoes::Drawable.drawable_classes ||= []
|
27
|
+
Shoes::Drawable.drawable_classes << subclass
|
28
|
+
|
29
|
+
Shoes::Drawable.drawable_default_styles ||= {}
|
30
|
+
Shoes::Drawable.drawable_default_styles[subclass] = {}
|
31
|
+
|
32
|
+
Shoes::Drawable.widget_classes ||= []
|
33
|
+
if subclass < Shoes::Widget
|
34
|
+
Shoes::Drawable.widget_classes << subclass.name
|
35
|
+
end
|
36
|
+
|
37
|
+
super
|
38
|
+
end
|
39
|
+
|
40
|
+
def dsl_name
|
41
|
+
n = name.split("::").last.chomp("Drawable")
|
42
|
+
n.gsub(/(.)([A-Z])/, '\1_\2').downcase
|
43
|
+
end
|
44
|
+
|
45
|
+
def drawable_class_by_name(name)
|
46
|
+
drawable_classes.detect { |k| k.dsl_name == name.to_s }
|
47
|
+
end
|
48
|
+
|
49
|
+
def is_widget_class?(name)
|
50
|
+
!!Shoes::Drawable.widget_classes.intersect?([name.to_s])
|
51
|
+
end
|
52
|
+
|
53
|
+
def validate_as(prop_name, value)
|
54
|
+
prop_name = prop_name.to_s
|
55
|
+
hashes = shoes_style_hashes
|
56
|
+
|
57
|
+
h = hashes.detect { |hash| hash[:name] == prop_name }
|
58
|
+
raise(Shoes::Errors::NoSuchStyleError, "Can't find property #{prop_name.inspect} in #{self} property list: #{hashes.inspect}!") unless h
|
59
|
+
|
60
|
+
return value if h[:validator].nil?
|
61
|
+
|
62
|
+
h[:validator].call(value)
|
63
|
+
end
|
64
|
+
|
65
|
+
# Return a list of Shoes events for this class.
|
66
|
+
#
|
67
|
+
# @return Array[String] the list of event names
|
68
|
+
def get_shoes_events
|
69
|
+
if @shoes_events.nil?
|
70
|
+
raise UnknownEventsForClass, "Drawable type #{self.class} hasn't defined its list of Shoes events!"
|
71
|
+
end
|
72
|
+
|
73
|
+
@shoes_events
|
74
|
+
end
|
75
|
+
|
76
|
+
# Set the list of Shoes event names that are allowed for this class.
|
77
|
+
#
|
78
|
+
# @param args [Array] an array of event names, which will be coerced to Strings
|
79
|
+
# @return [void]
|
80
|
+
def shoes_events(*args)
|
81
|
+
@shoes_events ||= args.map(&:to_s) + self.superclass.get_shoes_events
|
82
|
+
end
|
83
|
+
|
84
|
+
# Assign a new Shoes Drawable ID number, starting from 1.
|
85
|
+
# This allows non-overlapping small integer IDs for Shoes
|
86
|
+
# linkable IDs - the number part of making it clear what
|
87
|
+
# widget you're talking about.
|
88
|
+
def allocate_drawable_id
|
89
|
+
@drawable_id_counter ||= 0
|
90
|
+
@drawable_id_counter += 1
|
91
|
+
@drawable_id_counter
|
92
|
+
end
|
93
|
+
|
94
|
+
def register_drawable_id(id, drawable)
|
95
|
+
@drawables_by_id ||= {}
|
96
|
+
@drawables_by_id[id] = drawable
|
97
|
+
end
|
98
|
+
|
99
|
+
def unregister_drawable_id(id)
|
100
|
+
@drawables_by_id ||= {}
|
101
|
+
@drawables_by_id.delete(id)
|
102
|
+
end
|
103
|
+
|
104
|
+
def drawable_by_id(id, none_ok: false)
|
105
|
+
val = @drawables_by_id[id]
|
106
|
+
unless val || none_ok
|
107
|
+
raise "No Drawable Found! #{@drawables_by_id.inspect}"
|
108
|
+
end
|
109
|
+
|
110
|
+
val
|
111
|
+
end
|
112
|
+
|
113
|
+
private
|
114
|
+
|
115
|
+
def linkable_properties
|
116
|
+
@linkable_properties ||= []
|
117
|
+
end
|
118
|
+
|
119
|
+
def linkable_properties_hash
|
120
|
+
@linkable_properties_hash ||= {}
|
121
|
+
end
|
122
|
+
|
123
|
+
public
|
124
|
+
|
125
|
+
# Shoes styles in Shoes Linkables are automatically sync'd with the display side objects.
|
126
|
+
# If a block is passed to shoes_style, that's the validation for the property. It should
|
127
|
+
# convert a given value to a valid value for the property or throw an exception.
|
128
|
+
def shoes_style(name, &validator)
|
129
|
+
name = name.to_s
|
130
|
+
|
131
|
+
return if linkable_properties_hash[name]
|
132
|
+
|
133
|
+
linkable_properties << { name: name, validator: }
|
134
|
+
linkable_properties_hash[name] = true
|
135
|
+
end
|
136
|
+
|
137
|
+
# Add these names as Shoes styles
|
138
|
+
def shoes_styles(*names)
|
139
|
+
names.each { |n| shoes_style(n) }
|
140
|
+
end
|
141
|
+
|
142
|
+
def shoes_style_names
|
143
|
+
parent_prop_names = self != Shoes::Drawable ? self.superclass.shoes_style_names : []
|
144
|
+
|
145
|
+
parent_prop_names | linkable_properties.map { |prop| prop[:name] }
|
146
|
+
end
|
147
|
+
|
148
|
+
def shoes_style_hashes
|
149
|
+
parent_hashes = self != Shoes::Drawable ? self.superclass.shoes_style_hashes : []
|
150
|
+
|
151
|
+
parent_hashes + linkable_properties
|
152
|
+
end
|
153
|
+
|
154
|
+
def shoes_style_name?(name)
|
155
|
+
linkable_properties_hash[name.to_s] ||
|
156
|
+
(self != Shoes::Drawable && superclass.shoes_style_name?(name))
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
# Shoes uses a "hidden" style property for hide/show
|
161
|
+
shoes_style :hidden
|
162
|
+
|
163
|
+
attr_reader :debug_id
|
164
|
+
|
165
|
+
def initialize(*args, **kwargs)
|
166
|
+
log_init("Shoes::#{self.class.name}")
|
167
|
+
|
168
|
+
default_styles = Shoes::Drawable.drawable_default_styles[self.class]
|
169
|
+
|
170
|
+
self.class.shoes_style_names.each do |prop|
|
171
|
+
prop_sym = prop.to_sym
|
172
|
+
if kwargs.key?(prop_sym)
|
173
|
+
val = self.class.validate_as(prop, kwargs[prop_sym])
|
174
|
+
instance_variable_set("@" + prop, val)
|
175
|
+
elsif default_styles.key?(prop_sym)
|
176
|
+
val = self.class.validate_as(prop, default_styles[prop_sym])
|
177
|
+
instance_variable_set("@" + prop, val)
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
super(linkable_id: Shoes::Drawable.allocate_drawable_id)
|
182
|
+
Shoes::Drawable.register_drawable_id(self.linkable_id, self)
|
183
|
+
|
184
|
+
generate_debug_id
|
185
|
+
end
|
186
|
+
|
187
|
+
# Calling stack.app or drawable.app will execute the block
|
188
|
+
# with the Shoes::App as self, and with that stack or
|
189
|
+
# flow as the current slot.
|
190
|
+
#
|
191
|
+
# @incompatibility In Shoes Classic this is the only way
|
192
|
+
# to change self, while Scarpe will also change self
|
193
|
+
# with the other Slot Manipulation methods: #clear,
|
194
|
+
# #append, #prepend, #before and #after.
|
195
|
+
#
|
196
|
+
# @return [Shoes::App] the Shoes app
|
197
|
+
# @yield the block to call with the Shoes App as self
|
198
|
+
def app(&block)
|
199
|
+
Shoes::App.instance.with_slot(self, &block) if block_given?
|
200
|
+
Shoes::App.instance
|
201
|
+
end
|
202
|
+
|
203
|
+
private
|
204
|
+
|
205
|
+
def generate_debug_id
|
206
|
+
cl = caller_locations(3)
|
207
|
+
da = cl.detect { |loc| !loc.path.include?("lacci/lib/shoes") }
|
208
|
+
@drawable_defined_at = "#{File.basename(da.path)}:#{da.lineno}"
|
209
|
+
|
210
|
+
class_name = self.class.name.split("::")[-1]
|
211
|
+
|
212
|
+
@debug_id = "#{class_name}##{@linkable_id}(#{@drawable_defined_at})"
|
213
|
+
end
|
214
|
+
|
215
|
+
public
|
216
|
+
|
217
|
+
def inspect
|
218
|
+
"#<#{debug_id} " +
|
219
|
+
" @parent=#{@parent ? @parent.debug_id : "(none)"} " +
|
220
|
+
"@children=#{@children ? @children.map(&:debug_id) : "(none)"} properties=#{shoes_style_values.inspect}>"
|
221
|
+
end
|
222
|
+
|
223
|
+
private
|
224
|
+
|
225
|
+
def validate_event_name(event_name)
|
226
|
+
unless self.class.get_shoes_events.include?(event_name.to_s)
|
227
|
+
raise Shoes::UnregisteredShoesEvent, "Drawable #{self.inspect} tried to bind Shoes event #{event_name}, which is not in #{evetns.inspect}!"
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
def bind_self_event(event_name, &block)
|
232
|
+
raise(Shoes::Errors::NoLinkableIdError, "Drawable has no linkable_id! #{inspect}") unless linkable_id
|
233
|
+
|
234
|
+
validate_event_name(event_name)
|
235
|
+
|
236
|
+
bind_shoes_event(event_name: event_name, target: linkable_id, &block)
|
237
|
+
end
|
238
|
+
|
239
|
+
def bind_no_target_event(event_name, &block)
|
240
|
+
validate_event_name(event_name)
|
241
|
+
|
242
|
+
bind_shoes_event(event_name:, &block)
|
243
|
+
end
|
244
|
+
|
245
|
+
public
|
246
|
+
|
247
|
+
def event(event_name, *args, **kwargs)
|
248
|
+
validate_event_name(event_name)
|
249
|
+
|
250
|
+
send_shoes_event(*args, **kwargs, event_name:, target: linkable_id)
|
251
|
+
end
|
252
|
+
|
253
|
+
def shoes_style_values
|
254
|
+
all_property_names = self.class.shoes_style_names
|
255
|
+
|
256
|
+
properties = {}
|
257
|
+
all_property_names.each do |prop|
|
258
|
+
properties[prop] = instance_variable_get("@" + prop)
|
259
|
+
end
|
260
|
+
properties["shoes_linkable_id"] = self.linkable_id
|
261
|
+
properties
|
262
|
+
end
|
263
|
+
|
264
|
+
def style(*args, **kwargs)
|
265
|
+
if args.empty? && kwargs.empty?
|
266
|
+
# Just called as .style()
|
267
|
+
shoes_style_values
|
268
|
+
elsif args.empty?
|
269
|
+
# This is called to set one or more Shoes styles
|
270
|
+
prop_names = self.class.shoes_style_names
|
271
|
+
unknown_styles = kwargs.keys.select { |k| !prop_names.include?(k.to_s) }
|
272
|
+
unless unknown_styles.empty?
|
273
|
+
raise Shoes::Errors::NoSuchStyleError, "Unknown styles for drawable type #{self.class.name}: #{unknown_styles.join(", ")}"
|
274
|
+
end
|
275
|
+
|
276
|
+
kwargs.each do |name, val|
|
277
|
+
instance_variable_set("@#{name}", val)
|
278
|
+
end
|
279
|
+
elsif args.length == 1 && args[0] < Shoes::Drawable
|
280
|
+
# Shoes supports calling .style with a Shoes class, e.g. .style(Shoes::Button, displace_left: 5)
|
281
|
+
kwargs.each do |name, val|
|
282
|
+
Shoes::Drawable.drawable_default_styles[args[0]][name.to_sym] = val
|
283
|
+
end
|
284
|
+
else
|
285
|
+
raise Shoes::Errors::InvalidAttributeValueError, "Unexpected arguments to style! args: #{args.inspect}, keyword args: #{kwargs.inspect}"
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
private
|
290
|
+
|
291
|
+
def create_display_drawable
|
292
|
+
klass_name = self.class.name.delete_prefix("Scarpe::").delete_prefix("Shoes::")
|
293
|
+
|
294
|
+
is_widget = Shoes::Drawable.is_widget_class?(klass_name)
|
295
|
+
|
296
|
+
# Should we send an event so this can be discovered from someplace other than
|
297
|
+
# the DisplayService?
|
298
|
+
::Shoes::DisplayService.display_service.create_display_drawable_for(klass_name, self.linkable_id, shoes_style_values, is_widget:)
|
299
|
+
end
|
300
|
+
|
301
|
+
public
|
302
|
+
|
303
|
+
attr_reader :parent
|
304
|
+
attr_reader :destroyed
|
305
|
+
|
306
|
+
def set_parent(new_parent)
|
307
|
+
@parent&.remove_child(self)
|
308
|
+
new_parent&.add_child(self)
|
309
|
+
@parent = new_parent
|
310
|
+
send_shoes_event(new_parent.linkable_id, event_name: "parent", target: linkable_id)
|
311
|
+
end
|
312
|
+
|
313
|
+
# Removes the element from the Shoes::Drawable tree and removes all event subscriptions
|
314
|
+
def destroy
|
315
|
+
@parent&.remove_child(self)
|
316
|
+
@parent = nil
|
317
|
+
@destroyed = true
|
318
|
+
unsub_all_shoes_events
|
319
|
+
send_shoes_event(event_name: "destroy", target: linkable_id)
|
320
|
+
Shoes::Drawable.unregister_drawable_id(linkable_id)
|
321
|
+
end
|
322
|
+
alias_method :remove, :destroy
|
323
|
+
|
324
|
+
# Hide the drawable.
|
325
|
+
def hide
|
326
|
+
self.hidden = true
|
327
|
+
end
|
328
|
+
|
329
|
+
# Show the drawable.
|
330
|
+
def show
|
331
|
+
self.hidden = false
|
332
|
+
end
|
333
|
+
|
334
|
+
# Hide the drawable if it is currently shown. Show it if it is currently hidden.
|
335
|
+
def toggle
|
336
|
+
self.hidden = !self.hidden
|
337
|
+
end
|
338
|
+
|
339
|
+
# We use method_missing to auto-create Shoes style getters and setters.
|
340
|
+
def method_missing(name, *args, **kwargs, &block)
|
341
|
+
name_s = name.to_s
|
342
|
+
|
343
|
+
if name_s[-1] == "="
|
344
|
+
prop_name = name_s[0..-2]
|
345
|
+
if self.class.shoes_style_name?(prop_name)
|
346
|
+
self.class.define_method(name) do |new_value|
|
347
|
+
raise(Shoes::Errors::NoLinkableIdError, "Trying to set Shoes styles in an object with no linkable ID! #{inspect}") unless linkable_id
|
348
|
+
|
349
|
+
new_value = self.class.validate_as(prop_name, new_value)
|
350
|
+
instance_variable_set("@" + prop_name, new_value)
|
351
|
+
send_shoes_event({ prop_name => new_value }, event_name: "prop_change", target: linkable_id)
|
352
|
+
end
|
353
|
+
|
354
|
+
return self.send(name, *args, **kwargs, &block)
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
358
|
+
if self.class.shoes_style_name?(name_s)
|
359
|
+
self.class.define_method(name) do
|
360
|
+
raise(Shoes::Errors::NoLinkableIdError, "Trying to get Shoes styles in an object with no linkable ID! #{inspect}") unless linkable_id
|
361
|
+
|
362
|
+
instance_variable_get("@" + name_s)
|
363
|
+
end
|
364
|
+
|
365
|
+
return self.send(name, *args, **kwargs, &block)
|
366
|
+
end
|
367
|
+
|
368
|
+
super(name, *args, **kwargs, &block)
|
369
|
+
end
|
370
|
+
|
371
|
+
def respond_to_missing?(name, include_private = false)
|
372
|
+
name_s = name.to_s
|
373
|
+
return true if self.class.shoes_style_name?(name_s)
|
374
|
+
return true if self.class.shoes_style_name?(name_s[0..-2]) && name_s[-1] == "="
|
375
|
+
return true if Drawable.drawable_class_by_name(name_s)
|
376
|
+
|
377
|
+
super
|
378
|
+
end
|
379
|
+
end
|
380
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Shoes
|
4
|
+
class Arc < Shoes::Drawable
|
5
|
+
shoes_style :draw_context
|
6
|
+
shoes_events # No Arc-specific events yet
|
7
|
+
|
8
|
+
[:left, :top, :width, :height].each do |prop|
|
9
|
+
shoes_style(prop) { |val| convert_to_integer(val, prop) }
|
10
|
+
end
|
11
|
+
|
12
|
+
[:angle1, :angle2].each do |prop|
|
13
|
+
shoes_style(prop) { |val| convert_to_float(val, prop) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize(*args)
|
17
|
+
@draw_context = Shoes::App.instance.current_draw_context
|
18
|
+
|
19
|
+
super
|
20
|
+
self.left, self.top, self.width, self.height, self.angle1, self.angle2 = args
|
21
|
+
|
22
|
+
create_display_drawable
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.convert_to_integer(value, attribute_name)
|
26
|
+
begin
|
27
|
+
value = Integer(value)
|
28
|
+
raise Shoes::Errors::InvalidAttributeValueError, "Negative number '#{value}' not allowed for attribute '#{attribute_name}'" if value < 0
|
29
|
+
|
30
|
+
value
|
31
|
+
rescue ArgumentError
|
32
|
+
error_message = "Invalid value '#{value}' provided for attribute '#{attribute_name}'. The value should be a number."
|
33
|
+
raise Shoes::Errors::InvalidAttributeValueError, error_message
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.convert_to_float(value, attribute_name)
|
38
|
+
begin
|
39
|
+
value = Float(value)
|
40
|
+
raise Shoes::Errors::InvalidAttributeValueError, "Negative number '#{value}' not allowed for attribute '#{attribute_name}'" if value < 0
|
41
|
+
|
42
|
+
value
|
43
|
+
rescue ArgumentError
|
44
|
+
error_message = "Invalid value '#{value}' provided for attribute '#{attribute_name}'. The value should be a number."
|
45
|
+
raise Shoes::Errors::InvalidAttributeValueError, error_message
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Shoes
|
4
|
+
class Arrow < Shoes::Drawable
|
5
|
+
shoes_style :draw_context
|
6
|
+
shoes_events # No Arrow-specific events yet
|
7
|
+
|
8
|
+
[:left, :top, :width].each do |prop|
|
9
|
+
shoes_style(prop) { |val| val.is_a?(Hash) ? val : convert_to_integer(val, prop) }
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize(*args)
|
13
|
+
@draw_context = Shoes::App.instance.current_draw_context
|
14
|
+
|
15
|
+
super
|
16
|
+
|
17
|
+
if args.length == 1 && args[0].is_a?(Hash)
|
18
|
+
options = args[0]
|
19
|
+
self.left = options[:left]
|
20
|
+
self.top = options[:top]
|
21
|
+
self.width = options[:width]
|
22
|
+
else
|
23
|
+
self.left, self.top, self.width = args
|
24
|
+
end
|
25
|
+
|
26
|
+
create_display_drawable
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.convert_to_integer(value, attribute_name)
|
30
|
+
begin
|
31
|
+
value = Integer(value)
|
32
|
+
raise Shoes::Errors::InvalidAttributeValueError, "Negative number '#{value}' not allowed for attribute '#{attribute_name}'" if value < 0
|
33
|
+
|
34
|
+
value
|
35
|
+
rescue ArgumentError
|
36
|
+
error_message = "Invalid value '#{value}' provided for attribute '#{attribute_name}'. The value should be a number."
|
37
|
+
raise Shoes::Errors::InvalidAttributeValueError, error_message
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Shoes
|
4
|
+
class Button < Shoes::Drawable
|
5
|
+
include Shoes::Log
|
6
|
+
shoes_styles :text, :width, :height, :top, :left, :color, :padding_top, :padding_bottom, :text_color, :size, :font_size, :tooltip
|
7
|
+
shoes_events :click, :hover
|
8
|
+
|
9
|
+
# Creates a new Button object.
|
10
|
+
#
|
11
|
+
# @param text [String] The text displayed on the button.
|
12
|
+
# @param width [Integer] The requested width of the button in pixels.
|
13
|
+
# @param height [Integer] The requested height of the button in pixels.
|
14
|
+
# @param top [Integer] The position of the top edge of the button relative to its parent widget.
|
15
|
+
# @param left [Integer] The position of the left edge of the button relative to its parent widget.
|
16
|
+
# @param size [Integer] The font size of the button text.
|
17
|
+
# @param color [String] The background color of the button.
|
18
|
+
# @param padding_top [Integer] The padding above the button text.
|
19
|
+
# @param padding_bottom [Integer] The padding below the button text.
|
20
|
+
# @param text_color [String] The color of the button text.
|
21
|
+
# @yield A block of code to be executed when the button is clicked.
|
22
|
+
# @return [Shoes::Button] the button object
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
# Shoes.app do
|
26
|
+
# @push = button "Push me"
|
27
|
+
# @note = para "Nothing pushed so far"
|
28
|
+
# @push.click {
|
29
|
+
# @note.replace(
|
30
|
+
# "Aha! Click! ",
|
31
|
+
# link("Go back") { @note.replace("Nothing pushed so far") }
|
32
|
+
# )
|
33
|
+
# }
|
34
|
+
# end
|
35
|
+
def initialize(text, width: nil, height: nil, top: nil, left: nil, color: nil, padding_top: nil, padding_bottom: nil, size: 12, text_color: nil,
|
36
|
+
font_size: nil, tooltip: nil, &block)
|
37
|
+
|
38
|
+
log_init("Button")
|
39
|
+
|
40
|
+
# Properties passed as positional args, not keywords, don't get auto-set
|
41
|
+
@text = text
|
42
|
+
@block = block
|
43
|
+
|
44
|
+
super
|
45
|
+
|
46
|
+
# Bind to a handler named "click"
|
47
|
+
bind_self_event("click") do
|
48
|
+
@log.debug("Button clicked, calling handler") if @block
|
49
|
+
@block&.call
|
50
|
+
end
|
51
|
+
|
52
|
+
bind_self_event("hover") do
|
53
|
+
@hover&.call
|
54
|
+
end
|
55
|
+
|
56
|
+
create_display_drawable
|
57
|
+
end
|
58
|
+
|
59
|
+
# Set the click handler
|
60
|
+
#
|
61
|
+
# @yield A block to be called when the button is clicked.
|
62
|
+
def click(&block)
|
63
|
+
@block = block
|
64
|
+
end
|
65
|
+
|
66
|
+
# Set the hover handler
|
67
|
+
#
|
68
|
+
# @yield A block to be called when the cursor moves to be over the button.
|
69
|
+
def hover(&block)
|
70
|
+
@hover = block
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Shoes
|
4
|
+
class Check < Shoes::Drawable
|
5
|
+
shoes_styles :checked
|
6
|
+
shoes_events :click
|
7
|
+
|
8
|
+
def initialize(checked = nil, &block)
|
9
|
+
@block = block
|
10
|
+
super
|
11
|
+
|
12
|
+
bind_self_event("click") { click }
|
13
|
+
create_display_drawable
|
14
|
+
end
|
15
|
+
|
16
|
+
def click(&block)
|
17
|
+
@block = block
|
18
|
+
self.checked = !checked?
|
19
|
+
end
|
20
|
+
|
21
|
+
def checked?
|
22
|
+
@checked ? true : false
|
23
|
+
end
|
24
|
+
|
25
|
+
def checked(value)
|
26
|
+
self.checked = value
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -1,20 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
class
|
4
|
-
class DocumentRoot <
|
3
|
+
class Shoes
|
4
|
+
class DocumentRoot < Shoes::Flow
|
5
|
+
shoes_events # No DocumentRoot-specific events yet
|
6
|
+
|
5
7
|
def initialize
|
6
8
|
@height = "100%"
|
7
9
|
@width = @margin = @padding = nil
|
8
10
|
@options = {}
|
9
11
|
|
10
12
|
super
|
11
|
-
|
12
|
-
create_display_widget
|
13
13
|
end
|
14
14
|
|
15
15
|
# The default inspect string can be absolutely huge in console output, and it's frequently printed.
|
16
16
|
def inspect
|
17
|
-
"<
|
17
|
+
"<Shoes::DocumentRoot>"
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -1,21 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
class
|
4
|
-
class EditBox < Shoes::
|
5
|
-
|
3
|
+
class Shoes
|
4
|
+
class EditBox < Shoes::Drawable
|
5
|
+
shoes_styles :text, :height, :width
|
6
|
+
shoes_events :change
|
6
7
|
|
7
8
|
def initialize(text = "", height: nil, width: nil, &block)
|
9
|
+
super
|
8
10
|
@text = text
|
9
11
|
@callback = block
|
10
12
|
|
11
|
-
super
|
12
|
-
|
13
13
|
bind_self_event("change") do |new_text|
|
14
14
|
self.text = new_text
|
15
15
|
@callback&.call(self)
|
16
16
|
end
|
17
17
|
|
18
|
-
|
18
|
+
create_display_drawable
|
19
19
|
end
|
20
20
|
|
21
21
|
def change(&block)
|
@@ -1,21 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
class
|
4
|
-
class EditLine < Shoes::
|
5
|
-
|
3
|
+
class Shoes
|
4
|
+
class EditLine < Shoes::Drawable
|
5
|
+
shoes_styles :text, :width
|
6
|
+
shoes_events :change
|
6
7
|
|
7
8
|
def initialize(text = "", width: nil, &block)
|
9
|
+
super
|
8
10
|
@block = block
|
9
11
|
@text = text
|
10
12
|
|
11
|
-
super
|
12
|
-
|
13
13
|
bind_self_event("change") do |new_text|
|
14
14
|
self.text = new_text
|
15
15
|
@block&.call(new_text)
|
16
16
|
end
|
17
17
|
|
18
|
-
|
18
|
+
create_display_drawable
|
19
19
|
end
|
20
20
|
|
21
21
|
def change(&block)
|