[Glade-devel] Glade-3/libglade non-widgets RFC

Shane Butler shane_b@users.sourceforge.net
Fri, 05 Nov 2004 17:22:12 +1100


Hi Tristan,

I guess it is important to know if James has any plans for future
versions of libglade that are along these lines.

BTW, one of other thing that I have wondered is how the glade xml format
could integrate with GtkUIManager XML files? 

Regards, Shane

On Thu, 2004-11-04 at 06:57, Tristan Van Berkom wrote:
> I am about to start coding non-widget support in glade-3.
> 
>    For those who are confused about non-widgets, non-widgets are all GObject
> derivative types that are in some way widget delagetes and pertain somehow
> to the UI.
> 
> Some examples of these are:
>     - GtkSizeGroup
>     - GtkTreeViewColumn
>     - GtkEntryCompletion
>     - GtkAdjustment
>     - GnomeCanvasItem
> 
> This is the basic design I'm thinking will work:
> 
>     o GladeWidget[Class] will now be GladeObject[Class]
>       
>       This is just a clarification, the entire implementation from
> here on out is
>       GObject based and not GtkWidget based (ofcourse some extra
> functionality will
>       be provided for GtkWidget derivitives, such as painting
> selections on them etc).
> 
>     o Every GladeObjectClass is allowed to act as a "container"
> 
>       A GladeObjectClass that acts as a container will have a list of
> GladeChildInfo
>       records that will contain information such as:
>       
>       - GType of this supported child type
>       - add_child function for this child type
>       - boolean representing whether there can be more than one child
>         of this type or not.
>       - boolean representing whether this child is to actualy be built or if it
>         is just a reference.
>       - ... anything else ?
> 
>       Note that the "supported type" should include all derived types, so
>       GtkContainer essentialy supports type GtkWidget as a child etc.
>       Children of the GtkContainerClass will inherit this behaviour and possibly
>       override it.
> 
>     o Object type properties will be handled as children.
> 
>       I just dont see an easier way around this problem, if object
> type properties are
>       dubbed "child objects", they can be selected in the editor
> through the same
>       pipelines as actual children; the same goes for libglade, custom
> "add-child"
>       methods can easily be implemented which create an object with 
>       glade_xml_build_object() on the child node and proceed by
> calling g_object_set()
> 
>     o Some child types will only be "references" and will not be "owned"
>       by the parenting object.
> 
>       An example of this is GtkEntryCompletion, The GtkEntry, would
> support a child
>       of type GtkEntryCompletion and GtkEntryCompletion would support
> a child of type
>       GtkTreeModel (Note that "parenting" isn't quite the word, in
> glade we consider
>       it a parent / child relationship strictly for practical reasons).
> 
>       This I think is going to be pretty tough, first question that
> comes to mind is
>       "how am I going to add a child through the glade ui which is
> just a reference to
>        another object in the ui ?"
> 
>       I think that as far as xml files and libglade goes, this can be
> accomplished
>       with little effort:
>           - Every Object needs to have a "name"
>           - Nested in the <child> tag we can do something like:
>             <child>
>                 <reference name="object_name"/>
>                 <packing>
>                     <property ... so and so>
>                 </packing>
>             </child>
>           - Adding the actual "referenced" children the the parenting
> objects can
>             be completely deffered to after the parsing process, to
> ensure that the
>             referred to object actualy exists come parenting time.
> 
> Well; that pretty much wraps up todays brain-storm,
> please send back your comments/sugestions.
> 
> Cheers,
>                                                                      -Tristan
> _______________________________________________
> Glade-devel maillist  -  Glade-devel@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/glade-devel