lacci 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +0 -2
- data/Gemfile.lock +72 -0
- data/Rakefile +1 -4
- data/lib/lacci/scarpe_cli.rb +70 -0
- data/lib/lacci/scarpe_core.rb +21 -0
- data/lib/lacci/version.rb +13 -0
- data/lib/shoes/app.rb +91 -14
- data/lib/{scarpe → shoes}/background.rb +1 -1
- data/lib/{scarpe → shoes}/border.rb +1 -1
- data/lib/{scarpe → shoes}/colors.rb +1 -1
- data/lib/shoes/constants.rb +5 -2
- data/lib/{scarpe → shoes}/display_service.rb +8 -9
- data/lib/{scarpe → shoes}/download.rb +5 -5
- data/lib/shoes/log.rb +71 -0
- data/lib/{scarpe → shoes}/spacing.rb +1 -1
- data/lib/shoes/widget.rb +28 -19
- data/lib/{scarpe → shoes/widgets}/alert.rb +2 -2
- data/lib/{scarpe → shoes/widgets}/arc.rb +6 -4
- data/lib/{scarpe → shoes/widgets}/button.rb +2 -2
- data/lib/shoes/widgets/check.rb +28 -0
- data/lib/{scarpe → shoes/widgets}/document_root.rb +3 -3
- data/lib/{scarpe → shoes/widgets}/edit_box.rb +1 -1
- data/lib/{scarpe → shoes/widgets}/edit_line.rb +1 -1
- data/lib/{scarpe → shoes/widgets}/flow.rb +6 -2
- data/lib/{scarpe → shoes/widgets}/font.rb +1 -1
- data/lib/{scarpe → shoes/widgets}/image.rb +2 -8
- data/lib/shoes/widgets/line.rb +18 -0
- data/lib/{scarpe → shoes/widgets}/link.rb +1 -1
- data/lib/{scarpe → shoes/widgets}/list_box.rb +1 -1
- data/lib/{scarpe → shoes/widgets}/para.rb +1 -25
- data/lib/shoes/widgets/radio.rb +35 -0
- data/lib/shoes/widgets/shape.rb +37 -0
- data/lib/shoes/widgets/slot.rb +75 -0
- data/lib/{scarpe → shoes/widgets}/span.rb +1 -1
- data/lib/{scarpe → shoes/widgets}/stack.rb +5 -1
- data/lib/{scarpe → shoes/widgets}/star.rb +5 -8
- data/lib/{scarpe → shoes/widgets}/subscription_item.rb +1 -1
- data/lib/shoes/{text_widget.rb → widgets/text_widget.rb} +2 -3
- data/lib/{scarpe → shoes/widgets}/video.rb +1 -1
- data/lib/shoes/widgets.rb +29 -0
- data/lib/shoes.rb +71 -9
- metadata +38 -555
- 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/base64.rb +0 -27
- data/lib/scarpe/cats_cradle.rb +0 -255
- data/lib/scarpe/fill.rb +0 -23
- 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/logger.rb +0 -159
- data/lib/scarpe/promises.rb +0 -405
- data/lib/scarpe/shape.rb +0 -20
- data/lib/scarpe/slot.rb +0 -7
- data/lib/scarpe/unit_test_helpers.rb +0 -236
- data/lib/scarpe/version.rb +0 -5
- 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/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,73 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Scarpe
|
4
|
-
# This is an in-process Webview-based display service, with all the limitations that
|
5
|
-
# entails. Slow handlers will crash, ending this display service will end the
|
6
|
-
# process, too many or too large evals can crash the process, etc.
|
7
|
-
# Normally the intention is to use a RelayDisplayService to a second
|
8
|
-
# process containing one of these.
|
9
|
-
class WebviewDisplayService < Shoes::DisplayService
|
10
|
-
include Scarpe::Log
|
11
|
-
|
12
|
-
class << self
|
13
|
-
attr_accessor :instance
|
14
|
-
end
|
15
|
-
|
16
|
-
# TODO: re-think the list of top-level singleton objects.
|
17
|
-
attr_reader :control_interface
|
18
|
-
attr_reader :doc_root
|
19
|
-
attr_reader :app
|
20
|
-
attr_reader :wrangler
|
21
|
-
|
22
|
-
# This is called before any of the various WebviewWidgets are created.
|
23
|
-
def initialize
|
24
|
-
if WebviewDisplayService.instance
|
25
|
-
raise "ERROR! This is meant to be a singleton!"
|
26
|
-
end
|
27
|
-
|
28
|
-
WebviewDisplayService.instance = self
|
29
|
-
|
30
|
-
super()
|
31
|
-
log_init("WV::WebviewDisplayService")
|
32
|
-
|
33
|
-
@display_widget_for = {}
|
34
|
-
end
|
35
|
-
|
36
|
-
def create_display_widget_for(widget_class_name, widget_id, properties)
|
37
|
-
if widget_class_name == "App"
|
38
|
-
unless @doc_root
|
39
|
-
raise "WebviewDocumentRoot is supposed to be created before WebviewApp!"
|
40
|
-
end
|
41
|
-
|
42
|
-
display_app = Scarpe::WebviewApp.new(properties)
|
43
|
-
display_app.document_root = @doc_root
|
44
|
-
@control_interface = display_app.control_interface
|
45
|
-
@control_interface.doc_root = @doc_root
|
46
|
-
@app = @control_interface.app
|
47
|
-
@wrangler = @control_interface.wrangler
|
48
|
-
|
49
|
-
set_widget_pairing(widget_id, display_app)
|
50
|
-
|
51
|
-
return display_app
|
52
|
-
end
|
53
|
-
|
54
|
-
# Create a corresponding display widget
|
55
|
-
display_class = Scarpe::WebviewWidget.display_class_for(widget_class_name)
|
56
|
-
display_widget = display_class.new(properties)
|
57
|
-
set_widget_pairing(widget_id, display_widget)
|
58
|
-
|
59
|
-
if widget_class_name == "DocumentRoot"
|
60
|
-
# WebviewDocumentRoot is created before WebviewApp. Mostly doc_root is just like any other widget,
|
61
|
-
# but we'll want a reference to it when we create WebviewApp.
|
62
|
-
@doc_root = display_widget
|
63
|
-
end
|
64
|
-
|
65
|
-
display_widget
|
66
|
-
end
|
67
|
-
|
68
|
-
def destroy
|
69
|
-
@app.destroy
|
70
|
-
WebviewDisplayService.instance = nil
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
@@ -1,185 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "socket"
|
4
|
-
require "rbconfig"
|
5
|
-
|
6
|
-
class Scarpe
|
7
|
-
class AppShutdownError < Scarpe::Error; end
|
8
|
-
|
9
|
-
module WVRelayUtil # Make sure the including class also includes Scarpe::Log
|
10
|
-
def ready_to_read?(timeout = 0.0)
|
11
|
-
r, _, e = IO.select [@from], [], [@from, @to].uniq, timeout
|
12
|
-
|
13
|
-
# On timeout, select returns nil instead of arrays.
|
14
|
-
return if r.nil?
|
15
|
-
|
16
|
-
unless e.empty?
|
17
|
-
raise "#{@i_am}: Got error on connection(s) from IO.select! Dying!"
|
18
|
-
end
|
19
|
-
|
20
|
-
!r.empty?
|
21
|
-
end
|
22
|
-
|
23
|
-
def send_datagram(contents)
|
24
|
-
str_data = JSON.dump contents
|
25
|
-
dgram_str = (str_data.length.to_s + "a" + str_data).encode(Encoding::BINARY)
|
26
|
-
to_write = dgram_str.bytesize
|
27
|
-
written = 0
|
28
|
-
|
29
|
-
until written == to_write
|
30
|
-
count = @to.write(dgram_str.byteslice(written..-1))
|
31
|
-
if count.nil? || count == 0
|
32
|
-
raise "Something was wrong in send_datagram! Write returned #{count.inspect}!"
|
33
|
-
end
|
34
|
-
|
35
|
-
written += count
|
36
|
-
end
|
37
|
-
|
38
|
-
nil
|
39
|
-
end
|
40
|
-
|
41
|
-
def receive_datagram
|
42
|
-
@readbuf ||= String.new.encode(Encoding::BINARY)
|
43
|
-
to_read = nil
|
44
|
-
|
45
|
-
loop do
|
46
|
-
# Have we read a packet length already, sitting in @readbuf?
|
47
|
-
a_idx = @readbuf.index("a")
|
48
|
-
if a_idx
|
49
|
-
to_read = @readbuf[0..a_idx].to_i
|
50
|
-
@readbuf = @readbuf[(a_idx + 1)..-1]
|
51
|
-
break
|
52
|
-
end
|
53
|
-
|
54
|
-
# If not, read more bytes
|
55
|
-
new_bytes = @from.read(10)
|
56
|
-
if new_bytes.nil?
|
57
|
-
# This is perfectly normal, if the connection closed
|
58
|
-
raise AppShutdownError, "Got an unexpected EOF reading datagram! " +
|
59
|
-
"Did the #{@i_am == :child ? "parent" : "child"} process die?"
|
60
|
-
end
|
61
|
-
@readbuf << new_bytes
|
62
|
-
end
|
63
|
-
|
64
|
-
loop do
|
65
|
-
if @readbuf.bytesize >= to_read
|
66
|
-
out = @readbuf.byteslice(0, to_read)
|
67
|
-
@readbuf = @readbuf.byteslice(to_read, -1)
|
68
|
-
return out
|
69
|
-
end
|
70
|
-
|
71
|
-
new_bytes = @from.read(to_read - @readbuf.bytesize)
|
72
|
-
@readbuf << new_bytes
|
73
|
-
end
|
74
|
-
rescue
|
75
|
-
raise AppShutdownError, "Got exception #{$!.class} when receiving datagram... #{$!.inspect}"
|
76
|
-
end
|
77
|
-
|
78
|
-
def respond_to_datagram
|
79
|
-
message = receive_datagram
|
80
|
-
m_data = JSON.parse(message)
|
81
|
-
|
82
|
-
if m_data["type"] == "event"
|
83
|
-
kwargs_hash = {}
|
84
|
-
m_data["kwargs"].each { |k, v| kwargs_hash[k.to_sym] = v }
|
85
|
-
send_shoes_event(
|
86
|
-
*m_data["args"],
|
87
|
-
event_name: m_data["kwargs"]["event_name"],
|
88
|
-
target: m_data["kwargs"]["event_target"],
|
89
|
-
**kwargs_hash,
|
90
|
-
)
|
91
|
-
elsif m_data["type"] == "create"
|
92
|
-
raise "Parent process should never receive :create datagram!" if @i_am == :parent
|
93
|
-
|
94
|
-
@wv_display.create_display_widget_for(m_data["class_name"], m_data["id"], m_data["properties"])
|
95
|
-
elsif m_data["type"] == "destroy"
|
96
|
-
if @i_am == :parent
|
97
|
-
@shutdown = true
|
98
|
-
else
|
99
|
-
@log.info("Shutting down...")
|
100
|
-
exit 0
|
101
|
-
end
|
102
|
-
else
|
103
|
-
@log.error("Unrecognized datagram type:event: #{m_data.inspect}!")
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
def event_loop_for(t = 1.5)
|
108
|
-
t_start = Time.now
|
109
|
-
delay_time = t
|
110
|
-
|
111
|
-
while Time.now - t_start < delay_time
|
112
|
-
if ready_to_read?(0.1)
|
113
|
-
respond_to_datagram
|
114
|
-
else
|
115
|
-
sleep 0.1
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
# This "display service" actually creates a child process and sends events
|
122
|
-
# back and forth, but creates no widgets of its own.
|
123
|
-
class WVRelayDisplayService < Shoes::DisplayService
|
124
|
-
include Scarpe::Log
|
125
|
-
include WVRelayUtil # Needs Scarpe::Log
|
126
|
-
|
127
|
-
attr_accessor :shutdown
|
128
|
-
|
129
|
-
def initialize
|
130
|
-
super()
|
131
|
-
log_init("WV::RelayDisplayService")
|
132
|
-
|
133
|
-
@event_subs = []
|
134
|
-
@shutdown = false
|
135
|
-
@i_am = :parent
|
136
|
-
|
137
|
-
server = TCPServer.new("127.0.0.1", 0)
|
138
|
-
port = server.addr[1]
|
139
|
-
|
140
|
-
@pid = spawn(RbConfig.ruby, File.join(__dir__, "wv_display_worker.rb"), port.to_s)
|
141
|
-
@from = @to = server.accept
|
142
|
-
|
143
|
-
# Subscribe to all event notifications and relay them to the worker
|
144
|
-
@event_subs << bind_shoes_event(event_name: :any, target: :any) do |*args, **kwargs|
|
145
|
-
unless kwargs[:relayed]
|
146
|
-
kwargs[:relayed] = true
|
147
|
-
send_datagram({ type: :event, args:, kwargs: })
|
148
|
-
end
|
149
|
-
|
150
|
-
# Forward the run event to the child process before doing this
|
151
|
-
if event_name == "run"
|
152
|
-
run_event_loop
|
153
|
-
end
|
154
|
-
rescue AppShutdownError
|
155
|
-
@shutdown = true
|
156
|
-
@log.info("Attempting to shut down...")
|
157
|
-
self.destroy
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
def run_event_loop
|
162
|
-
until @shutdown
|
163
|
-
respond_to_datagram while ready_to_read?
|
164
|
-
sleep 0.1
|
165
|
-
end
|
166
|
-
rescue AppShutdownError
|
167
|
-
@shutdown = true
|
168
|
-
@log.info("Attempting to shut down...")
|
169
|
-
self.destroy
|
170
|
-
end
|
171
|
-
|
172
|
-
def create_display_widget_for(widget_class_name, widget_id, properties)
|
173
|
-
send_datagram({ type: :create, class_name: widget_class_name, id: widget_id, properties: })
|
174
|
-
# Don't need to return anything. It wouldn't be used anyway.
|
175
|
-
end
|
176
|
-
|
177
|
-
def destroy
|
178
|
-
unless @shutdown
|
179
|
-
send_datagram({ type: :destroy })
|
180
|
-
end
|
181
|
-
@shutdown = true
|
182
|
-
(@events_subs || []).each { |unsub_id| DisplayService.unsub_from_events(unsub_id) }
|
183
|
-
end
|
184
|
-
end
|
185
|
-
end
|
data/lib/scarpe/wv/widget.rb
DELETED
@@ -1,185 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Scarpe
|
4
|
-
class WebviewWidget < Shoes::Linkable
|
5
|
-
include Scarpe::Log
|
6
|
-
|
7
|
-
class << self
|
8
|
-
def display_class_for(scarpe_class_name)
|
9
|
-
scarpe_class = Scarpe.const_get(scarpe_class_name)
|
10
|
-
unless scarpe_class.ancestors.include?(Shoes::Linkable)
|
11
|
-
raise "Scarpe Webview can only get display classes for Scarpe " +
|
12
|
-
"linkable widgets, not #{scarpe_class_name.inspect}!"
|
13
|
-
end
|
14
|
-
|
15
|
-
klass = Scarpe.const_get("Webview" + scarpe_class_name.split("::")[-1])
|
16
|
-
if klass.nil?
|
17
|
-
raise "Couldn't find corresponding Scarpe Webview class for #{scarpe_class_name.inspect}!"
|
18
|
-
end
|
19
|
-
|
20
|
-
klass
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
attr_reader :shoes_linkable_id
|
25
|
-
attr_reader :parent
|
26
|
-
attr_reader :children
|
27
|
-
|
28
|
-
def initialize(properties)
|
29
|
-
log_init("WV::Widget")
|
30
|
-
|
31
|
-
# Call method, which looks up the parent
|
32
|
-
@shoes_linkable_id = properties["shoes_linkable_id"] || properties[:shoes_linkable_id]
|
33
|
-
unless @shoes_linkable_id
|
34
|
-
raise "Could not find property shoes_linkable_id in #{properties.inspect}!"
|
35
|
-
end
|
36
|
-
|
37
|
-
# Set the display properties
|
38
|
-
properties.each do |k, v|
|
39
|
-
next if k == "shoes_linkable_id"
|
40
|
-
|
41
|
-
instance_variable_set("@" + k.to_s, v)
|
42
|
-
end
|
43
|
-
|
44
|
-
# The parent field is *almost* simple enough that a typed display property would handle it.
|
45
|
-
bind_shoes_event(event_name: "parent", target: shoes_linkable_id) do |new_parent_id|
|
46
|
-
display_parent = WebviewDisplayService.instance.query_display_widget_for(new_parent_id)
|
47
|
-
if @parent != display_parent
|
48
|
-
set_parent(display_parent)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
# When Shoes widgets change properties, we get a change notification here
|
53
|
-
bind_shoes_event(event_name: "prop_change", target: shoes_linkable_id) do |prop_changes|
|
54
|
-
prop_changes.each do |k, v|
|
55
|
-
instance_variable_set("@" + k, v)
|
56
|
-
end
|
57
|
-
properties_changed(prop_changes)
|
58
|
-
end
|
59
|
-
|
60
|
-
bind_shoes_event(event_name: "destroy", target: shoes_linkable_id) do
|
61
|
-
destroy_self
|
62
|
-
end
|
63
|
-
|
64
|
-
super(linkable_id: @shoes_linkable_id)
|
65
|
-
end
|
66
|
-
|
67
|
-
# This exists to be overridden by children watching for changes
|
68
|
-
def properties_changed(changes)
|
69
|
-
needs_update! unless changes.empty?
|
70
|
-
end
|
71
|
-
|
72
|
-
def set_parent(new_parent)
|
73
|
-
@parent&.remove_child(self)
|
74
|
-
new_parent&.add_child(self)
|
75
|
-
@parent = new_parent
|
76
|
-
end
|
77
|
-
|
78
|
-
def inspect
|
79
|
-
"#<#{self.class}:#{self.object_id} @shoes_linkable_id=#{@shoes_linkable_id} @parent=#{@parent.inspect} @children=#{@children.inspect}>"
|
80
|
-
end
|
81
|
-
|
82
|
-
protected
|
83
|
-
|
84
|
-
# Do not call directly, use set_parent
|
85
|
-
def remove_child(child)
|
86
|
-
@children ||= []
|
87
|
-
unless @children.include?(child)
|
88
|
-
@log.error("remove_child: no such child(#{child.inspect}) for"\
|
89
|
-
" parent(#{parent.inspect})!")
|
90
|
-
end
|
91
|
-
@children.delete(child)
|
92
|
-
end
|
93
|
-
|
94
|
-
# Do not call directly, use set_parent
|
95
|
-
def add_child(child)
|
96
|
-
@children ||= []
|
97
|
-
@children << child
|
98
|
-
|
99
|
-
# If we add a child, we should redraw ourselves
|
100
|
-
needs_update!
|
101
|
-
end
|
102
|
-
|
103
|
-
# Convert an [r, g, b, a] array to an HTML hex color code
|
104
|
-
# Arrays support alpha. HTML hex does not. So premultiply.
|
105
|
-
def rgb_to_hex(color)
|
106
|
-
return color if color.nil?
|
107
|
-
|
108
|
-
r, g, b, a = *color
|
109
|
-
if r.is_a?(Float)
|
110
|
-
a ||= 1.0
|
111
|
-
r_float = r * a
|
112
|
-
g_float = g * a
|
113
|
-
b_float = b * a
|
114
|
-
else
|
115
|
-
a ||= 255
|
116
|
-
a_float = (a / 255.0)
|
117
|
-
r_float = (r.to_f / 255.0) * a_float
|
118
|
-
g_float = (g.to_f / 255.0) * a_float
|
119
|
-
b_float = (b.to_f / 255.0) * a_float
|
120
|
-
end
|
121
|
-
|
122
|
-
r_int = (r_float * 255.0).to_i.clamp(0, 255)
|
123
|
-
g_int = (g_float * 255.0).to_i.clamp(0, 255)
|
124
|
-
b_int = (b_float * 255.0).to_i.clamp(0, 255)
|
125
|
-
|
126
|
-
"#%0.2X%0.2X%0.2X" % [r_int, g_int, b_int]
|
127
|
-
end
|
128
|
-
|
129
|
-
public
|
130
|
-
|
131
|
-
# This gets a mini-webview for just this element and its children, if any
|
132
|
-
def html_element
|
133
|
-
@elt_wrangler ||= Scarpe::WebWrangler::ElementWrangler.new(html_id)
|
134
|
-
end
|
135
|
-
|
136
|
-
# Return a promise that guarantees all currently-requested changes have completed
|
137
|
-
def promise_update
|
138
|
-
html_element.promise_update
|
139
|
-
end
|
140
|
-
|
141
|
-
def html_id
|
142
|
-
object_id.to_s
|
143
|
-
end
|
144
|
-
|
145
|
-
# to_html is intended to get the HTML DOM rendering of this object and its children.
|
146
|
-
# Calling it should be side-effect-free and NOT update the webview.
|
147
|
-
def to_html
|
148
|
-
@children ||= []
|
149
|
-
child_markup = @children.map(&:to_html).join
|
150
|
-
if respond_to?(:element)
|
151
|
-
element { child_markup }
|
152
|
-
else
|
153
|
-
child_markup
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
# This binds a Scarpe JS callback, handled via a single dispatch point in the document root
|
158
|
-
def bind(event, &block)
|
159
|
-
raise("Widget has no linkable_id! #{inspect}") unless linkable_id
|
160
|
-
|
161
|
-
WebviewDisplayService.instance.app.bind("#{linkable_id}-#{event}", &block)
|
162
|
-
end
|
163
|
-
|
164
|
-
# Removes the element from both the Ruby Widget tree and the HTML DOM.
|
165
|
-
# Return a promise for when that HTML change will be visible.
|
166
|
-
def destroy_self
|
167
|
-
@parent&.remove_child(self)
|
168
|
-
html_element.remove
|
169
|
-
end
|
170
|
-
|
171
|
-
# It's really hard to do dirty-tracking here because the redraws are fully asynchronous.
|
172
|
-
# And so we can't easily cancel one "in flight," and we can't easily pick up the latest
|
173
|
-
# changes... And we probably don't want to, because we may be halfway through a batch.
|
174
|
-
def needs_update!
|
175
|
-
WebviewDisplayService.instance.app.request_redraw!
|
176
|
-
end
|
177
|
-
|
178
|
-
def handler_js_code(handler_function_name, *args)
|
179
|
-
raise("Widget has no linkable_id! #{inspect}") unless linkable_id
|
180
|
-
|
181
|
-
js_args = ["'#{linkable_id}-#{handler_function_name}'", *args].join(", ")
|
182
|
-
"scarpeHandler(#{js_args})"
|
183
|
-
end
|
184
|
-
end
|
185
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require "socket"
|
5
|
-
|
6
|
-
# Wherever this file is installed, locate Scarpe relative to it. This could be an installed gem or a dev repo.
|
7
|
-
SCARPE_DIR = File.join(__dir__, "../..")
|
8
|
-
|
9
|
-
$LOAD_PATH.prepend(SCARPE_DIR)
|
10
|
-
require "scarpe"
|
11
|
-
require "scarpe/wv_local"
|
12
|
-
|
13
|
-
# This script exists to create a WebviewDisplayService that can be operated remotely over a socket.
|
14
|
-
|
15
|
-
if ARGV.length != 1
|
16
|
-
$stderr.puts("Usage: wv_display_worker.rb tcp_port_num")
|
17
|
-
exit(-1)
|
18
|
-
end
|
19
|
-
|
20
|
-
class WebviewContainedService < Shoes::Linkable
|
21
|
-
include Scarpe::Log
|
22
|
-
include Scarpe::WVRelayUtil # Needs Scarpe::Log
|
23
|
-
|
24
|
-
attr_reader :log
|
25
|
-
|
26
|
-
def initialize(from, to)
|
27
|
-
super()
|
28
|
-
log_init("WV::DisplayWorker")
|
29
|
-
|
30
|
-
@i_am = :child
|
31
|
-
@event_subs = []
|
32
|
-
@wv_display = Scarpe::WebviewDisplayService.new
|
33
|
-
|
34
|
-
@from = from
|
35
|
-
@to = to
|
36
|
-
|
37
|
-
@init_done = false
|
38
|
-
|
39
|
-
# Wait to register our periodic_code until the wrangler exists
|
40
|
-
@event_subs << bind_shoes_event(event_name: "init") do
|
41
|
-
@wv_display.wrangler.periodic_code("datagramProcessor", 0.1) do
|
42
|
-
respond_to_datagram while ready_to_read?(0.0)
|
43
|
-
end
|
44
|
-
@init_done = true
|
45
|
-
end
|
46
|
-
|
47
|
-
# Subscribe to all event notifications and relay them to the opposite side
|
48
|
-
@event_subs << bind_shoes_event(event_name: :any, target: :any) do |*args, **kwargs|
|
49
|
-
unless kwargs[:relayed] || kwargs["relayed"]
|
50
|
-
kwargs[:relayed] = true
|
51
|
-
send_datagram({ type: :event, args:, kwargs: })
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
# Run for 2.5 seconds to let the app be created and "run" to get called.
|
56
|
-
# Once that happens, Webview will take over the event loop.
|
57
|
-
event_loop_for(2.5)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
s = TCPSocket.new("localhost", ARGV[0].to_i)
|
62
|
-
|
63
|
-
SERVICE = WebviewContainedService.new(s, s)
|
64
|
-
|
65
|
-
SERVICE.log.info("Finished event loop. Exiting!")
|
data/lib/scarpe/wv.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Scarpe Webview Display Services
|
4
|
-
|
5
|
-
require_relative "wv/web_wrangler"
|
6
|
-
require_relative "wv/control_interface"
|
7
|
-
|
8
|
-
require_relative "wv/widget"
|
9
|
-
require_relative "wv/webview_local_display"
|
10
|
-
require_relative "wv/webview_relay_display"
|
11
|
-
|
12
|
-
require_relative "wv/dimensions"
|
13
|
-
require_relative "wv/html"
|
14
|
-
|
15
|
-
require_relative "wv/spacing"
|
16
|
-
require_relative "wv/star"
|
17
|
-
require_relative "wv/background"
|
18
|
-
require_relative "wv/border"
|
19
|
-
|
20
|
-
require_relative "wv/fill"
|
21
|
-
require_relative "wv/arc"
|
22
|
-
require_relative "wv/font"
|
23
|
-
|
24
|
-
require_relative "wv/app"
|
25
|
-
require_relative "wv/para"
|
26
|
-
require_relative "wv/slot"
|
27
|
-
require_relative "wv/stack"
|
28
|
-
require_relative "wv/flow"
|
29
|
-
require_relative "wv/document_root"
|
30
|
-
require_relative "wv/subscription_item"
|
31
|
-
require_relative "wv/button"
|
32
|
-
require_relative "wv/image"
|
33
|
-
require_relative "wv/edit_box"
|
34
|
-
require_relative "wv/edit_line"
|
35
|
-
require_relative "wv/list_box"
|
36
|
-
require_relative "wv/alert"
|
37
|
-
require_relative "wv/span"
|
38
|
-
require_relative "wv/shape"
|
39
|
-
|
40
|
-
require_relative "wv/text_widget"
|
41
|
-
require_relative "wv/link"
|
42
|
-
require_relative "wv/line"
|
43
|
-
require_relative "wv/video"
|
data/lib/scarpe/wv_local.rb
DELETED
data/lib/scarpe/wv_relay.rb
DELETED
data/lib/scarpe.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "shoes"
|
4
|
-
|
5
|
-
require_relative "scarpe/logger"
|
6
|
-
|
7
|
-
# This will never be triggered -- we use the (...) feature below, which means this
|
8
|
-
# file won't even parse in old Rubies.
|
9
|
-
if RUBY_VERSION[0..2] < "3.2"
|
10
|
-
Scarpe::Logger.logger("Scarpe").error("Scarpe requires Ruby 3.2 or higher!")
|
11
|
-
exit(-1)
|
12
|
-
end
|
13
|
-
|
14
|
-
require "securerandom"
|
15
|
-
require "json"
|
16
|
-
|
17
|
-
# Is there a Shoes::Error class? Should this be two different error classes?
|
18
|
-
class Scarpe::Error < StandardError; end
|
19
|
-
|
20
|
-
require_relative "scarpe/version"
|
21
|
-
require_relative "scarpe/promises"
|
22
|
-
require_relative "scarpe/display_service"
|
23
|
-
require_relative "scarpe/widgets"
|
24
|
-
|
25
|
-
require "bloops"
|
26
|
-
|
27
|
-
d_s = ENV["SCARPE_DISPLAY_SERVICE"] || "wv_local"
|
28
|
-
# This is require, not require_relative, to allow gems to supply a new display service
|
29
|
-
require "scarpe/#{d_s}"
|
data/logger/scarpe_wv_test.json
DELETED
data/scarpe-0.2.0.gem
DELETED
Binary file
|
data/scarpe.gemspec
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "lib/scarpe/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |spec|
|
6
|
-
spec.name = "scarpe"
|
7
|
-
spec.version = Scarpe::VERSION
|
8
|
-
spec.authors = ["Marco Concetto Rudilosso"]
|
9
|
-
spec.email = ["marcoc.r@outlook.com"]
|
10
|
-
|
11
|
-
spec.summary = "Scarpe - shoes but running on webview"
|
12
|
-
spec.homepage = "https://github.com/Maaarcocr/scarpe"
|
13
|
-
spec.license = "MIT"
|
14
|
-
spec.required_ruby_version = ">= 3.2.0"
|
15
|
-
|
16
|
-
# spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
|
17
|
-
|
18
|
-
spec.metadata["homepage_uri"] = spec.homepage
|
19
|
-
spec.metadata["source_code_uri"] = "https://github.com/Maaarcocr/scarpe"
|
20
|
-
spec.metadata["changelog_uri"] = "https://github.com/Maaarcocr/scarpe/blob/main/CHANGELOG.md"
|
21
|
-
|
22
|
-
# Specify which files should be added to the gem when it is released.
|
23
|
-
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
24
|
-
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
25
|
-
`git ls-files -z`.split("\x0").reject do |f|
|
26
|
-
(f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
27
|
-
end
|
28
|
-
end
|
29
|
-
spec.bindir = "exe"
|
30
|
-
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
31
|
-
spec.require_paths = ["lib"]
|
32
|
-
|
33
|
-
spec.add_dependency "fastimage"
|
34
|
-
spec.add_dependency "glimmer-dsl-libui"
|
35
|
-
spec.add_dependency "nokogiri"
|
36
|
-
spec.add_dependency "sqlite3"
|
37
|
-
|
38
|
-
spec.add_dependency "bloops", "~>0.5"
|
39
|
-
spec.add_dependency "logging", "~>2.3.1"
|
40
|
-
spec.add_dependency "webview_ruby", "~>0.1.1"
|
41
|
-
|
42
|
-
# For more information and examples about making a new gem, check out our
|
43
|
-
# guide at: https://bundler.io/guides/creating_gem.html
|
44
|
-
end
|