@@ -97,7 +97,7 @@ def set_registry(self, registry=None):
9797 self .registry = registry
9898
9999 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 .
101101
102102 Arguments:
103103
@@ -236,8 +236,7 @@ def on_key_release(self, event):
236236 kp = KeyParser (event .key )
237237 key = kp .key
238238 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' ):
241240 print ('Resetting selection.' )
242241 self .view .selector .eventpress = None
243242 self .view .selector .set_active (False )
@@ -766,8 +765,6 @@ def init_callbacks(self):
766765
767766 # Class update event callback
768767 def updater (* args , ** kwargs ):
769- if self .classes is None :
770- self .set_classes (args [0 ].classes )
771768 self .refresh ()
772769 callback = MplCallback (registry = self .callbacks_common ,
773770 event = 'spy_classes_modified' ,
@@ -785,11 +782,14 @@ def updater(*args, **kwargs):
785782 button = 1 ,
786783 useblit = True ,
787784 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 })
791790 self .selector .set_active (False )
792791 except :
792+ raise
793793 self .selector = None
794794 msg = 'Failed to create RectangleSelector object. Interactive ' \
795795 'pixel class labeling will be unavailable.'
@@ -814,18 +814,22 @@ def label_region(self, rectangle, class_id):
814814 Returns the number of pixels reassigned (the number of pixels in the
815815 rectangle whose class has *changed* to `class_id`.
816816 '''
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 ))
819820 r = rectangle
820821 n = np .sum (self .classes [r [0 ]:r [1 ], r [2 ]:r [3 ]] != class_id )
821822 if n > 0 :
822823 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' )
823827 event = SpyMplEvent ('spy_classes_modified' )
824828 event .classes = self .classes
825829 event .nchanged = n
826830 self .callbacks_common .process ('spy_classes_modified' , event )
827831 # Make selection rectangle go away.
828- self .selector .to_draw . set_visible (False )
832+ self .selector .set_visible (False )
829833 self .refresh ()
830834 return n
831835 return 0
@@ -850,7 +854,7 @@ def _select_rectangle(self, event1, event2):
850854 self .selection = [r1 , r2 + 1 , c1 , c2 + 1 ]
851855 self .selector .set_active (False )
852856 # Make the rectangle display until at least the next event
853- self .selector .to_draw . set_visible (True )
857+ self .selector .set_visible (True )
854858 self .selector .update ()
855859
856860 def _guess_mode (self ):
0 commit comments