added some buttons for setting current event to ref/test, made ref/test color settings 'global', some fixes
This commit is contained in:
parent
cf971d6a87
commit
e911262c3e
102
QtPyLoT.py
102
QtPyLoT.py
@ -105,6 +105,12 @@ class MainWindow(QMainWindow):
|
|||||||
self.poS_id = None
|
self.poS_id = None
|
||||||
self.ae_id = None
|
self.ae_id = None
|
||||||
|
|
||||||
|
# default colors for ref/test event
|
||||||
|
self._colors = {
|
||||||
|
'ref': QtGui.QColor(200, 210, 230, 255),
|
||||||
|
'test': QtGui.QColor(200, 230, 200, 255)
|
||||||
|
}
|
||||||
|
|
||||||
# UI has to be set up before(!) children widgets are about to show up
|
# UI has to be set up before(!) children widgets are about to show up
|
||||||
self.createAction = createAction
|
self.createAction = createAction
|
||||||
# read settings
|
# read settings
|
||||||
@ -170,13 +176,16 @@ class MainWindow(QMainWindow):
|
|||||||
_widget = QWidget()
|
_widget = QWidget()
|
||||||
self._main_layout = QVBoxLayout()
|
self._main_layout = QVBoxLayout()
|
||||||
|
|
||||||
# add event combo box
|
# add event combo box and ref/test buttons
|
||||||
self.eventBox = self.createEventBox()
|
self.eventBox = self.createEventBox()
|
||||||
self.eventBox.setMaxVisibleItems(30)
|
self.eventBox.setMaxVisibleItems(30)
|
||||||
self.eventBox.setEnabled(False)
|
self.eventBox.setEnabled(False)
|
||||||
|
self.init_ref_test_buttons()
|
||||||
self._event_layout = QHBoxLayout()
|
self._event_layout = QHBoxLayout()
|
||||||
self._event_layout.addWidget(QLabel('Event: '))
|
self._event_layout.addWidget(QLabel('Event: '))
|
||||||
self._event_layout.addWidget(self.eventBox)
|
self._event_layout.addWidget(self.eventBox)
|
||||||
|
self._event_layout.addWidget(self.ref_event_button)
|
||||||
|
self._event_layout.addWidget(self.test_event_button)
|
||||||
self._event_layout.setStretch(1,1) #set stretch of item 1 to 1
|
self._event_layout.setStretch(1,1) #set stretch of item 1 to 1
|
||||||
self._main_layout.addLayout(self._event_layout)
|
self._main_layout.addLayout(self._event_layout)
|
||||||
self.eventBox.activated.connect(self.refreshEvents)
|
self.eventBox.activated.connect(self.refreshEvents)
|
||||||
@ -470,6 +479,21 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
self.setCentralWidget(_widget)
|
self.setCentralWidget(_widget)
|
||||||
|
|
||||||
|
def init_ref_test_buttons(self):
|
||||||
|
self.ref_event_button = QtGui.QPushButton('Ref')
|
||||||
|
self.test_event_button = QtGui.QPushButton('Test')
|
||||||
|
self.ref_event_button.setToolTip('Set manual picks of current '+
|
||||||
|
'event as reference picks for autopicker tuning.')
|
||||||
|
self.test_event_button.setToolTip('Set manual picks of current '+
|
||||||
|
'event as test picks for autopicker testing.')
|
||||||
|
self.ref_event_button.setCheckable(True)
|
||||||
|
self.test_event_button.setCheckable(True)
|
||||||
|
self.set_button_color(self.ref_event_button, self._colors['ref'])
|
||||||
|
self.set_button_color(self.test_event_button, self._colors['test'])
|
||||||
|
self.ref_event_button.clicked.connect(self.toggleRef)
|
||||||
|
self.test_event_button.clicked.connect(self.toggleTest)
|
||||||
|
self.ref_event_button.setEnabled(False)
|
||||||
|
self.test_event_button.setEnabled(False)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def metadata(self):
|
def metadata(self):
|
||||||
@ -567,6 +591,16 @@ class MainWindow(QMainWindow):
|
|||||||
def add_recentfile(self, event):
|
def add_recentfile(self, event):
|
||||||
self.recentfiles.insert(0, event)
|
self.recentfiles.insert(0, event)
|
||||||
|
|
||||||
|
def set_button_color(self, button, color = None):
|
||||||
|
if type(color) == QtGui.QColor:
|
||||||
|
palette = button.palette()
|
||||||
|
role = button.backgroundRole()
|
||||||
|
palette.setColor(role, color)
|
||||||
|
button.setPalette(palette)
|
||||||
|
button.setAutoFillBackground(True)
|
||||||
|
elif type(color) == str or not color:
|
||||||
|
button.setStyleSheet("background-color: {}".format(color))
|
||||||
|
|
||||||
def getWFFnames(self):
|
def getWFFnames(self):
|
||||||
try:
|
try:
|
||||||
evt = self.get_data().get_evt_data()
|
evt = self.get_data().get_evt_data()
|
||||||
@ -603,13 +637,13 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
def getWFFnames_from_eventbox(self, eventlist=None, eventbox=None):
|
def getWFFnames_from_eventbox(self, eventlist=None, eventbox=None):
|
||||||
if self.dataStructure:
|
if self.dataStructure:
|
||||||
directory = self.getCurrentEventPath(eventbox)
|
directory = self.get_current_event_path(eventbox)
|
||||||
fnames = [os.path.join(directory, f) for f in os.listdir(directory)]
|
fnames = [os.path.join(directory, f) for f in os.listdir(directory)]
|
||||||
else:
|
else:
|
||||||
raise DatastructureError('not specified')
|
raise DatastructureError('not specified')
|
||||||
return fnames
|
return fnames
|
||||||
|
|
||||||
def getCurrentEvent(self, eventlist=None, eventbox=None):
|
def get_current_event(self, eventlist=None, eventbox=None):
|
||||||
if not eventlist:
|
if not eventlist:
|
||||||
eventlist = self.project.eventlist
|
eventlist = self.project.eventlist
|
||||||
if not eventbox:
|
if not eventbox:
|
||||||
@ -617,7 +651,7 @@ class MainWindow(QMainWindow):
|
|||||||
index = eventbox.currentIndex()
|
index = eventbox.currentIndex()
|
||||||
return eventbox.itemData(index)
|
return eventbox.itemData(index)
|
||||||
|
|
||||||
def getCurrentEventPath(self, eventbox=None):
|
def get_current_event_path(self, eventbox=None):
|
||||||
if not eventbox:
|
if not eventbox:
|
||||||
eventbox = self.eventBox
|
eventbox = self.eventBox
|
||||||
return str(eventbox.currentText().split('|')[0]).strip()
|
return str(eventbox.currentText().split('|')[0]).strip()
|
||||||
@ -720,18 +754,18 @@ class MainWindow(QMainWindow):
|
|||||||
item_ref = QtGui.QStandardItem()#str(event_ref))
|
item_ref = QtGui.QStandardItem()#str(event_ref))
|
||||||
item_test = QtGui.QStandardItem()#str(event_test))
|
item_test = QtGui.QStandardItem()#str(event_test))
|
||||||
if event_ref:
|
if event_ref:
|
||||||
item_ref.setBackground(QtGui.QColor(200, 210, 230, 255))
|
item_ref.setBackground(self._colors['ref'])
|
||||||
if event_test:
|
if event_test:
|
||||||
item_test.setBackground(QtGui.QColor(200, 230, 200, 255))
|
item_test.setBackground(self._colors['test'])
|
||||||
item_notes = QtGui.QStandardItem(event.notes)
|
item_notes = QtGui.QStandardItem(event.notes)
|
||||||
|
|
||||||
openIcon = self.style().standardIcon(QStyle.SP_DirOpenIcon)
|
openIcon = self.style().standardIcon(QStyle.SP_DirOpenIcon)
|
||||||
item_path.setIcon(openIcon)
|
item_path.setIcon(openIcon)
|
||||||
# if ref: set different color e.g.
|
# if ref: set different color e.g.
|
||||||
# if event_ref:
|
# if event_ref:
|
||||||
# item.setBackground(QtGui.QColor(200, 210, 230, 255))
|
# item.setBackground(self._colors['ref'])
|
||||||
# if event_test:
|
# if event_test:
|
||||||
# item.setBackground(QtGui.QColor(200, 230, 200, 255))
|
# itemt.setBackground(self._colors['test'])
|
||||||
# item.setForeground(QtGui.QColor('black'))
|
# item.setForeground(QtGui.QColor('black'))
|
||||||
# font = item.font()
|
# font = item.font()
|
||||||
# font.setPointSize(10)
|
# font.setPointSize(10)
|
||||||
@ -750,6 +784,9 @@ class MainWindow(QMainWindow):
|
|||||||
raise ValueError(message)
|
raise ValueError(message)
|
||||||
eventBox.setItemData(id, event)
|
eventBox.setItemData(id, event)
|
||||||
eventBox.setCurrentIndex(index)
|
eventBox.setCurrentIndex(index)
|
||||||
|
self.refreshRefTestButtons()
|
||||||
|
if self.get_current_event():
|
||||||
|
self.enableRefTestButtons(bool(self.get_current_event().picks))
|
||||||
|
|
||||||
def filename_from_action(self, action):
|
def filename_from_action(self, action):
|
||||||
if action.data() is None:
|
if action.data() is None:
|
||||||
@ -915,6 +952,39 @@ class MainWindow(QMainWindow):
|
|||||||
return self.saveData()
|
return self.saveData()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def enableRefTestButtons(self, bool):
|
||||||
|
self.ref_event_button.setEnabled(bool)
|
||||||
|
self.test_event_button.setEnabled(bool)
|
||||||
|
|
||||||
|
def refreshRefTestButtons(self):
|
||||||
|
event = self.get_current_event()
|
||||||
|
if event:
|
||||||
|
self.ref_event_button.setChecked(event.isRefEvent())
|
||||||
|
self.test_event_button.setChecked(event.isTestEvent())
|
||||||
|
return
|
||||||
|
self.ref_event_button.setChecked(False)
|
||||||
|
self.test_event_button.setChecked(False)
|
||||||
|
|
||||||
|
def toggleRef(self):
|
||||||
|
ref = self.ref_event_button.isChecked()
|
||||||
|
self.test_event_button.setChecked(False)
|
||||||
|
self.get_current_event().setTestEvent(False)
|
||||||
|
self.get_current_event().setRefEvent(ref)
|
||||||
|
self.fill_eventbox()
|
||||||
|
self.refreshTabs()
|
||||||
|
if self.tap:
|
||||||
|
self.tap.fill_eventbox()
|
||||||
|
|
||||||
|
def toggleTest(self):
|
||||||
|
test = self.test_event_button.isChecked()
|
||||||
|
self.ref_event_button.setChecked(False)
|
||||||
|
self.get_current_event().setRefEvent(False)
|
||||||
|
self.get_current_event().setTestEvent(test)
|
||||||
|
self.fill_eventbox()
|
||||||
|
self.refreshTabs()
|
||||||
|
if self.tap:
|
||||||
|
self.tap.fill_eventbox()
|
||||||
|
|
||||||
def refreshEvents(self):
|
def refreshEvents(self):
|
||||||
self._eventChanged = [True, True]
|
self._eventChanged = [True, True]
|
||||||
self.refreshTabs()
|
self.refreshTabs()
|
||||||
@ -922,7 +992,7 @@ class MainWindow(QMainWindow):
|
|||||||
def refreshTabs(self):
|
def refreshTabs(self):
|
||||||
plotted=False
|
plotted=False
|
||||||
if self._eventChanged[0] or self._eventChanged[1]:
|
if self._eventChanged[0] or self._eventChanged[1]:
|
||||||
event = self.getCurrentEvent()
|
event = self.get_current_event()
|
||||||
if not event.picks:
|
if not event.picks:
|
||||||
self.picks = {}
|
self.picks = {}
|
||||||
else:
|
else:
|
||||||
@ -998,7 +1068,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.openautopicksaction.setEnabled(True)
|
self.openautopicksaction.setEnabled(True)
|
||||||
self.loadpilotevent.setEnabled(True)
|
self.loadpilotevent.setEnabled(True)
|
||||||
self.saveEventAction.setEnabled(True)
|
self.saveEventAction.setEnabled(True)
|
||||||
event = self.getCurrentEvent()
|
event = self.get_current_event()
|
||||||
if event.picks:
|
if event.picks:
|
||||||
self.picks = event.picks
|
self.picks = event.picks
|
||||||
self.drawPicks(picktype='manual')
|
self.drawPicks(picktype='manual')
|
||||||
@ -1169,7 +1239,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.setDirty(True)
|
self.setDirty(True)
|
||||||
self.update_status('picks accepted ({0})'.format(station))
|
self.update_status('picks accepted ({0})'.format(station))
|
||||||
replot = self.addPicks(station, pickDlg.getPicks())
|
replot = self.addPicks(station, pickDlg.getPicks())
|
||||||
self.getCurrentEvent().setPick(station, pickDlg.getPicks())
|
self.get_current_event().setPick(station, pickDlg.getPicks())
|
||||||
if replot:
|
if replot:
|
||||||
self.plotWaveformData()
|
self.plotWaveformData()
|
||||||
self.drawPicks()
|
self.drawPicks()
|
||||||
@ -1288,10 +1358,10 @@ class MainWindow(QMainWindow):
|
|||||||
def updatePicks(self, type='manual'):
|
def updatePicks(self, type='manual'):
|
||||||
picks = picksdict_from_picks(evt=self.get_data(type).get_evt_data())
|
picks = picksdict_from_picks(evt=self.get_data(type).get_evt_data())
|
||||||
if type == 'manual':
|
if type == 'manual':
|
||||||
self.getCurrentEvent().addPicks(picks)
|
self.get_current_event().addPicks(picks)
|
||||||
self.picks.update(picks)
|
self.picks.update(picks)
|
||||||
elif type == 'auto':
|
elif type == 'auto':
|
||||||
self.getCurrentEvent().addAutopicks(picks)
|
self.get_current_event().addAutopicks(picks)
|
||||||
self.autopicks.update(picks)
|
self.autopicks.update(picks)
|
||||||
self.check4Comparison()
|
self.check4Comparison()
|
||||||
|
|
||||||
@ -1460,7 +1530,7 @@ class MainWindow(QMainWindow):
|
|||||||
if not self.array_map:
|
if not self.array_map:
|
||||||
return
|
return
|
||||||
# refresh with new picks here!!!
|
# refresh with new picks here!!!
|
||||||
self.array_map.refresh_drawings(self.getCurrentEvent().getPicks())
|
self.array_map.refresh_drawings(self.get_current_event().getPicks())
|
||||||
self._eventChanged[1] = False
|
self._eventChanged[1] = False
|
||||||
|
|
||||||
def init_event_table(self, tabindex=2):
|
def init_event_table(self, tabindex=2):
|
||||||
@ -1528,8 +1598,8 @@ class MainWindow(QMainWindow):
|
|||||||
item_test = QtGui.QTableWidgetItem()
|
item_test = QtGui.QTableWidgetItem()
|
||||||
item_notes = QtGui.QTableWidgetItem()
|
item_notes = QtGui.QTableWidgetItem()
|
||||||
|
|
||||||
item_ref.setBackground(QtGui.QColor(200, 210, 230, 255))
|
item_ref.setBackground(self._colors['ref'])
|
||||||
item_test.setBackground(QtGui.QColor(200, 230, 200, 255))
|
item_test.setBackground(self._colors['test'])
|
||||||
item_path.setText(event.path)
|
item_path.setText(event.path)
|
||||||
item_notes.setText(event.notes)
|
item_notes.setText(event.notes)
|
||||||
set_enabled(item_path, True, False)
|
set_enabled(item_path, True, False)
|
||||||
|
@ -1 +1 @@
|
|||||||
1143-dirty
|
cf971-dirty
|
||||||
|
@ -48,31 +48,33 @@ class map_projection(QtGui.QWidget):
|
|||||||
pickDlg = PickDlg(self, parameter=self._parent._inputs,
|
pickDlg = PickDlg(self, parameter=self._parent._inputs,
|
||||||
data=data.select(station=station),
|
data=data.select(station=station),
|
||||||
station=station,
|
station=station,
|
||||||
picks=self._parent.getCurrentEvent().getPick(station),
|
picks=self._parent.get_current_event().getPick(station),
|
||||||
autopicks=self._parent.getCurrentEvent().getAutopick(station))
|
autopicks=self._parent.get_current_event().getAutopick(station))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
message = 'Could not generate Plot for station {st}.\n{er}'.format(st=station, er=e)
|
message = 'Could not generate Plot for station {st}.\n{er}'.format(st=station, er=e)
|
||||||
self._warn(message)
|
self._warn(message)
|
||||||
print(message, e)
|
print(message, e)
|
||||||
|
return
|
||||||
pyl_mw = self._parent
|
pyl_mw = self._parent
|
||||||
#try:
|
try:
|
||||||
if pickDlg.exec_():
|
if pickDlg.exec_():
|
||||||
pyl_mw.setDirty(True)
|
pyl_mw.setDirty(True)
|
||||||
pyl_mw.update_status('picks accepted ({0})'.format(station))
|
pyl_mw.update_status('picks accepted ({0})'.format(station))
|
||||||
replot = pyl_mw.getCurrentEvent().setPick(station, pickDlg.getPicks())
|
replot = pyl_mw.get_current_event().setPick(station, pickDlg.getPicks())
|
||||||
if replot:
|
self._refresh_drawings()
|
||||||
pyl_mw.plotWaveformData()
|
if replot:
|
||||||
pyl_mw.drawPicks()
|
pyl_mw.plotWaveformData()
|
||||||
pyl_mw.draw()
|
pyl_mw.drawPicks()
|
||||||
|
pyl_mw.draw()
|
||||||
|
else:
|
||||||
|
pyl_mw.drawPicks(station)
|
||||||
|
pyl_mw.draw()
|
||||||
else:
|
else:
|
||||||
pyl_mw.drawPicks(station)
|
pyl_mw.update_status('picks discarded ({0})'.format(station))
|
||||||
pyl_mw.draw()
|
except Exception as e:
|
||||||
else:
|
message = 'Could not save picks for station {st}.\n{er}'.format(st=station, er=e)
|
||||||
pyl_mw.update_status('picks discarded ({0})'.format(station))
|
self._warn(message)
|
||||||
# except Exception as e:
|
print(message, e)
|
||||||
# message = 'Could not save picks for station {st}.\n{er}'.format(st=station, er=e)
|
|
||||||
# self._warn(message)
|
|
||||||
# print(message, e)
|
|
||||||
|
|
||||||
def connectSignals(self):
|
def connectSignals(self):
|
||||||
self.comboBox_phase.currentIndexChanged.connect(self._refresh_drawings)
|
self.comboBox_phase.currentIndexChanged.connect(self._refresh_drawings)
|
||||||
|
@ -765,7 +765,14 @@ class PickDlg(QDialog):
|
|||||||
self.currentPhase = 'S'
|
self.currentPhase = 'S'
|
||||||
|
|
||||||
def set_button_color(self, button, color = None):
|
def set_button_color(self, button, color = None):
|
||||||
button.setStyleSheet("background-color: {}".format(color))
|
if type(color) == QtGui.QColor:
|
||||||
|
palette = button.palette()
|
||||||
|
role = button.backgroundRole()
|
||||||
|
palette.setColor(role, color)
|
||||||
|
button.setPalette(palette)
|
||||||
|
button.setAutoFillBackground(True)
|
||||||
|
elif type(color) == str or not color:
|
||||||
|
button.setStyleSheet("background-color: {}".format(color))
|
||||||
|
|
||||||
def leave_picking_mode(self):
|
def leave_picking_mode(self):
|
||||||
self.currentPhase = None
|
self.currentPhase = None
|
||||||
@ -1396,7 +1403,7 @@ class TuneAutopicker(QWidget):
|
|||||||
for station in stations:
|
for station in stations:
|
||||||
item = QtGui.QStandardItem(str(station))
|
item = QtGui.QStandardItem(str(station))
|
||||||
if station in self.get_current_event().picks:
|
if station in self.get_current_event().picks:
|
||||||
item.setBackground(QtGui.QColor(200, 210, 230, 255))
|
item.setBackground(self.parent._colors['ref'])
|
||||||
model.appendRow(item)
|
model.appendRow(item)
|
||||||
|
|
||||||
def init_figure_tabs(self):
|
def init_figure_tabs(self):
|
||||||
@ -1525,11 +1532,11 @@ class TuneAutopicker(QWidget):
|
|||||||
y_top = 0.9*ax.get_ylim()[1]
|
y_top = 0.9*ax.get_ylim()[1]
|
||||||
y_bot = 0.9*ax.get_ylim()[0]
|
y_bot = 0.9*ax.get_ylim()[0]
|
||||||
ax.vlines(pick, y_bot, y_top,
|
ax.vlines(pick, y_bot, y_top,
|
||||||
color='cyan', linewidth=2, label='manual P Onset')
|
color='teal', linewidth=2, label='manual P Onset')
|
||||||
ax.plot([pick-0.5, pick+0.5],
|
ax.plot([pick-0.5, pick+0.5],
|
||||||
[y_bot, y_bot], linewidth=2, color='cyan')
|
[y_bot, y_bot], linewidth=2, color='teal')
|
||||||
ax.plot([pick-0.5, pick+0.5],
|
ax.plot([pick-0.5, pick+0.5],
|
||||||
[y_top, y_top], linewidth=2, color='cyan')
|
[y_top, y_top], linewidth=2, color='teal')
|
||||||
ax.legend()
|
ax.legend()
|
||||||
|
|
||||||
def plot_manual_Spick_to_ax(self, ax, pick):
|
def plot_manual_Spick_to_ax(self, ax, pick):
|
||||||
|
Loading…
Reference in New Issue
Block a user