1. What's the equivalent of HTML5 canvas in Hypercard?
2. Suppose there's a little dataflow drawing program somebody else wrote in Hypercard. I want to add a binding for my own transient card to pop up on keyboard shortcut, gain focus, steal all input events, then go away on another keyboard shortcut (and return input events to their original bindings). How do I do that?
3. Suppose Hypercard flourished into the 90s and early 2000s. How would this alternate-reality Hypercard have dealt with the pop-up ad problem?
I'm sure there are answers to these questions. However, a theoretical Hypercard that solves them-- plus all the other myriad problems that come from existing on a weaponized internet-- would make this tech much closer to the complexity of the modern web than to the original Hypercard.
> 1. What's the equivalent of HTML5 canvas in Hypercard?
Scripting the paint tools. A practical example:
set userLevel to 3 -- "Painting"
choose select tool
set cursor to blank
drag from 0,0 to 100,100
doMenu "Select"
set dragSpeed to 150
drag from 40,50 to 480,125
set lockscreen to true
set cursor to blank
doMenu "Select All"
doMenu "Revert"
choose browse tool
> 2. Suppose there's a little dataflow drawing program somebody else wrote in Hypercard. I want to add a binding for my own transient card to pop up on keyboard shortcut, gain focus, steal all input events, then go away on another keyboard shortcut (and return input events to their original bindings). How do I do that?
A keyDown handler in the Home stack and "push/pop card", probably. There isn't really any way to make a card appear on top of another card, though.
> 3. Suppose Hypercard flourished into the 90s and early 2000s. How would this alternate-reality Hypercard have dealt with the pop-up ad problem?
That power comes at a cost. The author covers this when they say open source versions of Hypercard do too much. There is a place for a low powered/low barrier to entry programming environment.
My first forays into computing were Klik n Play and VB6. They let me learn how to solve problems without being overwhelmed with the many things a real Software Engineer needs to deal with.
Agreed. I would also argue that spreadsheets serve much of the role that HyperCard was trying to, including many of the problems that a world built on HyperCard would have had. Enormous democratization of computing for the use-cases that can be understood without programming skills, and also enormous amounts of fragility as applications are cobbled together from loose components.
HyperCard is primarily mouse-oriented; I don't believe there's a way to add keyboard shortcuts (without writing an XCMD in another language like Pascal). Instead you'd add a button into the other stack (probably on the background) to 'go to "UtilityStack"'.
This would take you to the first card of the stack you'd created, which naturally takes over since it's the one being shown (no need to explicitly 'steal' events). Once you're done there, either use Go > Back (Cmd+B, I believe) or have a button on the card with the script 'go back'. This takes you to the previous card the same way that the back button in your browser would, and likewise events now go to that card with no explicit rebinding required.
Huh, interesting. They must have added that in a later version than I was using, my copy of "The Complete HyperCard Handbook" doesn't mention "create menu" or keyDown handlers at all. Thanks for the correction!
2. Suppose there's a little dataflow drawing program somebody else wrote in Hypercard. I want to add a binding for my own transient card to pop up on keyboard shortcut, gain focus, steal all input events, then go away on another keyboard shortcut (and return input events to their original bindings). How do I do that?
3. Suppose Hypercard flourished into the 90s and early 2000s. How would this alternate-reality Hypercard have dealt with the pop-up ad problem?
I'm sure there are answers to these questions. However, a theoretical Hypercard that solves them-- plus all the other myriad problems that come from existing on a weaponized internet-- would make this tech much closer to the complexity of the modern web than to the original Hypercard.