
David Bergman wrote:
No, the *actual* complexity. Most "GUI" programmers happen to be quite junior, and templates are tricky. Types not consisting of one simple lexeme are complex. [And typedef's do not save that...]
Whoa, slow down there. :) Maybe GUI programmers that _you_ work with are junior and find templates difficult but that's certainly not the case where I work. I do a great deal of GUI coding and can certainly say that I'm comfortable using (and encouraging others to use) templates and generic coding techniques.
Regular programmers cannot use templates more than via very simple patterns, such as smart pointers (actullay popularized via Microsoft's Active Template Library, I think), and they can certainly not create their own templates. I have interviewed about a hundred "expert C++ programmer" (from the resume...) of which three (3) had ever created his/her/its own template, and zero (0) had ever used either templates as template parameters or nested template instantiations.
I hear you. But those kind of 'expert' claims aren't limited to GUI developers.
I would love to see a GUI library that is for those who have not only dipped their toe into the strange, but beautiful, waters of generic, and generative, programming, but for those who can actually swim in it.
I may not be a swimmer, but I can float with the best of them. ;) Seriously, I understand your wishes, but I only want generic/generative techniques used if it enhances the usefulness of the library.
Ok, it would not get a "wide" appeal. So, what? If we looked for that, we already have a bunch of solutios to choose from. We have all used Tk, or wrappers thereof. Most of us have used Qt, I think. Note that the "wide" market does not care about platform-agnosticism.
My perspective is waaay different. I want a cross platform GUI library that uses modern C++ techniques - where applicable - to give me the tools to create GUI applications quickly in a natural C++ syntax. I want something that has wide appeal, so many people use it and it becomes a _useful_ skill (and can find a valuable home on my resume). I have yet to find such a library [1]. And I'd be very willing to help develop one if enough momentum was thrown into it. Let me expand on that - I've seen quite a few GUI libraries started but, because it is such a large undertaking, many lose steam and development trickles to a standstill. I don't want to expend effort unless I'm confident there is support, I just don't have the time. Also, in my experience, your assumption that the wide market is satisfied with a platform specific solution is not valid. Andy, your "unitless" concepts are terrific, keep 'em coming. :) Having said that, first and foremost I want a library to provide me with 'normal' widgets, the 'canvas' comes secondary. Just my 2c! Cheers, Matt [1] Other GUI libraries and some of the issues I have with them: o Win32 Generics - Good work John, but it's not cross platform, an absolute requirement for me. I understand your argument that it's _much_ harder to create a cross platform library (and agree!) but I think it's far from impossible (we use an in-house cross platform library here at work). Personally, I'll avoid using a GUI library if it locks me into a platform, it's just not worth it. - It's also not that simple to use because you need intimate knowledge of Win32. Not a problem for me but it's a step backward IMO. o wxWidgets - One of the more developed libraries but it really needs an overhaul. Message map macros?? - Even though it has limitations it would still probably serve as my pick of the alternatives because it's quite deep, well documented and well supported. o Qt - I've done little development with Qt but it unnecessarily requires a pre-preprocessor (yes, I understand the reasons for moc - they were valid years ago but I don't believe they are any longer). - The sytax is, like wxWidgets, quite 'old school'. - Of course the Windows licensing is an issue. o Notus - Promising but over-templated IMO. - I clash with some of the design decisions (well, I did when I was keeping tabs on it). o WTL - Not cross platform. - Not effectively maintained. - Not effectively documented. o Win32 - Lots of issues. o MFC - See above. I've "played" with FLTK, FOX and GTKMM too and they all seem like reasonable libraries. But I haven't used them enough (and wasn't impressed enough) to comment further. If I should clarify any of the points please just ask... :)