Woopsi is a Nintendo DS GUI library for rapidly creating user interfaces for homebrew software. Modelled after the AmigaOS windowing system.
Version 0.42 is out now!
This release improves the functionality of the ListBox, ContextMenu and CycleButton gadgets. It separates management of data from the UI, allowing such things as adding/removing/sorting CycleButton options, custom sorting orders, etc. It improves the speed of the FileRequester and includes several bugfixes and optimisations.
- Fixes:
- ListData::swapItems() no longer raises a data changed event.
- ListData::sort() raises a data changed event.
- Woopsi class does not attempt to retrieve system font before it is initialised.
- ListBox canvas height no longer includes extra pixel.
- ListBox raises an action event when double-clicked.
- ListBox ignores double-clicks that occur across multiple items.
- Removed unused Gadget::_doubleClickTime member.
- ListBox redraws every time data changes.
- Double-click only counted as such if the gadget already has focus (ie. must be the same gadget clicked twice).
- ListBox::draw() calculates top and bottom visible options correctly, and does not overwrite options at the top of the list with those from the
bottom.
- ListBox automatically scrolls when items are removed from the ListData object to ensure it does not display past the end of the canvas.
- New Features:
- Split ListData class into ListData and ListDataItem classes for greater flexibility.
- Minor improvements to the ListBox's use of the ListData class.
- Altered ListData::quickSort() and added compareTo() method to ListDataItem to allow custom ordering of ListDataItem subclasses.
- ScrollingBase adds support for specifying planes on which scrolling can occur.
- ScrollingPanel implements ScrollingBase's allow/disallow scroll plane features to prevent scrolling on certain planes.
- ListBox does not allow horizontal scrolling.
- Added windowless example project.
- Added Gadget::isDoubleClick() to check for double-clicks.
- Combined various colour members in Gadget class into GadgetColours struct.
- Merged TextWriter into GraphicsXXX classes and removed original class.
- Added FileListDataItem class to store data for file requester.
- FileRequester uses new compareTo() functionality for substantial speed increase and lower memory usage.
- FileRequester displays "Loading..." message whilst directories are enumerated.
- Split ListDataItem into ListDataItem and ListBoxDataItem classes for greater flexibility.
- Split FileRequester into FileListBox and FileRequester classes for greater flexibility.
- CycleButton uses the ListData class to store its data - options can now be selected, removed, sorted, etc.
- ListBox::getPreferredDimensions() bases width on size of text in options.
- ContextMenu used a ListBox to store/view its data.
- ContextMenu includes getPreferredDimensions() method.
- ContextMenu sends ListDataItem objects with event arguments instead of ContextMenuItem objects.
- Deleted ContextMenuItem class.
- Added WoopsiString::copyToCharArray().