Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 789a4dca4953f037223e830336ef4af3 > files > 676

python-enthought-enable-3.2.0-2mdv2010.0.i586.rpm

"""
This demo is a canvas that showcases some of the drawing primitives in Enable.
"""

from enthought.enable.example_support import DemoFrame, demo_main

from enthought.enable.api import Box, Component, Container, Window
from enthought.enable.drawing.api import DragLine, DragPolygon, DragSegment, \
    DrawingTool, PointLine, PointPolygon, DrawingCanvas, ToolbarButton, \
    DrawingCanvasToolbar

from enthought.traits.api import Any, Delegate, Instance


class ResetButton(ToolbarButton):
    
    def perform(self, event):
        if self.canvas and self.canvas.active_tool:
            self.canvas.active_tool.reset()
            self.canvas.request_redraw()
        return


class ActivateButton(ToolbarButton):
    
    tool = Instance(DrawingTool)

    def perform(self, event):
        if not self.canvas or not self.tool:
            return
        else:
            self.canvas.activate(self.tool)
            self.canvas.request_redraw()
        return

    def _tool_changed(self, old, new):
        if new:
            new.reset()
        return
    

class MyFrame(DemoFrame):
    def _create_window(self):
        
        canvas = DrawingCanvas(bounds=[500,500])
        toolbar = DrawingCanvasToolbar(width=500, height=32, fit_window=False, bgcolor="lightgrey")
        canvas.toolbar = toolbar
        toolbar.canvas = canvas
        
        button1 = ResetButton(label="Reset", toolbar=toolbar, bounds=[50,24])
        button2 = ActivateButton(tool=DragLine(container=canvas), label="Path",
                                 toolbar=toolbar, bounds=[50,24])
        button3 = ActivateButton(tool=DragPolygon(background_color=(0,0,0.8,1), container=canvas),
                                 label="Poly", toolbar=toolbar, bounds=[50,24])
        button4 = ActivateButton(tool=PointLine(container=canvas), label="Polyline",
                                 toolbar=toolbar, bounds=[70,24])
        button5 = ActivateButton(tool=DragSegment(container=canvas), label="Line",
                                 toolbar=toolbar, bounds=[50,24])
        button6 = ActivateButton(tool=PointPolygon(container=canvas), label="PointPoly",
                                 toolbar=toolbar, bounds=[80,24])
        toolbar.add_button(button1)
        toolbar.add_button(button2)
        toolbar.add_button(button3)
        toolbar.add_button(button4)
        toolbar.add_button(button5)
        toolbar.add_button(button6)
        
        return Window(self, -1, component=canvas)

if __name__ == "__main__":
    demo_main(MyFrame, size=[700,600])

# EOF