[add] pyqtgraph now part of Settings object; if installed will be used by default but can be deactivated

This commit is contained in:
Marcel Paffrath 2017-06-09 13:23:16 +02:00
parent b061c81b2c
commit 8e839df718
3 changed files with 50 additions and 26 deletions

View File

@ -45,6 +45,7 @@ from obspy import UTCDateTime
try: try:
import pyqtgraph as pg import pyqtgraph as pg
except: except:
print('QtPyLoT: Could not import pyqtgraph.')
pg = None pg = None
try: try:
@ -144,9 +145,6 @@ class MainWindow(QMainWindow):
self.dirty = False self.dirty = False
# setup UI
self.setupUi()
if settings.value("user/FullName", None) is None: if settings.value("user/FullName", None) is None:
fulluser = QInputDialog.getText(self, "Enter Name:", "Full name") fulluser = QInputDialog.getText(self, "Enter Name:", "Full name")
settings.setValue("user/FullName", fulluser) settings.setValue("user/FullName", fulluser)
@ -170,6 +168,9 @@ class MainWindow(QMainWindow):
settings.setValue('compclass', SetChannelComponents()) settings.setValue('compclass', SetChannelComponents())
settings.sync() settings.sync()
# setup UI
self.setupUi()
self.filteroptions = {} self.filteroptions = {}
self.pickDlgs = {} self.pickDlgs = {}
self.picks = {} self.picks = {}
@ -189,8 +190,6 @@ class MainWindow(QMainWindow):
self.setWindowTitle("PyLoT - do seismic processing the python way") self.setWindowTitle("PyLoT - do seismic processing the python way")
self.setWindowIcon(pylot_icon) self.setWindowIcon(pylot_icon)
xlab = self.startTime.strftime('seconds since %Y/%m/%d %H:%M:%S (%Z)')
_widget = QWidget() _widget = QWidget()
self._main_layout = QVBoxLayout() self._main_layout = QVBoxLayout()
@ -213,21 +212,13 @@ class MainWindow(QMainWindow):
self._main_layout.addWidget(self.tabs) self._main_layout.addWidget(self.tabs)
self.tabs.currentChanged.connect(self.refreshTabs) self.tabs.currentChanged.connect(self.refreshTabs)
# create central matplotlib figure canvas widget
plottitle = None#"Overview: {0} components ".format(self.getComponent())
if pg:
self.pg = True
self.dataPlot = WaveformWidgetPG(parent=self, xlabel=xlab, ylabel=None,
title=plottitle)
else:
self.pg = False
self.dataPlot = WaveformWidget(parent=self, xlabel=xlab, ylabel=None,
title=plottitle)
self.dataPlot.setCursor(Qt.CrossCursor)
# add scroll area used in case number of traces gets too high # add scroll area used in case number of traces gets too high
self.wf_scroll_area = QtGui.QScrollArea() self.wf_scroll_area = QtGui.QScrollArea()
# create central matplotlib figure canvas widget
self.pg = pg
self.init_wfWidget()
# init main widgets for main tabs # init main widgets for main tabs
wf_tab = QtGui.QWidget() wf_tab = QtGui.QWidget()
array_tab = QtGui.QWidget() array_tab = QtGui.QWidget()
@ -247,7 +238,6 @@ class MainWindow(QMainWindow):
self.tabs.addTab(events_tab, 'Eventlist') self.tabs.addTab(events_tab, 'Eventlist')
self.wf_layout.addWidget(self.wf_scroll_area) self.wf_layout.addWidget(self.wf_scroll_area)
self.wf_scroll_area.setWidget(self.dataPlot)
self.wf_scroll_area.setWidgetResizable(True) self.wf_scroll_area.setWidgetResizable(True)
self.init_array_tab() self.init_array_tab()
self.init_event_table() self.init_event_table()
@ -521,6 +511,24 @@ class MainWindow(QMainWindow):
self.setCentralWidget(_widget) self.setCentralWidget(_widget)
def init_wfWidget(self):
settings = QSettings()
xlab = self.startTime.strftime('seconds since %Y/%m/%d %H:%M:%S (%Z)')
plottitle = None#"Overview: {0} components ".format(self.getComponent())
self.disconnectWFplotEvents()
if str(settings.value('pyqtgraphic')) == 'false' or not pg:
self.pg = False
self.dataPlot = WaveformWidget(parent=self, xlabel=xlab, ylabel=None,
title=plottitle)
else:
self.pg = True
self.dataPlot = WaveformWidgetPG(parent=self, xlabel=xlab, ylabel=None,
title=plottitle)
self.dataPlot.setCursor(Qt.CrossCursor)
self.wf_scroll_area.setWidget(self.dataPlot)
if self.get_current_event():
self.plotWaveformDataThread()
def init_ref_test_buttons(self): def init_ref_test_buttons(self):
''' '''
Initiate/create buttons for assigning events containing manual picks to reference or test set. Initiate/create buttons for assigning events containing manual picks to reference or test set.
@ -1662,12 +1670,12 @@ class MainWindow(QMainWindow):
plotID = self.getStationID(station) plotID = self.getStationID(station)
if plotID is None: if plotID is None:
return return
if pg: if self.pg:
pw = self.getPlotWidget().plotWidget pw = self.getPlotWidget().plotWidget
else: else:
ax = self.getPlotWidget().axes ax = self.getPlotWidget().axes
ylims = np.array([-.5, +.5]) + plotID ylims = np.array([-.5, +.5]) + plotID
if pg: if self.pg:
dashed = QtCore.Qt.DashLine dashed = QtCore.Qt.DashLine
dotted = QtCore.Qt.DotLine dotted = QtCore.Qt.DotLine
phase_col = { phase_col = {
@ -1699,7 +1707,7 @@ class MainWindow(QMainWindow):
if not spe and epp and lpp: if not spe and epp and lpp:
spe = symmetrize_error(mpp - epp, lpp - mpp) spe = symmetrize_error(mpp - epp, lpp - mpp)
if pg: if self.pg:
if picktype == 'manual': if picktype == 'manual':
if picks['epp'] and picks['lpp']: if picks['epp'] and picks['lpp']:
pw.plot([epp, epp], ylims, pw.plot([epp, epp], ylims,
@ -2252,6 +2260,7 @@ class MainWindow(QMainWindow):
self._props = PropertiesDlg(self, infile=self.infile) self._props = PropertiesDlg(self, infile=self.infile)
if self._props.exec_(): if self._props.exec_():
self.init_wfWidget()
return return
def helpHelp(self): def helpHelp(self):

View File

@ -1 +1 @@
d6dd-dirty b061-dirty

View File

@ -2373,6 +2373,7 @@ class PropTab(QWidget):
def resetValues(self, infile=None): def resetValues(self, infile=None):
return None return None
class InputsTab(PropTab): class InputsTab(PropTab):
def __init__(self, parent, infile=None): def __init__(self, parent, infile=None):
@ -2484,6 +2485,7 @@ class GraphicsTab(PropTab):
def __init__(self, parent=None): def __init__(self, parent=None):
super(GraphicsTab, self).__init__(parent) super(GraphicsTab, self).__init__(parent)
self.init_layout() self.init_layout()
self.add_pg_cb()
self.add_nth_sample() self.add_nth_sample()
self.setLayout(self.main_layout) self.setLayout(self.main_layout)
@ -2498,15 +2500,28 @@ class GraphicsTab(PropTab):
self.spinbox_nth_sample = QtGui.QSpinBox() self.spinbox_nth_sample = QtGui.QSpinBox()
label = QLabel('nth sample') label = QLabel('nth sample')
label.setToolTip('Plot every nth sample (to speed up plotting)')
self.spinbox_nth_sample.setMinimum(1) self.spinbox_nth_sample.setMinimum(1)
self.spinbox_nth_sample.setMaximum(10e3) self.spinbox_nth_sample.setMaximum(10e3)
self.spinbox_nth_sample.setValue(int(nth_sample)) self.spinbox_nth_sample.setValue(int(nth_sample))
label.setToolTip('Plot every nth sample (to speed up plotting)') self.main_layout.addWidget(label, 1, 0)
self.main_layout.addWidget(label, 0, 0) self.main_layout.addWidget(self.spinbox_nth_sample, 1, 1)
self.main_layout.addWidget(self.spinbox_nth_sample, 0, 1)
def add_pg_cb(self):
text = {True: 'Use pyqtgraphic library for plotting',
False: 'Cannot use library: pyqtgraphic not found on system'}
label = QLabel('PyQt graphic')
label.setToolTip(text[bool(pg)])
label.setEnabled(bool(pg))
self.checkbox_pg = QtGui.QCheckBox()
self.checkbox_pg.setEnabled(bool(pg))
self.checkbox_pg.setChecked(bool(pg))
self.main_layout.addWidget(label, 0, 0)
self.main_layout.addWidget(self.checkbox_pg, 0, 1)
def getValues(self): def getValues(self):
values = {'nth_sample': self.spinbox_nth_sample.value()} values = {'nth_sample': self.spinbox_nth_sample.value(),
'pyqtgraphic': self.checkbox_pg.isChecked()}
return values return values