Lit Window Library 0.3 released
hajokirchhoff writes "The first public release of The Lit Window Library (for C++) is now available at from LitWindow itself. The goal of The Lit Window Library is to speed up C++ GUI coding by a factor of 10. It greatly reduces the amount of work needed to code user interface requirements. This is not just another "better widgets" library. The library introduces two new, different concepts to UI coding: a data abstraction layer (reflections) and rule-based programming."
These will eventually allow the creation of a library of high-level UI design patterns such as "Add/Modify/Delete", "Select 1 of n, m of n", ready to be used out of the box, yet tightly integrated into ordinary C++ code.
Data Abstraction Layer:
While most libraries force their data structures on the programmer, the data abstraction layer enables the library to use almost any struct/class definition or container chosen by the programmer. The library works even with third party data structures, over which a programmer has no control.
Rules based programming:
The library adds a new element to the "Properties, Methods, Events" GUI coding paradigm. The "Rules" mechanism lets a programmer describe the interactions between widgets in a simple rule language. This elminiates the countless OnSomething methods that litter todays GUI source code.
For a comparison between traditional C++ source code and the Lit Window Library read
http://www.litwindow.com/lwl/doc/html/comparison_1 0x.html.
Release and licence:
The library is being released as an open source project hosted at sourceforge and made available under the BSD licence and The wxWidgets Library Licence. The library is using C++ and currently supports wxWidget as the UI framework. Other frameworks may follow.
Comments and feedback is very welcome.
Wanted: Volunteers with linux knowhow to help with porting. Good knowledge of C++ templates and compiler limitations/bugs concerning templates would be very good."
These will eventually allow the creation of a library of high-level UI design patterns such as "Add/Modify/Delete", "Select 1 of n, m of n", ready to be used out of the box, yet tightly integrated into ordinary C++ code.
Data Abstraction Layer:
While most libraries force their data structures on the programmer, the data abstraction layer enables the library to use almost any struct/class definition or container chosen by the programmer. The library works even with third party data structures, over which a programmer has no control.
Rules based programming:
The library adds a new element to the "Properties, Methods, Events" GUI coding paradigm. The "Rules" mechanism lets a programmer describe the interactions between widgets in a simple rule language. This elminiates the countless OnSomething methods that litter todays GUI source code.
For a comparison between traditional C++ source code and the Lit Window Library read
http://www.litwindow.com/lwl/doc/html/comparison_1 0x.html.
Release and licence:
The library is being released as an open source project hosted at sourceforge and made available under the BSD licence and The wxWidgets Library Licence. The library is using C++ and currently supports wxWidget as the UI framework. Other frameworks may follow.
Comments and feedback is very welcome.
Wanted: Volunteers with linux knowhow to help with porting. Good knowledge of C++ templates and compiler limitations/bugs concerning templates would be very good."
Yes but will it fix my memory leaks?
fp0st
Will probably converge to K or APL eventually.
When it is comparable to this example (yes, the text above is both the logic and the GUI for the game below), or this calculator or spreadsheet implementations I'll be impressed.
It may look obfuscated, but it isn't to one versed in K programming. And if you aren't versed, anything (except perhaps Python) looks obfuscated.
Part of me knew that despite .Net getting GUI development completely right, that there was still a better way to express constraints in GUI programming beyond glorified code generators. This looks like exactly the ticket.
Who wants to work on a WTL port of this?
Cut the fancy talk. How does some "simple" code look like ?
Hehe...I chuckled as I read the first two examples in documentation, loading and saving settings, and showing a specific type of dialog, since these two utilities are almost identically what is used in Java to do the same:
Properties p = new Properties();
p.load(new FileInputStream("/path/to/Settings"));
---
JOptionPane.showMessageDialog(null, "hi!");
Notwithstanding that we still complain.
Apparently what C++ needs is just a decent platform and standard library.
It's 10 PM. Do you know if you're un-American?
How far does this fit w/ the stuff that Boost is producing? It might be a good idea for it to undergo a boost review process at some point, so that some _really_ funky template-foo can be done. Plus, some components of what he's produced could probably be boostifid. For instance, the semantics + syntax of "rules" is very similar to Spirit's rules; perhaps there's a common abstraction there?
From a concept-programming standpoint, LitWindow seems to be a sort of hacked-together meta-programming language for GUIs. The concepts are good, but the implementation is sorely limited by the language they use (C++).
For instance, their data adapter are the poor's man meta-program generating useful reflective data from a data structure. You actually need to duplicate the description of the data structure, precisely because this is not a _real_ meta-program, but only a clever hack using the C preprocessor...
Now, what if you had a real way to extend the language as you need it, rather than this crude hack? Wouldn't it be cool if the data adapters could be generated automagically?
-- Did you try Tao3D? http://tao3d.sourceforge.net
This is wxWindows meets MUI (Magic User Interface on the Amiga).
Lovely!
I know the parent was (trying to be) funny, but I'll reply seriously, with another new concept on GUI programming: Zero Memory Widget, that uses no memory at all!
The code examples, especially the rule-based GUI coding looks a lot like the Cocoa Bindings system in OS X. I wouldn't be suprised if this library was using something similar to Cocoa's controller layer under the hood. What's impressive is that they're able to do this in C++. Objective-C's more dynamic calling system makes this a lot easier.