@@ -97,7 +97,7 @@ def set_registry(self, registry=None):
97
97
self .registry = registry
98
98
99
99
def connect (self , registry = None , event = None , callback = None ):
100
- '''Binds the callback to the registry and begins receiving event .
100
+ '''Binds the callback to the registry and begins receiving events .
101
101
102
102
Arguments:
103
103
@@ -236,8 +236,7 @@ def on_key_release(self, event):
236
236
kp = KeyParser (event .key )
237
237
key = kp .key
238
238
if key is None and self .view .selector is not None and \
239
- self .view .selector .get_active () and kp .mods_are ('shift' ) \
240
- and self .view .selector .eventpress is not None :
239
+ self .view .selector .get_active () and kp .mods_are ('shift' ):
241
240
print ('Resetting selection.' )
242
241
self .view .selector .eventpress = None
243
242
self .view .selector .set_active (False )
@@ -766,8 +765,6 @@ def init_callbacks(self):
766
765
767
766
# Class update event callback
768
767
def updater (* args , ** kwargs ):
769
- if self .classes is None :
770
- self .set_classes (args [0 ].classes )
771
768
self .refresh ()
772
769
callback = MplCallback (registry = self .callbacks_common ,
773
770
event = 'spy_classes_modified' ,
@@ -785,11 +782,14 @@ def updater(*args, **kwargs):
785
782
button = 1 ,
786
783
useblit = True ,
787
784
spancoords = 'data' ,
788
- drawtype = 'box' ,
789
- rectprops = \
790
- self .selector_rectprops )
785
+ props = \
786
+ self .selector_rectprops ,
787
+ state_modifier_keys = \
788
+ {'square' : None ,
789
+ 'center' : None })
791
790
self .selector .set_active (False )
792
791
except :
792
+ raise
793
793
self .selector = None
794
794
msg = 'Failed to create RectangleSelector object. Interactive ' \
795
795
'pixel class labeling will be unavailable.'
@@ -814,18 +814,22 @@ def label_region(self, rectangle, class_id):
814
814
Returns the number of pixels reassigned (the number of pixels in the
815
815
rectangle whose class has *changed* to `class_id`.
816
816
'''
817
- if self .classes is None :
818
- self .classes = np .zeros (self .data_rgb .shape [:2 ], dtype = np .int16 )
817
+ show_classes = self .classes is None
818
+ if show_classes :
819
+ self .set_classes (np .zeros (self .data_rgb .shape [:2 ], dtype = np .int16 ))
819
820
r = rectangle
820
821
n = np .sum (self .classes [r [0 ]:r [1 ], r [2 ]:r [3 ]] != class_id )
821
822
if n > 0 :
822
823
self .classes [r [0 ]:r [1 ], r [2 ]:r [3 ]] = class_id
824
+ if show_classes :
825
+ self .show_classes ()
826
+ self .set_display_mode ('overlay' )
823
827
event = SpyMplEvent ('spy_classes_modified' )
824
828
event .classes = self .classes
825
829
event .nchanged = n
826
830
self .callbacks_common .process ('spy_classes_modified' , event )
827
831
# Make selection rectangle go away.
828
- self .selector .to_draw . set_visible (False )
832
+ self .selector .set_visible (False )
829
833
self .refresh ()
830
834
return n
831
835
return 0
@@ -850,7 +854,7 @@ def _select_rectangle(self, event1, event2):
850
854
self .selection = [r1 , r2 + 1 , c1 , c2 + 1 ]
851
855
self .selector .set_active (False )
852
856
# Make the rectangle display until at least the next event
853
- self .selector .to_draw . set_visible (True )
857
+ self .selector .set_visible (True )
854
858
self .selector .update ()
855
859
856
860
def _guess_mode (self ):
0 commit comments