[add] improved filteroptions and fixed some bugs
This commit is contained in:
parent
8c9fded873
commit
fb4753ca83
4
PyLoT.py
4
PyLoT.py
@ -367,7 +367,7 @@ class MainWindow(QMainWindow):
|
|||||||
None, paraIcon,
|
None, paraIcon,
|
||||||
"Modify Parameter")
|
"Modify Parameter")
|
||||||
self.filterAction = self.createAction(self, "&Filter ...",
|
self.filterAction = self.createAction(self, "&Filter ...",
|
||||||
self.plotWaveformDataThread,
|
self.filterWaveformData,
|
||||||
"Ctrl+F", self.filter_icon,
|
"Ctrl+F", self.filter_icon,
|
||||||
"""Toggle un-/filtered waveforms
|
"""Toggle un-/filtered waveforms
|
||||||
to be displayed, according to the
|
to be displayed, according to the
|
||||||
@ -1631,7 +1631,6 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
def finishWaveformDataPlot(self):
|
def finishWaveformDataPlot(self):
|
||||||
self.comparable = self.checkEvents4comparison()
|
self.comparable = self.checkEvents4comparison()
|
||||||
self.filterWaveformData()
|
|
||||||
if self.pg:
|
if self.pg:
|
||||||
self.finish_pg_plot()
|
self.finish_pg_plot()
|
||||||
else:
|
else:
|
||||||
@ -1797,6 +1796,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.adjustFilterOptions()
|
self.adjustFilterOptions()
|
||||||
else:
|
else:
|
||||||
self.get_data().resetWFData()
|
self.get_data().resetWFData()
|
||||||
|
self.plotWaveformDataThread()
|
||||||
self.drawPicks()
|
self.drawPicks()
|
||||||
self.draw()
|
self.draw()
|
||||||
|
|
||||||
|
@ -45,6 +45,8 @@
|
|||||||
<file>icons/key_W.png</file>
|
<file>icons/key_W.png</file>
|
||||||
<file>icons/key_Z.png</file>
|
<file>icons/key_Z.png</file>
|
||||||
<file>icons/filter.png</file>
|
<file>icons/filter.png</file>
|
||||||
|
<file>icons/filter_p.png</file>
|
||||||
|
<file>icons/filter_s.png</file>
|
||||||
<file>icons/sync.png</file>
|
<file>icons/sync.png</file>
|
||||||
<file>icons/zoom_0.png</file>
|
<file>icons/zoom_0.png</file>
|
||||||
<file>icons/zoom_in.png</file>
|
<file>icons/zoom_in.png</file>
|
||||||
|
BIN
icons/filter_p.png
Normal file
BIN
icons/filter_p.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.4 KiB |
BIN
icons/filter_s.png
Normal file
BIN
icons/filter_s.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.8 KiB |
1047
icons_rc_2.py
1047
icons_rc_2.py
File diff suppressed because it is too large
Load Diff
1047
icons_rc_3.py
1047
icons_rc_3.py
File diff suppressed because it is too large
Load Diff
@ -1237,15 +1237,15 @@ class PickDlg(QDialog):
|
|||||||
exitAction.triggered.connect(self.close)
|
exitAction.triggered.connect(self.close)
|
||||||
exitMenu.addAction(exitAction)
|
exitMenu.addAction(exitAction)
|
||||||
|
|
||||||
self.addPickPhases(menuBar)
|
|
||||||
|
|
||||||
# create matplotlib toolbar to inherit functionality
|
# create matplotlib toolbar to inherit functionality
|
||||||
self.figToolBar = NavigationToolbar2QT(self.multicompfig, self)
|
self.figToolBar = NavigationToolbar2QT(self.multicompfig, self)
|
||||||
self.figToolBar.hide()
|
self.figToolBar.hide()
|
||||||
|
|
||||||
# create icons
|
# create icons
|
||||||
filter_icon = QIcon()
|
filter_icon_p = QIcon()
|
||||||
filter_icon.addPixmap(QPixmap(':/icons/filter.png'))
|
filter_icon_p.addPixmap(QPixmap(':/icons/filter_p.png'))
|
||||||
|
filter_icon_s = QIcon()
|
||||||
|
filter_icon_s.addPixmap(QPixmap(':/icons/filter_s.png'))
|
||||||
zoom_icon = QIcon()
|
zoom_icon = QIcon()
|
||||||
zoom_icon.addPixmap(QPixmap(':/icons/zoom_in.png'))
|
zoom_icon.addPixmap(QPixmap(':/icons/zoom_in.png'))
|
||||||
home_icon = QIcon()
|
home_icon = QIcon()
|
||||||
@ -1254,11 +1254,20 @@ class PickDlg(QDialog):
|
|||||||
del_icon.addPixmap(QPixmap(':/icons/delete.png'))
|
del_icon.addPixmap(QPixmap(':/icons/delete.png'))
|
||||||
|
|
||||||
# create actions
|
# create actions
|
||||||
self.filterAction = createAction(parent=self, text='Filter',
|
self.filterActionP = createAction(parent=self, text='Apply P Filter',
|
||||||
slot=self.filterWFData,
|
slot=self.filterP,
|
||||||
icon=filter_icon,
|
icon=filter_icon_p,
|
||||||
tip='Toggle filtered/original'
|
tip='Toggle filtered/original'
|
||||||
' waveforms')
|
' waveforms',
|
||||||
|
checkable=True,
|
||||||
|
shortcut='Ctrl+F')
|
||||||
|
self.filterActionS = createAction(parent=self, text='Apply S Filter',
|
||||||
|
slot=self.filterS,
|
||||||
|
icon=filter_icon_s,
|
||||||
|
tip='Toggle filtered/original'
|
||||||
|
' waveforms',
|
||||||
|
checkable=True,
|
||||||
|
shortcut='Shift+S')
|
||||||
self.zoomAction = createAction(parent=self, text='Zoom',
|
self.zoomAction = createAction(parent=self, text='Zoom',
|
||||||
slot=self.zoom, icon=zoom_icon,
|
slot=self.zoom, icon=zoom_icon,
|
||||||
tip='Zoom into waveform',
|
tip='Zoom into waveform',
|
||||||
@ -1270,6 +1279,8 @@ class PickDlg(QDialog):
|
|||||||
slot=self.delPicks, icon=del_icon,
|
slot=self.delPicks, icon=del_icon,
|
||||||
tip='Delete current picks.')
|
tip='Delete current picks.')
|
||||||
|
|
||||||
|
self.addPickPhases(menuBar)
|
||||||
|
|
||||||
# create other widget elements
|
# create other widget elements
|
||||||
phaseitems = [None] + list(FILTERDEFAULTS.keys())
|
phaseitems = [None] + list(FILTERDEFAULTS.keys())
|
||||||
|
|
||||||
@ -1302,7 +1313,8 @@ class PickDlg(QDialog):
|
|||||||
_dialtoolbar = QToolBar()
|
_dialtoolbar = QToolBar()
|
||||||
|
|
||||||
# fill toolbar with content
|
# fill toolbar with content
|
||||||
_dialtoolbar.addAction(self.filterAction)
|
_dialtoolbar.addAction(self.filterActionP)
|
||||||
|
_dialtoolbar.addAction(self.filterActionS)
|
||||||
_dialtoolbar.addWidget(self.p_button)
|
_dialtoolbar.addWidget(self.p_button)
|
||||||
_dialtoolbar.addWidget(self.s_button)
|
_dialtoolbar.addWidget(self.s_button)
|
||||||
_dialtoolbar.addAction(self.zoomAction)
|
_dialtoolbar.addAction(self.zoomAction)
|
||||||
@ -1509,12 +1521,14 @@ class PickDlg(QDialog):
|
|||||||
if phaseIndex == 0:
|
if phaseIndex == 0:
|
||||||
picksMenu.addSeparator()
|
picksMenu.addSeparator()
|
||||||
|
|
||||||
filterAction = createAction(parent=self, text="&Filter parameter ...",
|
filterOptionsAction = createAction(parent=self, text="&Filter parameter ...",
|
||||||
slot=self.filterOptions,
|
slot=self.filterOptions,
|
||||||
shortcut='Alt+F',
|
shortcut='Alt+F',
|
||||||
icon=self.orig_parent.filter_icon)
|
icon=self.orig_parent.filter_icon)
|
||||||
filterMenu = menuBar.addMenu('Filter')
|
filterMenu = menuBar.addMenu('Filter')
|
||||||
filterMenu.addAction(filterAction)
|
filterMenu.addAction(self.filterActionP)
|
||||||
|
filterMenu.addAction(self.filterActionS)
|
||||||
|
filterMenu.addAction(filterOptionsAction)
|
||||||
|
|
||||||
def filterOptions(self):
|
def filterOptions(self):
|
||||||
self.orig_parent.adjustFilterOptions()
|
self.orig_parent.adjustFilterOptions()
|
||||||
@ -2122,47 +2136,61 @@ class PickDlg(QDialog):
|
|||||||
def togglePickBlocker(self):
|
def togglePickBlocker(self):
|
||||||
return not self.pick_block
|
return not self.pick_block
|
||||||
|
|
||||||
def filterWFData(self):
|
def filterWFData(self, phase=None):
|
||||||
if self.pick_block:
|
if self.pick_block:
|
||||||
return
|
return
|
||||||
|
if not phase:
|
||||||
|
phase = self.currentPhase
|
||||||
self.cur_xlim = self.multicompfig.axes[0].get_xlim()
|
self.cur_xlim = self.multicompfig.axes[0].get_xlim()
|
||||||
self.cur_ylim = self.multicompfig.axes[0].get_ylim()
|
self.cur_ylim = self.multicompfig.axes[0].get_ylim()
|
||||||
#self.multicompfig.updateCurrentLimits()
|
#self.multicompfig.updateCurrentLimits()
|
||||||
data = self.getWFData().copy()
|
data = self.getWFData().copy()
|
||||||
old_title = self.multicompfig.axes[0].get_title()
|
old_title = self.multicompfig.axes[0].get_title()
|
||||||
title = None
|
title = None
|
||||||
phase = self.currentPhase
|
|
||||||
filtoptions = None
|
filtoptions = None
|
||||||
if phase:
|
if phase:
|
||||||
filtoptions = self.getFilterOptions(self.getPhaseID(phase)).parseFilterOptions()
|
filtoptions = self.getFilterOptions(self.getPhaseID(phase)).parseFilterOptions()
|
||||||
if self.filterAction.isChecked():
|
|
||||||
if not phase:
|
# if self.filterActionP.isChecked() or self.filterActionS.isChecked():
|
||||||
filtoptions = FilterOptionsDialog.getFilterObject()
|
# if not phase:
|
||||||
filtoptions = filtoptions.parseFilterOptions()
|
# filtoptions = FilterOptionsDialog.getFilterObject()
|
||||||
|
# filtoptions = filtoptions.parseFilterOptions()
|
||||||
|
|
||||||
|
title = self.getStation()
|
||||||
if filtoptions is not None:
|
if filtoptions is not None:
|
||||||
data.filter(**filtoptions)
|
data.filter(**filtoptions)
|
||||||
if not old_title.endswith(')'):
|
title += '({} filtered'.format(filtoptions['type'])
|
||||||
title = old_title + ' (filtered)'
|
for key, value in filtoptions.items():
|
||||||
elif not old_title.endswith(' (filtered)') and not old_title.endswith(', filtered)'):
|
if key == 'type':
|
||||||
title = old_title[:-1] + ', filtered)'
|
continue
|
||||||
else:
|
title += ' {}: {},'.format(key, value)
|
||||||
if old_title.endswith(' (filtered)'):
|
title += ')'
|
||||||
title = old_title.replace(' (filtered)', '')
|
|
||||||
elif old_title.endswith(', filtered)'):
|
|
||||||
title = old_title.replace(', filtered)', ')')
|
|
||||||
if title is None:
|
|
||||||
title = old_title
|
|
||||||
self.multicompfig.plotWFData(wfdata=data, title=title,
|
self.multicompfig.plotWFData(wfdata=data, title=title,
|
||||||
zoomx=self.getXLims(),
|
zoomx=self.getXLims(),
|
||||||
zoomy=self.getYLims())
|
zoomy=self.getYLims())
|
||||||
self.setPlotLabels()
|
self.setPlotLabels()
|
||||||
self.drawAllPicks()
|
self.drawAllPicks()
|
||||||
self.draw()
|
self.draw()
|
||||||
|
|
||||||
|
def filterP(self):
|
||||||
|
self.filterActionS.setChecked(False)
|
||||||
|
if self.filterActionP.isChecked():
|
||||||
|
self.filterWFData('P')
|
||||||
|
else:
|
||||||
|
self.resetPlot()
|
||||||
|
|
||||||
|
def filterS(self):
|
||||||
|
self.filterActionP.setChecked(False)
|
||||||
|
if self.filterActionS.isChecked():
|
||||||
|
self.filterWFData('S')
|
||||||
|
else:
|
||||||
|
self.resetPlot()
|
||||||
|
|
||||||
def resetPlot(self):
|
def resetPlot(self):
|
||||||
self.resetZoom()
|
self.resetZoom()
|
||||||
data = self.getWFData().copy()
|
data = self.getWFData().copy()
|
||||||
title = self.multicompfig.axes[0].get_title()
|
#title = self.multicompfig.axes[0].get_title()
|
||||||
|
title = self.getStation()
|
||||||
self.multicompfig.plotWFData(wfdata=data, title=title,
|
self.multicompfig.plotWFData(wfdata=data, title=title,
|
||||||
zoomx=self.getXLims(),
|
zoomx=self.getXLims(),
|
||||||
zoomy=self.getYLims())
|
zoomy=self.getYLims())
|
||||||
|
Loading…
Reference in New Issue
Block a user