From 4b2c403aaca81edd9396f28284b5e7d90eba7667 Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 15:45:42 -0500 Subject: [PATCH 01/21] update axis.py --- chaco/axis.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/chaco/axis.py b/chaco/axis.py index 4988d77f6..559766cf0 100644 --- a/chaco/axis.py +++ b/chaco/axis.py @@ -630,12 +630,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): """ Event handler that is bound to this axis's mapper's **updated** event """ From 7039b8a4d97e48228272e3a2fbd29ddc074e8361 Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 15:48:39 -0500 Subject: [PATCH 02/21] update barplot.py --- chaco/barplot.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/chaco/barplot.py b/chaco/barplot.py index cfe14c51b..dafb6053a 100644 --- a/chaco/barplot.py +++ b/chaco/barplot.py @@ -433,10 +433,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 @@ -448,17 +448,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) @@ -468,12 +468,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() From 144d5a412e38810a93a4dd6c5d7f1d161a6a06ad Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 15:49:34 -0500 Subject: [PATCH 03/21] update base_1d_mapper.py --- chaco/base_1d_mapper.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/chaco/base_1d_mapper.py b/chaco/base_1d_mapper.py index e6cb03b55..1951d51ec 100644 --- a/chaco/base_1d_mapper.py +++ b/chaco/base_1d_mapper.py @@ -64,19 +64,19 @@ 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", + 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 return - 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 return def _get_screen_bounds(self): From abdc3ec0c959ac8a7c3a8a4e66f1aa41089d0355 Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 15:51:31 -0500 Subject: [PATCH 04/21] update base_2d_plot.py --- chaco/base_2d_plot.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/chaco/base_2d_plot.py b/chaco/base_2d_plot.py index dede6b599..fa053ee2a 100644 --- a/chaco/base_2d_plot.py +++ b/chaco/base_2d_plot.py @@ -89,13 +89,13 @@ 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, + self.index.observe(self._update_index_data, "data_changed") if self.index_mapper: - self.index_mapper.on_trait_change(self._update_index_mapper, + self.index_mapper.observe(self._update_index_mapper, "updated") if self.value is not None: - self.value.on_trait_change(self._update_value_data, + 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 @@ -247,7 +247,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. @@ -280,7 +280,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. @@ -288,7 +288,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. @@ -317,10 +317,10 @@ def _origin_changed(self): def _index_changed(self, old, new): if old is not None: - old.on_trait_change(self._update_index_data, + 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): @@ -333,9 +333,9 @@ def _value_changed(self, old, new): def _index_mapper_changed(self, old, new): if old is not None: - old.on_trait_change(self._update_index_mapper, + 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() From 863f558c0d6b475a22aa2760e4b03ae2fa144a93 Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 15:52:02 -0500 Subject: [PATCH 05/21] missed 2 --- chaco/base_2d_plot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chaco/base_2d_plot.py b/chaco/base_2d_plot.py index fa053ee2a..21326fb79 100644 --- a/chaco/base_2d_plot.py +++ b/chaco/base_2d_plot.py @@ -325,10 +325,10 @@ def _index_changed(self, old, new): def _value_changed(self, old, new): if old is not None: - old.on_trait_change(self._update_value_data, + 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): From f175499f99fc0981349bdf1f98b2822596ffc0ec Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 15:53:18 -0500 Subject: [PATCH 06/21] update base_contour_plot.py --- chaco/base_contour_plot.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/chaco/base_contour_plot.py b/chaco/base_contour_plot.py index b24bd736d..e4cf46360 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") return def _update_levels(self): @@ -152,7 +152,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 @@ -180,7 +180,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: @@ -189,7 +189,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() From 2118179a8423e26f4062655c7af3ab3973778635 Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 16:00:46 -0500 Subject: [PATCH 07/21] update base_xy_plot.py and subclasses as needed --- chaco/base_xy_plot.py | 46 ++++++++++++++++---------------- chaco/colormapped_scatterplot.py | 6 ++--- chaco/scatterplot.py | 2 +- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/chaco/base_xy_plot.py b/chaco/base_xy_plot.py index 7fab06ea0..dfb7f8184 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 @@ -620,35 +620,35 @@ 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", + 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() return - 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() return - 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", + 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() return def _origin_changed(self, old, new): @@ -683,14 +683,14 @@ 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 return - def _mapper_updated_handler(self): + def _mapper_updated_handler(self, event): self._cache_valid = False self._screen_cache_valid = False self.invalidate_draw() @@ -725,9 +725,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/colormapped_scatterplot.py b/chaco/colormapped_scatterplot.py index 6ad72f2d1..41250da8a 100644 --- a/chaco/colormapped_scatterplot.py +++ b/chaco/colormapped_scatterplot.py @@ -394,10 +394,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() return def _color_mapper_changed(self, old, new): diff --git a/chaco/scatterplot.py b/chaco/scatterplot.py index f186bce0c..e18b323e1 100644 --- a/chaco/scatterplot.py +++ b/chaco/scatterplot.py @@ -526,7 +526,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. From a06d4f0d1cf6aa22f91353e7f33753273c5a4fcf Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 16:03:45 -0500 Subject: [PATCH 08/21] update chaco_plot_editor.py --- chaco/chaco_plot_editor.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/chaco/chaco_plot_editor.py b/chaco/chaco_plot_editor.py index 3ac799d4c..e33e90b8e 100644 --- a/chaco/chaco_plot_editor.py +++ b/chaco/chaco_plot_editor.py @@ -245,11 +245,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) return #--------------------------------------------------------------------------- @@ -264,9 +264,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() @@ -287,7 +287,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. """ @@ -345,7 +345,7 @@ def update_editor(self): self._container.request_redraw() return - def _update_data(self): + def _update_data(self, event): """ Updates the editor when the object trait changes externally to the editor. """ From 8fb5aa73f7921eb29d6936001b75a72f60332cea Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 16:05:06 -0500 Subject: [PATCH 09/21] update cmap_image_plot.py --- chaco/cmap_image_plot.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/chaco/cmap_image_plot.py b/chaco/cmap_image_plot.py index 60c374576..cca104cd9 100644 --- a/chaco/cmap_image_plot.py +++ b/chaco/cmap_image_plot.py @@ -64,10 +64,10 @@ 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, + self.value_mapper.observe(self._update_value_mapper, "updated") if self.value: - self.value.on_trait_change(self._update_selections, + self.value.observe(self._update_selections, "metadata_changed") def set_value_selection(self, val): @@ -139,12 +139,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 +171,10 @@ 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, + 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: From a4f528a5dbf9ede27a57f2d7475057c911bc7c67 Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 16:06:35 -0500 Subject: [PATCH 10/21] update color_mapper.py --- chaco/color_mapper.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/chaco/color_mapper.py b/chaco/color_mapper.py index 582e8e9bf..21d04f708 100644 --- a/chaco/color_mapper.py +++ b/chaco/color_mapper.py @@ -430,13 +430,13 @@ def _map(self, X): def _range_changed(self, old, new): if old is not None: - old.on_trait_change(self._range_change_handler, "updated", + 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 From 10b4f54042c9d4a5f8c428b2a67131cee7993946 Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 16:22:07 -0500 Subject: [PATCH 11/21] update colormapped_selection_overlay.py --- chaco/colormapped_selection_overlay.py | 36 ++++++++++++++++++++------ 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/chaco/colormapped_selection_overlay.py b/chaco/colormapped_selection_overlay.py index 89e67e443..006169e09 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 @@ -102,24 +103,43 @@ 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 + ) + ) return - def datasource_change_handler(self, obj, name, old, new): + def datasource_change_handler(self, event): + obj, name, old, new = (event.object, event.name, event.old, event.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 + ) + ) return - def selection_change_handler(self, obj, name, old, new): + def selection_change_handler(self, event): + obj, name, old, new = (event.object, event.name, event.old, event.new) + if self.selection_type == 'range': selection_key = 'selections' elif self.selection_type == 'mask': From acf6ab01042558120e2291fe933372a747e4ddba Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 16:26:27 -0500 Subject: [PATCH 12/21] update data_label.py --- chaco/data_label.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chaco/data_label.py b/chaco/data_label.py index 53e23ca3a..ec4013d64 100644 --- a/chaco/data_label.py +++ b/chaco/data_label.py @@ -535,11 +535,11 @@ 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', + mapper.observe(self._handle_mapper, 'updated', remove=not attach) return - 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 From 087baf2e42ddbccd9f24199fa3fae265597d8e0f Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 16:27:55 -0500 Subject: [PATCH 13/21] update data_range_1d.py --- chaco/data_range_1d.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/chaco/data_range_1d.py b/chaco/data_range_1d.py index 2455a411c..149de5484 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. """ @@ -373,16 +373,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 From 3f177aa2fb4db77c363bccf8fc0073d8012e5e8b Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 16:28:44 -0500 Subject: [PATCH 14/21] update data_range_2d.py --- chaco/data_range_2d.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/chaco/data_range_2d.py b/chaco/data_range_2d.py index 075b91c2c..66c90bd45 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. """ @@ -205,9 +205,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: @@ -217,9 +217,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: From fcfd16289ed264733dca013b8b992eed3fb7ab10 Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 16:29:28 -0500 Subject: [PATCH 15/21] updaate grid_mapper.py --- chaco/grid_mapper.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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: From 4aa11eacdef95377d00df64c73c5e9a691c4c84f Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 16:31:42 -0500 Subject: [PATCH 16/21] update grid.py --- chaco/grid.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/chaco/grid.py b/chaco/grid.py index 52a6ad343..365dfe546 100644 --- a/chaco/grid.py +++ b/chaco/grid.py @@ -355,13 +355,13 @@ 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() return - def mapper_updated(self): + def mapper_updated(self, event): """ Event handler that is bound to this mapper's **updated** event. """ From 77d8c0bb53440f69f2567942f00e669eb94e6ca1 Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 16:35:18 -0500 Subject: [PATCH 17/21] update plot.py --- chaco/plot.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/chaco/plot.py b/chaco/plot.py index 05d34d874..30ca401df 100644 --- a/chaco/plot.py +++ b/chaco/plot.py @@ -1244,24 +1244,26 @@ def _color_mapper_changed(self): def _data_changed(self, old, new): if old: - old.on_trait_change(self._data_update_handler, "data_changed", + 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)) From 1c5592435683ec03cf71b1f6fff44eec34aa00ff Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 16:36:49 -0500 Subject: [PATCH 18/21] update plotscrollbar.py --- chaco/plotscrollbar.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/chaco/plotscrollbar.py b/chaco/plotscrollbar.py index 32b557a36..4031eb78a 100644 --- a/chaco/plotscrollbar.py +++ b/chaco/plotscrollbar.py @@ -152,21 +152,17 @@ 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) + plot.observe(self._component_bounds_handler, + "bounds.items", remove=remove) + plot.observe(self._component_pos_handler, + "position.items", remove=remove) return - def _component_bounds_handler(self): + 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 From 7f85c4df64668babfba7296ae7d223978074ecd2 Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 16:39:33 -0500 Subject: [PATCH 19/21] update overlays/databox.py --- chaco/overlays/databox.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/chaco/overlays/databox.py b/chaco/overlays/databox.py index 39bc5496a..5809cf4ee 100644 --- a/chaco/overlays/databox.py +++ b/chaco/overlays/databox.py @@ -62,16 +62,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: @@ -160,7 +158,7 @@ def _update_bounds(self): 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): 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 @@ -169,7 +167,7 @@ def my_component_moved(self): self._bounds_valid = False self._position_valid = False - def my_component_resized(self): + def my_component_resized(self, event): self._bounds_valid = False self._position_valid = False From f989aedc290f27188313d91e84218400ace00c64 Mon Sep 17 00:00:00 2001 From: Aaron Ayres Date: Wed, 31 Mar 2021 16:41:19 -0500 Subject: [PATCH 20/21] update overlays/simple_inspector_overlay.py --- chaco/overlays/simple_inspector_overlay.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) 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 From c0aa48f377d037db74b6d377c8bebec7ece0c067 Mon Sep 17 00:00:00 2001 From: aaronayres35 <36972686+aaronayres35@users.noreply.github.com> Date: Thu, 1 Apr 2021 04:45:15 -0700 Subject: [PATCH 21/21] Apply suggestions from code review Co-authored-by: Poruri Sai Rahul --- chaco/axis.py | 2 +- chaco/base_1d_mapper.py | 3 +-- chaco/base_2d_plot.py | 19 ++++++------------- chaco/base_xy_plot.py | 4 ++-- chaco/cmap_image_plot.py | 10 +++------- chaco/color_mapper.py | 3 +-- chaco/data_label.py | 3 +-- chaco/grid.py | 2 +- chaco/overlays/databox.py | 5 ++--- chaco/plot.py | 3 +-- chaco/plotscrollbar.py | 4 ++-- 11 files changed, 21 insertions(+), 37 deletions(-) diff --git a/chaco/axis.py b/chaco/axis.py index 559766cf0..551648dbe 100644 --- a/chaco/axis.py +++ b/chaco/axis.py @@ -635,7 +635,7 @@ def _mapper_changed(self, old, new): new.observe(self.mapper_updated, "updated") self._invalidate() - def mapper_updated(self, event): + def mapper_updated(self, event=None): """ Event handler that is bound to this axis's mapper's **updated** event """ diff --git a/chaco/base_1d_mapper.py b/chaco/base_1d_mapper.py index 1951d51ec..4e1f76fd2 100644 --- a/chaco/base_1d_mapper.py +++ b/chaco/base_1d_mapper.py @@ -64,8 +64,7 @@ def _high_pos_changed(self, old, new): def _range_changed(self, old, new): if old is not None: - old.observe(self._range_change_handler, "updated", - remove = True) + old.observe(self._range_change_handler, "updated", remove=True) if new is not None: new.observe(self._range_change_handler, "updated") diff --git a/chaco/base_2d_plot.py b/chaco/base_2d_plot.py index 21326fb79..cdebfc214 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.observe(self._update_index_data, - "data_changed") + self.index.observe(self._update_index_data, "data_changed") if self.index_mapper: - self.index_mapper.observe(self._update_index_mapper, - "updated") + self.index_mapper.observe(self._update_index_mapper, "updated") if self.value is not None: - self.value.observe(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 == "": @@ -317,25 +314,21 @@ def _origin_changed(self): def _index_changed(self, old, new): if old is not None: - old.obseve(self._update_index_data, - "data_changed", remove=True) + old.obseve(self._update_index_data, "data_changed", remove=True) if new is not None: new.obseve(self._update_index_data, "data_changed") self._update_index_data() def _value_changed(self, old, new): if old is not None: - old.observe(self._update_value_data, - "data_changed", remove=True) + old.observe(self._update_value_data, "data_changed", remove=True) if new is not None: 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.observe(self._update_index_mapper, - "updated", remove=True) + old.observe(self._update_index_mapper, "updated", remove=True) if new is not None: new.observe(self._update_index_mapper, "updated") self._update_index_mapper() - diff --git a/chaco/base_xy_plot.py b/chaco/base_xy_plot.py index dfb7f8184..99da118d7 100644 --- a/chaco/base_xy_plot.py +++ b/chaco/base_xy_plot.py @@ -622,7 +622,7 @@ def _index_changed(self, old, new): if old is not None: old.observe(self._either_data_updated, "data_changed", remove=True) old.observe(self._either_metadata_updated, "metadata_changed", - remove=True) + remove=True) if new is not None: new.observe(self._either_data_updated, "data_changed") new.observe(self._either_metadata_updated, "metadata_changed") @@ -644,7 +644,7 @@ def _value_changed(self, old, new): if old is not None: old.observe(self._either_data_updated, "data_changed", remove=True) old.observe(self._either_metadata_updated, "metadata_changed", - remove=True) + remove=True) if new is not None: new.observe(self._either_data_updated, "data_changed") new.observe(self._either_metadata_updated, "metadata_changed") diff --git a/chaco/cmap_image_plot.py b/chaco/cmap_image_plot.py index cca104cd9..287725a53 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.observe(self._update_value_mapper, - "updated") + self.value_mapper.observe(self._update_value_mapper, "updated") if self.value: - self.value.observe(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. @@ -171,8 +169,7 @@ def _set_color_mapper(self, val): def _value_mapper_changed(self, old, new): if old is not None: - old.observe(self._update_value_mapper, - "updated", remove=True) + old.observe(self._update_value_mapper, "updated", remove=True) if new is not None: new.observe(self._update_value_mapper, "updated") @@ -194,4 +191,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 21d04f708..62d131535 100644 --- a/chaco/color_mapper.py +++ b/chaco/color_mapper.py @@ -430,8 +430,7 @@ def _map(self, X): def _range_changed(self, old, new): if old is not None: - old.observe(self._range_change_handler, "updated", - remove = True) + old.observe(self._range_change_handler, "updated", remove=True) if new is not None: new.observe(self._range_change_handler, "updated") diff --git a/chaco/data_label.py b/chaco/data_label.py index ec4013d64..1c77da9a1 100644 --- a/chaco/data_label.py +++ b/chaco/data_label.py @@ -535,8 +535,7 @@ def _component_changed(self, old, new): def _modify_mapper_listeners(self, mapper, attach=True): if mapper is not None: - mapper.observe(self._handle_mapper, 'updated', - remove=not attach) + mapper.observe(self._handle_mapper, 'updated', remove=not attach) return def _handle_mapper(self, event): diff --git a/chaco/grid.py b/chaco/grid.py index 365dfe546..f976de2d7 100644 --- a/chaco/grid.py +++ b/chaco/grid.py @@ -361,7 +361,7 @@ def _mapper_changed(self, old, new): self.invalidate() return - def mapper_updated(self, event): + def mapper_updated(self, event=None): """ Event handler that is bound to this mapper's **updated** event. """ diff --git a/chaco/overlays/databox.py b/chaco/overlays/databox.py index 5809cf4ee..e88b5aab6 100644 --- a/chaco/overlays/databox.py +++ b/chaco/overlays/databox.py @@ -158,7 +158,7 @@ def _update_bounds(self): 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, event): + 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 @@ -167,9 +167,8 @@ def my_component_moved(self, event): self._bounds_valid = False self._position_valid = False - def my_component_resized(self, event): + def my_component_resized(self, event=None): self._bounds_valid = False self._position_valid = False - diff --git a/chaco/plot.py b/chaco/plot.py index 30ca401df..9464c5bed 100644 --- a/chaco/plot.py +++ b/chaco/plot.py @@ -1244,8 +1244,7 @@ def _color_mapper_changed(self): def _data_changed(self, old, new): if old: - old.observe(self._data_update_handler, "data_changed", - remove=True) + old.observe(self._data_update_handler, "data_changed", remove=True) if new: new.observe(self._data_update_handler, "data_changed") diff --git a/chaco/plotscrollbar.py b/chaco/plotscrollbar.py index 4031eb78a..6f74f49ca 100644 --- a/chaco/plotscrollbar.py +++ b/chaco/plotscrollbar.py @@ -153,9 +153,9 @@ def _modify_plot_listeners(self, plot, action="attach"): else: remove=True plot.observe(self._component_bounds_handler, - "bounds.items", remove=remove) + "bounds.items", remove=remove) plot.observe(self._component_pos_handler, - "position.items", remove=remove) + "position.items", remove=remove) return def _component_bounds_handler(self, event):