Chris and Bill

I am currently building just such a library/framework for python, it is loosely 
based on GEF (Graphics Editing Framework) (Trigris and Eclipse each have their 
own implementations) and OGL. I studied them all and designed my own based on 
what I thought they did well and what one can do in python. I am still going to 
look at wxArt2D, as it is probably the most similar to my library, but I don't 
just want to build a clone as creating python binding might be easier.
  
I have created a sourceforge project called pyGEF. There isn't anything there 
yet but, it's a start. I will keep you informed. Anybody want to help?? 

pyGEF provides a typical editing environment with commands, tools, undo, redo, 
load, save and many more. GEF does not rely on a specific drawing canvas or 
drawing primitives.

My first version of pyGEF used floatcanvas, while my second uses 
GraphicsContext (GC). I build a layer onto GC so that it is similar to 
floatcanvas, making  my conversion easier. It would therefore be very easy to 
support both drawing canvases as I make use of a Plotter class that does the 
actual drawing (i.e. wrapping the GC\floatcanvas). It should also be possible 
to use an OpenGL canvas for 3D visualization and editing. 

I mainly started using the GC so that I can learn how it works and because of 
the great looking graphics that it produces.

Currently there is a problem with the GC in that it is really very slow 
(floatcanvas is much faster), this makes GC unusable for projects that draw 
more than a couple hundred components. GC is still very new and will improve 
with time. I currently know too little about the inner workings of GC to know 
if the performance decrease is because of my possibly inefficient usage. :)  My 
usage of it should also improve. :)

I agree with Chris that the editing framework and the drawing canvas should be 
two separate libraries. This would make each more powerful and generic.

For those that are interested.

pyGEF mini roadmap:
        Partially and completed work:
                The basic drawing canvas - GC\floatcanvas 
                The basic primitive drawing objects     - Line, Polygon, 
Rectangle, etc.
                The Command Structure - For the creation of actions that can be 
undo.
                The CommandStack - For undo and redo.
                The Editor container - The document editing container.
                The SelectionManager - Handling of selections like multiple 
selections.
                The LayerManager and Layers - Handling the layers of the 
document.
                The CreateTool - For the adding of new components to the 
document.
                The SelectTool - Handing of selection of document components 
within the document.
                The MoveTool - Handling the moving and rotating of document 
components.
                The ConnectTool - Handing the creation of connections between 
document components.
                        
        Next work:
                The EditTool - Handling the editing of component properties.
                The ModifyTool - Handing the resizing and reshaping of 
components.
                Make pyGEF compatible with both floatcanvas (Chris! we will 
need to add some features to fc) and GC.
                Create an installer. (Can someone please help with this as I 
have no idea how to create an installer!!!!!!)
                Place first release in SF (Two to Three months from now).

        
Regards
Retief 

Retief Gerber
Lektor
Lecturer
Departement Elektriese en Elektroniese Ingenieurswese
Department of Electrical and Electronic Engineering

Tel: +27 21 808 4011  I  Faks/Fax: +27 21 808 4981
E-pos/E-mail: [EMAIL PROTECTED]

Universiteit Stellenbosch University
Privaat Sak/Private Bag X1 Matieland 7602 
Suid-Afrika/South Africa
www.eng.sun.ac.za




> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:floatcanvas-
> [EMAIL PROTECTED] On Behalf Of Christopher Barker
> Sent: 03 June 2007 08:44 AM
> To: Mailing List for the wxPython Float Canvas.
> Subject: Re: [fc] Float canvas as a component w/ undo/redo
> 
> Bill Baxter wrote:
> > I was thinking about drawing a component for an app, and how to deal
> > with communication between the host app and the drawing component,
> and
> > dealing with undo/redo, and with giving the component toolbars etc,
> > when it occurred to me that the STC text control [*] solves a very
> > similar problem, it just provides an interface to a rich text
> document
> > model rather than a drawing document model.  All the issues that it
> > has to deal with are pretty much the same.  It might be a good idea
> to
> > copy its API.
> 
> I've never used STC at all, so thanks for the suggestion. I should take
> a look at it.
> 
> I've been thinking about this some, and one issue I have is that I"m
> not
> sure what role FloatCanvas itself should play. I've really always
> thought of it as the Viewer part of any potential app. I think various
> different uses are going to require fairly different types of
> documents,
> so we really don't want the whole document model built in to
> FloatCanvas. However, FloatCanvas should "play well" with those various
> document models.
> 
> As an example, I think STC is really designed not for all types of text
> documents, but really code in particular, and I don't think it plays
> all
> that well with other types of docs.
> 
> I haven't really built anything yet that really had "documents", but
> I've figured that when I do, I'll create Graphics objects that are used
> in the document that are subclassed from FloatCanvas DrawObjects.
> 
> >  Anyway I could use something like a
> > drop-in figure editing component.  Maybe that's what OGL is though?
> 
> It depends on what type of figures your talking about. My impression of
> OGL is that it is designed for boxes-connected-by-lines type drawings.
> 
> > Then there's wxArt2D too, but I don't think there are py bindings for
> > that.
> 
> Nope. and I understand that it uses a lot of Virtual method which makes
> wrapping it a pain.
> 
> > I never paid much attention to OGL because it was all aliasy.
> > But maybe now with the new GCDC it's gotten a facelift?
> 
> Only if someone as adapted the code. And FloatCanvas is using the same
> old aliasy DCs too. (though see recent messages here from HR Gerber,
> he's been playing with the new GraphicsContext, with some nice results.
> 
> Anyway, I'd love someone to build a nice figure editor with
> FloatCanvas,
> hint, hint.
> 
> -Chris
> 
> 
> 
> 
> --
> Christopher Barker, Ph.D.
> Oceanographer
> 
> NOAA/OR&R/HAZMAT         (206) 526-6959   voice
> 7600 Sand Point Way NE   (206) 526-6329   fax
> Seattle, WA  98115       (206) 526-6317   main reception
> _______________________________________________
> FloatCanvas mailing list
> [email protected]
> http://mail.mithis.com/cgi-bin/mailman/listinfo/floatcanvas
_______________________________________________
FloatCanvas mailing list
[email protected]
http://mail.mithis.com/cgi-bin/mailman/listinfo/floatcanvas

Reply via email to