Lit Window Library 0.3 released 29
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."
zero memory (Score:2)
Long way to go. (Score:4, Interesting)
When it is comparable to this [nsl.com] example (yes, the text above is both the logic and the GUI for the game below), or this calculator [nsl.com] or spreadsheet implementations [nsl.com] 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.
Re:Long way to go. (Score:2)
I'm really sorry that you have to smell the Java. Really. I hope you'll be able to enjoy programming once more some day.
Readability is relative to knowledge. How much is "1/2"? In C it is 0; In Pascal it is 0.5. What happens in "if (peace or destroy(world))"? In Pascal, it is undefined. In C (assuming "#define or ||"), it will destroy the world only if there is no peace.
is
Re:Long way to go. (Score:2)
Yes.
Although, I still prefer the Ada way around for object messages. That would be something like Frobnicate_Other_Object (object, other) - since this means you don't get a messy syntactic difference between methods defined "in" the object, versus methods defined "outside but using" the object.
(frobnicateOtherObject is still a dumb function name. "frobnicate" isn't meaningful enough and "OtherObject" is semantically redundant.)
Re:Long way to go. (Score:2, Insightful)
Re:Long way to go. (Score:2)
It's notation for semantics, and the semantics are what you're missing. K is not readable with just knowledge of C/Java/Lisp; It has a learning curve. But it is well worth it - can you do the max substring sum _efficiently_ in 9 chars?
Re:Long way to go. (Score:2)
It's a pretty straightforward translation that you've offer, "|/0(0|+)\" is "max over 0 (0 max plus) scan". Each character in the first translates 1:1 into terms in the second...
But, why even bother with the first notation? It's pretty ridiculous. *Anyone*, even an expert in the language, would have an easier time reading the verbose version.
Representing "Maximum s
Re:Long way to go. (Score:1)
True, but it doesn't mean it isn't worth it. To use Perl and Python, Emacs and VI effectively, you need to know regular expressions. They are usually terse line noise but it's a powerful tool once you've learnt it.
Re:Long way to go. (Score:1)
Re:Long way to go. (Score:3, Insightful)
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.
I did some J programming a little while back, and K as far as I understand is similar. Anyway, code I wrote in J definately did not loo
The logical next step (Score:2)
Who wants to work on a WTL port of this?
Re:The logical next step (Score:1)
How does
Show me the code. (Score:2)
Re:Show me the code. (Score:2, Informative)
Here, as advertised on the homepage:
http://www.litwindow.com/lwl/doc/html/comparison_1 0x.html [litwindow.com]
or here for a real-world example:
tutorial for a simple rssreader (incomplete) [litwindow.com]
Java (Score:3, Interesting)
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.
Re:Java (Score:1)
IOW: does p.load(...) work if p contains a vector of elements (that may itself contain another vector)?
And, yes, I agree. C++ needs a decent standard library and reflections should be part of it
Re:Java (Score:2)
key=value...
However, there IS a full-fledged Preferences API which I believe is capable of storing an arbitrary hierarchy of objects, which was introduced due to the deficiencies of stashing flat settings files in user directories (I never personally had a problem with that strategy).
You can do reflection in Java, but it is a bit cumbersome, and it's too late in the lifespan of
Boost? (Score:1)
Re:Boost? (Score:2, Interesting)
But I agree that I'd love to see some convergence with the boost library.
BTW, whats the 'boost review process'? I have browsed the boost documen
Re:Boost? (Score:1)
GUI Language (Score:3, Interesting)
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 [sourceforge.net] as you need it, rather than this crude hack? Wouldn't it be cool if the data adapters could be generated automagically?
Re:GUI Language (Score:2)
MUI! (Score:4, Interesting)
Lovely!
Similar to Cocoa Bindings in OS X (Score:2, Interesting)