@requiem It's going to be a quick and dirty ROSE app designed to help me figure out how to implement proportional gadgets.
As I'm working on it, I think I figured out how to combine some IMGUI ideas with stateful UI ideas, which I think would really benefit systems with limited processing power.
It'll probably be bloody obvious to someone else, but to me, this is totally new.
@requiem It quickly turned very non-obvious. LOL! :P
@requiem This is a much harder problem than I anticipated. I only got as far as defining a simple push-button with the visuals and behavior I'm happy with. The code, however, is Really Fuckin' Ugly. I need to somehow clean this up.
I'm not sure if I want to go the MacOS/Apple IIgs route, where a window has a flat list of "controls", or if I want to use Smalltalk-style MVC.
@requiem Yep; I'm attempting to make a simple, retro-inspired GUI environment in Rust.
@requiem It should run on anything that Rust runs on; however, it does not directly talk to any graphics hardware. Right now, my "hardware" layer code just uses SDL2 library for input and output.
The "display" is a (configurable, but currently 320x200) monochrome bitmap in memory. SDL doesn't update the display window until explicitly told to. (It's annoying, but it works and is compatible with SDL's event model.)
maybe this would be something along those lines?
I don't know. I am not specifically optimizing it for low memory consumption, or to have the smallest possible API. Rather, I'm optimizing the API for what I feel is a comfortable and, hopefully, obvious developer experience.
That said, I'm also specifically not trying to make an API with thousands upon thousands of function calls, data types, and the like. :)
My four key inspirations so far are GEOS 2.0 (for Commodore 64/128), GS/OS, Amiga Intuition, and GEM. GEOS works fine with 64KB of RAM, GS/OS needs 128KB, and AmigaOS and GEM both work with 256KB of RAM. So, hopefully, I can keep my resource needs within those limits. If I can't, then I hope I can keep things below the 1MB mark.
(note: On Linux, Rust compiled binaries alone end up easily exceeding 300KB; however, I also know for a fact it's possible to emit much smaller binaries if you omit the standard library, as we do it at work for our deep-embedded work.)
@requiem ROSE is, at the moment, without windows. They'll come; but, for now, you have total control over the "desktop."
Part of the reason why I'm taking so long right now is because I'm trying to figure out how put controls up onto the screen (and react to them) with something that feels right when coding an application.
Everything I've done so far just feels too complex, not Rust-y, or otherwise straight up clunky.
I'd LOVE to see a HyperCard-like program for ROSE. That would be awesome!
BTW: ROSE == Retro-inspired Operating System Environment. It's a half-pun on the name GEOS (both are four letters, and both mention "operating system" and "environment").
@requiem Funny you should ask. :) https://git.sr.ht/~vertigo/incubator/tree/master/item/ROSE
ROSE doesn't sit in its own repository yet. I still consider it a bit immature. But, if there's interest from others, I'll migrate it to its own repo so folks can contribute more easily (and without pulling in irrelevant or ill-defined sub-projects of mine).
@requiem Nice. Just remember, this is a for-fun project for me which has no associated time-tables. I will be working on this on an as-time-permits basis.