GUI strategy?

Jordan Miner jminer2613 at students.pcci.edu
Sat Sep 29 10:21:20 PDT 2007


I have been writing a GUI library from scratch in D for over a year now. Of course, I would like it to become the most popular GUI for D (who wouldn’t?), but regardless I have had fun working on it and using it for my own programs.

Here is what I think about the current GUI libraries:
My problem with DFL is that since it uses native Windows controls and copies Windows Forms so much IMO it would be difficult to get working right on Linux and Macintosh. Other than that, I think it works great on Windows.
As far as GTKD and DUI, I would never in a million years consider using GTK, as it looks horrible on Windows (and probably Macintosh).
Does DWT have a different API on each platform? If so, that rules it out for me.
With wxD, since wxWidgets uses native controls, it looks good on every platform most of the time and already works on Windows, Linux, and Macintosh. I don't really like its API, but if I were not writing my own library, I would probably use wxD.
Note that I have never used any of these libraries, but I have looked at documentation and examples. And I have used programs that use their underlying libraries (GTK, SWT, wxWidgets).

For my library, I decided to not use native controls, partly to make it easier to port and use on different platforms and partly for flexiblity. I already have working Windows and X backends, and partially implemented buttons, check boxes, radio buttons, list boxes, tabs, text boxes, themes, file and directory dialogs, and clipboard support. For graphics, I am using the cairo graphics library http://cairographics.org

My biggest goal is ease of use and the ability to do tasks with the shortest, simplest code. I do not want a large, bloated library, and, so far, the GUI part is only about 5,000 LOC. I believe 20,000 LOC for a GUI library is more than enough. (for most features, anyway. There are lots of features a GUI library could have that would be nice, but not necessary, such as an SVG renderer.)

Bill Baxter Wrote:
> If you're going to make THE gui for D (or any language), then you'd 
> better be prepared to embark on a 5-10 year, or perhaps even life-long 
> project.  You'll need to make frequent releases.  And you better respond 
> to people's questions.  Not just this week but for the next 5-10 years. 
>   And have a bug tracker and use it.  And treat people's patches as 
> precious, either telling them why you're rejecting them or incorporating 
> them ASAP.  And write lots of documentation and tutorials and example 
> programs demonstrating your library.

I agree. All of this is important for a widely used library.

I cannot see myself stopping work on this project, as I am fairly addicted to using computers, and this is something that I really like doing. I do work on it in my spare time and am in college, but I have still done a lot in the last year. I have not released it yet, but when I do, I would like to get other people involved. I still have a few things to do before I put it on the internet, such as get the Windows and X backend to have the same functionality, fix the naming convention, move to tango, and get a final name.
(How’s Daimyo? It is short and starts with a D. http://en.wikipedia.org/wiki/Daimyo )




More information about the Digitalmars-d mailing list