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_default_paras()
|
||||||
self.__init_subsettings()
|
self.__init_subsettings()
|
||||||
self.__filename = fnin
|
self.__filename = fnin
|
||||||
parFileCont = {}
|
self._verbosity = verbosity
|
||||||
|
self._parFileCont = {}
|
||||||
# io from parsed arguments alternatively
|
# io from parsed arguments alternatively
|
||||||
for key, val in kwargs.items():
|
for key, val in kwargs.items():
|
||||||
parFileCont[key] = val
|
self._parFileCont[key] = val
|
||||||
|
self.from_file()
|
||||||
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
|
|
||||||
|
|
||||||
if fnout:
|
if fnout:
|
||||||
self.export2File(fnout)
|
self.export2File(fnout)
|
||||||
|
|
||||||
@ -199,6 +164,51 @@ class AutoPickParameter(object):
|
|||||||
def _printParameterError(errmsg):
|
def _printParameterError(errmsg):
|
||||||
print('ParameterError:\n non-existent parameter %s' % 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):
|
def export2File(self, fnout):
|
||||||
fid_out = open(fnout, 'w')
|
fid_out = open(fnout, 'w')
|
||||||
lines = []
|
lines = []
|
||||||
|
@ -1764,7 +1764,8 @@ class AutoPickParaBox(QtGui.QWidget):
|
|||||||
QtGui.QWidget.__init__(self, parent)
|
QtGui.QWidget.__init__(self, parent)
|
||||||
self.ap = ap
|
self.ap = ap
|
||||||
self.tabs = QtGui.QTabWidget()
|
self.tabs = QtGui.QTabWidget()
|
||||||
self.layout = QtGui.QHBoxLayout()
|
self.layout = QtGui.QVBoxLayout()
|
||||||
|
self._init_buttons()
|
||||||
self.layout.addWidget(self.tabs)
|
self.layout.addWidget(self.tabs)
|
||||||
self.boxes = {}
|
self.boxes = {}
|
||||||
self._init_sublayouts()
|
self._init_sublayouts()
|
||||||
@ -1779,6 +1780,19 @@ class AutoPickParaBox(QtGui.QWidget):
|
|||||||
self._advanced_layout = QtGui.QVBoxLayout()
|
self._advanced_layout = QtGui.QVBoxLayout()
|
||||||
self._create_advanced_cb()
|
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):
|
def _create_advanced_cb(self):
|
||||||
self._advanced_cb = QtGui.QCheckBox('Enable Advanced Settings')
|
self._advanced_cb = QtGui.QCheckBox('Enable Advanced Settings')
|
||||||
self._advanced_layout.addWidget(self._advanced_cb)
|
self._advanced_layout.addWidget(self._advanced_cb)
|
||||||
@ -1954,6 +1968,42 @@ class AutoPickParaBox(QtGui.QWidget):
|
|||||||
value = tuple(value)
|
value = tuple(value)
|
||||||
return 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):
|
class ParametersTab(PropTab):
|
||||||
def __init__(self, parent=None, infile=None):
|
def __init__(self, parent=None, infile=None):
|
||||||
super(ParametersTab, self).__init__(parent)
|
super(ParametersTab, self).__init__(parent)
|
||||||
|
Loading…
Reference in New Issue
Block a user