[Glade-devel] Re: glade code generation
Christof Petig
christof@petig-baender.de
Thu, 06 Mar 2003 23:02:14 +0100
Hi,
(Sorry, if this looks like crossposting, but all CCs look sensible)
I'm speaking up on behalf of glademm, the (separate) C++ code/project
generator for glade. And I like the _choice_ to use generated code.
Owen Taylor wrote:
> If you generate C code with glade:
>
> - You get C code which isn't related to how you write code by
> hand. But if you don't know better, you'll copy anyways.
> (Why is this code calling gtk_widget_set_name() and ref'ing
> every widget?)
>
> - You get the typical code generation problem that once you
> edit it, you risk problems if you generate code again.
>
> - You get something you can't check into source control reliably.
>
> - You go to experienced GTK+ programmers for help, and they
> look at you blankly.
I can't speak in favor of the generated C code (I always found the above
problems very valid), but for C++ and glademm I found these problems solved.
(Except for the fourth point, you need some glademm knowledge to solve
glademm problems/bugs, gtkmm only knowledge might help you but is not
always sufficient).
The only reason I was ever tempted to use libglade _internally_ as an
optional drop in replacement (_transparently_ to any program code!) was
it's good gnome widget support. With C++ it should not make any
difference to your program code whether the actual widgets are created
by libglade(mm) or by gtkmm (generated code).
To support these claims I promise to finish the libglade option in
glademm this week: generate your program's skeleton by glademm and use
libglade or generated code by choice.
> Libglade is a development methology we can support, because it
> gets used extensively for real apps. There may be full scale
> apps using generated glade code, but certainly not many of them.
I can name a lot of apps using glademm generated code. There _are_
reasons for generated code:
- a single binary is enough, no need to ship .glade and image files
seperately, install them to a known location and find them at runtime.
- no user can mess up your program's user interface by editing/deleting
the .glade/image files (this is clearly a pro and a con!)
>>>Makes sense to me; we had
>>
>>> Don't use glade to generate code, use libglade!
for C I can't disagree, but I would love to have the option to switch
between libglade and generated code (statically linked in widgets)
without having to change a single line of the program. Since this is
feasible with C++, it should be possible for C, too. Perhaps a nice
project for a volunteer? (I don't care about C code)
A separation of GUI designer and code generator would benefit
glade-[123] IMHO. (IIRC glade-3 does take this road)
> The comment about IDE integration is basically that if the source
> code editing is integrated with the widget editing, then things
> can work better:
>
> - You can click on a widget, and edit its callbacks
> - Source code editing is relatively constrained, because the
> tool you are using to do it knows about the GUI.
I'm all in favor of IDE integration, but personally I don't need it at
all. GUI and program code (callbacks) are well separated by glademm
(IMHO of course).
Christof (glademm maintainer)