RE: Large GTK Application design tips


 Thanks, great advice! Using glade is an interesting idea I hadn’t considered since this is for an embedded product. Anyone have experience using it on an embedded platform (TI dm355 in my case)? Will the overhead eat me alive?



From: Vallone, Anthony [mailto:anthony vallone lmco com]
Sent: Thursday, September 11, 2008 2:05 PM
To: Paul Stuart; gtk-list gnome org
Subject: RE: Large GTK Application design tips


Hi Paul,


I led a very large government project using GTK+ and C++ with great success.  I don't know of any docs on the subject, but here are the top three tips that I had to learn the hard way:

  1. GTK+ is not thread safe, and the gdk_threads_enter/gdk_threads_leave calls don't always work.  When worker threads need to do something to the GUI, just use g_idle_add().
  2. Glade together with libglade is a must.  With your GUI layout defined in XML, its easy to make mass GUI changes via a script.  It also simplifies testing, since you don't need to re-compile when trying out different layouts.
  3. We created a C++ wrapper class hierarchy for each significant widget we use.  The wrappers allow us to easily change the look and/or behavior of all of those widgets in our system (ex: all non-editable GtkEntries have a grey background, or custom search box below all GtkTreeViews). The wrappers are also useful when you discover GTK+ quirks that you need to work around (All GUI toolkits have them). 

-Anthony Vallone


From: gtk-list-bounces gnome org [mailto:gtk-list-bounces gnome org] On Behalf Of Paul Stuart
Sent: Thursday, September 11, 2008 3:59 PM
To: gtk-list gnome org
Subject: Large GTK Application design tips


 I’m about to embark on designing a large application that will use GTK+. I was wondering if there are any resources out there that might have tips on architecture practices specific to GTk+, style guides, etc. I’ve written small apps, but I’m curious about how things scale up.


Any pointers would be appreciated!




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]