[Glade-devel] Glade 3 architechtural ideas



Hi all,
    As I was pondering the possible redesign of the editor portion of 
glade [1] a
few things became clear to me and I had a little vision of how we can 
improve
the design/code of glade, these were my thoughts:

Glade is already an MVC architechture in itself, the GladeEditor widget and
property editing widgets are the view and the 
GladeWidget,GladeProperty,GladeProject
objects make up the data model. Maybe we can maximize on this by merging 
the
GladeEditorProperty code into the GladePropertyClass code - the 
GladePropertyClass
could then become a GObject and implement an interface that would be 
supported by the
"view" (GladeEditor would stay the "view") - GladeSignalClass could then 
also be a
GObect implementing that same interface in order to integrate into the 
editor in the
same codepaths.
    I would envision a seperate C file for each supported GParamSpec 
implementing
serialization, data editing/display, management of state machine 
provided by the catalog
(a GladePropertyClass base-class could be used to parse all the common 
data from the
catalog).

How the view & model will integrate together could be done in several ways,
using treeview technology would have the advantages of using cell renderers
that are already written for us - maybe GladeEditor could be a custom 
implementation
of the TreeView ? on the other hand the problem with treeview is that 
cell renderer
types are classed by column - where we want to associate a "renderer" with a
GParamSpec type (a "property type") - maybe a canvas api could be used and
in turn use the cell renderers from gtk+ just for convenience ?

This is really just a brainstorm at the moment, but I do believe that glade,
as a modular component in IDEs should be innovating mostly on the 
property editor
since it strikes me as the most important component.

Cheers,
                                              -Tristan

[1] http://bugzilla.gnome.org/show_bug.cgi?id=359605





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