[Glade-users] Function needed in new glade-3.x

I brought this up before but I think it got lost in never-never land when the
list went haywire.

I think one function needs to be added to libglade to be able to call a
function for each widget in the loaded XML tree.  Now people will say: "WHY,
you can just lookup the widgets by name and get the pointer to the widget that
way"  The reason is that what if I have 1000 widgets, I don't want those to be
statically named throughout my code.  My current code projects NEED and WILL
NOT WORK without being able to bind data to the widgets without calls to
g_object_set/get_data.  By having ONE function called 
glade_xml_widget_tree_foreach()(or similar), Users can get have a function
called for each widget in the tree and do whatever they need to it with just 1
function call (instead foa call per widget needed by the lookup_name fucntion.

I have this working now, but I had to do a VERY BAD HACK (copied
glade-private.h from the libglade source into my own code so that I could
expose the hashtable of widgets inside the GladeXML structure. I DID not want
to do it this way as if a future version of libglade gets installed and the
internal structure changes my code would most likely break badly.

So the best solution is to add a new function called something like:
 glade_xml_tree_foreach(GladeXML *xml, (GHFunc *) foreach_func, gpointer
    g_hash_table_foreach(xml->priv->name_hash, foreach_func,user_data);

The foreach func has the same structure as a GHFunc from the glib manual:
void        (*GHFunc)                       (gpointer key,
                                             gpointer value,
                                             gpointer user_data);
key being the widget name, value being the widget pointer.

This way 1 function can be called that kicks off a call to a foreach function
passing in the widgets name/pointer and user supplied data.  

PLEASE consider adding this to libglade-2.4 or 3.0, as it works very well.

Dave J. Andruczyk

Do you Yahoo!?
Declare Yourself - Register online to vote today!

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