Skip to content

Commit

Permalink
More fixes to UI, including a long-standing bug with tools that are d…
Browse files Browse the repository at this point in the history
…isabled by default
  • Loading branch information
astrofrog committed Oct 28, 2021
1 parent 0273542 commit fbe991f
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 13 deletions.
8 changes: 6 additions & 2 deletions glue/plugins/tools/pv_slicer/pv_sliced_data.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import numpy as np

from glue.core.data_derived import DerivedData
from glue.core.message import NumericalDataChangedMessage

__all__ = ['PVSlicedData']

Expand Down Expand Up @@ -52,6 +53,9 @@ def set_xy(self, x, y):
x, y = sample_points(x, y)
self.x = x
self.y = y
if self.original_data.hub:
msg = NumericalDataChangedMessage(self)
self.original_data.hub.broadcast(msg)

@property
def label(self):
Expand Down Expand Up @@ -186,7 +190,7 @@ def compute_fixed_resolution_buffer(self, bounds, target_data=None, target_cid=N
elif idim == self.cid_y.axis:
iymax = np.ceil(np.max(y))
bound = (0, iymax, iymax + 1)
slices.append(np.round(x).astype(int))
slices.append(np.round(y).astype(int))
else:
bound = bounds[idim_current]
idim_current += 1
Expand All @@ -202,6 +206,6 @@ def compute_fixed_resolution_buffer(self, bounds, target_data=None, target_cid=N
target_data=target_data.original_data,
target_cid=target_cid)

result = result[slices]
result = result[tuple(slices)]

return result
21 changes: 11 additions & 10 deletions glue/plugins/tools/pv_slicer/qt/pv_slicer.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ def __init__(self, viewer, **kwargs):
self._roi_callback = self._extract_callback
self._slice_widget = None
self.viewer.state.add_callback('reference_data', self._on_reference_data_change)
# self._sliced_data = []
self._on_reference_data_change()

def _on_reference_data_change(self, reference_data):
if reference_data is not None:
self.enabled = reference_data.ndim == 3
def _on_reference_data_change(self, *args):
if self.viewer.state.reference_data is not None:
self.enabled = self.viewer.state.reference_data.ndim == 3

def _clear_path(self):
self.viewer.hide_crosshairs()
Expand Down Expand Up @@ -67,7 +67,7 @@ def _extract_callback(self, mode):
self.viewer.state.x_att, vx,
self.viewer.state.y_att, vy,
label=data.label + " [slice]")
data.parent_viewer = self.viewer
pvdata.parent_viewer = self.viewer
self.viewer.session.data_collection.append(pvdata)
open_viewer = True
else:
Expand All @@ -84,8 +84,8 @@ def _extract_callback(self, mode):
for pvdata in all_pvdata:
viewer.add_data(pvdata)

viewer.state.aspect = 'auto'
viewer.state.reset_limits()
viewer.state.aspect = 'auto'
viewer.state.reset_limits()


@viewer_tool
Expand All @@ -109,10 +109,11 @@ def __init__(self, *args, **kwargs):
self._release_callback = self._on_release
self._active = False
self.viewer.state.add_callback('reference_data', self._on_reference_data_change)
self._on_reference_data_change()

def _on_reference_data_change(self, reference_data):
self.enabled = isinstance(reference_data, PVSlicedData)
self.data = reference_data
def _on_reference_data_change(self, *args):
self.enabled = isinstance(self.viewer.state.reference_data, PVSlicedData)
self.data = self.viewer.state.reference_data

def activate(self):
self._line = Line2D(self.data.x, self.data.y, zorder=1000, color='#669dff',
Expand Down
1 change: 1 addition & 0 deletions glue/viewers/common/qt/toolbar.py
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ def toggle(state):
action.setEnabled(state)

add_callback(tool, 'enabled', toggle)
toggle(tool.enabled)

self.tools[tool.tool_id] = tool

Expand Down
3 changes: 2 additions & 1 deletion glue/viewers/matplotlib/toolbar_mode.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,8 @@ def activate(self):
def deactivate(self):
self._roi_tool.reset()
self.clear()
self.viewer.figure.canvas.draw()
if self.viewer is not None:
self.viewer.figure.canvas.draw()
super(RoiModeBase, self).deactivate()

def roi(self):
Expand Down

0 comments on commit fbe991f

Please sign in to comment.