gtk_args_collect & gnome--
- From: Havoc Pennington <rhpennin midway uchicago edu>
- To: gtk-list redhat com
- Subject: gtk_args_collect & gnome--
- Date: Fri, 21 Aug 1998 12:08:05 -0500 (CDT)
Hi,
I have a trivial little problem here I can't think of a nice solution to.
Perhaps someone has some ideas or can tell me how I'm confused.
The GnomeCanvas relies heavily on GtkArg; it's the only way to set the
properties of the various GnomeCanvasItem types. So this is done at item
creation time and with a function
gnome_canvas_item_set(GnomeCanvasItem*,...);
My problem is the C++ wrapper. The nice function to have would be:
GnomeCanvasItem::set(const gchar* first_name, ...)
but there's no way to do this, because gtk_args_collect wants to see a
va_list*, and I don't know a way to get first_name into a va_list (well,
that's the root cause, but it comes up indirectly because
gtk_object_args_collect also wants the va_list* and so
gnome_canvas_item_set can't have a first_name argument).
So I'd have to re-implement gtk_args_collect, which also means
gtk_arg_collect_value which is a big inline non-public function.
Yuck.
Alternatively I could make a separate C function for each arg one
might want to set:
Gnome_CanvasLine::set_fill_color(const string & s)
{
gnome_canvas_item_set(GNOME_CANVAS_ITEM(gtkobj()),
"fill_color", s.c_str(), 0);
}
but this creates a huge maintenance headache compared to the other
approach (and some small inefficiency, esp. since the canvas does some
stuff every time you set args).
Suggestions? Am I missing the obvious solution? Misunderstanding the whole
thing?
Thanks,
Havoc
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]