[change] scroll zoom now part of WFwidget
This commit is contained in:
		
							parent
							
								
									47a79c7660
								
							
						
					
					
						commit
						3cfd2371fc
					
				| @ -611,6 +611,11 @@ class WaveformWidget(FigureCanvas): | ||||
|                                        color='m', lw=1) | ||||
|         # update labels of the entire widget | ||||
|         self.updateWidget(xlabel, ylabel, title) | ||||
| 
 | ||||
|         self.limits = {'x': None, | ||||
|                        'y': None} | ||||
| 
 | ||||
|         self.cidscroll = self.connectScrollEvent(self.scrollZoom) | ||||
|         try: | ||||
|             self.figure.tight_layout() | ||||
|         except: | ||||
| @ -622,6 +627,9 @@ class WaveformWidget(FigureCanvas): | ||||
|     def setPlotDict(self, key, value): | ||||
|         self.plotdict[key] = value | ||||
| 
 | ||||
|     def connectScrollEvent(self, slot): | ||||
|         return self.mpl_connect('scroll_event', slot) | ||||
| 
 | ||||
|     def clearPlotDict(self): | ||||
|         self.plotdict = dict() | ||||
| 
 | ||||
| @ -746,6 +754,51 @@ class WaveformWidget(FigureCanvas): | ||||
|                                         xycoords='axes fraction') | ||||
|         axann.set_bbox(dict(facecolor='lightgrey', alpha=.6)) | ||||
| 
 | ||||
|     def scrollZoom(self, gui_event, factor=2.): | ||||
| 
 | ||||
|         if not gui_event.xdata or not gui_event.ydata: | ||||
|             return | ||||
| 
 | ||||
|         self.updateCurrentLimits() | ||||
| 
 | ||||
|         if gui_event.button == 'up': | ||||
|             scale_factor = 1 / factor | ||||
|         elif gui_event.button == 'down': | ||||
|             # deal with zoom out | ||||
|             scale_factor = factor | ||||
|         else: | ||||
|             # deal with something that should never happen | ||||
|             scale_factor = 1 | ||||
|             print(gui_event.button) | ||||
| 
 | ||||
|         new_xlim = gui_event.xdata - \ | ||||
|                    scale_factor * (gui_event.xdata - self.getXLims()) | ||||
|         new_ylim = gui_event.ydata - \ | ||||
|                    scale_factor * (gui_event.ydata - self.getYLims()) | ||||
| 
 | ||||
|         new_xlim.sort() | ||||
|         global_x = self.getGlobalLimits('x') | ||||
|         global_y = self.getGlobalLimits('y') | ||||
|         new_xlim[0] = max(new_xlim[0], global_x[0]) | ||||
|         new_xlim[1] = min(new_xlim[1], global_x[1]) | ||||
|         new_ylim.sort() | ||||
|         new_ylim[0] = max(new_ylim[0], global_y[0]) | ||||
|         new_ylim[1] = min(new_ylim[1], global_y[1]) | ||||
| 
 | ||||
|         self.setXLims(new_xlim) | ||||
|         self.setYLims(new_ylim) | ||||
|         self.draw() | ||||
| 
 | ||||
|     def updateCurrentLimits(self): | ||||
|         self.setXLims(self.getXLims()) | ||||
|         self.setYLims(self.getYLims()) | ||||
| 
 | ||||
|     def getGlobalLimits(self, axis): | ||||
|         return self.limits[axis] | ||||
| 
 | ||||
|     def setGlobalLimits(self, axis, limits): | ||||
|         self.limits[axis] = limits | ||||
| 
 | ||||
| 
 | ||||
| class PhaseDefaults(QtGui.QDialog): | ||||
|     def __init__(self, parent=None, nrow=10, | ||||
| @ -897,6 +950,9 @@ class PickDlg(QDialog): | ||||
|         self.limits = {'x': xlims, | ||||
|                        'y': ylims} | ||||
| 
 | ||||
|         for ax, limit in self.limits.items(): | ||||
|             self.getPlotWidget().setGlobalLimits(ax, limit) | ||||
| 
 | ||||
|         self.updateCurrentLimits() | ||||
| 
 | ||||
|         # set plot labels | ||||
| @ -909,7 +965,9 @@ class PickDlg(QDialog): | ||||
|         self.cidpress = self.connectPressEvent(self.panPress) | ||||
|         self.cidmotion = self.connectMotionEvent(self.panMotion) | ||||
|         self.cidrelease = self.connectReleaseEvent(self.panRelease) | ||||
|         self.cidscroll = self.connectScrollEvent(self.scrollZoom) | ||||
|         self.cidscroll = self.connectScrollEvent(self.multicompfig.scrollZoom) | ||||
|         self.cidscroll_arr = self.connectScrollEvent(self.refreshArrivalsText) | ||||
|         self.cidscroll_ph = self.connectScrollEvent(self.refreshPhaseText) | ||||
| 
 | ||||
|         # init expected picks using obspy Taup | ||||
|         try: | ||||
| @ -1127,7 +1185,7 @@ class PickDlg(QDialog): | ||||
|     def drawArrivalsText(self): | ||||
|         return self.drawArrivals(True) | ||||
| 
 | ||||
|     def refreshArrivalsText(self): | ||||
|     def refreshArrivalsText(self, event=None): | ||||
|         self.removeArrivalsText() | ||||
|         self.drawArrivalsText() | ||||
| 
 | ||||
| @ -1205,7 +1263,11 @@ class PickDlg(QDialog): | ||||
|     def disconnectScrollEvent(self): | ||||
|         widget = self.getPlotWidget() | ||||
|         widget.mpl_disconnect(self.cidscroll) | ||||
|         widget.mpl_disconnect(self.cidscroll_arr) | ||||
|         widget.mpl_disconnect(self.cidscroll_ph) | ||||
|         self.cidscroll = None | ||||
|         self.cidscroll_arr = None | ||||
|         self.cidscroll_ph = None | ||||
| 
 | ||||
|     def connectScrollEvent(self, slot): | ||||
|         widget = self.getPlotWidget() | ||||
| @ -1817,7 +1879,7 @@ class PickDlg(QDialog): | ||||
|                 pass | ||||
|         self.phaseText = [] | ||||
| 
 | ||||
|     def refreshPhaseText(self): | ||||
|     def refreshPhaseText(self, event=None): | ||||
|         self.removePhaseText() | ||||
|         self.drawPhaseText() | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user