diff --git a/examples/demo.py b/examples/demo.py index c40cebfc0805838e628324548831ff97868514d9..84c9cd2f8ef89ae7a16d32887a6fa3421a50cb01 100644 --- a/examples/demo.py +++ b/examples/demo.py @@ -192,7 +192,7 @@ class Demo: break -if False: +if True: demo_000 = Demo(Scenario_Generator.generate_random_scenario()) demo_000.run_demo() demo_000 = None diff --git a/flatland/utils/render_qt.py b/flatland/utils/render_qt.py index 2a4a02a78a1dbefe406f538c277ed7f91bc08094..60e147d05aa3761bfe3319b3b315aa2a0f8f73c4 100644 --- a/flatland/utils/render_qt.py +++ b/flatland/utils/render_qt.py @@ -11,6 +11,19 @@ from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QGridLayout from PyQt5 import QtSvg +def transform_string_svg(sSVG): + sSVG = sSVG.replace("ASCII", "UTF-8") + bySVG = bytearray(sSVG, encoding='utf-8') + return bySVG + +def create_QtSvgWidget_from_svg_string(sSVG): + svgWidget = QtSvg.QSvgWidget() + ret = svgWidget.renderer().load(transform_string_svg(sSVG)) + if ret == False: + print("create_QtSvgWidget_from_svg_string : failed to parse:", sSVG) + return svgWidget + + class QTGL(GraphicsLayer): def __init__(self, width, height): self.cell_pixels = 60 @@ -129,13 +142,7 @@ class QTSVG(GraphicsLayer): if False: for binTrans in self.track.dSvg.keys(): sSVG = self.track.dSvg[binTrans].to_string() - - bySVG = bytearray(sSVG, encoding='utf-8') - - svgWidget = QtSvg.QSvgWidget() - svgWidget.renderer().load(bySVG) - print(iRow, iCol) - self.layout.addWidget(svgWidget, iRow, iCol) + self.layout.addWidget(create_QtSvgWidget_from_svg_string(sSVG), iRow, iCol) iArt += 1 iRow = int(iArt / nCols) @@ -170,10 +177,7 @@ class QTSVG(GraphicsLayer): def setRailAt(self, row, col, binTrans): if binTrans in self.track.dSvg: sSVG = self.track.dSvg[binTrans].to_string() - sSVG = sSVG.replace("ASCII", "UTF-8") - bySVG = bytearray(sSVG, encoding='utf-8') - svgWidget = QtSvg.QSvgWidget() - svgWidget.renderer().load(bySVG) + svgWidget = create_QtSvgWidget_from_svg_string(sSVG) self.layout.addWidget(svgWidget, row, col) self.lwTrack.append(svgWidget) else: @@ -200,8 +204,7 @@ class QTSVG(GraphicsLayer): agentPrev.direction = iDirOut agentPrev.old_direction = iDirIn sSVG = self.zug.getSvg(iAgent, iDirIn, iDirOut, color=color).to_string() - bySVG = bytearray(sSVG, encoding='utf-8') - wAgent.renderer().load(bySVG) + wAgent.renderer().load(transform_string_svg(sSVG)) return # Ensure we have adequate slots in the list lwAgents @@ -211,9 +214,7 @@ class QTSVG(GraphicsLayer): # Create a new widget for the agent sSVG = self.zug.getSvg(iAgent, iDirIn, iDirOut, color=color).to_string() - bySVG = bytearray(sSVG, encoding='utf-8') - svgWidget = QtSvg.QSvgWidget() - svgWidget.renderer().load(bySVG) + svgWidget = create_QtSvgWidget_from_svg_string(sSVG) self.lwAgents[iAgent] = svgWidget self.agents_prev[iAgent] = EnvAgent((row, col), iDirOut, (0, 0), old_direction=iDirIn) self.layout.addWidget(svgWidget, row, col)