From: Daniel K. <dk...@me...> - 2002-02-08 04:47:23
|
Hi: > Is this a plugin-object? Nop, I'm writing a script for my pattern maker. Sorry for the bad descriptions. I'll try to explain what I need again in a diferent maner and hope I explain myself better: I want a draggable pixmap drag the canvas to point to the center of a pattern to be. This pixmap should not be part of the drawing, for example it shouldn't change it's size if I zoom in or out. It would be a draggable shape that would be a little cross like the + symbol. It will remain viewable at all times (like a crosshair) and the user will position it in the canvas where he wants the center of a pattern (like a rosetter) to be. In pseudo code using my imaginary simplified commands it would look like: control_point = CreateControlPoint(bitmap = mysymbol.xpm) context.main_window.canvas.DrawControlPoint(control_point,(0,0)) I could then drag a the little cross wherever with my mouse in the canvas, and when I'd want his position I would put: position_control_point = control_point.pos() and It would return: >position_control_point (65,78) I tried to do this with an image but it has several problems: - It's can be zoomed in or zoomed out while the size of my control point should remain constant indepently of the zoom (like a handle) - It's printable, a control point would be an auxiliary for drawing (like the grid or a guideline) it is not to be printed. Sorry if this mail was too long but I tried to be more descriptive than the previous one. Thanks. Daniel. > Is this a plugin-object? A plugin-object is the only real way to do it. > > The basic approach is to make that plugin object editable. This means > that the has_edit_mode attribute has to be true and the Editor method > has to return an editor for the object. All actual interaction is then > done through that editor. > > The canvas calls the editor's GetHandles method to find out which > handles to draw and the canvas also tests whether mouse clicks would > select a handle. If mouse clicks occur the canvas calls the editor's > SelectHandle or SelectPoint methods to indicate that where the user has > clicked and when the user drags the mouse it calls ButtonDown, ButtonUp > and MouseMove and a few other methods. > > Some of this is documented in the comments in Sketch/Graphics/base.py. > The editing of builting objects is implemented this way too, so their > code is also a good start. > > I'll also try to write a simple example of an editable plugin object. I > hope to have it ready this weekend, but I can't really promise this. > > Bernhard > > -- > Intevation GmbH http://intevation.de/ > Sketch http://sketch.sourceforge.net/ > MapIt! http://mapit.de/ > |