Code Duplication    Length = 15-20 lines in 2 locations

freeopcuaclient/mainwindow.py 2 locations

@@ 159-178 (lines=20) @@
156
157
class AttrsUI(object):
158
159
    def __init__(self, window, uaclient):
160
        self.window = window
161
        self.uaclient = uaclient
162
        self.model = QStandardItemModel()
163
        self.window.ui.attrView.setModel(self.model)
164
        self.window.ui.attrView.doubleClicked.connect(self.edit_attr)
165
        self.model.itemChanged.connect(self.edit_attr_finished)
166
        self.window.ui.attrView.header().setSectionResizeMode(1)
167
168
        self.window.ui.treeView.activated.connect(self.show_attrs)
169
        self.window.ui.treeView.clicked.connect(self.show_attrs)
170
        self.window.ui.attrRefreshButton.clicked.connect(self.show_attrs)
171
172
        # Context menu
173
        self.window.ui.attrView.setContextMenuPolicy(Qt.CustomContextMenu)
174
        self.window.ui.attrView.customContextMenuRequested.connect(self.showContextMenu)
175
        copyaction = QAction("&Copy Value", self.model)
176
        copyaction.triggered.connect(self._copy_value)
177
        self._contextMenu = QMenu()
178
        self._contextMenu.addAction(copyaction)
179
180
    def edit_attr(self, idx):
181
        if idx.column() != 1:
@@ 276-290 (lines=15) @@
273
274
class TreeUI(object):
275
276
    def __init__(self, window, uaclient):
277
        self.window = window
278
        self.uaclient = uaclient
279
        self.model = TreeViewModel(self.uaclient)
280
        self.model.clear()  # FIXME: do we need this?
281
        self.model.error.connect(self.window.show_error)
282
        self.window.ui.treeView.setModel(self.model)
283
        self.window.ui.treeView.setUniformRowHeights(True)
284
        self.window.ui.treeView.setSelectionBehavior(QAbstractItemView.SelectRows)
285
        self.window.ui.treeView.header().setSectionResizeMode(1)
286
        self.window.ui.actionCopyPath.triggered.connect(self._copy_path)
287
        self.window.ui.actionCopyNodeId.triggered.connect(self._copy_nodeid)
288
        # add items to context menu
289
        self.window.ui.treeView.addAction(self.window.ui.actionCopyPath)
290
        self.window.ui.treeView.addAction(self.window.ui.actionCopyNodeId)
291
292
    def clear(self):
293
        self.model.clear()