From 135934e3f1e5c2df95d64ced84c1758a2aeb3cd5 Mon Sep 17 00:00:00 2001 From: Pietro Berkes Date: Wed, 5 Nov 2014 11:25:22 +0000 Subject: [PATCH] Use `set_bounds` rather than setting `low` and `high` individually. --- chaco/tools/better_zoom.py | 4 ++-- chaco/tools/tool_states.py | 37 +++++++++++++++++++------------------ 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/chaco/tools/better_zoom.py b/chaco/tools/better_zoom.py index 9a60b3bdd..d611c0fc5 100644 --- a/chaco/tools/better_zoom.py +++ b/chaco/tools/better_zoom.py @@ -304,8 +304,8 @@ def _zoom_in_mapper(self, mapper, factor): center = (low + high)/2.0 new_range = range/factor - mapper.range.high = center + new_range/2 - mapper.range.low = center - new_range/2 + mapper.range.set_bounds(low=center - new_range/2, + high=center + new_range/2) def _get_x_mapper(self): if isinstance(self.component.index_mapper, GridMapper): diff --git a/chaco/tools/tool_states.py b/chaco/tools/tool_states.py index 06004560f..68d71a281 100644 --- a/chaco/tools/tool_states.py +++ b/chaco/tools/tool_states.py @@ -1,6 +1,7 @@ from chaco.grid_mapper import GridMapper from traits.api import HasTraits + class ToolState(HasTraits): def __init__(self, prev, next): @@ -13,6 +14,7 @@ def apply(self, tool): def revert(self, tool): raise NotImplementedError() + class GroupedToolState(ToolState): def __init__(self, states): @@ -26,8 +28,8 @@ def revert(self, tool): for state in self.states[::-1]: state.revert(tool) -class PanState(ToolState): +class PanState(ToolState): def apply(self, tool): if isinstance(tool.component.index_mapper, GridMapper): @@ -41,16 +43,16 @@ def apply(self, tool): low = index_mapper.range.low range = high-low - index_mapper.range.high = self.next[0] + range/2 - index_mapper.range.low = self.next[0] - range/2 + index_mapper.range.set_bounds(low=self.next[0] - range/2, + high=self.next[0] + range/2) if self.next[1] != self.prev[1]: high = value_mapper.range.high low = value_mapper.range.low range = high-low - value_mapper.range.high = self.next[1] + range/2 - value_mapper.range.low = self.next[1] - range/2 + value_mapper.range.set_bounds(low=self.next[1] - range/2, + high=self.next[1] + range/2) def revert(self, tool): if isinstance(tool.component.index_mapper, GridMapper): @@ -65,16 +67,17 @@ def revert(self, tool): low = index_mapper.range.low range = high-low - index_mapper.range.high = self.prev[0] + range/2 - index_mapper.range.low = self.prev[0] - range/2 + index_mapper.range.set_bounds(low=self.prev[0] - range/2, + high=self.prev[0] + range/2) if self.next[1] != self.prev[1]: high = value_mapper.range.high low = value_mapper.range.low range = high-low - value_mapper.range.high = self.prev[1] + range/2 - value_mapper.range.low = self.prev[1] - range/2 + index_mapper.range.set_bounds(low=self.prev[1] - range/2, + high=self.prev[1] + range/2) + class ZoomState(ToolState): """ A zoom state which can be applied and reverted. @@ -83,6 +86,7 @@ class ZoomState(ToolState): of events which can be applied and reverted in the same manner. This greatly eases the code for managing history """ + def apply(self, zoom_tool): index_factor = self.next[0]/self.prev[0] value_factor = self.next[1]/self.prev[1] @@ -105,7 +109,6 @@ def apply(self, zoom_tool): # TODO: Clip to domain bounds by inserting a pan tool and altering the # index factor and value factor - def revert(self, zoom_tool): if isinstance(zoom_tool.component.index_mapper, GridMapper): index_mapper = zoom_tool.component.index_mapper._xmapper @@ -122,21 +125,19 @@ def revert(self, zoom_tool): zoom_tool._index_factor = self.prev[0] zoom_tool._value_factor = self.prev[1] + class SelectedZoomState(ZoomState): + def apply(self, zoom_tool): x_mapper = zoom_tool._get_x_mapper() y_mapper = zoom_tool._get_y_mapper() - x_mapper.range.low = self.next[0] - x_mapper.range.high = self.next[1] - y_mapper.range.low = self.next[2] - y_mapper.range.high = self.next[3] + x_mapper.range.set_bound(low=self.next[0], high=self.next[1]) + y_mapper.range.set_bound(low=self.next[2], high=self.next[3]) def revert(self, zoom_tool): x_mapper = zoom_tool._get_x_mapper() y_mapper = zoom_tool._get_y_mapper() - x_mapper.range.low = self.prev[0] - x_mapper.range.high = self.prev[1] - y_mapper.range.low = self.prev[2] - y_mapper.range.high = self.prev[3] + x_mapper.range.set_bound(low=self.prev[0], high=self.prev[1]) + y_mapper.range.set_bound(low=self.prev[2], high=self.prev[3])