Fix Node adding logic
* Unify _addNode calls * introduce addNode for error catching * set parent for Nodewidget only after successful creation (otherwise this results in Bug #4694 Change-Id: I82a5d867b45e766cd7dd33e7144e57a9f66a73b3 Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/30572 Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de> Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de> Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
This commit is contained in:
parent
bb0619f212
commit
e5c99c36e7
@ -99,17 +99,11 @@ class MainWindow(QMainWindow):
|
|||||||
self._nodeWidgets = {}
|
self._nodeWidgets = {}
|
||||||
|
|
||||||
# add localhost (if available) and SEC nodes given as arguments
|
# add localhost (if available) and SEC nodes given as arguments
|
||||||
for host in hosts:
|
self.addNodes(hosts)
|
||||||
try:
|
|
||||||
self.log.info('Trying to connect to %s', host)
|
|
||||||
self._addNode(host)
|
|
||||||
except Exception as e:
|
|
||||||
# TODO: make this nicer than dumping to console
|
|
||||||
self.log.error('error in addNode: %r', e)
|
|
||||||
|
|
||||||
if not self._nodes:
|
if not self._nodes:
|
||||||
greeter = Greeter(self)
|
greeter = Greeter(self)
|
||||||
greeter.addnodes.connect(self._addNodes)
|
greeter.addnodes.connect(self.addNodes)
|
||||||
greeter.recentClearBtn.connect(self.on_actionClear_triggered)
|
greeter.recentClearBtn.connect(self.on_actionClear_triggered)
|
||||||
self.recentNodesChanged.connect(greeter.loadRecent)
|
self.recentNodesChanged.connect(greeter.loadRecent)
|
||||||
self.tab.addPanel(greeter, 'Welcome')
|
self.tab.addPanel(greeter, 'Welcome')
|
||||||
@ -147,12 +141,7 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
if not ok:
|
if not ok:
|
||||||
return
|
return
|
||||||
|
self.addNode(host)
|
||||||
try:
|
|
||||||
self._addNode(host)
|
|
||||||
except Exception as e:
|
|
||||||
QMessageBox.critical(self.parent(),
|
|
||||||
'Connecting to %s failed!' % host, str(e))
|
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def on_actionReconnect_triggered(self):
|
def on_actionReconnect_triggered(self):
|
||||||
@ -171,23 +160,28 @@ class MainWindow(QMainWindow):
|
|||||||
# if level in ['user', 'admin', 'expert']:
|
# if level in ['user', 'admin', 'expert']:
|
||||||
# print('visibility Level now:', level)
|
# print('visibility Level now:', level)
|
||||||
|
|
||||||
def _addNodes(self, hosts):
|
def addNodes(self, hosts):
|
||||||
for host in hosts:
|
for host in hosts:
|
||||||
try:
|
self.addNode(host)
|
||||||
self.log.info('Trying to connect to %s', host)
|
|
||||||
self._addNode(host)
|
def addNode(self, host):
|
||||||
except Exception as e:
|
try:
|
||||||
self.log.error('error in addNode: %r', e)
|
self.log.info('Trying to connect to %s', host)
|
||||||
QMessageBox.critical(self.parent(),
|
self._addNode(host)
|
||||||
'Connecting to %s failed!' % host, str(e))
|
except Exception as e:
|
||||||
|
self.log.error('error in addNode: %r', e)
|
||||||
|
QMessageBox.critical(self.parent(),
|
||||||
|
'Connecting to %s failed!' % host, str(e))
|
||||||
|
|
||||||
def _addNode(self, host):
|
def _addNode(self, host):
|
||||||
# create client
|
# create client
|
||||||
node = QSECNode(host, self.log, parent=self)
|
node = QSECNode(host, self.log, parent=self)
|
||||||
|
nodeWidget = NodeWidget(node)
|
||||||
|
nodeWidget.setParent(self)
|
||||||
|
|
||||||
|
# Node and NodeWidget created without error
|
||||||
nodename = node.nodename
|
nodename = node.nodename
|
||||||
self._nodes[nodename] = node
|
self._nodes[nodename] = node
|
||||||
|
|
||||||
nodeWidget = NodeWidget(node, self)
|
|
||||||
self.tab.addTab(nodeWidget, node.equipmentId)
|
self.tab.addTab(nodeWidget, node.equipmentId)
|
||||||
self._nodeWidgets[nodename] = nodeWidget
|
self._nodeWidgets[nodename] = nodeWidget
|
||||||
self.tab.setCurrentWidget(nodeWidget)
|
self.tab.setCurrentWidget(nodeWidget)
|
||||||
@ -214,7 +208,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.recentNodeActions = []
|
self.recentNodeActions = []
|
||||||
for host in recent:
|
for host in recent:
|
||||||
a = QAction(host)
|
a = QAction(host)
|
||||||
a.triggered.connect(lambda _t, h=host: self._addNode(h))
|
a.triggered.connect(lambda _t, h=host: self.addNode(h))
|
||||||
self.recentNodeActions.append(a)
|
self.recentNodeActions.append(a)
|
||||||
menu.insertActions(action, self.recentNodeActions)
|
menu.insertActions(action, self.recentNodeActions)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user