Sophie

Sophie

distrib > Mandriva > current > i586 > by-pkgid > ae0a4f27f26602dc31c3bf35e18b5b19 > files > 545

python-enthought-chaco-3.4.0-2mdv2010.2.i586.rpm


from numpy import linspace, sin

from enthought.chaco.api import ArrayPlotData, Plot
from enthought.enable.api import BaseTool
from enthought.enable.component_editor import ComponentEditor
from enthought.traits.api import Enum, HasTraits, Instance
from enthought.traits.ui.api import Item, View

class CustomTool(BaseTool):
    
    def normal_mouse_move(self, event):
        print "Screen point:", event.x, event.y

    def normal_left_down(self, event):
        print "Mouse went down at", event.x, event.y

    def normal_left_up(self, event):
        print "Mouse went up at:", event.x, event.y

class ScatterPlot(HasTraits):

    plot = Instance(Plot)

    traits_view = View(Item('plot', editor=ComponentEditor(), show_label=False), 
                       width=800, height=600, resizable=True,
                       title="Custom Tool")

    def _plot_default(self):
        # Create the data and the PlotData object
        x = linspace(-14, 14, 100)
        y = sin(x) * x**3
        plotdata = ArrayPlotData(x = x, y = y)
        # Create a Plot and associate it with the PlotData
        plot = Plot(plotdata)
        # Create a scatter plot in the Plot
        plot.plot(("x", "y"), type="scatter", color="blue")
        # Add our custom tool to the plot
        plot.tools.append(CustomTool(plot))
        return plot

#===============================================================================
# demo object that is used by the demo.py application.
#===============================================================================
demo=ScatterPlot()
if __name__ == "__main__":
    demo.edit_traits(kind="livemodal")