Woopsi is a Nintendo DS GUI library for rapidly creating user interfaces for homebrew software. Modelled after the AmigaOS windowing system.

Release notes:

Woopsi version 0.47 is now available:


This version adds support for a “drop” event to enable drag-and-drop functionality. The ScrollingPanel has been refactored to fix the bugs spotted by DoZ. It includes a new ColourPicker gadget supplied by Mark Adamson that allows a colour to be chosen by manipulating RGB sliders. It is built with devKitARM r30 and includes the usual set of bugfixes.

– Removed Woopsi::startup() call from template.
– Fixed bug in Gadget::checkCollision(x,y,width,height).
– Renamed CalendarDayButton to StickyButton.
– WoopsiKey inherits from StickyButton instead of Button.
– ScrollableBase no longer contains implemented methods or data; all moved to ScrollingPanel.
– Child gadgets of ScrollingPanel no longer get drawn to wrong screen if scrolled out of top of panel; Gadget::getPhysicalScreenNumber() is more intelligent.
– Graphics::scroll() returns correctly-sized rects in revealed rects array.
– Replaced WindowBorderBottom, WindowBorderTop and WindowBorderSide classes with more elaborate drawing code in AmigaWindow class.
– Replaced ScreenTitle class with more elaborate drawing code in AmigaScreen class.
– Made ScrollableBase a base class of ScrollingTextBox; implemented all pure virtual functions.
– ScrollingListBox raises value changed, action, click, release, release outside and double-click events correctly.
– RadioButtonGroup raises value click, release, release outside and double-click events correctly.

New Features:
– Added x and y parameters to Gadget::stopDragging().
– Added drop event (drag-and-drop).
– Added Gadget::isBeingDragged().
– Added PipeDream demo.
– Built with devkitARM r30.
– Added ScrollbarPanel gadget.
– Added ColourPicker gadget (contributed by Mark Adamson).
– Added ColourPicker test.
– Added ScrollingPanel::isContentScrolled() and setContentScrolled() to allow DMA copying of panel contents to be disabled if not needed.