added load/save buttons for parameters
This commit is contained in:
parent
cae5c961b0
commit
c9d872d52b
@ -1 +1 @@
|
||||
a2ab-dirty
|
||||
cae5-dirty
|
||||
|
@ -47,47 +47,12 @@ class AutoPickParameter(object):
|
||||
self.__init_default_paras()
|
||||
self.__init_subsettings()
|
||||
self.__filename = fnin
|
||||
parFileCont = {}
|
||||
self._verbosity = verbosity
|
||||
self._parFileCont = {}
|
||||
# io from parsed arguments alternatively
|
||||
for key, val in kwargs.items():
|
||||
parFileCont[key] = val
|
||||
|
||||
if self.__filename is not None:
|
||||
inputFile = open(self.__filename, 'r')
|
||||
else:
|
||||
return
|
||||
try:
|
||||
lines = inputFile.readlines()
|
||||
for line in lines:
|
||||
parspl = line.split('\t')[:2]
|
||||
parFileCont[parspl[0].strip()] = parspl[1]
|
||||
except IndexError as e:
|
||||
if verbosity > 0:
|
||||
self._printParameterError(e)
|
||||
inputFile.seek(0)
|
||||
lines = inputFile.readlines()
|
||||
for line in lines:
|
||||
if not line.startswith(('#', '%', '\n', ' ')):
|
||||
parspl = line.split('#')[:2]
|
||||
parFileCont[parspl[1].strip()] = parspl[0].strip()
|
||||
for key, value in parFileCont.items():
|
||||
try:
|
||||
val = int(value)
|
||||
except:
|
||||
try:
|
||||
val = float(value)
|
||||
except:
|
||||
if len(value.split(' ')) > 1:
|
||||
vallist = value.strip().split(' ')
|
||||
val = []
|
||||
for val0 in vallist:
|
||||
val0 = float(val0)
|
||||
val.append(val0)
|
||||
else:
|
||||
val = str(value.strip())
|
||||
parFileCont[key] = val
|
||||
self.__parameter = parFileCont
|
||||
|
||||
self._parFileCont[key] = val
|
||||
self.from_file()
|
||||
if fnout:
|
||||
self.export2File(fnout)
|
||||
|
||||
@ -199,6 +164,51 @@ class AutoPickParameter(object):
|
||||
def _printParameterError(errmsg):
|
||||
print('ParameterError:\n non-existent parameter %s' % errmsg)
|
||||
|
||||
def reset_defaults(self):
|
||||
defaults = self.get_defaults()
|
||||
for param in defaults:
|
||||
self.setParamKV(param, defaults[param]['value'])
|
||||
|
||||
def from_file(self, fnin=None):
|
||||
if not fnin:
|
||||
if self.__filename is not None:
|
||||
fnin = self.__filename
|
||||
else:
|
||||
return
|
||||
|
||||
inputFile = open(fnin, 'r')
|
||||
try:
|
||||
lines = inputFile.readlines()
|
||||
for line in lines:
|
||||
parspl = line.split('\t')[:2]
|
||||
self._parFileCont[parspl[0].strip()] = parspl[1]
|
||||
except IndexError as e:
|
||||
if self._verbosity > 0:
|
||||
self._printParameterError(e)
|
||||
inputFile.seek(0)
|
||||
lines = inputFile.readlines()
|
||||
for line in lines:
|
||||
if not line.startswith(('#', '%', '\n', ' ')):
|
||||
parspl = line.split('#')[:2]
|
||||
self._parFileCont[parspl[1].strip()] = parspl[0].strip()
|
||||
for key, value in self._parFileCont.items():
|
||||
try:
|
||||
val = int(value)
|
||||
except:
|
||||
try:
|
||||
val = float(value)
|
||||
except:
|
||||
if len(value.split(' ')) > 1:
|
||||
vallist = value.strip().split(' ')
|
||||
val = []
|
||||
for val0 in vallist:
|
||||
val0 = float(val0)
|
||||
val.append(val0)
|
||||
else:
|
||||
val = str(value.strip())
|
||||
self._parFileCont[key] = val
|
||||
self.__parameter = self._parFileCont
|
||||
|
||||
def export2File(self, fnout):
|
||||
fid_out = open(fnout, 'w')
|
||||
lines = []
|
||||
|
@ -1764,7 +1764,8 @@ class AutoPickParaBox(QtGui.QWidget):
|
||||
QtGui.QWidget.__init__(self, parent)
|
||||
self.ap = ap
|
||||
self.tabs = QtGui.QTabWidget()
|
||||
self.layout = QtGui.QHBoxLayout()
|
||||
self.layout = QtGui.QVBoxLayout()
|
||||
self._init_buttons()
|
||||
self.layout.addWidget(self.tabs)
|
||||
self.boxes = {}
|
||||
self._init_sublayouts()
|
||||
@ -1778,6 +1779,19 @@ class AutoPickParaBox(QtGui.QWidget):
|
||||
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')
|
||||
@ -1954,6 +1968,42 @@ class AutoPickParaBox(QtGui.QWidget):
|
||||
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…
Reference in New Issue
Block a user