@@ -1044,7 +1044,7 @@ def onselect(vmin, vmax):
1044
1044
"""
1045
1045
1046
1046
def __init__ (self , ax , onselect , direction , minspan = None , useblit = False ,
1047
- rectprops = None , onmove_callback = None ):
1047
+ rectprops = None , onmove_callback = None , span_stays = False ):
1048
1048
"""
1049
1049
Create a span selector in *ax*. When a selection is made, clear
1050
1050
the span and call *onselect* with::
@@ -1062,6 +1062,9 @@ def __init__(self, ax, onselect, direction, minspan=None, useblit=False,
1062
1062
1063
1063
Set the visible attribute to *False* if you want to turn off
1064
1064
the functionality of the span selector
1065
+
1066
+ If *span_stays* is True, the span stays visble after making
1067
+ a valid selection.
1065
1068
"""
1066
1069
AxesWidget .__init__ (self , ax )
1067
1070
@@ -1081,7 +1084,8 @@ def __init__(self, ax, onselect, direction, minspan=None, useblit=False,
1081
1084
self .onselect = onselect
1082
1085
self .onmove_callback = onmove_callback
1083
1086
self .minspan = minspan
1084
-
1087
+ self .span_stays = span_stays
1088
+
1085
1089
# Needed when dragging out of axes
1086
1090
self .buttonDown = False
1087
1091
self .prev = (0 , 0 )
@@ -1116,7 +1120,13 @@ def new_axes(self, ax):
1116
1120
transform = trans ,
1117
1121
visible = False ,
1118
1122
** self .rectprops )
1119
-
1123
+ if self .span_stays :
1124
+ self .stay_rect = Rectangle ((0 , 0 ), w , h ,
1125
+ transform = trans ,
1126
+ visible = False ,
1127
+ ** self .rectprops )
1128
+ self .ax .add_patch (self .stay_rect )
1129
+
1120
1130
if not self .useblit :
1121
1131
self .ax .add_patch (self .rect )
1122
1132
@@ -1140,6 +1150,9 @@ def press(self, event):
1140
1150
self .buttonDown = True
1141
1151
1142
1152
self .rect .set_visible (self .visible )
1153
+ if self .span_stays :
1154
+ self .stay_rect .set_visible (False )
1155
+
1143
1156
if self .direction == 'horizontal' :
1144
1157
self .pressv = event .xdata
1145
1158
else :
@@ -1155,6 +1168,14 @@ def release(self, event):
1155
1168
self .buttonDown = False
1156
1169
1157
1170
self.rect .set_visible (False )
1171
+
1172
+ if self .span_stays :
1173
+ self .stay_rect .set_x (self .rect .get_x ())
1174
+ self .stay_rect .set_y (self .rect .get_y ())
1175
+ self .stay_rect .set_width (self .rect .get_width ())
1176
+ self .stay_rect .set_height (self .rect .get_height ())
1177
+ self .stay_rect .set_visible (True )
1178
+
1158
1179
self .canvas .draw ()
1159
1180
vmin = self .pressv
1160
1181
if self .direction == 'horizontal' :
0 commit comments