Posted By: wraggster
News/release from ant512
This is a very early demo of a windowing system I'm working on in C++. The aim of the project is to create a simple windowing system that other programmers can use for their applications, which should decrease the tedious amount of GUI code that people have to write.
The system itself is loosely based on the Commodore Amiga's "Intuition" windowing system. Everything in the system is treated as a "gadget" (in the same way that Windows treats everything as a sub-class of a window), everything takes place within a "screen" environment, and the look-and-feel of the system intentionally resembles the old Amiga system. There are several reasons for this:
- It gives me a template to work from, reducing the amount of work I need to do;
- Intuition was designed for low-power, low-resolution hardware;
- It seemed like a good idea at the time.
The windowing system is *not* intended to be a complete desktop environment. It is *not* going to be a DS version of GNOME, KDE or Windows Explorer. It will simply provide a system for rapidly building window and gadget-based interfaces.
Features so far:
- "Screen" concept in place;
- Draggable windows;
- Borderless, non-draggable windows;
- Clickable buttons;
- Smooth scrolling text boxes (using code from TextViewerDS);
- Object-orientated design for easy integration into other C++ software;
- Uses the old AmigaOS 3.0 "Topaz" font;
- Support for any standard PALib-style bitmap font (8-bit only).
he also updated:
Here's demo number 2. Improvements are:
- Addition of active/inactive windows;
- Automatic activation and depth sorting of clicked windows;
- Per-window event detection (gadgets on windows below the top window no longer get clicked if they are obscured);
- Button text centred both vertically and horizontally.
Things to do next:
- See if I can make events a little more intelligent - at the moment, I work from the top of the gadget hierarchy downwards. What I should do is locate the clicked gadget then bubble the event upwards;
- Improve the redrawing system - this is really slow at the moment, but it's just a quick hack to prove that the rest of the system works. I've got a plan to optimise it.
I'm also thinking of renaming the system to "Woopsi", as a bit of a pun on the original "BOOPSI" name for the Amiga's object-orientated gadget system. Eventually, once it's all finished, I'm planning on breaking with tradition and releasing this under the BSD license. That'll mean you can incorporate the code into your own projects and not worry about open-sourcing your code.
Download and Give Feedback Via Comments