richmond62 wrote: ↑Wed Dec 11, 2024 1:49 pm
Another single-window IDE.
Technically, that's an MDI (Multi-Document Interface), one of the novel windowing options Windows offered back in the day, in which multiple windows were encapsulated within one parent window. It has since become deprecated in more recent Microsoft design guidelines.
I have always wondered why 'over there' some people were claiming that a single-window IDE was "modern" (and 'modern' is as about a slippery word as you can find) when Visual Basic V was 'sporting' one in 2003
UIs in general have been following a trend toward single windows with multiple panes instead of separate windows for quite some time.
With video editing, for example, nearly every such app throughout the 90s had the same three windows: preview, timeline, and assets. iMovie migrated those to panes within a single window, and we've been seeing more of that across other categories ever since.
This can work well in those IDEs that have layout completely separated from runtime, as most non-xTalks do. In those, you're not so much making a living interface as drawing a picture of an interface. It doesn't become interactive until you leave the drawing environment, compile the app, and then run it in its own runtime environment.
For this reason, single-window UIs are problematic with xTalks, at least when making desktop apps. Mobile apps are contained in a single simulator window in the desktop anyway, so it doesn't matter much for them.
But with desktop apps we have the ongoing design challenge of crafting dev tools in a way that attempts to provide a "normal" interface, but since we're "live-coding" (working on an application while it's running) we also need our app to define the environment.
This leaves is with questions like how to handle the macOS global menu bar: when we're running our app in the IDE, which menus are displayed, the IDE's or our app's?
WindowBoundingRect also comes into play: how do we test our window resizing when maximization is limited to the IDE bounding rect needed to accommodate its toolbar.
And then there are other details that crop up in the day-to-day of working within an xTalk, mostly dealing with window placement but sometimes also including the lifeblood of GUI apps, message inheritance.
For these reasons and more, if an IDE is to embrace the unique advantages of xTalks, they can't constrain themselves to the conventions used in other IDEs where layout doesn't actually make live software but merely draws pictures of software to be run later elsewhere.
SuperCard's Runtime Editor expressed an understanding of the paradox of xTalk IDE GUIs by having three configurations:
1. By default, the RTE took over the menu bar, and presented itself as the dominant app environment you worked inside of.
2. As your app becomes more complete and begins to need the menu bar and other environment-defining elements, you can choose a single-menu option which presents the full set of IDE menus as submenus within one menu at the end of your app's menu row.
3. If you want to keep the IDE out of your menu bar altogether, you could choose to have the RTE present itself as a floating palette which offered those menus, much like NeXT was doing across the board at the time.
We only need a full IDE environment in early stages of layout and structural building.
Eventually we're fine tuning our UI, and spending ever more time in the Script Editor, with less and less time adding objects. It's very beneficial to be able to work
inside your app environment while it's running, something most non-xTalks can't dream of doing.
There is no one-size--fits-all in xTalk workflows, so while a single window UI is popular for drawing environments it inhibits the unique value inherent in The xTalk Way.
A configurable IDE, which can define the environment or become a less dominant tool within an environment defined by your app, is arguably an optimal solution to the many, quite different, phases of making apps in an xTalk.