Mar 2025
The new WIMP demo design. WIMP Demo Moved demo plan files to a subdirectory, and redesigned the demo to shift emphasis from window frames to embedded panels. Cleaned up the debug information that was printing…
The new WIMP demo design. WIMP Demo Moved demo plan files to a subdirectory, and redesigned the demo to shift emphasis from window frames to embedded panels. Cleaned up the debug information that was printing…
A ProdUI workspace test. The snowy background is tied to a workspace render callback, so it only appears when its associated workspace is active. ProdUI Development Changed how widgets are initialized. Previously, the addChild() method…
Libraries LXL: Attributes with #FIXED defaults are no longer overwritten. ProdUI Broadened the scope of menus to include full widgets as items. Some menus benefit greatly from having extensible components, and previous attempts to extend…
Added a multi-state checkbox Minor tweaks and fixes to NumberBox, ComboBox and TextInputSingle Cleanup of TreeBox, ListBox code. Some work on PropertiesBox. Renamed ‘lib/depot.lua’ to ‘ui_load.lua’. Depot was a resource loading library which I don’t…
I noticed that LXL is slow when reading large XML files under PUC-Lua. The problem is caused by how the library scans the document for valid XML code points. I made some changes to help…
Uploaded LuaTree, a partially complete Lua source parser.
No project work this month. I’ll stop posting until I have something to write about. (Nothing serious, just poor time management and the programming equivalent of writer’s block.)
Made a dropdown box widget. The single-line text box widget started in November is mostly operational now. Merged the two scrolling register sets (scr, scr2) into one (just scr). uiGraphics: Added a wrapper to setScissor…
I moved ProdUI to a public Git repo. It’s not ready for general use, but it should work with LÖVE 11.4, 11.5 and 12.0-development if you want to take a look. Wrote some UI Context…
Reorganized the theming and skinning system: In August, I added special fields that described how to reach theme objects. For example, skin[“*tex_side”] = “textures/side” would eventually lead to the assignment skin.tex_side = resources.textures.side. This was…