http://harryfelton.web44.net/titanium A Lua framework aiming to make creating reliable GUIs in ComputerCraft quick and easy, while providing a powerful set of tools for those who need them.
Semi-tempted to completely restart Titanium/majorly refactor. Some problems I'm not sure how to fix with the current architecture:
Currently, projecting an application to a monitor is.. cumbersome. You can't really handle more than one monitor (unless they're all the same size) very well. It adds shit-loads of overhead to the application too, especially if you start trying to mirror to multiple monitors. I'm thinking a CSS-media query style approach where you can mirror a node to a projector and have it use a certain layout depending on it's dimensions. This is currently impossible with Titaniums current architecture.
Having the application view 'change' is something that was never really added to Titanium, closest we have currently is setting a nodes visible
attribute to false
, but that isn't super clean (and events are still shipped to this node)
Events, regardless of type, are shipped to every node in the application. This isn't awful, but it does so by cascading, slowly, through every parent too. I'd like to change this system to use a subscription-based approach. Unfortunately, it simply can't be as simple as receiving all events from the application root node, because the parents may consume the event along the way... so this can't really be avoided, however, we don't really need to be shipping key, rednet, etc events to every node, only nodes that want them. Feedback is welcomed in this regard.
I'm fairly happy with Dynamic values, however, they're likely a lot more of a cluster-f**k than need be. Again, help is welcomed.
Canvas updates are slow. Not sure how to optimize this; for the most part the program is fine, however something like dragging/resizing a window takes me back to Windows XP era. I think the current method of canvas drawing is slow, and dynamic values play a part here in causing lag.
I would like to have implemented some proper layout classes, rather than relying on explicit X/Y co-ordinates; honestly, I'd rather scrap that system altogther and move towards a constraint-based system.