Cross Platform UI’s

  2 m, 9 s
One of the things that has become apparent to us over the past year or so is that there is a growing demand for our software to run on *nix boxes as well as the windows boxes that we have traditionally supported, and this applies to not only the serverside components but the UI tools as well. To start with I considered doing an all singing all dancing Web 2.0 type application, but deployment considerations put me off that. These tools aren’t really things that are used by multiple people but are something that are going to be used by a very select group of users, a user group who wouldn’t want to be bothered with installing all the serverside pieces that a web application implies. After briefly considering Java (very briefly as I’m not a personal fan of that particular development platform), I cast my net wider (ok I did some Google searches) and ended up looking in the direction of wxWidgets. Excellent, this looked exactly what I had been looking for - a nice easy way to do windows development that was cross platform and most importantly free. However there was a downside, its a C++ toolkit which means a different class of development resource that the ones that we were going to assign to the project. Not to worry though, it turns out there is a Python Port. Of course writing the UI is only the first step, a lot of our base level components are C++ code and I certainly wasn’t going to rewrite them all in Python. To start with we considered using SWIG but after playing about with it for a few days I discovered I was writing as much interface code as I would if I just used the native Python C extension instead, so that’s what we ended up doing. I’m sure that if we were going to deploy the code to multiple platforms then we would reconsider SWIG but for just going to Python the effort was far more than the return. The final stage was to turn all this wonderful code into a native executable. In keeping with our company mantra of everything must be installable in 15 minutes we couldn’t in all fairness ask the userbase to install python and all the other libraries as prerequisites. A final Google lead me to Py2Exe which makes it a snap to package up your python application ready to be built into your install script (we use NSIS) And the cool thing about all these technologies, they are free!