12.23.2010

GUI Libraries

As my student project continues, I see other team members having their problems with their tasks. Most notable the guy responsible for merging all components inside the GUI. He wanted to Qt, cause a lecturer mentioned it has the best documentation. It was a nice idea in the beginning, but he didn't quite understood what it means to use such a bloate libraries. The problem is that it's not only a simple GUI library, but also a strange framework for all kinds stuff, reinventing the wheel for everything. I don't say this a bad thing, as you can define everything fine within your framework. It's maybe a cool thing if you plan to develop an application in Qt only. However, Qt is bloaty and totally useless for newbie coders looking for something to develop with. I didn't watch his decisions so wisely - I payed a price, but one that's still ok to pay. At the moment, I guess I know more about Qt than he, cause I had to solve some of his code problems. I must admit, I don't like it. It reminds me of Java's concept-heavy reinvention of everything and constant tries to make some kind of "architecture" for everything. I fucking hate this term, I still see programs as a logical construction of other programs, not just concepts and design patterns, etc. So as my fellow student began to annoy me with his problems so late, I said I'm not in the mood for that shit, took a lengthy pause and started looking for a GUI library I'd like to use myself. And again, Wikipedia is a very useful ressource for more or less mature GUI libraries. I found something I already before, but never took a look at it. I'm talking about wxWidgets, as the other student also talked about it a while ago. He didn't like it, cause he "would need more code for hello world" when using it. Well, I begin to think it was a bad decision of him. I haven't yet used it, but looking at the documentation, I kind of like it's clean and direct design. Even if a couple of people say, Qt has a good documentation, I don't like it that much. I rather prefer a direct list of all classes, a simple but effective libary design with much talking about their design concepts. All necessary design ideas should be explainable in a few sentences at the beginning of a class documentation, that's it. And well, wxWidgets seems to do this quite nicely as I see. It reminds of my first tries to get a window working using Window's own API. It had a bad documentation, no classes (I didn't use any OOP back there) and weird behaviours. Then there was Purebasic limited approach and gave a simple but usable interface with relatively useful documentation. Now as I see wxWidgets, it seems to have all the nice GUI-related functions I missed from Purebasic. I guess I would've chosen wxWidgets for my fellow student's task. But well, he seems to like bloaty and talking frameworks. I rather prefer a silent agent delivering me only the necessary notes but still delivering my all essential elements for easy handling.

However, it looks good and it's documentation says everything I would've asked for. Isn't this a good sign? I rarely see something like that, so I don't see a reason to not keep it in mind. It's also interesting to know that  wxWidgets has some useful other classes, too. Multithreading, XML parsing, etc. All the other frameworks like Qt or GTK have additional stuff, too, but I don't like their Interfaces. Neither GTK's nor Qt's. But I'm still looking for a standalone multithreading library for advancing ITK during the next term break. I know I need some kind of cross platform library supporting threads in order to get my rendering concept done. I could either create a wrapper class that can be derived into a real thread management class and use it as an independent interface for my thread components. That would need some more thinkage and work. I'm not sure about it. I guess it's the best to create as many independent classes as possible and implement specialized version of them - as it's one of my design principles. 

No comments: