Change-Id: I72abe9b4c2deb08e58ce69786f853ccc4b385a5d
This commit is contained in:
Enrico Faulhaber
2017-09-11 15:22:33 +02:00
parent 9a402857f3
commit 357056d478
12 changed files with 71 additions and 34 deletions

View File

@ -312,7 +312,10 @@ class Client(object):
if modname in self._cache:
if pname in self._cache:
previous = self._cache[modname][pname]
self._cache.setdefault(modname, {})[pname] = Value(*data)
if data:
self._cache.setdefault(modname, {})[pname] = Value(*data)
else:
self.log.warning('got malformed answer! (spec data)' % (spec, data))
# self.log.info('cache: %s:%s=%r (was: %s)', modname, pname, data, previous)
if spec in self.callbacks:
for func in self.callbacks[spec]:
@ -537,7 +540,7 @@ class Client(object):
return self.describing_data['modules'][module]['properties']
def getModuleBaseClass(self, module):
return self.getModuleProperties(module)['interface']
return self.getModuleProperties(module)['interface_class']
def getCommands(self, module):
return self.describing_data['modules'][module]['commands']

View File

@ -131,8 +131,8 @@ class NodeCtrl(QWidget):
row = 0
for modname in sorted(self._node.modules):
modprops = self._node.getModuleProperties(modname)
baseclass = modprops['interface']
description = modprops['interface']
interfaces = modprops['interface_class']
description = modprops['description']
unit = self._node.getProperties(modname, 'value').get('unit', '')
if unit:
@ -142,12 +142,12 @@ class NodeCtrl(QWidget):
label = QLabel(labelstr)
label.setFont(labelfont)
if baseclass == 'Driveable':
widget = DriveableWidget(self._node, modname, self)
elif baseclass == 'Readable':
if 'Drivable' in interfaces:
widget = DrivableWidget(self._node, modname, self)
elif 'Readable' in interfaces:
widget = ReadableWidget(self._node, modname, self)
else:
widget = QLabel('Unsupported Interfaceclass %r' % baseclass)
widget = QLabel('Unsupported Interfaceclasses %r' % interfaces)
if description:
widget.setToolTip(description)
@ -159,6 +159,7 @@ class NodeCtrl(QWidget):
self._moduleWidgets.extend((label, widget))
layout.setRowStretch(row, 1)
class ReadableWidget(QWidget):
def __init__(self, node, module, parent=None):
@ -166,6 +167,8 @@ class ReadableWidget(QWidget):
self._node = node
self._module = module
self._status_type = self._node.getProperties(self._module, 'status').get('datatype')
params = self._node.getProperties(self._module, 'value')
datatype = params.get('datatype', StringType())
self._is_enum = isinstance(datatype, EnumType)
@ -206,7 +209,10 @@ class ReadableWidget(QWidget):
# XXX: also connect update_status signal to LineEdit ??
def update_status(self, status, qualifiers={}):
self.statusLineEdit.setText(str(status))
display_string = self._status_type.subtypes[0].entries.get(status[0])
if status[1]:
display_string += ':' + status[1]
self.statusLineEdit.setText(display_string)
# may change meaning of cmdPushButton
def _init_current_widgets(self):
@ -241,7 +247,7 @@ class ReadableWidget(QWidget):
self.update_target(*value)
class DriveableWidget(ReadableWidget):
class DrivableWidget(ReadableWidget):
def _init_target_widgets(self):
params = self._node.getProperties(self._module, 'target')

View File

@ -40,6 +40,9 @@
<height>0</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background-color: lightgrey;</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
@ -67,6 +70,12 @@
</item>
<item row="0" column="0" colspan="3">
<widget class="QLineEdit" name="statusLineEdit">
<property name="enabled">
<bool>true</bool>
</property>
<property name="styleSheet">
<string notr="true">background-color: lightgrey;</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>