Woopsi is a handy dandy GUI library made by Antony "ant512" Dzeryn for those who want to make their own Nintendo DS homebrew. According to the dev, the interface here is modeled after the AmigaOS windowing system.
It's still just in demo form, but the library is already pretty feature-rich and has been updated with a slew of fixes and new features. Below is the long changelog for Woopsi v0.38. You can also find more info in the readme file included in the Woopsi bundle.
- Removed PALib dependency from filerequester example.
- FileRequester gadget fixed for devKitARM r24 (Quirky).
- ListBox redraws correctly when an option is selected in single selection mode.
- Fixed crash in SliderVertical when trying to set value if max and min values are the same (Quirky).
- Fixed crash in SliderHorizontal when trying to set value if max and min values are the same.
- Fixed FileRequester crash when path has trailing slash (Quirky).
- Fixed double-click in SDL (Quirky).
- FileRequester fixed for SDL (Quirky).
- SDL path fixes (Quirky).
- Escape key to quit in SDL mode (Quirky).
- WindowBorderTop and SkinnedWindowBorderTop no longer have pointers to freed memory if window title changes (Quirky).
- ScreenTitle and SkinnedScreenTitle no longer have pointers to freed memory if screen title changes (Quirky).
- Flipping window depth with depth gadget no longer results in corrupted window contents.
- Fixed const-correctness of various Text class methods.
- SDL framebuffers initialised to black.
- More doxygen fixes.
- Removed WoopsiArray::begin().
- Removed LinkedList::begin().
- Renamed Gadget::draw() to Gadget::redraw() and removed unnecessary overloads from all classes.
- Const correctness fixes in Gadget class.
- ScrollingTextbox adjusts scrollbar grip position correctly when first initialised.
- Alert box draws XOR rect correctly when released.
- Requester draws XOR rect correctly when released.
- WoopsiKeyboard no longer adds itself as the decoration event handler twice; fixes XOR rect drawing when clicked/released.
- Added Gadget::getChild() and Gadget::getChildCount() (for leonelhs).
- Added context menu example (for leonelhs).
- ListData class raises events to ListDataEventHandler objects.
- ListBox listens for ListData events.
- Added base template class for event args passing.
- Refactored gadget event system:
- Replaced EventArgs struct with GadgetEventArgs class.
- Renamed EventHandler to GadgetEventHandler.
- Gadgets can now have multiple event handlers.
- Replaced handleEvent() method with multiple methods.
- Removed EventType enum from GadgetEventHandler.
- ListData events passed by references instead of pointers.
- WoopsiKeyboard includes a set of new events:
- WoopsiKeyboard no longer stores the last key clicked.
- WoopsiKeyboard has set of event-related classes:
- Refactored context menu event system:
- Added ContextMenuEventArgs class;
- Removed "_value" from ContextMenu;
- Removed "getContextMenuValue()" from Woopsi;
- Selected context menu item now accessible via ContextMenuEventArgs::get Item().
- Slider grip automatically resizes; no need to call resizeGrip().
- End point rects now cached (sans child rects) for extra speed.
- Gadget rect caching moved into separate RectCache class.
- RectCache::removeOverlapp edRects made non-recursive.
- Gadget::clipRectToHierarc hy made non-recursive.
- Added GraphicsPort::copy() to copy regions of the framebuffer around.
- Screen dragging code improved; uses new GraphicsPort::copy() method.
- Added GraphicsPort::scroll() to scroll regions of gadgets.
- Removed scrolling code from ScrollingPanel and rely on new scroll() method instead.
- Added GraphicsPort::dim() function to add DimmedScreen functionality to all gadgets.
Download: Woopsi v0.38
- DS Homebrew - Woopsi v0.36: now with dedicated WoopsiUI namespace
- Woopsi 0.34 - code fixes and optimizations