mirror of
https://github.com/GNS3/gns3-gui.git
synced 2026-05-17 00:46:01 +03:00
Display server error messages in the console
This commit is contained in:
@@ -116,9 +116,21 @@ class ConsoleView(PyCutExt, ConsoleCmd):
|
||||
# In any case, reprint promt + line
|
||||
self.write("\n" + sys.ps1 + str(self.line))
|
||||
|
||||
def write_error(self, name, code, message):
|
||||
def writeError(self, name, code, message):
|
||||
"""
|
||||
Write error messages coming from the server.
|
||||
|
||||
print("Error received from {} with code {} and message: {}\n".format(name, code, message))
|
||||
:param name: node name
|
||||
:param code: error code
|
||||
:param message: error message
|
||||
"""
|
||||
|
||||
#print("Error received from {} with code {} and message: {}\n".format(name, code, message))
|
||||
if name:
|
||||
name = name + ": "
|
||||
text = "Server error [{code}]: {name} {message}".format(code=code, name=name, message=message)
|
||||
self.write(text, error=True)
|
||||
self.write("\n")
|
||||
|
||||
def _run(self):
|
||||
"""
|
||||
|
||||
@@ -47,6 +47,10 @@ class GraphicsView(QtGui.QGraphicsView):
|
||||
|
||||
def __init__(self, parent):
|
||||
|
||||
# Our parent is the central widget which parent
|
||||
# is the main window.
|
||||
self._main_window = parent.parent()
|
||||
|
||||
QtGui.QGraphicsView.__init__(self, parent)
|
||||
self._settings = {}
|
||||
self._loadSettings()
|
||||
@@ -479,10 +483,9 @@ class GraphicsView(QtGui.QGraphicsView):
|
||||
Opens the node configurator.
|
||||
"""
|
||||
|
||||
from .main_window import MainWindow
|
||||
if not items:
|
||||
items = self.scene().selectedItems()
|
||||
node_configurator = NodeConfigurator(items, MainWindow.instance())
|
||||
node_configurator = NodeConfigurator(items, self._main_window)
|
||||
node_configurator.setModal(True)
|
||||
node_configurator.show()
|
||||
node_configurator.exec_()
|
||||
@@ -564,35 +567,41 @@ class GraphicsView(QtGui.QGraphicsView):
|
||||
configure_action.triggered.connect(self.configureActionSlot)
|
||||
menu.addAction(configure_action)
|
||||
|
||||
console_action = QtGui.QAction("Console", menu)
|
||||
console_action.setIcon(QtGui.QIcon(':/icons/console.svg'))
|
||||
console_action.triggered.connect(self.consoleActionSlot)
|
||||
menu.addAction(console_action)
|
||||
if True in list(map(lambda item: hasattr(item.node(), "console"), items)):
|
||||
console_action = QtGui.QAction("Console", menu)
|
||||
console_action.setIcon(QtGui.QIcon(':/icons/console.svg'))
|
||||
console_action.triggered.connect(self.consoleActionSlot)
|
||||
menu.addAction(console_action)
|
||||
|
||||
idlepc_action = QtGui.QAction("Idle-PC", menu)
|
||||
idlepc_action.setIcon(QtGui.QIcon(':/icons/calculate.svg'))
|
||||
idlepc_action.triggered.connect(self.idlepcActionSlot)
|
||||
menu.addAction(idlepc_action)
|
||||
if True in list(map(lambda item: hasattr(item.node(), "idlepcs"), items)):
|
||||
idlepc_action = QtGui.QAction("Idle-PC", menu)
|
||||
idlepc_action.setIcon(QtGui.QIcon(':/icons/calculate.svg'))
|
||||
idlepc_action.triggered.connect(self.idlepcActionSlot)
|
||||
menu.addAction(idlepc_action)
|
||||
|
||||
start_action = QtGui.QAction("Start", menu)
|
||||
start_action.setIcon(QtGui.QIcon(':/icons/play.svg'))
|
||||
start_action.triggered.connect(self.startActionSlot)
|
||||
menu.addAction(start_action)
|
||||
if True in list(map(lambda item: hasattr(item.node(), "start"), items)):
|
||||
start_action = QtGui.QAction("Start", menu)
|
||||
start_action.setIcon(QtGui.QIcon(':/icons/play.svg'))
|
||||
start_action.triggered.connect(self.startActionSlot)
|
||||
menu.addAction(start_action)
|
||||
|
||||
suspend_action = QtGui.QAction("Suspend", menu)
|
||||
suspend_action.setIcon(QtGui.QIcon(':/icons/pause.svg'))
|
||||
suspend_action.triggered.connect(self.suspendActionSlot)
|
||||
menu.addAction(suspend_action)
|
||||
if True in list(map(lambda item: hasattr(item.node(), "suspend"), items)):
|
||||
suspend_action = QtGui.QAction("Suspend", menu)
|
||||
suspend_action.setIcon(QtGui.QIcon(':/icons/pause.svg'))
|
||||
suspend_action.triggered.connect(self.suspendActionSlot)
|
||||
menu.addAction(suspend_action)
|
||||
|
||||
stop_action = QtGui.QAction("Stop", menu)
|
||||
stop_action.setIcon(QtGui.QIcon(':/icons/stop.svg'))
|
||||
stop_action.triggered.connect(self.stopActionSlot)
|
||||
menu.addAction(stop_action)
|
||||
if True in list(map(lambda item: hasattr(item.node(), "stop"), items)):
|
||||
stop_action = QtGui.QAction("Stop", menu)
|
||||
stop_action.setIcon(QtGui.QIcon(':/icons/stop.svg'))
|
||||
stop_action.triggered.connect(self.stopActionSlot)
|
||||
menu.addAction(stop_action)
|
||||
|
||||
reload_action = QtGui.QAction("Reload", menu)
|
||||
reload_action.setIcon(QtGui.QIcon(':/icons/reload.svg'))
|
||||
reload_action.triggered.connect(self.reloadActionSlot)
|
||||
menu.addAction(reload_action)
|
||||
if True in list(map(lambda item: hasattr(item.node(), "reload"), items)):
|
||||
reload_action = QtGui.QAction("Reload", menu)
|
||||
reload_action.setIcon(QtGui.QIcon(':/icons/reload.svg'))
|
||||
reload_action.triggered.connect(self.reloadActionSlot)
|
||||
menu.addAction(reload_action)
|
||||
|
||||
delete_action = QtGui.QAction("Delete", menu)
|
||||
delete_action.setIcon(QtGui.QIcon(':/icons/delete.svg'))
|
||||
@@ -761,9 +770,7 @@ class GraphicsView(QtGui.QGraphicsView):
|
||||
if not node_module:
|
||||
raise ModuleError("Could not find any module for {}".format(node_class))
|
||||
node = node_module.createNode(node_class)
|
||||
# from .main_window import MainWindow
|
||||
# mainwindow = MainWindow.instance()
|
||||
# node.error_signal.connect(mainwindow.uiConsoleTextEdit.write_error)
|
||||
node.error_signal.connect(self._main_window.uiConsoleTextEdit.writeError)
|
||||
node_item = NodeItem(node)
|
||||
node_module.setupNode(node)
|
||||
except ModuleError as e:
|
||||
|
||||
@@ -146,7 +146,7 @@ class PyCutExt(QtGui.QTextEdit):
|
||||
else:
|
||||
return self.line
|
||||
|
||||
def write(self, text):
|
||||
def write(self, text, error=False):
|
||||
"""
|
||||
Simulates stdin, stdout, and stderr.
|
||||
"""
|
||||
@@ -164,7 +164,11 @@ class PyCutExt(QtGui.QTextEdit):
|
||||
# Set the format
|
||||
cursor.setPosition(pos1, QtGui.QTextCursor.KeepAnchor)
|
||||
char_format = cursor.charFormat()
|
||||
char_format.setForeground(QtGui.QBrush(QtGui.QColor(0, 0, 0)))
|
||||
if error:
|
||||
color = QtGui.QColor(255, 0, 0) # red
|
||||
else:
|
||||
color = QtGui.QColor(0, 0, 0) # black
|
||||
char_format.setForeground(QtGui.QBrush(color))
|
||||
cursor.setCharFormat(char_format)
|
||||
|
||||
def writelines(self, text):
|
||||
@@ -332,7 +336,7 @@ class PyCutExt(QtGui.QTextEdit):
|
||||
newpos = cursor.position()
|
||||
pos = -1
|
||||
|
||||
while(newpos != pos):
|
||||
while (newpos != pos):
|
||||
cursor.movePosition(QtGui.QTextCursor.NextWord)
|
||||
|
||||
pos = newpos
|
||||
|
||||
@@ -254,6 +254,7 @@ class Topology(object):
|
||||
if not node_module:
|
||||
raise ModuleError("Could not find any module for {}".format(topology_node["type"]))
|
||||
node = node_module.createNode(node_class)
|
||||
node.error_signal.connect(main_window.uiConsoleTextEdit.writeError)
|
||||
except ModuleError as e:
|
||||
node_errors.append(str(e))
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user