Major changes: PyLoT GUI opens immediately when calling PyLoT, buttons are deactivated and reactivated as soon as waveforms are loaded.

This commit is contained in:
Ludger Küperkoch 2017-04-10 14:24:39 +02:00
parent 0656a571cd
commit 95dce91ada

View File

@ -73,22 +73,14 @@ class MainWindow(QMainWindow):
def __init__(self, parent=None): def __init__(self, parent=None):
super(MainWindow, self).__init__(parent) super(MainWindow, self).__init__(parent)
# UI has to be set up before(!) children widgets are about to show up
self.createAction = createAction self.createAction = createAction
# read settings # read settings
settings = QSettings() settings = QSettings()
# check for default pylot.in-file self.recentfiles = settings.value("data/recentEvents", [])
infile = os.path.join(os.path.expanduser('~'), '.pylot', 'pylot.in') self.dispComponent = str(settings.value("plotting/dispComponent", "Z"))
if os.path.isfile(infile)== False: self.setupUi()
infile = QFileDialog().getOpenFileName(caption='Choose PyLoT-input file')
if not os.path.exists(infile[0]):
QMessageBox.warning(self, "PyLoT Warning",
"No PyLoT-input file declared!")
sys.exit(0)
self.infile = infile[0]
else:
self.infile = infile
self._inputs = AutoPickParameter(self.infile)
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)
@ -98,14 +90,12 @@ class MainWindow(QMainWindow):
"Enter authority/institution name:", "Enter authority/institution name:",
"Authority") "Authority")
settings.setValue("agency_id", agency) settings.setValue("agency_id", agency)
self.recentfiles = settings.value("data/recentEvents", [])
self.fname = dict(manual=None, auto=None, loc=None) self.fname = dict(manual=None, auto=None, loc=None)
self.fnames = None self.fnames = None
self._stime = None self._stime = None
structure_setting = settings.value("data/Structure", "PILOT") structure_setting = settings.value("data/Structure", "PILOT")
self.dataStructure = DATASTRUCTURE[structure_setting]() self.dataStructure = DATASTRUCTURE[structure_setting]()
self.seismicPhase = str(settings.value("phase", "P")) self.seismicPhase = str(settings.value("phase", "P"))
self.dispComponent = str(settings.value("plotting/dispComponent", "Z"))
if settings.value("data/dataRoot", None) is None: if settings.value("data/dataRoot", None) is None:
dirname = QFileDialog().getExistingDirectory( dirname = QFileDialog().getExistingDirectory(
caption='Choose data root ...') caption='Choose data root ...')
@ -118,9 +108,6 @@ class MainWindow(QMainWindow):
self.autopicks = {} self.autopicks = {}
self.loc = False self.loc = False
# UI has to be set up before(!) children widgets are about to show up
self.setupUi()
# initialize event data # initialize event data
if self.recentfiles: if self.recentfiles:
lastEvent = self.getLastEvent() lastEvent = self.getLastEvent()
@ -129,18 +116,7 @@ class MainWindow(QMainWindow):
self.data = Data(self) self.data = Data(self)
self.autodata = Data(self) self.autodata = Data(self)
# load and display waveform data
self.dirty = False self.dirty = False
self.load_data()
finv = settings.value("inventoryFile", None)
if finv is not None:
self._metadata = read_metadata(finv)
else:
self._metadata = None
if self.loadWaveformData():
self.updateFilterOptions()
else:
sys.exit(0)
def setupUi(self): def setupUi(self):
@ -201,7 +177,7 @@ class MainWindow(QMainWindow):
n_icon.addPixmap(QPixmap(':/icons/key_N.png')) n_icon.addPixmap(QPixmap(':/icons/key_N.png'))
e_icon = QIcon() e_icon = QIcon()
e_icon.addPixmap(QPixmap(':/icons/key_E.png')) e_icon.addPixmap(QPixmap(':/icons/key_E.png'))
auto_icon = QIcon() auto_icon = QIcon(':/icons/autopick_button.png')
auto_icon.addPixmap(QPixmap(':/icons/autopick_button.png')) auto_icon.addPixmap(QPixmap(':/icons/autopick_button.png'))
locate_icon = QIcon() locate_icon = QIcon()
locate_icon.addPixmap(QPixmap(':/icons/locate_button.png')) locate_icon.addPixmap(QPixmap(':/icons/locate_button.png'))
@ -211,36 +187,43 @@ class MainWindow(QMainWindow):
self.createNewEvent, self.createNewEvent,
QKeySequence.New, newIcon, QKeySequence.New, newIcon,
"Create a new event.") "Create a new event.")
openmanualpicksaction = self.createAction(self, "Load &picks ...", self.openmanualpicksaction = self.createAction(self, "Load &picks ...",
self.load_data, self.load_data,
QKeySequence.Open, QKeySequence.Open,
manupicksicon, manupicksicon,
"Load manual picks for " "Load manual picks for "
"the displayed event.") "the displayed event.")
openmanualpicksaction.setData(None) self.openmanualpicksaction.setEnabled(False)
openautopicksaction = self.createAction(self, "Load &automatic picks " self.openmanualpicksaction.setData(None)
self.openautopicksaction = self.createAction(self, "Load &automatic picks "
"...", "...",
self.load_autopicks, self.load_autopicks,
"Ctrl+A", "Ctrl+A",
autopicksicon, autopicksicon,
"Load automatic picks " "Load automatic picks "
"for the displayed event.") "for the displayed event.")
openautopicksaction.setData(None) self.openautopicksaction.setEnabled(False)
self.openautopicksaction.setData(None)
loadlocationaction = self.createAction(self, "Load &location ...", loadlocationaction = self.createAction(self, "Load &location ...",
self.load_loc, "Ctrl+L", self.load_loc, "Ctrl+L",
locactionicon, locactionicon,
"Load location information on " "Load location information on "
"the displayed event.") "the displayed event.")
loadpilotevent = self.createAction(self, "Load PILOT &event ...", self.loadpilotevent = self.createAction(self, "Load PILOT &event ...",
self.load_pilotevent, "Ctrl+E", self.load_pilotevent, "Ctrl+E",
loadpiloticon, loadpiloticon,
"Load PILOT event from information " "Load PILOT event from information "
"MatLab binary collections (created" "MatLab binary collections (created"
" in former MatLab based version).") " in former MatLab based version).")
saveEventAction = self.createAction(self, "&Save event ...", self.loadpilotevent.setEnabled(False)
self.saveEventAction = self.createAction(self, "&Save event ...",
self.saveData, QKeySequence.Save, self.saveData, QKeySequence.Save,
saveIcon, "Save actual event data.") saveIcon, "Save actual event data.")
self.saveEventAction.setEnabled(False)
openWFDataAction = self.createAction(self, "Open &waveforms ...", openWFDataAction = self.createAction(self, "Open &waveforms ...",
self.loadWaveformData, self.loadWaveformData,
"Ctrl+W", QIcon(":/wfIcon.png"), "Ctrl+W", QIcon(":/wfIcon.png"),
@ -279,6 +262,8 @@ class MainWindow(QMainWindow):
"manual and " "manual and "
"automatic pick " "automatic pick "
"data.", False) "data.", False)
self.compare_action.setEnabled(False)
printAction = self.createAction(self, "&Print event ...", printAction = self.createAction(self, "&Print event ...",
self.show_event_information, QKeySequence.Print, self.show_event_information, QKeySequence.Print,
print_icon, print_icon,
@ -289,8 +274,8 @@ class MainWindow(QMainWindow):
homepage (internet connection available), homepage (internet connection available),
or shipped documentation files.""") or shipped documentation files.""")
self.fileMenu = self.menuBar().addMenu('&File') self.fileMenu = self.menuBar().addMenu('&File')
self.fileMenuActions = (newEventAction, openmanualpicksaction, self.fileMenuActions = (newEventAction, self.openmanualpicksaction,
saveEventAction, openWFDataAction, None, self.saveEventAction, openWFDataAction, None,
prefsEventAction, quitAction) prefsEventAction, quitAction)
self.fileMenu.aboutToShow.connect(self.updateFileMenu) self.fileMenu.aboutToShow.connect(self.updateFileMenu)
self.updateFileMenu() self.updateFileMenu()
@ -306,9 +291,9 @@ class MainWindow(QMainWindow):
self.addActions(self.helpMenu, helpActions) self.addActions(self.helpMenu, helpActions)
fileToolBar = self.addToolBar("FileTools") fileToolBar = self.addToolBar("FileTools")
fileToolActions = (newEventAction, openmanualpicksaction, fileToolActions = (newEventAction, self.openmanualpicksaction,
openautopicksaction, loadlocationaction, self.openautopicksaction, loadlocationaction,
loadpilotevent, saveEventAction) self.loadpilotevent, self.saveEventAction)
fileToolBar.setObjectName("FileTools") fileToolBar.setObjectName("FileTools")
self.addActions(fileToolBar, fileToolActions) self.addActions(fileToolBar, fileToolActions)
@ -322,53 +307,57 @@ class MainWindow(QMainWindow):
componentGroup = QActionGroup(self) componentGroup = QActionGroup(self)
componentGroup.setExclusive(True) componentGroup.setExclusive(True)
z_action = self.createAction(parent=componentGroup, text='Z', self.z_action = self.createAction(parent=componentGroup, text='Z',
slot=self.plotZ, shortcut='Alt+Z', slot=self.plotZ, shortcut='Alt+Z',
icon=z_icon, tip='Display the vertical (Z)' icon=z_icon, tip='Display the vertical (Z)'
' component.', ' component.',
checkable=True) checkable=True)
z_action.setChecked(True) self.z_action.setChecked(True)
self.z_action.setEnabled(False)
n_action = self.createAction(parent=componentGroup, text='N', self.n_action = self.createAction(parent=componentGroup, text='N',
slot=self.plotN, shortcut='Alt+N', slot=self.plotN, shortcut='Alt+N',
icon=n_icon, icon=n_icon,
tip='Display the north-south (N) ' tip='Display the north-south (N) '
'component.', checkable=True) 'component.', checkable=True)
self.n_action.setEnabled(False)
e_action = self.createAction(parent=componentGroup, text='E', self.e_action = self.createAction(parent=componentGroup, text='E',
slot=self.plotE, shortcut='Alt+E', slot=self.plotE, shortcut='Alt+E',
icon=e_icon, icon=e_icon,
tip='Display the east-west (E) component.', tip='Display the east-west (E) component.',
checkable=True) checkable=True)
self.e_action.setEnabled(False)
componentToolBar = self.addToolBar("ComponentSelection") componentToolBar = self.addToolBar("ComponentSelection")
componentActions = (z_action, n_action, e_action) componentActions = (self.z_action, self.n_action, self.e_action)
componentToolBar.setObjectName("PhaseTools") componentToolBar.setObjectName("PhaseTools")
self.addActions(componentToolBar, componentActions) self.addActions(componentToolBar, componentActions)
auto_pick = self.createAction(parent=self, text='autoPick', self.auto_pick = self.createAction(parent=self, text='autoPick',
slot=self.autoPick, shortcut='Alt+Ctrl+A', slot=self.autoPick, shortcut='Alt+Ctrl+A',
icon=auto_icon, tip='Automatically pick' icon=auto_icon, tip='Automatically pick'
' the entire dataset' ' the displayed waveforms.')
' displayed!') self.auto_pick.setEnabled(False)
autoPickToolBar = self.addToolBar("autoPyLoT") autoPickToolBar = self.addToolBar("autoPyLoT")
autoPickActions = (auto_pick, self.compare_action) autoPickActions = (self.auto_pick, self.compare_action)
self.addActions(autoPickToolBar, autoPickActions) self.addActions(autoPickToolBar, autoPickActions)
# pickToolBar = self.addToolBar("PickTools") # pickToolBar = self.addToolBar("PickTools")
# pickToolActions = (selectStation, ) # pickToolActions = (selectStation, )
# pickToolBar.setObjectName("PickTools") # pickToolBar.setObjectName("PickTools")
# self.addActions(pickToolBar, pickToolActions) # self.addActions(pickToolBar, pickToolActions)
locateEvent = self.createAction(parent=self, text='locate the event', self.locateEvent = self.createAction(parent=self, text='locate the event',
slot=self.locate_event, slot=self.locate_event,
shortcut='Alt+Ctrl+L', shortcut='Alt+Ctrl+L',
icon=locate_icon, icon=locate_icon,
tip='Locate the event using ' tip='Locate the event using '
'the displayed manual arrivals.') 'the displayed manual arrivals.')
self.locateEvent.setEnabled(False)
locationToolBar = self.addToolBar("LocationTools") locationToolBar = self.addToolBar("LocationTools")
locationToolActions = (locateEvent,) locationToolActions = (self.locateEvent,)
locationToolBar.setObjectName("LocationTools") locationToolBar.setObjectName("LocationTools")
self.addActions(locationToolBar, locationToolActions) self.addActions(locationToolBar, locationToolActions)
@ -691,6 +680,15 @@ class MainWindow(QMainWindow):
else: else:
ans = False ans = False
self._stime = full_range(self.get_data().getWFData())[0] self._stime = full_range(self.get_data().getWFData())[0]
self.auto_pick.setEnabled(True)
self.z_action.setEnabled(True)
self.e_action.setEnabled(True)
self.n_action.setEnabled(True)
self.openmanualpicksaction.setEnabled(True)
self.openautopicksaction.setEnabled(True)
self.loadpilotevent.setEnabled(True)
self.saveEventAction.setEnabled(True)
self.locateEvent.setEnabled(True)
if ans: if ans:
self.plotWaveformData() self.plotWaveformData()
return ans return ans