fix internal event handling
stringify at the latest possible moment, not the earliest Change-Id: I230138c5787f97a72e8726ddc3546c61092d87c5 Reviewed-on: https://forge.frm2.tum.de/review/17858 Tested-by: JenkinsCodeReview <bjoern_pedersen@frm2.tum.de> Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
This commit is contained in:
@ -363,4 +363,7 @@ class ModuleCtrl(QWidget):
|
|||||||
def _updateValue(self, module, parameter, value):
|
def _updateValue(self, module, parameter, value):
|
||||||
if module != self._module:
|
if module != self._module:
|
||||||
return
|
return
|
||||||
self._paramWidgets[parameter][1].updateValue(unicode(value[0]))
|
# value is [data, qualifiers]
|
||||||
|
# note: update subwidgets with the data portion only
|
||||||
|
# note: paramwidgets[..][1] is a ParameterView from secop.gui.params
|
||||||
|
self._paramWidgets[parameter][1].updateValue(value[0])
|
||||||
|
@ -35,7 +35,7 @@ from secop.datatypes import EnumType
|
|||||||
|
|
||||||
|
|
||||||
class ParameterWidget(QWidget):
|
class ParameterWidget(QWidget):
|
||||||
setRequested = pyqtSignal(str, str, str) # module, parameter, target
|
setRequested = pyqtSignal(str, str, object) # module, parameter, target
|
||||||
cmdRequested = pyqtSignal(str, str, list) # module, command, args
|
cmdRequested = pyqtSignal(str, str, list) # module, command, args
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
@ -57,7 +57,7 @@ class ParameterWidget(QWidget):
|
|||||||
# load ui file, set initvalue to right widget
|
# load ui file, set initvalue to right widget
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def updateValue(self, valuestr):
|
def updateValue(self, value):
|
||||||
# async !
|
# async !
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -74,15 +74,17 @@ class GenericParameterWidget(ParameterWidget):
|
|||||||
else:
|
else:
|
||||||
self.setLineEdit.returnPressed.connect(
|
self.setLineEdit.returnPressed.connect(
|
||||||
self.on_setPushButton_clicked)
|
self.on_setPushButton_clicked)
|
||||||
self.updateValue(str(initvalue))
|
self.updateValue(initvalue)
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def on_setPushButton_clicked(self):
|
def on_setPushButton_clicked(self):
|
||||||
self.setRequested.emit(self._module, self._paramcmd,
|
self.setRequested.emit(self._module, self._paramcmd,
|
||||||
self.setLineEdit.text())
|
self.setLineEdit.text())
|
||||||
|
|
||||||
def updateValue(self, valuestr):
|
def updateValue(self, value):
|
||||||
self.currentLineEdit.setText(valuestr)
|
if self._datatype:
|
||||||
|
value = self._datatype.import_value(value)
|
||||||
|
self.currentLineEdit.setText(str(value))
|
||||||
|
|
||||||
|
|
||||||
class EnumParameterWidget(GenericParameterWidget):
|
class EnumParameterWidget(GenericParameterWidget):
|
||||||
@ -109,23 +111,23 @@ class EnumParameterWidget(GenericParameterWidget):
|
|||||||
else:
|
else:
|
||||||
self.setComboBox.activated.connect(self.on_setPushButton_clicked)
|
self.setComboBox.activated.connect(self.on_setPushButton_clicked)
|
||||||
|
|
||||||
self.updateValue(str(initvalue))
|
self.updateValue(initvalue)
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def on_setPushButton_clicked(self):
|
def on_setPushButton_clicked(self):
|
||||||
_enumval, enumname = self._map[self.setComboBox.currentIndex()]
|
_enumval, enumname = self._map[self.setComboBox.currentIndex()]
|
||||||
self.setRequested.emit(self._module, self._paramcmd, enumname)
|
self.setRequested.emit(self._module, self._paramcmd, enumname)
|
||||||
|
|
||||||
def updateValue(self, valuestr):
|
def updateValue(self, value):
|
||||||
try:
|
try:
|
||||||
valuestr = int(valuestr)
|
value = int(value)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
if valuestr in self._revmap:
|
if value in self._revmap:
|
||||||
index = self._revmap[valuestr]
|
index = self._revmap[value]
|
||||||
self.currentLineEdit.setText('(%d): %s' % self._map[index])
|
self.currentLineEdit.setText('(%d): %s' % self._map[index])
|
||||||
else:
|
else:
|
||||||
self.currentLineEdit.setText('undefined Value: %r' % valuestr)
|
self.currentLineEdit.setText('undefined Value: %r' % value)
|
||||||
|
|
||||||
|
|
||||||
class GenericCmdWidget(ParameterWidget):
|
class GenericCmdWidget(ParameterWidget):
|
||||||
@ -142,6 +144,8 @@ class GenericCmdWidget(ParameterWidget):
|
|||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def on_cmdPushButton_clicked(self):
|
def on_cmdPushButton_clicked(self):
|
||||||
# wait until command complete before retrying
|
# wait until command complete before retrying
|
||||||
|
# since the command is scheduled async: what if an errot happens?
|
||||||
|
# XXX: button stays deactivated upon errors in execution of cmd...
|
||||||
self.cmdPushButton.setEnabled(False)
|
self.cmdPushButton.setEnabled(False)
|
||||||
self.cmdRequested.emit(
|
self.cmdRequested.emit(
|
||||||
self._module,
|
self._module,
|
||||||
@ -149,7 +153,7 @@ class GenericCmdWidget(ParameterWidget):
|
|||||||
self._datatype.from_string(
|
self._datatype.from_string(
|
||||||
self.cmdLineEdit.text()))
|
self.cmdLineEdit.text()))
|
||||||
|
|
||||||
def updateValue(self, valuestr):
|
def updateValue(self, value):
|
||||||
# open dialog and show value, if any.
|
# open dialog and show value, if any.
|
||||||
# then re-activate the command button
|
# then re-activate the command button
|
||||||
self.cmdPushButton.setEnabled(True)
|
self.cmdPushButton.setEnabled(True)
|
||||||
|
Reference in New Issue
Block a user