From: Bruce S. <Bru...@nc...> - 2008-03-08 23:42:00
|
Technical note for the technically interested, related to the intent to eliminate dependence on the GTK libraries for Windows and Mac: GTK is a library for the C language for creating windows and handling events, especially on Linux. GTKMM is a "wrapper" of GTK for use by C++ programs. Because there exist Windows versions of these libraries (and Mac versions for the Unix-based X11 windowing system, as distinct from the native Quartz graphics), Jonathan Brandmeyer originally wanted to use GTKMM for Windows as well as Linux, and for X11 on the Mac, as this would mean that one set of code would work on all platforms. However, shortly before he left the project, he came to the realization that it was so incredibly difficult to install GTKMM libraries on Windows that few developers would ever be able to build Visual on Windows. For that reason he rapidly wrote a Windows-specific module for creating a window and handling mouse and keyboard events. The beta version of Visual 4 seemed to be significantly more buggy on Windows than on Linux, so when I started working on Visual this past fall I made the attempt to go back to using GTKMM, with the thought that perhaps the problem was with the Windows-specific code which Jonathan had created at the last minute. As it happens, his Windows-specific code seems basically fine, but this was masked by a variety of other problems which happened to be more visible on Windows than on Linux, which I worked on, one after another, as slowly the beta version worked better and better on Windows. I went through enormous difficulties, with blood all over the floor, to create a GTKMM build environment on Windows. This hair-raising tale is told in an article that you can read in the section "For developers" at vpython.org. When David Scherer recently became interested in working on Visual again, he quite sensibly reacted in horror to the great complexity of the gtkmm build environment on Windows and proposed going back to using Windows-specific code. Having seen that many of the supposedly Windows-specific problems with Visual 4 were independent of the Windows-specific code (which I wasn't using), I was quite willing to agree that we should try abandoning the gtkmm approach on Windows. The non-gtkmm version seems to work as well or better than the gtkmm-based version, and it is far less complex. It can be easily compiled using Microsoft Visual Studio (and there is a free version of this available from Microsoft). Moral of the story: Good people have volunteered a lot of time to the attempt to create an open-source cross-platform windowing system to support cross-platform graphics-oriented programs. Nevertheless, the existing gtkmm environment is off-scale complex, large, fragmented, inadequately documented, and incomplete on some platforms. It started on Linux, where it is the workhorse. But the ports to Windows and Mac are just plain too hard to use. Bruce Sherwood |