thoughts on a component architecture

Hello Everyone, I'm new to this list, so if I bring up something that has
been brought up before, please tell me.

Anyway, I had this idea sloshing about in my head for a year or so, but
time constraints caused problems. Then I find that the gnome project is
working on something similar. I look closer, and I see that I made some
different decisions. 

I'll describe the goals my idea was to fill, and how I think I would
implement it in gnome. If you can see why it wouldn't fly, please tell me.
I've omitted everything that I think could be taken care of by corba or
other things that are already in gnome. These are my opinion, any errors in
fact are entirely unintentional.

The problem that MS OLE and OpenDoc was designed to solve was that of
getting, say, A spreadsheets data into a word processor. Mostly the problem
was solved by 'embedding' the application into the document. ie, the
spreadsheet would be started when the wordprocessor came across some spread
data. The problem with this is that you need the ss already installed, and
alternative ss programs aren't able to cope. An entire app is loaded to
edit some small amount of data.

What I was thinking of doing involved having standard kinds of objects, and
have well defined meanings for each component. The primary paradigm would
be data manipulators manipulating data objects. Essentially the
manipulators transform data objects, and pass them to other manipulators.

A standard set of data, view, and manipulator objects are provided.

Standard sets of data objects could include
XML objects
Text objects
Image objects
Table Objects
maybe others

View objects would be very similar to widgets, and maybe composite view
objects could be made from primary view widgets, maybe libglade could be
made into a component

An example: A SQLQuery object is passed to a DatabaseQuery manipulator,
which returns a table object, which in turn could be passed to a
spreadsheet object which calls a function manip on all the rows in the
sheet, passes it to a drawing object, which creates a SVG Object, which is
passed to a standard SVGView object, which displays a map, with the data
all put on a map.

Also Data objects might be passed to a network 'pinboard' so that, say,
Mary in graphic design can put her new logo on the pinboard, replacing the
one already there, and all documents using it would be updated. It would
solve the problem of : "Could you put it on the network and I'll try to put
it in to the letter before I send it ... "

Obviously this needs work, but I think it would be a lot more flexible and
less likely to cause component explosions (millions of nearly identical
components such as spreadsheets that differ only by file format)

Essentially what I wanted was some way structured data could be passed 
between compenents without each knowing about the other, and having 
the GUI components as standard targets for data. ie, you can send any 
SVG data object to a Vector View object, no matter what it's source. 

What do you all think?

James Vandenberg
Working towards an unobtrusive desktop. 

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