1992, a guy from University of Edinburg was given the task to design a CASE (Computer Aided Software Engineering) tool to be run in both Windows and Linux system. At that point in time only a few cross platform GUI APIs were available and were very expensive for an university to spend on an in-house experimental tool. But that didn’t stop Julian Smart from designing his CASE tool. He realized that a cross-platform GUI has to be developed first and eventually wxWidget was conceived. Its is probably one of the most talked about Open-Source project after Linux itself !
I always had been an advocate for wxWidget since I used it for the first time with version 2.4. Coding with wxWidget is a pleasure. It’s amazing to see how simple the API is (as far as coding is concerned) yet how diverse and complex it’s outputs can get. It’s probably the only C++ widget set that takes native look, i.e. it takes the original look and feel of the platform it has been built for, unlike Swing of Java. An windows application will actually look like an windows application and similarly a Linux GTK application will look like a true GTK application. This feature is somewhat similar to the SWT (for Java) and is pretty cool. Another great feature of wxWidget is that it can save it’s GUI layouts and other details in xml format which can be modified without touching or rebuilding the code.
If you are thinking that wxWidget is only for Windows and Linux then get ready for a surprise because it has ports for literally all platforms on the planet including Pocket PC ! Even it has a port called “Universal” which has its own look and feel and is guaranteed to run in all Linux flavors, even if you do not have GTK !
The widget set is extremely diverse. You have almost everything you would ever need. However, you cannot make another Office-2007 or Visual Studio 2005 with it. Since the project is an Open-Source project a major part of it is community driven which means that components and widgets are developed almost continuously by someone somewhere. If you feel you need a certain component that doesn’t exists in wxWidget, just hold your horses and do few googles before you decide to write your own codes, because more than often you will find that a similar component has already been coded by someone and has been made freely available. In the current release of 2.8 they added one extra set of widgets called AUI which has a collection of advanced UI controls with docking capabilities and etc. wxWidget also participates in the Google Summer of Code and you can have a peek at what they do there (click).
It’s is quite amazing that over the last ~15 years wxWidget has almost become a standard for cross-platform C++ GUI application. The number and the names of the companies who have embraced this technology is quite envious. The list includes companies like AMD, AOL, organization like NASA, research institutions like Carnegie Mellon University, CalTech and etc. For a complete list click here. One extra bit of information I can share is that Electronic Arts, RedWood Shore Studio (Maxis Studio) is going to be added in that list very soon!
Even if you are not planning for a cross-platform GUI wxWidget can still be your solution, ofcourse if you are not planning to make another Office -2007 or anything alike.
Happy wxWidgeting 🙂