I've been thinking about modding tools a bit. In hacking the G3d viewer a bit I got somewhat familiar with wxWidgets, it wasn't long before I started looking for alternatives...
The contenders:
C++ with wxWidgets
Pro: Is what the existing tools were written with.
Pro: No need to port any code to a new language.
Con: Looks suspiciously like a multi-platform version of MFC.
Con: system for specifying callbacks is really clumsy.
Java
Pro: Top of the class for platform neutrality, and a very popular programming language in general.
Con?: Unsure of the status of OpenGL bindings (and have no intention of supporting a second 3D api)
Con: No delegates
C# with OpenTK and Winforms
Pro: The Visual Studio forms designer (don't underestimate this!).
Con: mono.winforms has some quirks
C# with OpenTK and Gtk# + Glade
Pro: Top notch platform neutrality.
Con: Gtk (noun): world's largest collection of deprecated and obsolete functions
C++ with FLTK2 + FLUID
Pro: Is C++, no porting of the shared lib would be needed
Pro/Con?: Contains a very simple and interesting looking system for callbacks, maybe somewhat limiting, or maybe a stroke a genius.
Con: ?? Haven't actually played with this yet, it looks ok, but there are bound to be an issue or two.
So, those are my thoughts on the contenders thus far. I'm leaning toward C# with OpenTK & Gtk#, I like C# as a programming language, and OpenTK gives gives us access to OpenGL + OpenAL, and seems to work well. I've already converted a fair portion of what is needed from the shared lib into C# with OpenTK while playing with OpenTK.
Gtk I have only started messing with a couple of days ago. Using online references if incredibly painful, there seems to be more deprecated functions than not, and the proper way to do things now is to use Pango for the layout and rendering of text, and Cairo for drawing. This leads to weird and ugly kludges to pass information around, ie, your Gtk widget's area is given in a Gdk.Rectangle (all ints), but when drawing you need to know this as a Cairo.Rectangle (all doubles). Colours are similarly cumbersome (Gdk.Color has byte components 0-255, Cairo.Color uses doubles with values from 0 - 1).
So, I'm somewhat torn... hopefully Gtk will seem less like a kludgey pile of crap with time...
Anyway, enough of that little digression, if anyone would like to suggest other contenders, or add pros/cons to existing contenders, or just argue with some of the pros/cons I listed... fire away!