added pickdlg to tune autopick, small fixes; to do: add manual picks
This commit is contained in:
		
							parent
							
								
									c9d872d52b
								
							
						
					
					
						commit
						f43611aeda
					
				
							
								
								
									
										36
									
								
								QtPyLoT.py
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								QtPyLoT.py
									
									
									
									
									
								
							| @ -604,9 +604,10 @@ class MainWindow(QMainWindow): | ||||
|     def getCurrentEvent(self, eventlist=None, eventbox=None): | ||||
|         if not eventlist: | ||||
|             eventlist = self.project.eventlist | ||||
|         for event in eventlist: | ||||
|             if event.path == self.getCurrentEventPath(eventbox): | ||||
|                 return event | ||||
|         if not eventbox: | ||||
|             eventbox = self.eventBox | ||||
|         index = eventbox.currentIndex() | ||||
|         return eventbox.itemData(index) | ||||
| 
 | ||||
|     def getCurrentEventPath(self, eventbox=None): | ||||
|         if not eventbox: | ||||
| @ -684,7 +685,7 @@ class MainWindow(QMainWindow): | ||||
|             if pl > plmax: | ||||
|                 plmax=pl | ||||
| 
 | ||||
|         for event in self.project.eventlist: | ||||
|         for index, event in enumerate(self.project.eventlist): | ||||
|             event_path = event.path | ||||
|             event_npicks = 0 | ||||
|             event_nautopicks = 0 | ||||
| @ -695,11 +696,11 @@ class MainWindow(QMainWindow): | ||||
|             event_ref = event.isRefEvent() | ||||
|             event_test = event.isTestEvent() | ||||
| 
 | ||||
|             text = '{path:{plen}} | manual: [{p:3d}] | auto: [{a:3d}]' | ||||
|             text = text.format(path=event_path, | ||||
|                                plen=plmax, | ||||
|                                p=event_npicks, | ||||
|                                a=event_nautopicks) | ||||
|             # text = '{path:{plen}} | manual: [{p:3d}] | auto: [{a:3d}]' | ||||
|             # text = text.format(path=event_path, | ||||
|             #                    plen=plmax, | ||||
|             #                    p=event_npicks, | ||||
|             #                    a=event_nautopicks) | ||||
| 
 | ||||
|             item_path = QtGui.QStandardItem('{path:{plen}}'.format(path=event_path, plen=plmax)) | ||||
|             item_nmp = QtGui.QStandardItem(str(event_npicks)) | ||||
| @ -732,6 +733,12 @@ class MainWindow(QMainWindow): | ||||
|                 for item in itemlist: | ||||
|                     item.setEnabled(False) | ||||
|             model.appendRow(itemlist) | ||||
|             if not event.path == self.eventBox.itemText(index): | ||||
|                 message = ('Path missmatch creating eventbox.\n' | ||||
|                            '{} unequal {}.' | ||||
|                            .format(event.path, self.eventBox.itemText(index))) | ||||
|                 raise ValueError(message) | ||||
|             eventBox.setItemData(index, event) | ||||
|         eventBox.setCurrentIndex(index) | ||||
| 
 | ||||
|     def filename_from_action(self, action): | ||||
| @ -929,7 +936,8 @@ class MainWindow(QMainWindow): | ||||
|         self._eventChanged[0] = False | ||||
|      | ||||
|     def loadWaveformDataThread(self): | ||||
|         wfd_thread = Thread(self, self.loadWaveformData, progressText='Reading data input...') | ||||
|         wfd_thread = Thread(self, self.loadWaveformData, | ||||
|                             progressText='Reading data input...') | ||||
|         wfd_thread.finished.connect(self.plotWaveformDataThread) | ||||
|         wfd_thread.start() | ||||
|          | ||||
| @ -999,7 +1007,8 @@ class MainWindow(QMainWindow): | ||||
|         self.draw() | ||||
|          | ||||
|     def plotWaveformDataThread(self): | ||||
|         wfp_thread = Thread(self, self.plotWaveformData, progressText='Plotting waveform data...') | ||||
|         wfp_thread = Thread(self, self.plotWaveformData, | ||||
|                             progressText='Plotting waveform data...') | ||||
|         wfp_thread.finished.connect(self.finishWaveformDataPlot) | ||||
|         wfp_thread.start() | ||||
|          | ||||
| @ -1131,7 +1140,7 @@ class MainWindow(QMainWindow): | ||||
|         station = self.getStationName(wfID) | ||||
|         self.update_status('picking on station {0}'.format(station)) | ||||
|         data = self.get_data().getWFData() | ||||
|         pickDlg = PickDlg(self, infile=self.getinfile(),  | ||||
|         pickDlg = PickDlg(self, parameter=self._inputs,  | ||||
|                           data=data.select(station=station), | ||||
|                           station=station, | ||||
|                           picks=self.getPicksOnStation(station, 'manual'), | ||||
| @ -1183,6 +1192,7 @@ class MainWindow(QMainWindow): | ||||
|             self.tap = TuneAutopicker(self) | ||||
|             self.update_autopicker() | ||||
|             self.tap.update.connect(self.update_autopicker) | ||||
|             self.tap.figure_tabs.setCurrentIndex(0) | ||||
|         else: | ||||
|             self.tap.fill_eventbox() | ||||
|         self.tap.show() | ||||
| @ -1190,7 +1200,7 @@ class MainWindow(QMainWindow): | ||||
|     def update_autopicker(self): | ||||
|         for key in self.fig_dict.keys(): | ||||
|             self.canvas_dict[key] = FigureCanvas(self.fig_dict[key]) | ||||
|         self.tap.fill_tabs(self.canvas_dict) | ||||
|         self.tap.fill_tabs(picked=True) | ||||
|          | ||||
|     def autoPick(self): | ||||
|         self.autosave = QFileDialog().getExistingDirectory(caption='Select autoPyLoT output')  | ||||
|  | ||||
| @ -1 +1 @@ | ||||
| cae5-dirty | ||||
| c9d8-dirty | ||||
|  | ||||
| @ -38,13 +38,14 @@ class map_projection(QtGui.QWidget): | ||||
|          | ||||
|     def onpick(self, event): | ||||
|         ind = event.ind | ||||
|         if ind == []: | ||||
|         button = event.mouseevent.button | ||||
|         if ind == [] or not button == 1: | ||||
|             return | ||||
|         data = self._parent.get_data().getWFData() | ||||
|         for index in ind: | ||||
|             station=str(self.station_names[index]) | ||||
|             try: | ||||
|                 pickDlg = PickDlg(self, infile=self._parent.getinfile(),  | ||||
|                 pickDlg = PickDlg(self, parameter=self._parent._inputs, | ||||
|                                   data=data.select(station=station), | ||||
|                                   station=station, | ||||
|                                   picks=self._parent.getPicksOnStation(station, 'manual'), | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| import sys | ||||
| from PySide.QtCore import QThread, Signal, Qt | ||||
| from PySide.QtGui import QDialog, QProgressBar, QLabel, QVBoxLayout | ||||
| from PySide.QtGui import QDialog, QProgressBar, QLabel, QHBoxLayout | ||||
| 
 | ||||
| 
 | ||||
| class AutoPickThread(QThread): | ||||
| @ -75,12 +75,12 @@ class Thread(QThread): | ||||
|                 self.pb_widget = QDialog(self.parent()) | ||||
|                 self.pb_widget.setWindowFlags(Qt.SplashScreen)                 | ||||
|                 self.pb_widget.setModal(True) | ||||
|             vl = QVBoxLayout() | ||||
|             hl = QHBoxLayout() | ||||
|             pb = QProgressBar() | ||||
|             pb.setRange(0, 0) | ||||
|             vl.addWidget(pb) | ||||
|             vl.addWidget(QLabel(self.progressText)) | ||||
|             self.pb_widget.setLayout(vl) | ||||
|             hl.addWidget(pb) | ||||
|             hl.addWidget(QLabel(self.progressText)) | ||||
|             self.pb_widget.setLayout(hl) | ||||
|             self.pb_widget.show() | ||||
| 
 | ||||
|     def hideProgressbar(self): | ||||
|  | ||||
| @ -516,11 +516,12 @@ class WaveformWidget(FigureCanvas): | ||||
| 
 | ||||
| class PickDlg(QDialog): | ||||
|     def __init__(self, parent=None, data=None, station=None, picks=None, | ||||
|                  autopicks=None, rotate=False, infile=None): | ||||
|                  autopicks=None, rotate=False, parameter=None, buttons=True): | ||||
|         super(PickDlg, self).__init__(parent) | ||||
| 
 | ||||
|         # initialize attributes | ||||
|         self.infile = infile | ||||
|         self.parameter = parameter | ||||
|         self._buttons = buttons | ||||
|         self.station = station | ||||
|         self.rotate = rotate | ||||
|         self.components = 'ZNE' | ||||
| @ -661,6 +662,7 @@ class PickDlg(QDialog): | ||||
|                                       QDialogButtonBox.Cancel) | ||||
| 
 | ||||
|         # merge widgets and layouts to establish the dialog | ||||
|         if self._buttons: | ||||
|             _innerlayout.addWidget(_buttonbox) | ||||
|         _outerlayout.addWidget(_dialtoolbar) | ||||
|         _outerlayout.addLayout(_innerlayout) | ||||
| @ -773,8 +775,8 @@ class PickDlg(QDialog): | ||||
|         self.cidrelease = self.connectReleaseEvent(self.panRelease) | ||||
|         self.cidscroll = self.connectScrollEvent(self.scrollZoom) | ||||
|              | ||||
|     def getinfile(self): | ||||
|         return self.infile | ||||
|     def getParameter(self): | ||||
|         return self.parameter | ||||
| 
 | ||||
|     def getStartTime(self): | ||||
|         return self.stime | ||||
| @ -899,7 +901,7 @@ class PickDlg(QDialog): | ||||
| 
 | ||||
|     def setIniPickP(self, gui_event, wfdata, trace_number): | ||||
| 
 | ||||
|         parameter = AutoPickParameter(self.getinfile()) | ||||
|         parameter = self.parameter | ||||
|         ini_pick = gui_event.xdata | ||||
| 
 | ||||
|         nfac = parameter.get('nfacP') | ||||
| @ -948,7 +950,7 @@ class PickDlg(QDialog): | ||||
| 
 | ||||
|     def setIniPickS(self, gui_event, wfdata): | ||||
| 
 | ||||
|         parameter = AutoPickParameter(self.getinfile()) | ||||
|         parameter = self.parameter | ||||
|         ini_pick = gui_event.xdata | ||||
| 
 | ||||
|         nfac = parameter.get('nfacS') | ||||
| @ -1002,7 +1004,7 @@ class PickDlg(QDialog): | ||||
| 
 | ||||
|     def setPick(self, gui_event): | ||||
| 
 | ||||
|         parameter = AutoPickParameter(self.getinfile()) | ||||
|         parameter = self.parameter | ||||
| 
 | ||||
|         # get axes limits | ||||
|         self.updateCurrentLimits() | ||||
| @ -1282,20 +1284,21 @@ class TuneAutopicker(QWidget): | ||||
|     def __init__(self, parent): | ||||
|         QtGui.QWidget.__init__(self, parent, 1) | ||||
|         self.parent = parent | ||||
|         self.ap = parent._inputs | ||||
|         self.setParent(parent) | ||||
|         self.parameter = parent._inputs | ||||
|         self.fig_dict = parent.fig_dict | ||||
|         self.data = Data() | ||||
|         self.init_main_layouts() | ||||
|         self.init_eventlist() | ||||
|         self.init_stationlist() | ||||
|         self.init_figure_tabs() | ||||
|         self.init_stationlist() | ||||
|         self.init_pbwidget() | ||||
|         self.connect_signals() | ||||
|         self.add_parameters() | ||||
|         self.add_buttons() | ||||
|         self.add_log() | ||||
|         self.set_stretch() | ||||
|         self.resize(1280, 720) | ||||
|         self.figure_tabs.setCurrentIndex(0) | ||||
|         #self.setWindowModality(QtCore.Qt.WindowModality.ApplicationModal) | ||||
|         #self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowStaysOnTopHint) | ||||
| 
 | ||||
| @ -1312,15 +1315,20 @@ class TuneAutopicker(QWidget): | ||||
|     def init_eventlist(self): | ||||
|         self.eventBox = self.parent.createEventBox() | ||||
|         self.fill_eventbox() | ||||
|         self.eventBox.setCurrentIndex(1) | ||||
|         self.eventBox.setCurrentIndex(0) | ||||
|         self.trace_layout.addWidget(self.eventBox) | ||||
|         self.eventBox.activated.connect(self.fill_stationbox) | ||||
|         self.eventBox.activated.connect(self.update_eventID) | ||||
|          | ||||
|     def init_stationlist(self): | ||||
|         self.stationBox = QtGui.QComboBox() | ||||
|         self.trace_layout.addWidget(self.stationBox) | ||||
|         self.fill_stationbox() | ||||
|         self.figure_tabs.setCurrentIndex(0) | ||||
| 
 | ||||
|     def connect_signals(self): | ||||
|         self.eventBox.activated.connect(self.fill_stationbox) | ||||
|         self.eventBox.activated.connect(self.update_eventID) | ||||
|         self.eventBox.activated.connect(self.fill_tabs) | ||||
|         self.stationBox.activated.connect(self.fill_tabs) | ||||
|          | ||||
|     def fill_stationbox(self): | ||||
|         fnames = self.parent.getWFFnames_from_eventbox(eventbox=self.eventBox) | ||||
| @ -1342,8 +1350,12 @@ class TuneAutopicker(QWidget): | ||||
|     def init_pbwidget(self): | ||||
|         self.pb_widget = QtGui.QWidget() | ||||
| 
 | ||||
|     def init_tab_names(self): | ||||
|         self.ptb_names = ['aicFig', 'slength', 'checkZ4s', 'refPpick', 'el_Ppick', 'fm_picker'] | ||||
|         self.stb_names = ['aicARHfig', 'refSpick', 'el_S1pick', 'el_S2pick'] | ||||
| 
 | ||||
|     def add_parameters(self): | ||||
|         self.parameters = AutoPickParaBox(self.ap) | ||||
|         self.parameters = AutoPickParaBox(self.parameter) | ||||
|         self.parameters.set_tune_mode(True) | ||||
|         self.update_eventID() | ||||
|         self.parameter_layout.addWidget(self.parameters) | ||||
| @ -1358,105 +1370,66 @@ class TuneAutopicker(QWidget): | ||||
| 
 | ||||
|     def add_log(self): | ||||
|         self.listWidget = QtGui.QListWidget() | ||||
|         self.figure_tabs.insertTab(3, self.listWidget, 'log') | ||||
|          | ||||
|     def fill_figure_tabs(self): | ||||
|         self.p_tabs = QtGui.QTabWidget() | ||||
|         self.s_tabs = QtGui.QTabWidget() | ||||
|         self.tune_layout.insertWidget(0, self.figure_tabs) | ||||
|         self.init_tab_names() | ||||
| 
 | ||||
|     def fill_eventbox(self): | ||||
|         self.parent.fill_eventbox(self.eventBox, 'ref') | ||||
| 
 | ||||
|     def get_current_event(self): | ||||
|         return self.eventBox.currentText().split('/')[-1] | ||||
|          | ||||
|     def update_eventID(self): | ||||
|         self.parameters.boxes['eventID'].setText(self.get_current_event()) | ||||
|         self.figure_tabs.insertTab(4, self.listWidget, 'log') | ||||
|          | ||||
|     def add_log_item(self, text): | ||||
|         self.listWidget.addItem(text) | ||||
|         self.listWidget.scrollToBottom() | ||||
|          | ||||
|     def call_picker(self): | ||||
|         self.ap = self.params_from_gui() | ||||
|         station = str(self.stationBox.currentText()) | ||||
|         if not station: | ||||
|             self._warn('No station selected') | ||||
|             return | ||||
|         args = {'parameter': self.ap, | ||||
|                 'station': station, | ||||
|                 'fnames': 'None', | ||||
|                 'iplot': 2, | ||||
|                 'fig_dict': self.fig_dict, | ||||
|                 'locflag': 0} | ||||
|         for key in self.fig_dict.keys(): | ||||
|             self.fig_dict[key].clear() | ||||
|         self.ap_thread = Thread(self, autoPyLoT, arg=args, | ||||
|                                 progressText='Picking trace...', pb_widget=self.pb_widget, | ||||
|                                 redirect_stdout=True) | ||||
|         self.enable(False) | ||||
|         self.ap_thread.message.connect(self.add_log_item) | ||||
|         self.ap_thread.finished.connect(self.finish_picker) | ||||
|         self.figure_tabs.setCurrentIndex(3) | ||||
|         self.ap_thread.start() | ||||
|         #picks = autoPyLoT(self.ap, fnames='None', iplot=2, fig_dict=self.fig_dict) | ||||
|     def get_current_event(self): | ||||
|         index = self.eventBox.currentIndex() | ||||
|         return self.eventBox.itemData(index) | ||||
|          | ||||
|     def finish_picker(self): | ||||
|         self.enable(True) | ||||
|         if not self.ap_thread._executed: | ||||
|             self._warn('Could not execute picker:\n{}'.format( | ||||
|                 self.ap_thread._executedError)) | ||||
|             return | ||||
|         self.picks = self.ap_thread.data | ||||
|         if not self.picks: | ||||
|             self._warn('No picks found. See terminal output.') | ||||
|             return | ||||
|         #renew tabs | ||||
|         self.overview.setParent(None) | ||||
|         self.p_tabs.setParent(None) | ||||
|         self.s_tabs.setParent(None)         | ||||
|         self.fill_figure_tabs() | ||||
|         self.set_stretch() | ||||
|         self.update.emit('Update') | ||||
|         self.figure_tabs.setCurrentIndex(0)         | ||||
|     def get_current_event_name(self): | ||||
|         return self.eventBox.currentText().split('/')[-1] | ||||
| 
 | ||||
|     def enable(self, bool): | ||||
|         self.pick_button.setEnabled(bool) | ||||
|         self.parameters.setEnabled(bool) | ||||
|         self.eventBox.setEnabled(bool) | ||||
|         self.stationBox.setEnabled(bool) | ||||
|         self.overview.setEnabled(bool) | ||||
|         self.p_tabs.setEnabled(bool) | ||||
|         self.s_tabs.setEnabled(bool)         | ||||
|     def get_current_event_fp(self): | ||||
|         return self.eventBox.currentText() | ||||
|          | ||||
|     def params_from_gui(self): | ||||
|         ap = self.parameters.params_from_gui() | ||||
|         if self.parent: | ||||
|             self.parent._inputs = ap | ||||
|         return ap | ||||
|     def get_current_station(self): | ||||
|         return str(self.stationBox.currentText()) | ||||
|      | ||||
|     def set_stretch(self): | ||||
|         self.tune_layout.setStretch(0, 3) | ||||
|         self.tune_layout.setStretch(1, 1)         | ||||
|     def gen_tab_widget(self, name, canvas): | ||||
|         widget = QtGui.QWidget() | ||||
|         v_layout = QtGui.QVBoxLayout() | ||||
|         v_layout.addWidget(canvas) | ||||
|         v_layout.addWidget(NavigationToolbar2QT(canvas, self)) | ||||
|         widget.setLayout(v_layout) | ||||
|         return widget | ||||
| 
 | ||||
|     def init_tab_names(self): | ||||
|         self.ptb_names = ['aicFig', 'slength', 'checkZ4s', 'refPpick', 'el_Ppick', 'fm_picker'] | ||||
|         self.stb_names = ['aicARHfig', 'refSpick', 'el_S1pick', 'el_S2pick'] | ||||
|     def gen_pick_dlg(self): | ||||
|         station = self.get_current_station() | ||||
|         data = self.data.getWFData() | ||||
|         pickDlg = PickDlg(self, data=data.select(station=station), | ||||
|                           station=station, parameter=self.parameter, | ||||
|                           picks=self.get_current_event().picks, | ||||
|                           autopicks=self.get_current_event().autopicks, | ||||
|                           buttons=False) | ||||
|         self.pickDlg = QtGui.QWidget() | ||||
|         hl = QtGui.QHBoxLayout() | ||||
|         self.pickDlg.setLayout(hl) | ||||
|         hl.addWidget(pickDlg) | ||||
|          | ||||
|     def fill_tabs(self, canvas_dict): | ||||
|     def fill_tabs(self, event=None, picked=False): | ||||
|         self.clear_all() | ||||
|         canvas_dict = self.parent.canvas_dict | ||||
|         self.gen_pick_dlg() | ||||
|         self.overview = self.gen_tab_widget('Overview', canvas_dict['mainFig']) | ||||
|         id = self.figure_tabs.insertTab(0, self.overview, 'Overview') | ||||
|         #self.figure_tabs.setTabEnabled(id, bool(self.fig_dict['mainFig'].axes)) | ||||
|         self.figure_tabs.insertTab(1, self.p_tabs, 'P') | ||||
|         self.figure_tabs.insertTab(2, self.s_tabs, 'S') | ||||
|         id0 = self.figure_tabs.insertTab(0, self.pickDlg, 'Traces Plot') | ||||
|         id1 = self.figure_tabs.insertTab(1, self.overview, 'Overview') | ||||
|         id2 = self.figure_tabs.insertTab(2, self.p_tabs, 'P') | ||||
|         id3 = self.figure_tabs.insertTab(3, self.s_tabs, 'S') | ||||
|         if picked: | ||||
|             self.fill_p_tabs(canvas_dict) | ||||
|             self.fill_s_tabs(canvas_dict) | ||||
|             self.toggle_autopickTabs(bool(self.fig_dict['mainFig'].axes)) | ||||
|         else: | ||||
|             self.disable_autopickTabs() | ||||
|         try: | ||||
|             main_fig.tight_layout() | ||||
|         except: | ||||
|             pass | ||||
|         self.figure_tabs.setCurrentIndex(0) | ||||
| 
 | ||||
|     def fill_p_tabs(self, canvas_dict): | ||||
|         for name in self.ptb_names: | ||||
| @ -1476,13 +1449,353 @@ class TuneAutopicker(QWidget): | ||||
|             except: | ||||
|                 pass | ||||
| 
 | ||||
|     def gen_tab_widget(self, name, canvas): | ||||
|     def fill_figure_tabs(self): | ||||
|         self.clear_all() | ||||
|         self.p_tabs = QtGui.QTabWidget() | ||||
|         self.s_tabs = QtGui.QTabWidget() | ||||
|         self.tune_layout.insertWidget(0, self.figure_tabs) | ||||
|         self.init_tab_names() | ||||
| 
 | ||||
|     def fill_eventbox(self): | ||||
|         self.parent.fill_eventbox(self.eventBox, 'ref') | ||||
| 
 | ||||
|     def update_eventID(self): | ||||
|         self.parameters.boxes['eventID'].setText( | ||||
|             self.get_current_event_name()) | ||||
|         self.figure_tabs.setCurrentIndex(0) | ||||
| 
 | ||||
|     def call_picker(self): | ||||
|         self.parameter = self.params_from_gui() | ||||
|         station = self.get_current_station() | ||||
|         if not station: | ||||
|             self._warn('No station selected') | ||||
|             return | ||||
|         args = {'parameter': self.parameter, | ||||
|                 'station': station, | ||||
|                 'fnames': 'None', | ||||
|                 'iplot': 2, | ||||
|                 'fig_dict': self.fig_dict, | ||||
|                 'locflag': 0} | ||||
|         for key in self.fig_dict.keys(): | ||||
|             self.fig_dict[key].clear() | ||||
|         self.ap_thread = Thread(self, autoPyLoT, arg=args, | ||||
|                                 progressText='Picking trace...', | ||||
|                                 pb_widget=self.pb_widget, | ||||
|                                 redirect_stdout=True) | ||||
|         self.enable(False) | ||||
|         self.ap_thread.message.connect(self.add_log_item) | ||||
|         self.ap_thread.finished.connect(self.finish_picker) | ||||
|         self.figure_tabs.setCurrentIndex(4) | ||||
|         self.ap_thread.start() | ||||
|         #picks = autoPyLoT(self.parameter, fnames='None', iplot=2, fig_dict=self.fig_dict) | ||||
| 
 | ||||
|     def finish_picker(self): | ||||
|         self.enable(True) | ||||
|         if not self.ap_thread._executed: | ||||
|             self._warn('Could not execute picker:\n{}'.format( | ||||
|                 self.ap_thread._executedError)) | ||||
|             return | ||||
|         self.picks = self.ap_thread.data | ||||
|         if not self.picks: | ||||
|             self._warn('No picks found. See terminal output.') | ||||
|             return | ||||
|         #renew tabs | ||||
|         #self.fill_figure_tabs() | ||||
|         self.set_stretch() | ||||
|         self.update.emit('Update') | ||||
|         self.figure_tabs.setCurrentIndex(1)         | ||||
| 
 | ||||
|     def enable(self, bool): | ||||
|         self.pick_button.setEnabled(bool) | ||||
|         self.parameters.setEnabled(bool) | ||||
|         self.eventBox.setEnabled(bool) | ||||
|         self.stationBox.setEnabled(bool) | ||||
|         self.overview.setEnabled(bool) | ||||
|         self.p_tabs.setEnabled(bool) | ||||
|         self.s_tabs.setEnabled(bool)         | ||||
|          | ||||
|     def params_from_gui(self): | ||||
|         parameters = self.parameters.params_from_gui() | ||||
|         if self.parent: | ||||
|             self.parent._inputs = parameters | ||||
|         return parameters | ||||
| 
 | ||||
|     def set_stretch(self): | ||||
|         self.tune_layout.setStretch(0, 3) | ||||
|         self.tune_layout.setStretch(1, 1)         | ||||
| 
 | ||||
|     def clear_all(self): | ||||
|         if hasattr(self, 'pickDlg'): | ||||
|             self.pickDlg.setParent(None) | ||||
|             del(self.pickDlg) | ||||
|         if hasattr(self, 'overview'): | ||||
|             self.overview.setParent(None) | ||||
|         if hasattr(self, 'p_tabs'): | ||||
|             self.p_tabs.clear() | ||||
|             self.p_tabs.setParent(None) | ||||
|         if hasattr(self, 's_tabs'): | ||||
|             self.s_tabs.clear() | ||||
|             self.s_tabs.setParent(None) | ||||
|          | ||||
|     def disable_autopickTabs(self): | ||||
|         self.toggle_autopickTabs(False) | ||||
|          | ||||
|     def toggle_autopickTabs(self, bool): | ||||
|         self.figure_tabs.setTabEnabled(1, bool) | ||||
|         self.figure_tabs.setTabEnabled(2, bool) | ||||
|         self.figure_tabs.setTabEnabled(3, bool) | ||||
|          | ||||
|     def _warn(self, message): | ||||
|         self.qmb = QtGui.QMessageBox(QtGui.QMessageBox.Icon.Warning, | ||||
|                                      'Warning', message) | ||||
|         self.qmb.show()         | ||||
|      | ||||
|                  | ||||
| class AutoPickParaBox(QtGui.QWidget):      | ||||
|     def __init__(self, parameter, parent=None): | ||||
|         ''' | ||||
|         Generate Widget containing parameters for automatic picking algorithm. | ||||
| 
 | ||||
|         :param: parameter | ||||
|         :type: AutoPickParameter (object) | ||||
| 
 | ||||
|         ''' | ||||
|         QtGui.QWidget.__init__(self, parent) | ||||
|         self.parameter = parameter | ||||
|         self.tabs = QtGui.QTabWidget() | ||||
|         self.layout = QtGui.QVBoxLayout() | ||||
|         self._init_buttons() | ||||
|         self.layout.addWidget(self.tabs) | ||||
|         self.boxes = {} | ||||
|         self._init_sublayouts() | ||||
|         self.setLayout(self.layout) | ||||
|         self.add_main_parameters_tab() | ||||
|         self.add_special_pick_parameters_tab() | ||||
|         self.params_to_gui() | ||||
|         self._toggle_advanced_settings() | ||||
| 
 | ||||
|     def _init_sublayouts(self): | ||||
|         self._main_layout = QtGui.QVBoxLayout() | ||||
|         self._advanced_layout = QtGui.QVBoxLayout() | ||||
|         self._create_advanced_cb() | ||||
| 
 | ||||
|     def _init_buttons(self): | ||||
|         self._buttons_layout = QtGui.QHBoxLayout() | ||||
|         self.loadButton = QtGui.QPushButton('&Load settings') | ||||
|         self.saveButton = QtGui.QPushButton('&Save settings') | ||||
|         self.defaultsButton = QtGui.QPushButton('&Defaults') | ||||
|         self._buttons_layout.addWidget(self.loadButton) | ||||
|         self._buttons_layout.addWidget(self.saveButton) | ||||
|         self._buttons_layout.addWidget(self.defaultsButton) | ||||
|         self.layout.addLayout(self._buttons_layout) | ||||
|         self.loadButton.clicked.connect(self.openFile) | ||||
|         self.saveButton.clicked.connect(self.saveFile) | ||||
|         self.defaultsButton.clicked.connect(self.restoreDefaults) | ||||
|          | ||||
|     def _create_advanced_cb(self): | ||||
|         self._advanced_cb = QtGui.QCheckBox('Enable Advanced Settings') | ||||
|         self._advanced_layout.addWidget(self._advanced_cb) | ||||
|         self._advanced_cb.toggled.connect(self._toggle_advanced_settings) | ||||
| 
 | ||||
|     def _toggle_advanced_settings(self): | ||||
|         if self._advanced_cb.isChecked(): | ||||
|             self._enable_advanced(True) | ||||
|         else: | ||||
|             self._enable_advanced(False) | ||||
| 
 | ||||
|     def _enable_advanced(self, enable): | ||||
|         for lst in self.parameter.get_special_para_names().values(): | ||||
|             for param in lst: | ||||
|                 box = self.boxes[param] | ||||
|                 if type(box) is not list: | ||||
|                     box.setEnabled(enable) | ||||
|                 else: | ||||
|                     for b in box: | ||||
|                         b.setEnabled(enable) | ||||
|                          | ||||
|     def set_tune_mode(self, bool): | ||||
|         keys = ['rootpath', 'datapath', 'database', | ||||
|                 'eventID', 'invdir', 'nllocbin', | ||||
|                 'nllocroot', 'phasefile', | ||||
|                 'ctrfile', 'ttpatter', 'outpatter'] | ||||
|         for key in keys: | ||||
|             self.boxes[key].setEnabled(not(bool)) | ||||
|          | ||||
|     def init_boxes(self, parameter_names): | ||||
|         grid = QtGui.QGridLayout() | ||||
| 
 | ||||
|         for index1, name in enumerate(parameter_names): | ||||
|             text = name + ' [?]' | ||||
|             label = QtGui.QLabel(text) | ||||
|             default_item = self.parameter.get_defaults()[name] | ||||
|             tooltip = default_item['tooltip'] | ||||
|             tooltip += ' | type: {}'.format(default_item['type']) | ||||
|             if not type(default_item['type']) == tuple: | ||||
|                 typ = default_item['type'] | ||||
|                 box = self.create_box(typ, tooltip) | ||||
|                 self.boxes[name] = box | ||||
|             elif type(default_item['type']) == tuple: | ||||
|                 boxes = [] | ||||
|                 values = self.parameter[name] | ||||
|                 for index2, val in enumerate(values): | ||||
|                     typ = default_item['type'][index2] | ||||
|                     boxes.append(self.create_box(typ, tooltip)) | ||||
|                 box = self.create_multi_box(boxes) | ||||
|                 self.boxes[name] = boxes | ||||
|             label.setToolTip(tooltip) | ||||
|             grid.addWidget(label, index1, 1) | ||||
|             grid.addWidget(box, index1, 2) | ||||
|         return grid | ||||
| 
 | ||||
|     def create_box(self, typ, tooltip): | ||||
|         if typ == str: | ||||
|             box = QtGui.QLineEdit() | ||||
|         elif typ == float: | ||||
|             box = QtGui.QDoubleSpinBox() | ||||
|         elif typ == int: | ||||
|             box = QtGui.QSpinBox() | ||||
|         elif typ == bool: | ||||
|             box = QtGui.QCheckBox() | ||||
|         else: | ||||
|             raise TypeError('Unrecognized type {}'.format(typ)) | ||||
|         return box | ||||
| 
 | ||||
|     def create_multi_box(self, boxes): | ||||
|         box = QtGui.QWidget() | ||||
|         hl = QtGui.QHBoxLayout() | ||||
|         for b in boxes: | ||||
|             hl.addWidget(b) | ||||
|         box.setLayout(hl) | ||||
|         return box | ||||
| 
 | ||||
|     def add_tab(self, layout, name): | ||||
|         widget = QtGui.QWidget() | ||||
|         v_layout = QtGui.QVBoxLayout() | ||||
|         v_layout.addWidget(canvas) | ||||
|         v_layout.addWidget(NavigationToolbar2QT(canvas, self)) | ||||
|         widget.setLayout(v_layout) | ||||
|         return widget | ||||
|         scrollA = QtGui.QScrollArea() | ||||
|         scrollA.setWidgetResizable(True) | ||||
|         scrollA.setWidget(widget) | ||||
| 
 | ||||
|         widget.setLayout(layout) | ||||
|          | ||||
|         self.tabs.addTab(scrollA, name) | ||||
| 
 | ||||
|     def add_main_parameters_tab(self): | ||||
|         self.add_to_layout(self._main_layout, 'Directories', | ||||
|                            self.parameter.get_main_para_names()['dirs']) | ||||
|         self.add_to_layout(self._main_layout, 'NLLoc', | ||||
|                            self.parameter.get_main_para_names()['nlloc']) | ||||
|         self.add_to_layout(self._main_layout, 'Seismic Moment', | ||||
|                            self.parameter.get_main_para_names()['smoment']) | ||||
|         self.add_to_layout(self._main_layout, 'Focal Mechanism', | ||||
|                            self.parameter.get_main_para_names()['focmec']) | ||||
|         self.add_to_layout(self._main_layout, 'Pick Settings', | ||||
|                            self.parameter.get_main_para_names()['pick'], | ||||
|                            False) | ||||
|         self.add_tab(self._main_layout, 'Main Settings') | ||||
| 
 | ||||
|     def add_special_pick_parameters_tab(self): | ||||
|         self.add_to_layout(self._advanced_layout, 'Z-component', | ||||
|                            self.parameter.get_special_para_names()['z']) | ||||
|         self.add_to_layout(self._advanced_layout, 'H-components', | ||||
|                            self.parameter.get_special_para_names()['h']) | ||||
|         self.add_to_layout(self._advanced_layout, 'First-motion picker', | ||||
|                            self.parameter.get_special_para_names()['fm']) | ||||
|         self.add_to_layout(self._advanced_layout, 'Quality assessment', | ||||
|                            self.parameter.get_special_para_names()['quality'], | ||||
|                            False) | ||||
|         self.add_tab(self._advanced_layout, 'Advanced Settings') | ||||
| 
 | ||||
|     def gen_h_seperator(self): | ||||
|         seperator = QtGui.QFrame() | ||||
|         seperator.setFrameShape(QtGui.QFrame.HLine) | ||||
|         return seperator | ||||
| 
 | ||||
|     def gen_headline(self, text): | ||||
|         label=QtGui.QLabel(text) | ||||
|         font=QtGui.QFont() | ||||
|         font.setBold(True) | ||||
|         label.setFont(font) | ||||
|         return label | ||||
|          | ||||
|     def add_to_layout(self, layout, name, items, seperator=True): | ||||
|         layout.addWidget(self.gen_headline(name)) | ||||
|         layout.addLayout(self.init_boxes(items)) | ||||
|         if seperator: | ||||
|             layout.addWidget(self.gen_h_seperator()) | ||||
| 
 | ||||
|     def params_from_gui(self): | ||||
|         for param in self.parameter.get_all_para_names(): | ||||
|             box = self.boxes[param] | ||||
|             value = self.getValue(box) | ||||
|             self.parameter.checkValue(param, value) | ||||
|             self.parameter.setParamKV(param, value) | ||||
|         return self.parameter | ||||
| 
 | ||||
|     def params_to_gui(self): | ||||
|         for param in self.parameter.get_all_para_names(): | ||||
|             box = self.boxes[param] | ||||
|             value = self.parameter[param] | ||||
|             #self.parameter.checkValue(param, value) | ||||
|             self.setValue(box, value) | ||||
| 
 | ||||
|     def setValue(self, box, value): | ||||
|         if type(box) == QtGui.QLineEdit: | ||||
|             box.setText(value) | ||||
|         elif type(box) == QtGui.QSpinBox or type(box) == QtGui.QDoubleSpinBox: | ||||
|             box.setMaximum(100*value) | ||||
|             box.setValue(value) | ||||
|         elif type(box) == QtGui.QCheckBox: | ||||
|             if value == 'True': | ||||
|                 value = True | ||||
|             if value == 'False': | ||||
|                 value = False | ||||
|             box.setChecked(value) | ||||
|         elif type(box) == list: | ||||
|             for index, b in enumerate(box): | ||||
|                 self.setValue(b, value[index]) | ||||
|          | ||||
|     def getValue(self, box): | ||||
|         if type(box) == QtGui.QLineEdit: | ||||
|             value = str(box.text()) | ||||
|         elif type(box) == QtGui.QSpinBox or type(box) == QtGui.QDoubleSpinBox: | ||||
|             value = box.value() | ||||
|         elif type(box) == QtGui.QCheckBox: | ||||
|             value = box.isChecked() | ||||
|         elif type(box) == list: | ||||
|             value = [] | ||||
|             for b in box: | ||||
|                 value.append(self.getValue(b)) | ||||
|             value = tuple(value) | ||||
|         return value | ||||
| 
 | ||||
|     def openFile(self): | ||||
|         fd = QtGui.QFileDialog() | ||||
|         fname = fd.getOpenFileName(self, 'Browse for settings file.', '*.in') | ||||
|         if fname[0]: | ||||
|             try: | ||||
|                 self.parameter.from_file(fname[0]) | ||||
|                 self.params_to_gui() | ||||
|             except Exception as e: | ||||
|                 self._warn('Could not open file {}:\n{}'.format(fname[0], e)) | ||||
|                 return | ||||
| 
 | ||||
|     def saveFile(self): | ||||
|         fd = QtGui.QFileDialog() | ||||
|         fname = fd.getSaveFileName(self, 'Browse for settings file.', '*.in') | ||||
|         if fname[0]: | ||||
|             try: | ||||
|                 self.params_from_gui() | ||||
|                 self.parameter.export2File(fname[0]) | ||||
|             except Exception as e: | ||||
|                 self._warn('Could not save file {}:\n{}'.format(fname[0], e)) | ||||
|                 return | ||||
|              | ||||
|     def restoreDefaults(self): | ||||
|         try: | ||||
|             self.parameter.reset_defaults() | ||||
|             self.params_to_gui() | ||||
|         except Exception as e: | ||||
|             self._warn('Could not restore defaults:\n{}'.format(e)) | ||||
|             return | ||||
|              | ||||
|     def _warn(self, message): | ||||
|         self.qmb = QtGui.QMessageBox(QtGui.QMessageBox.Icon.Warning, | ||||
| @ -1752,258 +2065,6 @@ class LocalisationTab(PropTab): | ||||
|                   "nll/binPath": self.binedit.setText("%s" % nllocbin)} | ||||
| 
 | ||||
|          | ||||
| class AutoPickParaBox(QtGui.QWidget):      | ||||
|     def __init__(self, ap, parent=None): | ||||
|         ''' | ||||
|         Generate Widget containing parameters for automatic picking algorithm. | ||||
| 
 | ||||
|         :param: ap | ||||
|         :type: AutoPickParameter (object) | ||||
| 
 | ||||
|         ''' | ||||
|         QtGui.QWidget.__init__(self, parent) | ||||
|         self.ap = ap | ||||
|         self.tabs = QtGui.QTabWidget() | ||||
|         self.layout = QtGui.QVBoxLayout() | ||||
|         self._init_buttons() | ||||
|         self.layout.addWidget(self.tabs) | ||||
|         self.boxes = {} | ||||
|         self._init_sublayouts() | ||||
|         self.setLayout(self.layout) | ||||
|         self.add_main_parameters_tab() | ||||
|         self.add_special_pick_parameters_tab() | ||||
|         self.params_to_gui() | ||||
|         self._toggle_advanced_settings() | ||||
| 
 | ||||
|     def _init_sublayouts(self): | ||||
|         self._main_layout = QtGui.QVBoxLayout() | ||||
|         self._advanced_layout = QtGui.QVBoxLayout() | ||||
|         self._create_advanced_cb() | ||||
| 
 | ||||
|     def _init_buttons(self): | ||||
|         self._buttons_layout = QtGui.QHBoxLayout() | ||||
|         self.loadButton = QtGui.QPushButton('&Load settings') | ||||
|         self.saveButton = QtGui.QPushButton('&Save settings') | ||||
|         self.defaultsButton = QtGui.QPushButton('&Defaults') | ||||
|         self._buttons_layout.addWidget(self.loadButton) | ||||
|         self._buttons_layout.addWidget(self.saveButton) | ||||
|         self._buttons_layout.addWidget(self.defaultsButton) | ||||
|         self.layout.addLayout(self._buttons_layout) | ||||
|         self.loadButton.clicked.connect(self.openFile) | ||||
|         self.saveButton.clicked.connect(self.saveFile) | ||||
|         self.defaultsButton.clicked.connect(self.restoreDefaults) | ||||
|          | ||||
|     def _create_advanced_cb(self): | ||||
|         self._advanced_cb = QtGui.QCheckBox('Enable Advanced Settings') | ||||
|         self._advanced_layout.addWidget(self._advanced_cb) | ||||
|         self._advanced_cb.toggled.connect(self._toggle_advanced_settings) | ||||
| 
 | ||||
|     def _toggle_advanced_settings(self): | ||||
|         if self._advanced_cb.isChecked(): | ||||
|             self._enable_advanced(True) | ||||
|         else: | ||||
|             self._enable_advanced(False) | ||||
| 
 | ||||
|     def _enable_advanced(self, enable): | ||||
|         for lst in self.ap.get_special_para_names().values(): | ||||
|             for param in lst: | ||||
|                 box = self.boxes[param] | ||||
|                 if type(box) is not list: | ||||
|                     box.setEnabled(enable) | ||||
|                 else: | ||||
|                     for b in box: | ||||
|                         b.setEnabled(enable) | ||||
|                          | ||||
|     def set_tune_mode(self, bool): | ||||
|         keys = ['rootpath', 'datapath', 'database', | ||||
|                 'eventID', 'invdir', 'nllocbin', | ||||
|                 'nllocroot', 'phasefile', | ||||
|                 'ctrfile', 'ttpatter', 'outpatter'] | ||||
|         for key in keys: | ||||
|             self.boxes[key].setEnabled(not(bool)) | ||||
|          | ||||
|     def init_boxes(self, parameter_names): | ||||
|         grid = QtGui.QGridLayout() | ||||
| 
 | ||||
|         for index1, name in enumerate(parameter_names): | ||||
|             text = name + ' [?]' | ||||
|             label = QtGui.QLabel(text) | ||||
|             default_item = self.ap.get_defaults()[name] | ||||
|             tooltip = default_item['tooltip'] | ||||
|             tooltip += ' | type: {}'.format(default_item['type']) | ||||
|             if not type(default_item['type']) == tuple: | ||||
|                 typ = default_item['type'] | ||||
|                 box = self.create_box(typ, tooltip) | ||||
|                 self.boxes[name] = box | ||||
|             elif type(default_item['type']) == tuple: | ||||
|                 boxes = [] | ||||
|                 values = self.ap[name] | ||||
|                 for index2, val in enumerate(values): | ||||
|                     typ = default_item['type'][index2] | ||||
|                     boxes.append(self.create_box(typ, tooltip)) | ||||
|                 box = self.create_multi_box(boxes) | ||||
|                 self.boxes[name] = boxes | ||||
|             label.setToolTip(tooltip) | ||||
|             grid.addWidget(label, index1, 1) | ||||
|             grid.addWidget(box, index1, 2) | ||||
|         return grid | ||||
| 
 | ||||
|     def create_box(self, typ, tooltip): | ||||
|         if typ == str: | ||||
|             box = QtGui.QLineEdit() | ||||
|         elif typ == float: | ||||
|             box = QtGui.QDoubleSpinBox() | ||||
|         elif typ == int: | ||||
|             box = QtGui.QSpinBox() | ||||
|         elif typ == bool: | ||||
|             box = QtGui.QCheckBox() | ||||
|         else: | ||||
|             raise TypeError('Unrecognized type {}'.format(typ)) | ||||
|         return box | ||||
| 
 | ||||
|     def create_multi_box(self, boxes): | ||||
|         box = QtGui.QWidget() | ||||
|         hl = QtGui.QHBoxLayout() | ||||
|         for b in boxes: | ||||
|             hl.addWidget(b) | ||||
|         box.setLayout(hl) | ||||
|         return box | ||||
| 
 | ||||
|     def add_tab(self, layout, name): | ||||
|         widget = QtGui.QWidget() | ||||
|         scrollA = QtGui.QScrollArea() | ||||
|         scrollA.setWidgetResizable(True) | ||||
|         scrollA.setWidget(widget) | ||||
| 
 | ||||
|         widget.setLayout(layout) | ||||
|          | ||||
|         self.tabs.addTab(scrollA, name) | ||||
| 
 | ||||
|     def add_main_parameters_tab(self): | ||||
|         self.add_to_layout(self._main_layout, 'Directories', | ||||
|                            self.ap.get_main_para_names()['dirs']) | ||||
|         self.add_to_layout(self._main_layout, 'NLLoc', | ||||
|                            self.ap.get_main_para_names()['nlloc']) | ||||
|         self.add_to_layout(self._main_layout, 'Seismic Moment', | ||||
|                            self.ap.get_main_para_names()['smoment']) | ||||
|         self.add_to_layout(self._main_layout, 'Focal Mechanism', | ||||
|                            self.ap.get_main_para_names()['focmec']) | ||||
|         self.add_to_layout(self._main_layout, 'Pick Settings', | ||||
|                            self.ap.get_main_para_names()['pick'], | ||||
|                            False) | ||||
|         self.add_tab(self._main_layout, 'Main Settings') | ||||
| 
 | ||||
|     def add_special_pick_parameters_tab(self): | ||||
|         self.add_to_layout(self._advanced_layout, 'Z-component', | ||||
|                            self.ap.get_special_para_names()['z']) | ||||
|         self.add_to_layout(self._advanced_layout, 'H-components', | ||||
|                            self.ap.get_special_para_names()['h']) | ||||
|         self.add_to_layout(self._advanced_layout, 'First-motion picker', | ||||
|                            self.ap.get_special_para_names()['fm']) | ||||
|         self.add_to_layout(self._advanced_layout, 'Quality assessment', | ||||
|                            self.ap.get_special_para_names()['quality'], | ||||
|                            False) | ||||
|         self.add_tab(self._advanced_layout, 'Advanced Settings') | ||||
| 
 | ||||
|     def gen_h_seperator(self): | ||||
|         seperator = QtGui.QFrame() | ||||
|         seperator.setFrameShape(QtGui.QFrame.HLine) | ||||
|         return seperator | ||||
| 
 | ||||
|     def gen_headline(self, text): | ||||
|         label=QtGui.QLabel(text) | ||||
|         font=QtGui.QFont() | ||||
|         font.setBold(True) | ||||
|         label.setFont(font) | ||||
|         return label | ||||
|          | ||||
|     def add_to_layout(self, layout, name, items, seperator=True): | ||||
|         layout.addWidget(self.gen_headline(name)) | ||||
|         layout.addLayout(self.init_boxes(items)) | ||||
|         if seperator: | ||||
|             layout.addWidget(self.gen_h_seperator()) | ||||
| 
 | ||||
|     def params_from_gui(self): | ||||
|         for param in self.ap.get_all_para_names(): | ||||
|             box = self.boxes[param] | ||||
|             value = self.getValue(box) | ||||
|             self.ap.checkValue(param, value) | ||||
|             self.ap.setParamKV(param, value) | ||||
|         return self.ap | ||||
| 
 | ||||
|     def params_to_gui(self): | ||||
|         for param in self.ap.get_all_para_names(): | ||||
|             box = self.boxes[param] | ||||
|             value = self.ap[param] | ||||
|             #self.ap.checkValue(param, value) | ||||
|             self.setValue(box, value) | ||||
| 
 | ||||
|     def setValue(self, box, value): | ||||
|         if type(box) == QtGui.QLineEdit: | ||||
|             box.setText(value) | ||||
|         elif type(box) == QtGui.QSpinBox or type(box) == QtGui.QDoubleSpinBox: | ||||
|             box.setMaximum(100*value) | ||||
|             box.setValue(value) | ||||
|         elif type(box) == QtGui.QCheckBox: | ||||
|             if value == 'True': | ||||
|                 value = True | ||||
|             if value == 'False': | ||||
|                 value = False | ||||
|             box.setChecked(value) | ||||
|         elif type(box) == list: | ||||
|             for index, b in enumerate(box): | ||||
|                 self.setValue(b, value[index]) | ||||
|          | ||||
|     def getValue(self, box): | ||||
|         if type(box) == QtGui.QLineEdit: | ||||
|             value = str(box.text()) | ||||
|         elif type(box) == QtGui.QSpinBox or type(box) == QtGui.QDoubleSpinBox: | ||||
|             value = box.value() | ||||
|         elif type(box) == QtGui.QCheckBox: | ||||
|             value = box.isChecked() | ||||
|         elif type(box) == list: | ||||
|             value = [] | ||||
|             for b in box: | ||||
|                 value.append(self.getValue(b)) | ||||
|             value = tuple(value) | ||||
|         return value | ||||
| 
 | ||||
|     def openFile(self): | ||||
|         fd = QtGui.QFileDialog() | ||||
|         fname = fd.getOpenFileName(self, 'Browse for settings file.', '*.in') | ||||
|         if fname[0]: | ||||
|             try: | ||||
|                 self.ap.from_file(fname[0]) | ||||
|                 self.params_to_gui() | ||||
|             except Exception as e: | ||||
|                 self._warn('Could not open file {}:\n{}'.format(fname[0], e)) | ||||
|                 return | ||||
| 
 | ||||
|     def saveFile(self): | ||||
|         fd = QtGui.QFileDialog() | ||||
|         fname = fd.getSaveFileName(self, 'Browse for settings file.', '*.in') | ||||
|         if fname[0]: | ||||
|             try: | ||||
|                 self.params_from_gui() | ||||
|                 self.ap.export2File(fname[0]) | ||||
|             except Exception as e: | ||||
|                 self._warn('Could not save file {}:\n{}'.format(fname[0], e)) | ||||
|                 return | ||||
|              | ||||
|     def restoreDefaults(self): | ||||
|         try: | ||||
|             self.ap.reset_defaults() | ||||
|             self.params_to_gui() | ||||
|         except Exception as e: | ||||
|             self._warn('Could not restore defaults:\n{}'.format(e)) | ||||
|             return | ||||
|              | ||||
|     def _warn(self, message): | ||||
|         self.qmb = QtGui.QMessageBox(QtGui.QMessageBox.Icon.Warning, | ||||
|                                      'Warning', message) | ||||
|         self.qmb.show()         | ||||
|              | ||||
|              | ||||
| class ParametersTab(PropTab): | ||||
|     def __init__(self, parent=None, infile=None): | ||||
|         super(ParametersTab, self).__init__(parent) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user