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

RefsWidget   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 39
rs 10
wmc 9

4 Methods

Rating   Name   Duplication   Size   Complexity  
A show_refs() 0 3 1
A __init__() 0 6 1
B _show_refs() 0 21 6
A clear() 0 2 1
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