7
7
import wx
8
8
import wx .adv
9
9
import wx .lib .newevent
10
- from psygnal import Signal
10
+ from psygnal import EmissionInfo , Signal
11
11
12
12
from ndv .models ._array_display_model import ChannelMode
13
13
from ndv .models ._lut_model import ClimPolicy , ClimsManual , ClimsMinMax
@@ -86,7 +86,6 @@ class WxLutView(LutView):
86
86
def __init__ (self , parent : wx .Window ) -> None :
87
87
super ().__init__ ()
88
88
self ._wxwidget = wdg = _WxLUTWidget (parent )
89
- # TODO: use emit_fast
90
89
wdg .visible .Bind (wx .EVT_CHECKBOX , self ._on_visible_changed )
91
90
wdg .cmap .Bind (wx .EVT_COMBOBOX , self ._on_cmap_changed )
92
91
wdg .clims .Bind (wx .EVT_SLIDER , self ._on_clims_changed )
@@ -252,7 +251,7 @@ def __init__(self, canvas_widget: wx.Window, parent: wx.Window = None):
252
251
)
253
252
254
253
# Reset zoom button
255
- self .reset_zoom_btn = wx .Button (self , label = "Reset Zoom" )
254
+ self .set_range_btn = wx .Button (self , label = "Reset Zoom" )
256
255
257
256
# 3d view button
258
257
self .ndims_btn = wx .ToggleButton (self , label = "3D" )
@@ -263,12 +262,12 @@ def __init__(self, canvas_widget: wx.Window, parent: wx.Window = None):
263
262
# LUT layout (simple vertical grouping for LUT widgets)
264
263
self .luts = wx .BoxSizer (wx .VERTICAL )
265
264
266
- btns = wx .BoxSizer (wx .HORIZONTAL )
267
- btns .AddStretchSpacer ()
268
- btns .Add (self .channel_mode_combo , 0 , wx .ALL , 5 )
269
- btns . Add (self .reset_zoom_btn , 0 , wx .ALL , 5 )
270
- btns .Add (self .ndims_btn , 0 , wx .ALL , 5 )
271
- btns .Add (self .add_roi_btn , 0 , wx .ALL , 5 )
265
+ self . _btns = wx .BoxSizer (wx .HORIZONTAL )
266
+ self . _btns .AddStretchSpacer ()
267
+ self . _btns .Add (self .channel_mode_combo , 0 , wx .ALL , 5 )
268
+ self . _btns . Add (self .set_range_btn , 0 , wx .ALL , 5 )
269
+ self . _btns .Add (self .ndims_btn , 0 , wx .ALL , 5 )
270
+ self . _btns .Add (self .add_roi_btn , 0 , wx .ALL , 5 )
272
271
273
272
self ._top_info = top_info = wx .BoxSizer (wx .HORIZONTAL )
274
273
top_info .Add (self ._data_info_label , 0 , wx .EXPAND | wx .BOTTOM , 0 )
@@ -281,7 +280,7 @@ def __init__(self, canvas_widget: wx.Window, parent: wx.Window = None):
281
280
inner .Add (self ._hover_info_label , 0 , wx .EXPAND | wx .BOTTOM )
282
281
inner .Add (self .dims_sliders , 0 , wx .EXPAND | wx .BOTTOM )
283
282
inner .Add (self .luts , 0 , wx .EXPAND )
284
- inner .Add (btns , 0 , wx .EXPAND )
283
+ inner .Add (self . _btns , 0 , wx .EXPAND )
285
284
286
285
outer = wx .BoxSizer (wx .VERTICAL )
287
286
outer .Add (inner , 1 , wx .EXPAND | wx .ALL , 10 )
@@ -300,13 +299,13 @@ def __init__(
300
299
) -> None :
301
300
self ._data_model = data_model
302
301
self ._viewer_model = viewer_model
302
+ self ._viewer_model .events .connect (self ._on_viewer_model_event )
303
303
self ._wxwidget = wdg = _WxArrayViewer (canvas_widget , parent )
304
304
self ._visible_axes : Sequence [AxisKey ] = []
305
305
306
- # TODO: use emit_fast
307
306
wdg .dims_sliders .currentIndexChanged .connect (self .currentIndexChanged .emit )
308
307
wdg .channel_mode_combo .Bind (wx .EVT_COMBOBOX , self ._on_channel_mode_changed )
309
- wdg .reset_zoom_btn .Bind (wx .EVT_BUTTON , self ._on_reset_zoom_clicked )
308
+ wdg .set_range_btn .Bind (wx .EVT_BUTTON , self ._on_reset_zoom_clicked )
310
309
wdg .ndims_btn .Bind (wx .EVT_TOGGLEBUTTON , self ._on_ndims_toggled )
311
310
wdg .add_roi_btn .Bind (wx .EVT_TOGGLEBUTTON , self ._on_add_roi_toggled )
312
311
@@ -397,9 +396,29 @@ def set_visible(self, visible: bool) -> None:
397
396
def close (self ) -> None :
398
397
self ._wxwidget .Close ()
399
398
400
- def set_progress_spinner_visible (self , visible : bool ) -> None :
401
- if visible :
402
- self ._wxwidget ._progress_spinner .Show ()
399
+ def _on_viewer_model_event (self , info : EmissionInfo ) -> None :
400
+ sig_name = info .signal .name
401
+ value = info .args [0 ]
402
+ if sig_name == "show_progress_spinner" :
403
+ self ._wxwidget ._progress_spinner .Show (value )
403
404
self ._wxwidget ._top_info .Layout ()
404
- else :
405
- self ._wxwidget ._progress_spinner .Hide ()
405
+ elif sig_name == "interaction_mode" :
406
+ # If leaving CanvasMode.CREATE_ROI, uncheck the ROI button
407
+ new , old = info .args
408
+ if old == InteractionMode .CREATE_ROI :
409
+ self ._wxwidget .add_roi_btn .SetValue (False )
410
+ elif sig_name == "show_histogram_button" :
411
+ # _set_visible(self._wxwidget.histogram_btn, value)
412
+ ...
413
+ elif sig_name == "show_roi_button" :
414
+ self ._wxwidget .add_roi_btn .Show (value )
415
+ self ._wxwidget ._btns .Layout ()
416
+ elif sig_name == "show_channel_mode_selector" :
417
+ self ._wxwidget .channel_mode_combo .Show (value )
418
+ self ._wxwidget ._btns .Layout ()
419
+ elif sig_name == "show_reset_zoom_button" :
420
+ self ._wxwidget .set_range_btn .Show (value )
421
+ self ._wxwidget ._btns .Layout ()
422
+ elif sig_name == "show_3d_button" :
423
+ self ._wxwidget .ndims_btn .Show (value )
424
+ self ._wxwidget ._btns .Layout ()
0 commit comments