Skip to content

GettingExamplesToWork.md

Noah Gibbs edited this page Oct 10, 2023 · 5 revisions

Getting Legacy Shoes Examples to Work

The Scarpe repo has big directories of old Shoes examples, sorted into "working" and "not checked" (so probably not working.) "Not checked" in this case doesn't mean that nobody has ever looked, though sometimes that's true. Mostly it means that we don't check it in CI for regressions. If we get it working, we should move it into "working" so that it keeps working!

A "not_checked" example may just need somebody to look at it. But it may need Shoes features we don't support yet. You can try to write the feature. But you can also file a bug mentioning the feature and the example, which is also useful and valuable.

What's Not Working?

There are a lot of parts of the Shoes API that are not done yet, or that don't work like they're supposed to.

Some are large. Some are small. Many large parts can be broken up into small parts, at least somewhat. The Scarpe Discord may be able to help you out in finding a small, tractable piece to work on.

What are some things that, as I write this, don't fully work?

  • Backgrounds, borders, etc. are supposed to be Shoes objects that can be modified later, not attributes of their slots. For instance the "accordion" example expects to grab a background object and modify it later. Right now that doesn't work at all, and there's no such object. (Oct 2023)
  • Many Shoes styles in the manual aren't implemented on their various objects. For instance, buttons don't support the "margin" style, which keeps the control-sizes.rb example from working. (Oct 2023)
  • Fonts and a number of other Shoes methods are supposed to be available everywhere and defined on Kernel, not Shoes::App. They aren't. (Oct 2023)
  • Shoes cursors aren't implemented. Even just making them no-ops would be better than the current problem where the APIs don't exist and the examples crash. (Oct 2023)
  • Some constants aren't there. The info.rb example uses RELEASE_TYPE, which we don't have. Is that a useful constant or a useful example? What did that constant look like in Shoes Classic? You could figure it out and submit a PR. (Oct 2023)
  • We have .clear on Shoes slots, but not on the App object. This breaks examples like good/clock.rb. (Oct 2023)
  • We don't support debug/error to send messages to the Shoes console, or the Shoes console in general. (Oct 2023)
  • We don't support various chooser dialogs, such as ask_save_file or confirm. (Oct 2023)
  • Scarpe doesn't have the focus() method for input focus on any of the relevant drawables. (Oct 2023)

There are lots of others. Run an example under "legacy/not_checked" and it's extremely likely you'll find a problem.