diff --git a/chaco/axis.py b/chaco/axis.py index 503f150e8..e7ca1ed7c 100644 --- a/chaco/axis.py +++ b/chaco/axis.py @@ -607,12 +607,12 @@ def _bounds_items_changed(self, event): def _mapper_changed(self, old, new): if old is not None: - old.on_trait_change(self.mapper_updated, "updated", remove=True) + old.observe(self.mapper_updated, "updated", remove=True) if new is not None: - new.on_trait_change(self.mapper_updated, "updated") + new.observe(self.mapper_updated, "updated") self._invalidate() - def mapper_updated(self): + def mapper_updated(self, event=None): """ Event handler that is bound to this axis's mapper's **updated** event """ diff --git a/chaco/barplot.py b/chaco/barplot.py index 680a60b3a..c32b9fad4 100644 --- a/chaco/barplot.py +++ b/chaco/barplot.py @@ -423,10 +423,10 @@ def _orientation_changed(self): def _index_changed(self, old, new): if old is not None: - old.on_trait_change(self._either_data_changed, "data_changed", remove=True) + old.observe(self._either_data_updated, "data_changed", remove=True) if new is not None: - new.on_trait_change(self._either_data_changed, "data_changed") - self._either_data_changed() + new.observe(self._either_data_updated, "data_changed") + self._either_data_updated() def _index_direction_changed(self): m = self.index_mapper @@ -438,17 +438,17 @@ def _value_direction_changed(self): m.low_pos, m.high_pos = m.high_pos, m.low_pos self.invalidate_draw() - def _either_data_changed(self): + def _either_data_updated(self, event=None): self.invalidate_draw() self._cache_valid = False self.request_redraw() def _value_changed(self, old, new): if old is not None: - old.on_trait_change(self._either_data_changed, "data_changed", remove=True) + old.observe(self._either_data_updated, "data_changed", remove=True) if new is not None: - new.on_trait_change(self._either_data_changed, "data_changed") - self._either_data_changed() + new.observe(self._either_data_updated, "data_changed") + self._either_data_updated() def _index_mapper_changed(self, old, new): return self._either_mapper_changed(old, new) @@ -458,12 +458,12 @@ def _value_mapper_changed(self, old, new): def _either_mapper_changed(self, old, new): if old is not None: - old.on_trait_change(self._mapper_updated_handler, "updated", remove=True) + old.observe(self._mapper_updated_handler, "updated", remove=True) if new is not None: - new.on_trait_change(self._mapper_updated_handler, "updated") + new.observe(self._mapper_updated_handler, "updated") self.invalidate_draw() - def _mapper_updated_handler(self): + def _mapper_updated_handler(self, event): self._cache_valid = False self.invalidate_draw() self.request_redraw() diff --git a/chaco/base_1d_mapper.py b/chaco/base_1d_mapper.py index 25a3a5444..88b639ef1 100644 --- a/chaco/base_1d_mapper.py +++ b/chaco/base_1d_mapper.py @@ -64,18 +64,17 @@ def _high_pos_changed(self, old, new): def _range_changed(self, old, new): if old is not None: - old.on_trait_change(self._range_change_handler, "updated", - remove = True) + old.observe(self._range_change_handler, "updated", remove=True) if new is not None: - new.on_trait_change(self._range_change_handler, "updated") + new.observe(self._range_change_handler, "updated") self._cache_valid = False self.updated = new - def _range_change_handler(self, obj, name, new): + def _range_change_handler(self, event): "Handles the range changing; dynamically attached to our ranges" self._cache_valid = False - self.updated = obj + self.updated = event.object def _get_screen_bounds(self): return (self.low_pos, self.high_pos) diff --git a/chaco/base_2d_plot.py b/chaco/base_2d_plot.py index 1dca340ae..e12b9dab6 100644 --- a/chaco/base_2d_plot.py +++ b/chaco/base_2d_plot.py @@ -89,14 +89,11 @@ def __init__(self, **kwargs): self.trait_set(**kwargs_tmp) super(Base2DPlot, self).__init__(**kwargs) if self.index is not None: - self.index.on_trait_change(self._update_index_data, - "data_changed") + self.index.observe(self._update_index_data, "data_changed") if self.index_mapper: - self.index_mapper.on_trait_change(self._update_index_mapper, - "updated") + self.index_mapper.observe(self._update_index_mapper, "updated") if self.value is not None: - self.value.on_trait_change(self._update_value_data, - "data_changed") + self.value.observe(self._update_value_data, "data_changed") # If we are not resizable, we will not get a bounds update upon layout, # so we have to manually update our mappers if self.resizable == "": @@ -245,7 +242,7 @@ def _get_y_mapper(self): # Private methods #------------------------------------------------------------------------ - def _update_index_mapper(self): + def _update_index_mapper(self, event=None): """ Updates the index mapper. Called by various trait change handlers. @@ -278,7 +275,7 @@ def _update_index_mapper(self): self.index_mapper_changed = True self.invalidate_draw() - def _update_index_data(self): + def _update_index_data(self, event=None): """ Updates the index data. Called by various trait change handlers. @@ -286,7 +283,7 @@ def _update_index_data(self): self.index_data_changed = True self.invalidate_draw() - def _update_value_data(self): + def _update_value_data(self, event=None): """ Updates the value data. Called by various trait change handlers. @@ -315,25 +312,21 @@ def _origin_changed(self): def _index_changed(self, old, new): if old is not None: - old.on_trait_change(self._update_index_data, - "data_changed", remove=True) + old.obseve(self._update_index_data, "data_changed", remove=True) if new is not None: - new.on_trait_change(self._update_index_data, "data_changed") + new.obseve(self._update_index_data, "data_changed") self._update_index_data() def _value_changed(self, old, new): if old is not None: - old.on_trait_change(self._update_value_data, - "data_changed", remove=True) + old.observe(self._update_value_data, "data_changed", remove=True) if new is not None: - new.on_trait_change(self._update_value_data, "data_changed") + new.observe(self._update_value_data, "data_changed") self._update_value_data() def _index_mapper_changed(self, old, new): if old is not None: - old.on_trait_change(self._update_index_mapper, - "updated", remove=True) + old.observe(self._update_index_mapper, "updated", remove=True) if new is not None: - new.on_trait_change(self._update_index_mapper, "updated") + new.observe(self._update_index_mapper, "updated") self._update_index_mapper() - diff --git a/chaco/base_contour_plot.py b/chaco/base_contour_plot.py index 3520a6a4c..22d384e85 100644 --- a/chaco/base_contour_plot.py +++ b/chaco/base_contour_plot.py @@ -65,7 +65,7 @@ class BaseContourPlot(Base2DPlot): def __init__(self, *args, **kwargs): super(BaseContourPlot, self).__init__(*args, **kwargs) if self.color_mapper: - self.color_mapper.on_trait_change(self._update_color_mapper, "updated") + self.color_mapper.observe(self._update_color_mapper, "updated") def _update_levels(self): """ Updates the levels cache. """ @@ -149,7 +149,7 @@ def _index_mapper_changed_fired(self): # If the index mapper has changed, then we need to redraw self.invalidate_and_redraw() - def _update_color_mapper(self): + def _update_color_mapper(self, event=None): # If the color mapper has changed, then we need to recompute the # levels and cached data associated with that. self._level_cache_valid = False @@ -177,7 +177,7 @@ def _get_color_mapper(self): def _set_color_mapper(self, color_mapper): # Remove the dynamic event handler from the old color mapper if self.colors is not None and isinstance(self.colors, ColorMapper): - self.colors.on_trait_change(self._update_color_mapper, "updated", remove=True) + self.colors.observe(self._update_color_mapper, "updated", remove=True) # Check to see if we should copy over the range as well if color_mapper is not None: @@ -186,7 +186,7 @@ def _set_color_mapper(self, color_mapper): # Attach the dynamic event handler to the new color mapper if color_mapper is not None: - color_mapper.on_trait_change(self._update_color_mapper, "updated") + color_mapper.observe(self._update_color_mapper, "updated") self.colors = color_mapper self._update_color_mapper() diff --git a/chaco/base_xy_plot.py b/chaco/base_xy_plot.py index 96e8daf01..2f5fdb0df 100644 --- a/chaco/base_xy_plot.py +++ b/chaco/base_xy_plot.py @@ -183,15 +183,15 @@ def __init__(self, **kwtraits): self.trait_set(**kwargs_tmp) AbstractPlotRenderer.__init__(self, **kwtraits) if self.index is not None: - self.index.on_trait_change(self._either_data_changed, "data_changed") - self.index.on_trait_change(self._either_metadata_changed, "metadata_changed") + self.index.observe(self._either_data_updated, "data_changed") + self.index.observe(self._either_metadata_updated, "metadata_changed") if self.index_mapper: - self.index_mapper.on_trait_change(self._mapper_updated_handler, "updated") + self.index_mapper.observe(self._mapper_updated_handler, "updated") if self.value is not None: - self.value.on_trait_change(self._either_data_changed, "data_changed") - self.value.on_trait_change(self._either_metadata_changed, "metadata_changed") + self.value.observe(self._either_data_updated, "data_changed") + self.value.observe(self._either_metadata_updated, "metadata_changed") if self.value_mapper: - self.value_mapper.on_trait_change(self._mapper_updated_handler, "updated") + self.value_mapper.observe(self._mapper_updated_handler, "updated") # If we are not resizable, we will not get a bounds update upon layout, # so we have to manually update our mappers @@ -614,33 +614,33 @@ def _orientation_changed(self): def _index_changed(self, old, new): if old is not None: - old.on_trait_change(self._either_data_changed, "data_changed", remove=True) - old.on_trait_change(self._either_metadata_changed, "metadata_changed", - remove=True) + old.observe(self._either_data_updated, "data_changed", remove=True) + old.observe(self._either_metadata_updated, "metadata_changed", + remove=True) if new is not None: - new.on_trait_change(self._either_data_changed, "data_changed") - new.on_trait_change(self._either_metadata_changed, "metadata_changed") - self._either_data_changed() + new.observe(self._either_data_updated, "data_changed") + new.observe(self._either_metadata_updated, "metadata_changed") + self._either_data_updated() - def _either_data_changed(self): + def _either_data_updated(self, event=None): self.invalidate_draw() self._cache_valid = False self._screen_cache_valid = False self.request_redraw() - def _either_metadata_changed(self): + def _either_metadata_updated(self, event): # By default, don't respond to metadata change events. pass def _value_changed(self, old, new): if old is not None: - old.on_trait_change(self._either_data_changed, "data_changed", remove=True) - old.on_trait_change(self._either_metadata_changed, "metadata_changed", - remove=True) + old.observe(self._either_data_updated, "data_changed", remove=True) + old.observe(self._either_metadata_updated, "metadata_changed", + remove=True) if new is not None: - new.on_trait_change(self._either_data_changed, "data_changed") - new.on_trait_change(self._either_metadata_changed, "metadata_changed") - self._either_data_changed() + new.observe(self._either_data_updated, "data_changed") + new.observe(self._either_metadata_updated, "metadata_changed") + self._either_data_updated() def _origin_changed(self, old, new): # origin switch from left to right or vice versa? @@ -671,13 +671,13 @@ def _value_mapper_changed(self, old, new): def _either_mapper_changed(self, obj, name, old, new): if old is not None: - old.on_trait_change(self._mapper_updated_handler, "updated", remove=True) + old.observe(self._mapper_updated_handler, "updated", remove=True) if new is not None: - new.on_trait_change(self._mapper_updated_handler, "updated") + new.observe(self._mapper_updated_handler, "updated") self.invalidate_draw() self._screen_cache_valid = False - def _mapper_updated_handler(self): + def _mapper_updated_handler(self, event): self._cache_valid = False self._screen_cache_valid = False self.invalidate_draw() @@ -710,9 +710,9 @@ def __getstate__(self): def __setstate__(self, state): super(BaseXYPlot, self).__setstate__(state) if self.index is not None: - self.index.on_trait_change(self._either_data_changed, "data_changed") + self.index.observe(self._either_data_updated, "data_changed") if self.value is not None: - self.value.on_trait_change(self._either_data_changed, "data_changed") + self.value.observe(self._either_data_updated, "data_changed") self.invalidate_draw() self._cache_valid = False diff --git a/chaco/chaco_plot_editor.py b/chaco/chaco_plot_editor.py index 630fa260d..8c5922cc5 100644 --- a/chaco/chaco_plot_editor.py +++ b/chaco/chaco_plot_editor.py @@ -243,11 +243,11 @@ def init ( self, parent ): object = self.object if USE_DATA_UPDATE == 1: for name in (plotitem.index, plotitem.value): - object.on_trait_change( self._update_data, name) + object.observe( self._update_data, name) for name in (plotitem.x_label_trait, plotitem.y_label_trait): - object.on_trait_change(lambda s: self._update_axis_grids(), name) + object.observe(lambda s: self._update_axis_grids(), name) if plotitem.type_trait not in ("", None): - object.on_trait_change(self.update_editor, plotitem.type_trait) + object.observe(self.update_editor, plotitem.type_trait) #--------------------------------------------------------------------------- # Disposes of the contents of an editor: @@ -261,9 +261,9 @@ def dispose(self): if USE_DATA_UPDATE == 1: for name in (plotitem.index, plotitem.value): - object.on_trait_change( self._update_data, name, remove = True ) + object.observe( self._update_data, name, remove = True ) for name in (plotitem.type_trait,): - object.on_trait_change( self.update_editor, name, remove = True ) + object.observe( self.update_editor, name, remove = True ) self._destroy_plot() super(ChacoPlotEditor, self).dispose() @@ -283,7 +283,7 @@ def _destroy_plot(self): # Updates the editor when the object trait changes externally to the editor: #--------------------------------------------------------------------------- - def update_editor(self): + def update_editor(self, event=None): """ Updates the editor when the object trait changes externally to the editor. """ @@ -340,7 +340,7 @@ def update_editor(self): self._container.add(plot) self._container.request_redraw() - def _update_data(self): + def _update_data(self, event): """ Updates the editor when the object trait changes externally to the editor. """ diff --git a/chaco/cmap_image_plot.py b/chaco/cmap_image_plot.py index 37aa35821..46cd9d531 100644 --- a/chaco/cmap_image_plot.py +++ b/chaco/cmap_image_plot.py @@ -64,11 +64,9 @@ class CMapImagePlot(ImagePlot): def __init__(self, **kwargs): super(CMapImagePlot, self).__init__(**kwargs) if self.value_mapper: - self.value_mapper.on_trait_change(self._update_value_mapper, - "updated") + self.value_mapper.observe(self._update_value_mapper, "updated") if self.value: - self.value.on_trait_change(self._update_selections, - "metadata_changed") + self.value.observe(self._update_selections, "metadata_changed") def set_value_selection(self, val): """ Sets a range of values in the value data source as selected. @@ -139,12 +137,12 @@ def _compute_cached_image(self, selection_masks=None): ImagePlot._compute_cached_image(self, self.value.data, mapper=lambda data: self._cmap_values(data)) - def _update_value_mapper(self): + def _update_value_mapper(self, event=None): self._mapped_image_cache_valid = False self._image_cache_valid = False self.invalidate_and_redraw() - def _update_selections(self): + def _update_selections(self, event=None): self._mapped_image_cache_valid = False self._image_cache_valid = False self.invalidate_and_redraw() @@ -171,10 +169,9 @@ def _set_color_mapper(self, val): def _value_mapper_changed(self, old, new): if old is not None: - old.on_trait_change(self._update_value_mapper, - "updated", remove=True) + old.observe(self._update_value_mapper, "updated", remove=True) if new is not None: - new.on_trait_change(self._update_value_mapper, "updated") + new.observe(self._update_value_mapper, "updated") if old and new: if new.range is None and old.range is not None: @@ -192,4 +189,3 @@ def _index_data_changed_fired(self): def _cache_full_map_changed(self): self._mapped_image_cache_valid = False - diff --git a/chaco/color_mapper.py b/chaco/color_mapper.py index 50b3339e0..b094e5fdb 100644 --- a/chaco/color_mapper.py +++ b/chaco/color_mapper.py @@ -424,13 +424,12 @@ def _map(self, X): def _range_changed(self, old, new): if old is not None: - old.on_trait_change(self._range_change_handler, "updated", - remove = True) + old.observe(self._range_change_handler, "updated", remove=True) if new is not None: - new.on_trait_change(self._range_change_handler, "updated") + new.observe(self._range_change_handler, "updated") self.updated = new - def _range_change_handler(self, obj, name, new): + def _range_change_handler(self, event): "Handles the range changing; dynamically attached to our ranges" - self.updated = obj + self.updated = event.object diff --git a/chaco/colormapped_scatterplot.py b/chaco/colormapped_scatterplot.py index d5372b076..acf7f5ae4 100644 --- a/chaco/colormapped_scatterplot.py +++ b/chaco/colormapped_scatterplot.py @@ -384,10 +384,10 @@ def draw_func(x, y, size): def _color_data_changed(self, old, new): if old is not None: - old.on_trait_change(self._either_data_changed, "data_changed", remove=True) + old.observe(self._either_data_updated, "data_changed", remove=True) if new is not None: - new.on_trait_change(self._either_data_changed, "data_changed") - self._either_data_changed() + new.observe(self._either_data_updated, "data_changed") + self._either_data_updated() def _color_mapper_changed(self, old, new): self._cache_valid = False diff --git a/chaco/colormapped_selection_overlay.py b/chaco/colormapped_selection_overlay.py index 8e057b48a..718cb205f 100644 --- a/chaco/colormapped_selection_overlay.py +++ b/chaco/colormapped_selection_overlay.py @@ -6,6 +6,7 @@ # Enthought library imports from traits.api import Any, Bool, Float, Instance, Property, Enum +from traits.observation.events import TraitChangeEvent # Local imports from .abstract_overlay import AbstractOverlay @@ -100,22 +101,41 @@ def overlay(self, component, gc, view_bounds=None, mode="normal"): def _component_changed(self, old, new): if old: - old.on_trait_change(self.datasource_change_handler, "color_data", remove=True) + old.observe(self.datasource_change_handler, "color_data", remove=True) if new: - new.on_trait_change(self.datasource_change_handler, "color_data") + new.observe(self.datasource_change_handler, "color_data") self._old_alpha = new.fill_alpha self._old_outline_color = new.outline_color self._old_line_width = new.line_width - self.datasource_change_handler(new, "color_data", None, new.color_data) + + self.datasource_change_handler( + TraitChangeEvent( + object=new, + name="color_data", + old=None, + new=new.color_data + ) + ) + + def datasource_change_handler(self, event): + obj, name, old, new = (event.object, event.name, event.old, event.new) - def datasource_change_handler(self, obj, name, old, new): if old: - old.on_trait_change(self.selection_change_handler, "metadata_changed", remove=True) + old.observe(self.selection_change_handler, "metadata_changed", remove=True) if new: - new.on_trait_change(self.selection_change_handler, "metadata_changed") - self.selection_change_handler(new, "metadata_changed", None, new.metadata) + new.observe(self.selection_change_handler, "metadata_changed") + self.selection_change_handler( + TraitChangeEvent( + object=new, + name="metadata_changed", + old=None, + new=new.metadata + ) + ) + + def selection_change_handler(self, event): + obj, name, old, new = (event.object, event.name, event.old, event.new) - def selection_change_handler(self, obj, name, old, new): if self.selection_type == 'range': selection_key = 'selections' elif self.selection_type == 'mask': diff --git a/chaco/data_label.py b/chaco/data_label.py index 79d36103d..b9b76b9c9 100644 --- a/chaco/data_label.py +++ b/chaco/data_label.py @@ -533,10 +533,9 @@ def _component_changed(self, old, new): def _modify_mapper_listeners(self, mapper, attach=True): if mapper is not None: - mapper.on_trait_change(self._handle_mapper, 'updated', - remove=not attach) + mapper.observe(self._handle_mapper, 'updated', remove=not attach) - def _handle_mapper(self): + def _handle_mapper(self, event): # This gets fired whenever a mapper on our plot fires its # 'updated' event. self._layout_needed = True diff --git a/chaco/data_range_1d.py b/chaco/data_range_1d.py index 85fee63c0..cfd9f70b0 100644 --- a/chaco/data_range_1d.py +++ b/chaco/data_range_1d.py @@ -189,7 +189,7 @@ def reset(self): self._refresh_bounds() self.tracking_amount = self.default_tracking_amount - def refresh(self): + def refresh(self, event=None): """ If any of the bounds is 'auto', this method refreshes the actual low and high values from the set of the view filters' data sources. """ @@ -372,16 +372,16 @@ def _do_track(self): def _sources_items_changed(self, event): self.refresh() for source in event.removed: - source.on_trait_change(self.refresh, "data_changed", remove=True) + source.observe(self.refresh, "data_changed", remove=True) for source in event.added: - source.on_trait_change(self.refresh, "data_changed") + source.observe(self.refresh, "data_changed") def _sources_changed(self, old, new): self.refresh() for source in old: - source.on_trait_change(self.refresh, "data_changed", remove=True) + source.observe(self.refresh, "data_changed", remove=True) for source in new: - source.on_trait_change(self.refresh, "data_changed") + source.observe(self.refresh, "data_changed") #------------------------------------------------------------------------ # Serialization interface diff --git a/chaco/data_range_2d.py b/chaco/data_range_2d.py index 37ce223d6..97ad908ad 100644 --- a/chaco/data_range_2d.py +++ b/chaco/data_range_2d.py @@ -117,7 +117,7 @@ def reset(self): self.low_setting = ('auto', 'auto') self.refresh() - def refresh(self): + def refresh(self, event=None): """ If any of the bounds is 'auto', this method refreshes the actual low and high values from the set of the view filters' data sources. """ @@ -204,9 +204,9 @@ def _set_1d_range(self, dataname, oldrange, newrange): def _sources_items_changed(self, event): for source in event.removed: - source.on_trait_change(self.refresh, "data_changed", remove=True) + source.observe(self.refresh, "data_changed", remove=True) for source in event.added: - source.on_trait_change(self.refresh, "data_changed") + source.observe(self.refresh, "data_changed") # the _xdata and _ydata of the sources may be created anew on every # access, so we can't just add/delete from _xrange and _yrange sources # based on object identity. So recreate lists each time: @@ -216,9 +216,9 @@ def _sources_items_changed(self, event): def _sources_changed(self, old, new): for source in old: - source.on_trait_change(self.refresh, "data_changed", remove=True) + source.observe(self.refresh, "data_changed", remove=True) for source in new: - source.on_trait_change(self.refresh, "data_changed") + source.observe(self.refresh, "data_changed") # the _xdata and _ydata of the sources may be created anew on every # access, so we can't just add/delete from _xrange and _yrange sources # based on object identity. So recreate lists each time: diff --git a/chaco/grid.py b/chaco/grid.py index 0025e481d..f909cb694 100644 --- a/chaco/grid.py +++ b/chaco/grid.py @@ -345,12 +345,12 @@ def _draw_component(self, gc, view_bounds=None, mode="normal"): def _mapper_changed(self, old, new): if old is not None: - old.on_trait_change(self.mapper_updated, "updated", remove=True) + old.observe(self.mapper_updated, "updated", remove=True) if new is not None: - new.on_trait_change(self.mapper_updated, "updated") + new.observe(self.mapper_updated, "updated") self.invalidate() - def mapper_updated(self): + def mapper_updated(self, event=None): """ Event handler that is bound to this mapper's **updated** event. """ diff --git a/chaco/grid_mapper.py b/chaco/grid_mapper.py index 1519c9c5e..907d2e8ab 100644 --- a/chaco/grid_mapper.py +++ b/chaco/grid_mapper.py @@ -146,7 +146,7 @@ def _update_bounds(self): self._ymapper.screen_bounds = (self.y_low_pos, self.y_high_pos) self.updated = True - def _update_range(self): + def _update_range(self, event=None): self.updated = True def _update_aspect_x(self): @@ -185,9 +185,9 @@ def _update_aspect_y(self): def _range_changed(self, old, new): if old is not None: - old.on_trait_change(self._update_range, "updated", remove=True) + old.observe(self._update_range, "updated", remove=True) if new is not None: - new.on_trait_change(self._update_range, "updated") + new.observe(self._update_range, "updated") if self._xmapper is not None: self._xmapper.range = new.x_range if self._ymapper is not None: diff --git a/chaco/overlays/databox.py b/chaco/overlays/databox.py index a279d1aa6..b7707fcff 100644 --- a/chaco/overlays/databox.py +++ b/chaco/overlays/databox.py @@ -58,16 +58,14 @@ class DataBox(AbstractOverlay): def __init__(self, *args, **kw): super(DataBox, self).__init__(*args, **kw) if hasattr(self.component, "range2d"): - self.component.range2d._xrange.on_trait_change(self.my_component_moved, "updated") - self.component.range2d._yrange.on_trait_change(self.my_component_moved, "updated") + self.component.range2d._xrange.observe(self.my_component_moved, "updated") + self.component.range2d._yrange.observe(self.my_component_moved, "updated") elif hasattr(self.component, "x_mapper") and hasattr(self.component, "y_mapper"): - self.component.x_mapper.range.on_trait_change(self.my_component_moved, "updated") - self.component.y_mapper.range.on_trait_change(self.my_component_moved, "updated") + self.component.x_mapper.range.observe(self.my_component_moved, "updated") + self.component.y_mapper.range.observe(self.my_component_moved, "updated") else: raise RuntimeError("DataBox cannot find a suitable mapper on its component.") - self.component.on_trait_change(self.my_component_resized, "bounds") - self.component.on_trait_change(self.my_component_resized, "bounds_items") - + self.component.observe(self.my_component_resized, "bounds.items") def overlay(self, component, gc, view_bounds=None, mode="normal"): if not self._position_valid: @@ -154,7 +152,7 @@ def _update_bounds(self, event=None): self._data_bounds = [data_x2 - data_pos[0], data_y2 - data_pos[1]] self.trait_property_changed("data_bounds", self._data_bounds) - def my_component_moved(self): + def my_component_moved(self, event=None): if self.affinity == "screen": # If we have screen affinity, then we need to take our current position # and map that back down into data coords @@ -163,9 +161,8 @@ def my_component_moved(self): self._bounds_valid = False self._position_valid = False - def my_component_resized(self): + def my_component_resized(self, event=None): self._bounds_valid = False self._position_valid = False - diff --git a/chaco/overlays/simple_inspector_overlay.py b/chaco/overlays/simple_inspector_overlay.py index 5ee6844bc..a0e7acd9f 100644 --- a/chaco/overlays/simple_inspector_overlay.py +++ b/chaco/overlays/simple_inspector_overlay.py @@ -155,7 +155,8 @@ def _field_formatters_default(self): return [[basic_formatter('x', 2)], [basic_formatter('y', 2)]] def _new_value_updated(self, event): - if event is None: + new_value_event = event.new + if new_value_event is None: self.text_grid = array() if self.visibility == "auto": self.visibility = False @@ -165,7 +166,7 @@ def _new_value_updated(self, event): if self.tooltip_mode: self.alternate_position = self.inspector.last_mouse_position - d = event + d = new_value_event text = [] self.text_grid.string_array = array([[formatter(**d) for formatter in row] for row in self.field_formatters]) @@ -178,14 +179,14 @@ def _visible_changed(self): def _inspector_changed(self, old, new): if old: - old.on_trait_event(self._new_value_updated, 'new_value', remove=True) - old.on_trait_change(self._tool_visible_changed, "visible", remove=True) + old.observe(self._new_value_updated, 'new_value', remove=True) + old.observe(self._tool_visible_changed, "visible", remove=True) if new: - new.on_trait_event(self._new_value_updated, 'new_value') - new.on_trait_change(self._tool_visible_changed, "visible") + new.observe(self._new_value_updated, 'new_value') + new.observe(self._tool_visible_changed, "visible") self._tool_visible_changed() - def _tool_visible_changed(self): + def _tool_visible_changed(self, event=None): self.visibility = self.inspector.visible if self.visibility != "auto": self.visible = self.visibility diff --git a/chaco/plot.py b/chaco/plot.py index 68af267af..f1d369642 100644 --- a/chaco/plot.py +++ b/chaco/plot.py @@ -1238,24 +1238,25 @@ def _color_mapper_changed(self): def _data_changed(self, old, new): if old: - old.on_trait_change(self._data_update_handler, "data_changed", - remove=True) + old.observe(self._data_update_handler, "data_changed", remove=True) if new: - new.on_trait_change(self._data_update_handler, "data_changed") + new.observe(self._data_update_handler, "data_changed") - def _data_update_handler(self, name, event): + def _data_update_handler(self, event): + name = event.name + data_changed_event = event.new # event should be a dict with keys "added", "removed", and "changed", # per the comments in AbstractPlotData. - if "removed" in event: - for name in event["removed"]: + if "removed" in data_changed_event: + for name in data_changed_event["removed"]: del self.datasources[name] - if "added" in event: - for name in event["added"]: + if "added" in data_changed_event: + for name in data_changed_event["added"]: self._get_or_create_datasource(name) - if "changed" in event: - for name in event["changed"]: + if "changed" in data_changed_event: + for name in data_changed_event["changed"]: if name in self.datasources: source = self.datasources[name] source.set_data(self.data.get_data(name)) diff --git a/chaco/plotscrollbar.py b/chaco/plotscrollbar.py index f17f09978..d434af987 100644 --- a/chaco/plotscrollbar.py +++ b/chaco/plotscrollbar.py @@ -148,20 +148,16 @@ def _modify_plot_listeners(self, plot, action="attach"): remove=False else: remove=True - plot.on_trait_change(self._component_bounds_handler, - "bounds", remove=remove) - plot.on_trait_change(self._component_bounds_handler, - "bounds_items", remove=remove) - plot.on_trait_change(self._component_pos_handler, - "position", remove=remove) - plot.on_trait_change(self._component_pos_handler, - "position_items", remove=remove) - - def _component_bounds_handler(self): + plot.observe(self._component_bounds_handler, + "bounds.items", remove=remove) + plot.observe(self._component_pos_handler, + "position.items", remove=remove) + + def _component_bounds_handler(self, event): self._handle_dataspace_update() self._widget_moved = True - def _component_pos_handler(self): + def _component_pos_handler(self, event): self._handle_dataspace_update() self._widget_moved = True diff --git a/chaco/scatterplot.py b/chaco/scatterplot.py index 96f92023f..436ed6414 100644 --- a/chaco/scatterplot.py +++ b/chaco/scatterplot.py @@ -521,7 +521,7 @@ def _outline_color_changed(self): self.invalidate_draw() self.request_redraw() - def _either_metadata_changed(self): + def _either_metadata_updated(self, event): if self.show_selection: # Only redraw when we are showing the selection. Otherwise, there # is nothing to update in response to this event.