Re: Pluggable widget types and implementations
- From: Paul Pogonyshev <pogonyshev gmx net>
- To: gtk-devel-list gnome org
- Subject: Re: Pluggable widget types and implementations
- Date: Fri, 15 Dec 2006 22:49:44 +0200
[ This mail may not land in the thread since I was not subscribed to
the list when it began. ]
Tim Janik approach seems not general enough to me. I.e. if GTK+
developers don't provide *_appoint_type() function for a particular
type, you are lost. Are there any strong points for this version?
Let me propose another one for comparison.
Functions:
* g_object_factory_appoint_type (GType basic_type, GType appointed_type)
Requires that `appointed_type' is a subclass of `basic_type', much like
in original proposal. The difference is that all *_appoint_type()
functions are replaced with a generic mechanism.
* g_object_factory_new (GType type, <arguments like for g_object_new()>)
Creates an object of type appointed to `type'. If no type has been
appointed, works exactly like g_object_new().
There may be additional functions for e.g. querying appointed type, but
they are not necessary for implementation. May be handy for things like
Glade, though.
Changes:
* Constructors of all objects and widgets use g_object_factory_new()
instead of g_object_new().
If no type appoints have been made, there will be absolutely no changes
in the way GTK+ applications behave. If someone appoints a customized
type, it is her responsibility to make sure it doesn't break standard
conducts (minimal requirement for this is enforced by
g_object_factory_appoint_type().)
Advantages over initial proposal:
* More generic, requires less changes in the existing code.
* No need to write lots of *_appoint_type() functions, you are done
with a single function. Therefore less clutter in the docs.
Disadvantages:
* Marginally slower (if we assume best possible implementations of both
proposals.)
* A tiny little bit less clear interface. (Arguably, even.)
Paul
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]