[Glade-devel] RE : fill_empty method (was Helping out)




Paolo wrote:

On Sat, 2003-10-04 at 13:29, Joaquin Cuenca Abela wrote:
I'm also done with glade-widget-class, so please commit any pending 
changes.


Attached there is a patch which turns fill_empty (the 
function which takes care of filling the containers with 
placeholders) into a method of GladeWidgetClass, since a 
generic function, like the one we have now, doesn't work for 
every widget. I made the patch some time ago and today I 
updated it to the current cvs, but before committing I'd like 
to hear your opinions on some issues.

1) For most of the containers fill_empty would simply do 
gtk_container_add 
(GTK_CONTAINER(widget->widget),glade_placeholder_new ()); so 
I'd like to know which is the preferred way to handle this 
common case. Among others I can at least think of 3 ways:
- Every widget has its <FillEmptyFunction> (ugly)
- Have a gtkcontainer.xml which declares the common 
<FillEmptyFunction> and widgets inheriting from it can 
override the method if needed (I don't know how to do it in practice)
- Handle it in glade_widget_fill_empty() and only the widgets 
which need something different have a not NULL fill_empty 
method (this is what it is in the patch now)

I prefer the second option.  The less knowledge we defer to the .xml
files the best.
You can let it like you've done, and I will change it to the second
option if you have problems implementing it.
Just let me know.

2) Somewhat related to the above. Some widgets (e.g. 
GtkButton) are containers, but do not have to be filled with 
placeholders, this can be handled in two way:
- adding more logic to glade_widget_fill_empty (like the current cvs
works)
- these widgets override the fill_empty method with the 
ignore() function

Again, second option

3) With the attached patch applied [vh]box get wrong their 
size (e.g 4 placeholders instead of 3). The bug can be 
papered over be overriding the fill_empty method of [vh]box 
with ignore(), but there seems to be something wrong in 
glade_gtk_box_set_size... btw how do I set a gdb breakpoint 
in glade_gtk_box_set_size now that it is in a shared library?

I didn't have any problem setting a breakpoint at
glade_gtk_box_set_size.  What's gdb complaining about?

4) In the patch I only included glade_gtk_dialog_fill_empty 
and glade_gtk_paned_fill_empty; of course also other widgets 
need to override the method. With regard to GtkPaned, is it 
possible to create a gtkpaned.xml, put the 
<FillEmptyFunction> there and have GtkVPaned and GtkHPaned 
automagically inherit it or should both gtkhpaned.xml and 
gtkvpaned.xml be created?

Just gtkpaned.xml should be enough.  Again, you should implement the
inheritability of FillEmptyFunction.
If you want to implement it yourself, take a look at
glade_widget_class_merge.  It's probably just a matter of adding:

        if (widget_class->fill_empty_function == NULL)
                widget_class->fill_empty_function =
parent_class->fill_empty_function;

Cheers,






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