For an idea of the kinds of features I am talking about, you can see a screencast here.
Currently, this code resides in my UCR project here, but if other people in the community wish to collaborate, I would create a new project dedicated to these libraries.
Here is a proposed feature list:
- Encapsulate GUIs (and Controls?) into classes.
- Detect +Parent option passed to Gui.Create() and store child GUI object in an array on the parent.
- Provide a Scrollable Window class that automatically creates scrollbars when client objects (GUIs, Controls) are clipped by the viewport.
[Done for GUIs, Controls not handled yet but that is easy]
- Provide a mechanism for child item positioning that adjust coordinates passed to Gui.Show() to account for current position of viewport (ie due to scrollbar position).
[Routines to calculate offset done, implemented ShowRelative() alternative to Show()]
- Provide a mechanism to route Windows Messages (eg Scroll) to the relevant GUI / Control. Ideally encapsulated within the class where possible.
[Encapsulated proof of concept in, could do with some work]
- Provide a way of moving multiple child windows together.
[Implemented via DeferWindowPos Dll Call]
- Miscellaneous wrappers for Dll calls (GetClientRect etc)
[Lots already implemented]
- Classes to implement a "TaskBar" to emulate a windowed environment within an AHK window.
[Proof of conept done]
- Additional events for GUIs such as OnMove(), ChildMoved(), ChildMinimized() etc
This is probably the area where I would need help in order to make it fit for release back into the community - it already works for the purposes I need it for, but I feel that with a bit of polish, it could make a very nice set of classes that would enable people to easily create full-featured applications in AHK.
I am also quite happy to do all the work myself, if anyone is willing to make suggestions as to how I could improve the quality of the code, that would be grand.
Comments / feedback welcomed...