Completed
Push — master ( d1d067...128174 )
by Olivier
01:07
created

RefsWidget.__init__()   A

Complexity

Conditions 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 6
rs 9.4285
1
2
from PyQt5.QtCore import pyqtSignal, QObject
3
from PyQt5.QtGui import QStandardItemModel, QStandardItem
4
5
from opcua import ua
6
7
8
class RefsWidget(QObject):
9
10
    error = pyqtSignal(str)
11
12
    def __init__(self, view):
13
        self.view = view
14
        QObject.__init__(self, view)
15
        self.model = QStandardItemModel()
16
        self.view.setModel(self.model)
17
        self.view.horizontalHeader().setSectionResizeMode(1)
18
19
    def clear(self):
20
        self.model.clear()
21
22
    def show_refs(self, node):
23
        self.model.clear()
24
        self._show_refs(node)
25
26
    def _show_refs(self, node):
27
        self.model.setHorizontalHeaderLabels(['ReferenceType', 'NodeId', "BrowseName", "TypeDefinition"])
28
        try:
29
            refs = node.get_children_descriptions(refs=ua.ObjectIds.References)
30
        except Exception as ex:
31
            self.error.emit(ex)
32
            raise
33
        for ref in refs:
34
            typename = ua.ObjectIdNames[ref.ReferenceTypeId.Identifier]
35
            if ref.NodeId.NamespaceIndex == 0 and ref.NodeId.Identifier in ua.ObjectIdNames:
36
                nodeid = ua.ObjectIdNames[ref.NodeId.Identifier]
37
            else:
38
                nodeid = ref.NodeId.to_string()
39
            if ref.TypeDefinition.Identifier in ua.ObjectIdNames:
40
                typedef = ua.ObjectIdNames[ref.TypeDefinition.Identifier]
41
            else:
42
                typedef = ref.TypeDefinition.to_string()
43
            self.model.appendRow([QStandardItem(typename),
44
                                  QStandardItem(nodeid),
45
                                  QStandardItem(ref.BrowseName.to_string()),
46
                                  QStandardItem(typedef)
47
                                 ])
48
49
50