Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion chaco/tools/data_label_tool.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def drag_start(self, event):
"""
if self.component:
label = self.component
pointx, pointy = label.component.map_screen(label.data_point)
pointx, pointy = label.component.map_screen(label.data_point)[0]
self._original_offset = (label.x - pointx, label.y - pointy)
event.window.set_mouse_owner(self, event.net_transform())
event.handled = True
Expand Down
86 changes: 86 additions & 0 deletions chaco/tools/tests/test_data_label_tool.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
import unittest

import numpy as np

from enable.api import ComponentEditor
from enable.testing import EnableTestAssistant
from traits.api import HasTraits, Instance
from traitsui.api import Item, View

from chaco.api import ArrayPlotData, DataLabel, Plot
from chaco.tools.api import DataLabelTool

IMAGE = np.random.random_integers(0, 255, size=(100, 200)).astype(np.uint8)
RGB = np.dstack([IMAGE] * 3)


class TestDataLabelTool(unittest.TestCase, EnableTestAssistant):

# regression test for enthought/chaco#550
def test_use_with_2d_plot(self):
class Test2DPlot(HasTraits):
plot = Instance(Plot)

traits_view = View(
Item('plot', editor=ComponentEditor(), show_label=False),
width=500,
height=500,
resizable=True
)

def _plot_default(self):
pd = ArrayPlotData(image=RGB)
plot = Plot(pd)
self.renderer = plot.img_plot('image')[0]

label = DataLabel(
component=self.renderer,
data_point=(25, 12)
)
plot.overlays.append(label)
tool = DataLabelTool(label)
label.tools.append(tool)
return plot

test_2d_plot = Test2DPlot()
# should not fail
self.press_move_release(
test_2d_plot.plot,
[(0, 0), (200, 200), (300, 300)],
)

def test_use_with_xy_plot(self):
class TestXYPlot(HasTraits):
plot = Instance(Plot)

traits_view = View(
Item('plot', editor=ComponentEditor(), show_label=False),
width=500,
height=500,
resizable=True
)

def _plot_default(self):
values = np.arange(10)
plotdata = ArrayPlotData(x=values, y=values)

plot = Plot(plotdata)
self.renderer = plot.plot(
("x", "y"), type="line", color="blue"
)[0]

label = DataLabel(
component=self.renderer,
data_point=(5, 5)
)
plot.overlays.append(label)
tool = DataLabelTool(label)
label.tools.append(tool)
return plot

test_xy_plot = TestXYPlot()
# should not fail
self.press_move_release(
test_xy_plot.plot,
[(0, 0), (200, 200), (300, 300)],
)