def testReadWriteXml(self): pr = QgsProject() l = QgsLayout(pr) pic = QgsLayoutItemPicture(l) # mode should be saved/restored pic.setMode(QgsLayoutItemPicture.FormatRaster) #save original item to xml doc = QDomDocument("testdoc") elem = doc.createElement("test") self.assertTrue(pic.writeXml(elem, doc, QgsReadWriteContext())) pic2 = QgsLayoutItemPicture(l) self.assertTrue( pic2.readXml(elem.firstChildElement(), doc, QgsReadWriteContext())) self.assertEqual(pic2.mode(), QgsLayoutItemPicture.FormatRaster) pic.setMode(QgsLayoutItemPicture.FormatSVG) elem = doc.createElement("test2") self.assertTrue(pic.writeXml(elem, doc, QgsReadWriteContext())) pic3 = QgsLayoutItemPicture(l) self.assertTrue( pic3.readXml(elem.firstChildElement(), doc, QgsReadWriteContext())) self.assertEqual(pic3.mode(), QgsLayoutItemPicture.FormatSVG)
def testMode(self): pic = QgsLayoutItemPicture(self.layout) # should default to unknown self.assertEqual(pic.mode(), QgsLayoutItemPicture.FormatUnknown) spy = QSignalSpy(pic.changed) pic.setMode(QgsLayoutItemPicture.FormatRaster) self.assertEqual(pic.mode(), QgsLayoutItemPicture.FormatRaster) self.assertEqual(len(spy), 1) pic.setMode(QgsLayoutItemPicture.FormatRaster) self.assertEqual(len(spy), 1) pic.setMode(QgsLayoutItemPicture.FormatSVG) self.assertEqual(len(spy), 3) # ideally only 2! self.assertEqual(pic.mode(), QgsLayoutItemPicture.FormatSVG) # set picture path without explicit format pic.setPicturePath(self.pngImage) self.assertEqual(pic.mode(), QgsLayoutItemPicture.FormatRaster) pic.setPicturePath(self.svgImage) self.assertEqual(pic.mode(), QgsLayoutItemPicture.FormatSVG) # forced format pic.setPicturePath(self.pngImage, QgsLayoutItemPicture.FormatSVG) self.assertEqual(pic.mode(), QgsLayoutItemPicture.FormatSVG) pic.setPicturePath(self.pngImage, QgsLayoutItemPicture.FormatRaster) self.assertEqual(pic.mode(), QgsLayoutItemPicture.FormatRaster) pic.setPicturePath(self.svgImage, QgsLayoutItemPicture.FormatSVG) self.assertEqual(pic.mode(), QgsLayoutItemPicture.FormatSVG) pic.setPicturePath(self.svgImage, QgsLayoutItemPicture.FormatRaster) self.assertEqual(pic.mode(), QgsLayoutItemPicture.FormatRaster)
def testMissingImage(self): layout = QgsLayout(QgsProject.instance()) picture = QgsLayoutItemPicture(layout) # SVG picture.setPicturePath("invalid_path", QgsLayoutItemPicture.FormatSVG) self.assertEqual(picture.isMissingImage(), True) self.assertEqual(picture.mode(), QgsLayoutItemPicture.FormatSVG) # Raster picture.setPicturePath("invalid_path", QgsLayoutItemPicture.FormatRaster) self.assertEqual(picture.isMissingImage(), True) self.assertEqual(picture.mode(), QgsLayoutItemPicture.FormatRaster)