Woopsi is a BSD-licenced windowing system for the Nintendo DS, written in C++. The aim of the project is to create a simple windowing system that programmers can use for their applications, decreasing 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.

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.


– Fixes:
– Tidied up a lot of the code.
– Gadget deletion queue now handled solely in the VBL events.
– Optimised TextWriter by preventing it from drawing empty glyphs.
– Changed TextWriter into a static class.
– Optimised TextViewer so that it uses much less memory.
– Text font and glyph font now sent around hierarchy instead of each gadget creating their own font.
– Improved Font class.
– Removed 8-bit code from Bitmap class.
– General refactoring and code tidying.
– Made EventHandler methods virtual instead of pure virtual.
– Split gadget events into “raiseXEvent()” and “x()” functions.
– Clicking a gadget automatically notifies its parent that it is the new clicked gadget.
– Moved dirty child redraw function into gadget class.
– Added horizontal clipping to rect splitting functions.
– Fixed SuperBitmap border.
– Relevant gadget methods are now virtual for subclassing.
– Removed all unnecessary all_gfx includes.

– New features:
– Added non-draggable screens and windows.
– Added show/hide gadget functionality.
– Added ability to hide a window instead of closing it when the close button is clicked.
– Added closed/hidden/shown events.
– Added monochrome output to Font class and definable text colour.
– Added drawText() function to SuperBitmap class.
– Added window depth button.
– Added enable/disable gadget.
– Started work on alert requester.
– Moved text data manipulation out of TextViewer into a separate class.
– Added Gadget::moveTo method.
– Added Gadget::resize method.
– Added resize event.
– Added move event.
– Added value change event.
– Added window resizing (API only).
– Added radio buttons.
– Added radio button groups.
– Added “clicked” glyphs for screen and window depth buttons.
– Most gadget action methods (click(), moveTo(), etc) return bools to indicate success or failure.
– Added enabled/disabled events.
– Added checkboxes.
– Added NDS screen flipping and support for top NDS screen.
– Added screen flipping gadget.
– Updated screens to swap to front when clicked.
– Added a variety of gadget depth manipulation functions.

Thanks to http://www.dev-fr.org for the news.