Display server error messages in the console

This commit is contained in:
grossmj
2014-03-17 11:51:01 -06:00
parent 647f79d216
commit f3606d75d3
4 changed files with 58 additions and 34 deletions

View File

@@ -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):
"""

View File

@@ -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:

View File

@@ -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

View File

@@ -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