
Andy Little wrote:
Brian Riis wrote
I really don't think we want standard C++ to have a "builtin" GUI that "simply works" on all systems.
Sorry . have I misread this ? A C++ GUI that "simply works" is exactly what I want. Its got to be simple for beginning programmes to pick up, generic, have an intuitive model, and have a non-platform dependent interface.
I'm not contesting this. I'm contesting that it should produce identical windows on all platforms.
That makes me think of the Java GUI, which works on all systems with a VM, but unfortunately looks like a Java app regardless.
The builtin GUI is a major reason for Java's Success. And notice that it works on the internet where "platform" is not applicable. Personally I think the Java model is well worth looking at for ideas about a C++ GUI.
Well, "platform" *is* applicable to a Java program. The thing is, though, that a JVM *is* the platform. Java really drags its platform around with it.
The Windows GUI behaves slightly different than
GNOME, and there are quite large differences to OSX from either.
Thats interesting and useful stuff. Would it be possible to enumerate some of the differences? Personally I would like to have a uniform behaviour of a C++ GUI across platforms if possible.
I wouldn't. If I am on a Windows box, I want the look-n-feel of a program to be that of any other Windows program. The normal layout of a window should apply, and the Windows shortcuts should work, e.g. being able to start editing any textcontrol by pressing F2. On GNOME I would expect an app to behave like other GNOME programs. OSX differs from the other platforms in many ways, because Apple's Style Guide suggests different layouts. As a simple example, consider a message dialog box with a message the user should consider and then choose Yes, No, or Cancel. On Windows the three buttons would be centered and come in the order mentioned above. On GNOME the buttons would be right-aligned and be ordered "No", "Yes", and "Cancel". On OSX the "No" button would be left-aligned along the message text, while "Cancel", and "Yes" - in that order - would be right-aligned. And so far it's just layout issues. My point is, basically, that the different platforms *feel* different, and users will expect a program to feel like the platform they're on. Java apps feel like Java apps all over. This is great for web-based applications (my NetBanking wouldn't be right without it), but not so great for desktop applications.
I don't think we want a GUI system where people will say, "Hey look at this app; it's obviously written in C++, judging by the UI!"
I think you are limiting the possibilities here. Maybe a C++ GUI should be 3D. Maybe we should default to a round window. You cant have true platform independence if by default you need to simulate a particular platforms look and feel. IOW then you cant have one default interface. Being able to put on a platform dependent skin is an often requested feature, but is trivial to achieve IMO. The number one feature is simplicity and ease of use which means platform independence... "simply works")
My point is that it shouldn't be a "skin". You can change the look that way, but rarely the feel of an application.
regards Andy Little
-- /Brian Riis