def __init__(self): QtWidgets.QTreeWidget.__init__(self) # self.header().setResizeMode(QtWidgets.QHeaderView.Stretch) self.setHeaderLabels(['Title', 'Type']) source = QtXml.QXmlInputSource() source.setData(xml) handler = XmlHandler(self) reader = QtXml.QXmlSimpleReader() reader.setContentHandler(handler) reader.setErrorHandler(handler) reader.parse(source)
def readProject(self, path): # validate project project_file = os.path.join(path, "project.xml") if os.path.exists(project_file) is False: return False # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument() file = open(os.path.join(path, "project.xml"), "r") dom_document.setContent(file.read()) file.close() data = {} elements = dom_document.documentElement() node = elements.firstChild() while node.isNull() is False: tag = node.toElement() name = tag.tagName() data["Version"] = tag.attribute("Version") data["Type"] = tag.attribute("Type") data["Name"] = tag.attribute("Name") data["MainScript"] = tag.attribute("MainScript") node = node.nextSibling() if name != "pycoder_project": return False else: return name, data
def addRowToReportData(self, l): if not self.qry_.isValid(): return row = QtXml.QDomElement(self.q_.rptXmlData().createElement("Row")) row.setAttribute("level", l) imgFieldsBack = [] i = 0 for it in self.qFieldList_: strVal = str(self.qry_.value(i, False)) if self.qImgFields_ and self.qImgFields_[len(self.qImgFields_) - 1] == i: imgFieldsBack.append(self.qImgFields_.pop()) if strVal in ["", "None"]: row.setAttribute(it, strVal) continue imgFile = filedir("../tempdata") imgFile += "/%s.png" % strVal if not os.path.exists(imgFile): #print("Creando", imgFile) #print(self.qry_.value(i, True)) pix = QtGui.QPixmap(self.qry_.value(i, True)) if not pix.save(imgFile): print("FLReportEngine::No se ha podido guardar", imgFile) row.setAttribute(it, imgFile) else: row.setAttribute(it, strVal) i += 1 self.rows_.appendChild(row) self.qImgFields_ = imgFieldsBack
def addRowToReportData(self, l): if not self.qry_.isValid(): return row = QtXml.QDomElement(self.q_.rptXmlData().createElement("Row")) row.setAttribute("level", l) imgFieldsBack = [] i = 0 for it in self.qFieldList_: rawVal = self.qry_.value(i, True) empty = len(self.qImgFields_) == 0 if not empty and self.qImgFields_.top() == i: strVal = str(rawVal) imgFieldsBack.push_front(self.qImgFields_.pop()) if not strVal or strVal == "": row.setAttribute(it, strVal) continue imgFile = FLDiskCache.AQ_DISKCACHE_DIRPATH + "/" imgFile += strVal + ".png" if not QtCore.QFile.exists(imgFile): pix = QtGui.QPixmap() # pix.loadFromData(str(self.qry_.value(i))) #FIXME? pix.loadFromData(self.qry_.value(i).toCString()) pix.save(imgFile, "PNG") row.setAttribute(it, imgFile) else: row.setAttribute(it, str(rawVal)) i += 1 self.rows_.appendChild(row) self.qImgFields_ = imgFieldsBack
def saveModulesForCompletion(self): # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument("modules") modules = dom_document.createElement("modules") dom_document.appendChild(modules) for i, v in self.libraryDict.items(): tag = dom_document.createElement(i) modules.appendChild(tag) tag.setAttribute("use", str(v[1])) for subModule in v[0]: item = dom_document.createElement("item") tag.appendChild(item) t = dom_document.createTextNode(subModule) item.appendChild(t) try: file = open(self.appPathDict["modules"], "w") file.write('<?xml version="1.0" encoding="UTF-8"?>\n') file.write(dom_document.toString()) file.close() except: exc_type, exc_value, exc_traceback = sys.exc_info() logging.error(repr(traceback.format_exception(exc_type, exc_value, exc_traceback)))
def setReportPages(self, pgs: Any) -> None: """Add pages to actual report.""" self.setReportEngine(None) self.qry_ = None self.xmlData_ = QtXml.QDomNode() self.rptViewer_.setReportPages(pgs.pageCollection() if pgs else 0) self.report_ = self.rptViewer_.reportPages()
def load(self): # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument() file = open(self.projectPathDict["buildprofile"], "r") dom_document.setContent(file.read()) file.close() dataDict = {} elements = dom_document.documentElement() node = elements.firstChild() while node.isNull() is False: name = node.nodeName() expandedName = name.replace('-', ' ') if expandedName in self.lists: sub_node = node.firstChild() while sub_node.isNull() is False: sub_prop = sub_node.toElement() self.lists[expandedName].append(sub_prop.text()) sub_node = sub_node.nextSibling() dataDict[expandedName] = self.lists[expandedName] else: sub_prop = node.toElement() dataDict[name] = sub_prop.text() node = node.nextSibling() return dataDict
def loadModulesForCompletion(self): # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument() try: file = open(self.appPathDict["modules"], "r") dom_document.setContent(file.read()) file.close() except: exc_type, exc_value, exc_traceback = sys.exc_info() logging.error(repr(traceback.format_exception(exc_type, exc_value, exc_traceback))) return element = dom_document.documentElement() node = element.firstChild() self.libraryDict = {} while node.isNull() is False: property = node.toElement() sub_node = property.firstChild() moduleName = node.nodeName() use = property.attribute('use') itemList = [] while sub_node.isNull() is False: sub_prop = sub_node.toElement() itemList.append(sub_prop.text()) sub_node = sub_node.nextSibling() self.libraryDict[moduleName] = [itemList, use] node = node.nextSibling()
def setFLReportData(self, n: Any) -> bool: """Set data to report.""" self.d_.setQuery(None) tmp_doc = QtXml.QDomDocument("KugarData") tmp_doc.appendChild(n) self.rd = tmp_doc return True
def saveKeymap(self, path=None): # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument("keymap") keymap = dom_document.createElement("keymap") dom_document.appendChild(keymap) for key, value in self.useData.CUSTOM_SHORTCUTS.items(): root = dom_document.createElement(key) keymap.appendChild(root) for short, func in value.items(): tag = dom_document.createElement(short) if key == "Editor": shortName = func[0] keyValue = str(func[1]) tag.setAttribute("shortcut", shortName) tag.setAttribute("value", keyValue) else: tag.setAttribute("shortcut", func) root.appendChild(tag) if path is None: path = self.useData.appPathDict["keymap"] file = open(path, "w") file.write('<?xml version="1.0" encoding="UTF-8"?>\n') file.write(dom_document.toString()) file.close()
def save(self, name=None): # save style # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument("Scheme") main = dom_document.createElement("Attributes") dom_document.appendChild(main) root = dom_document.createElement("lexer") main.appendChild(root) for key, value in self.lexerStyler.currentStyle.items(): tag = dom_document.createElement("property") tag.setAttribute("font", value[0]) tag.setAttribute("color", value[1]) tag.setAttribute("size", value[2]) tag.setAttribute("bold", str(value[3])) tag.setAttribute("italic", str(value[4])) tag.setAttribute("paper", value[5]) t = dom_document.createTextNode(key) tag.appendChild(t) root.appendChild(tag) root = dom_document.createElement("editor") main.appendChild(root) for key, value in self.editorStyler.currentProperties.items(): tag = dom_document.createElement("property") root.appendChild(tag) tag.setAttribute("background", value[0]) tag.setAttribute("foreground", value[1]) if key == "Calltips": tag.setAttribute("highLight", value[2]) if key == "Number Margin": tag.setAttribute("font", value[2]) tag.setAttribute("size", str(value[3])) tag.setAttribute("bold", str(value[4])) tag.setAttribute("italic", str(value[5])) t = dom_document.createTextNode(key) tag.appendChild(t) if name is None: name = self.schemeNameBox.currentText() groupName = self.schemeTypeBox.currentText() path = os.path.join( self.useData.appPathDict["stylesdir"], groupName, name + '.xml') try: file = open(path, "w") file.write('<?xml version="1.0" encoding="UTF-8"?>\n') file.write(dom_document.toString()) file.close() except Exception as err: message = QtWidgets.QMessageBox.warning(self, "Save", "Saving failed: {0}".format(str(err))) file.close() return
def editComment(self): edit = EditComment(self.commentViewer.toPlainText(), self) edit.exec_() if edit.accepted: comment = edit.commentEdit.toPlainText() source = self.sourceLine.text() snippetName = self.currentSnippetNameLabel.text() path = os.path.join(self.useData.appPathDict["librarydir"], snippetName) # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument() file = open(path, "r") dom_document.setContent(file.read()) file.close() # save changes # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument("snippet") root = dom_document.createElement("snippet") dom_document.appendChild(root) tag = dom_document.createElement('comments') root.appendChild(tag) t = dom_document.createCDATASection(comment) tag.appendChild(t) tag = dom_document.createElement('source') root.appendChild(tag) t = dom_document.createCDATASection(source) tag.appendChild(t) tag = dom_document.createElement('code') root.appendChild(tag) t = dom_document.createCDATASection(self.codeViewer.text()) tag.appendChild(t) file = open(path, "w") file.write('<?xml version="1.0" encoding="UTF-8"?>\n') file.write(dom_document.toString()) file.close() self.viewLibraryItem(self.currentSnippetItem)
def save(self): fileName = self.projectPathDict["ropeprofile"] # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument("rope_profile") main_data = dom_document.createElement("rope") dom_document.appendChild(main_data) root = dom_document.createElement("ignoresyntaxerrors") attrib = dom_document.createTextNode( self.ignoreSyntaxErrorsBox.currentText()) root.appendChild(attrib) main_data.appendChild(root) root = dom_document.createElement("ignorebadimports") attrib = dom_document.createTextNode( self.ignoreBadImportsBox.currentText()) root.appendChild(attrib) main_data.appendChild(root) root = dom_document.createElement("maxhistoryitems") attrib = dom_document.createTextNode(str(self.maxHistoryBox.value())) root.appendChild(attrib) main_data.appendChild(root) root = dom_document.createElement("Extensions_qt5") main_data.appendChild(root) defExt = ['*.py', '*.pyw'] for i in defExt: tag = dom_document.createElement("item") root.appendChild(tag) t = dom_document.createTextNode(i) tag.appendChild(t) root = dom_document.createElement("IgnoredResources") main_data.appendChild(root) defIgnore = [ "*.pyc", "*~", ".ropeproject", ".hg", ".svn", "_svn", ".git", "__pycache__" ] for i in defIgnore: tag = dom_document.createElement("item") root.appendChild(tag) t = dom_document.createTextNode(i) tag.appendChild(t) root = dom_document.createElement("CustomFolders") main_data.appendChild(root) file = open(fileName, "w") file.write('<?xml version="1.0" encoding="UTF-8"?>\n') file.write(dom_document.toString()) file.close()
def setReportData(self, q): if isinstance(q, FLDomNodeInterface): return self.setFLReportData(q.obj()) if not q: return if not self.rd: self.rd = QtXml.QDomDocument("KUGAR_DATA") tmpDoc = QtXml.QDomDocument("KUGAR_DATA") self.d_.rows_ = tmpDoc.createDocumentFragment() self.d_.setQuery(q) q.setForwardOnly(True) if not q.exec_(): return False if not q.next(): return False g = self.d_.qGroupDict_ if not g: while True: self.d_.addRowToReportData(0) if not q.next(): break else: vA = QtCore.QStringListModel().stringList() for i in range(10): vA.append("") while True: self.d_.groupBy(len(g), vA) if not q.next(): break data = QtXml.QDomElement(tmpDoc.createElement("KugarData")) data.appendChild(self.d_.rows_) tmpDoc.appendChild(data) self.rd = tmpDoc self.d_.rows_.clear() self.initData() return True
def init(self, _acl_xml: str = None) -> None: """ Read the file "acl.xml" and establish a new access control list. If the file "acl.xml" cannot be read, the access control list is empty and no access control will be processed on any object. @param _acl_xml XML content with the definition of the access control list. """ if _acl_xml is None: if application.PROJECT.conn_manager is None: raise Exception("Project is not connected yet") _acl_xml = application.PROJECT.conn_manager.managerModules( ).content("acl.xml") doc = QtXml.QDomDocument("ACL") if self._access_control_list: self._access_control_list.clear() if _acl_xml and not doc.setContent(_acl_xml): LOGGER.warning( QtCore.QObject().tr("Lista de control de acceso errónea")) return self._access_control_list = {} # self._access_control_list.setAutoDelete(True) doc_elem = doc.documentElement() node = doc_elem.firstChild() if node.isNull(): return while not node.isNull(): element = node.toElement() if element: if element.tagName() == "name": self._name = element.text() node = node.nextSibling() continue rule = pnaccesscontrolfactory.PNAccessControlFactory().create( element.tagName()) if rule: rule.set(element) self._access_control_list["%s::%s::%s" % (rule.type(), rule.name(), rule.user())] = rule node = node.nextSibling() continue node = node.nextSibling() LOGGER.warning( QtCore.QObject().tr("Lista de control de acceso cargada"))
def loadNodes(fname): '''Попытка "плоской" (загружаем всё в список, и потом формируем дерево) загрузки из БД''' if not os.path.exists(fname): print('File not exists') return None xmlFile = QFile(fname) source = QtXml.QXmlInputSource(xmlFile) handler = XmlHandler() reader = QtXml.QXmlSimpleReader() reader.setContentHandler(handler) reader.setErrorHandler(handler) print('prepare parse') root = None if reader.parse(source): print('parse') root = handler.getTree() else: print('error {}'.format(handler.errorString())) return root
def writeRopeProfile(self): # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument("rope_profile") main_data = dom_document.createElement("rope") dom_document.appendChild(main_data) root = dom_document.createElement("ignoresyntaxerrors") attrib = dom_document.createTextNode('') root.appendChild(attrib) main_data.appendChild(root) root = dom_document.createElement("ignorebadimports") attrib = dom_document.createTextNode('') root.appendChild(attrib) main_data.appendChild(root) root = dom_document.createElement("maxhistoryitems") attrib = dom_document.createTextNode('32') root.appendChild(attrib) main_data.appendChild(root) root = dom_document.createElement("Extensions_qt5") main_data.appendChild(root) defExt = ['*.py', '*.pyw'] for i in defExt: tag = dom_document.createElement("item") root.appendChild(tag) t = dom_document.createTextNode(i) tag.appendChild(t) root = dom_document.createElement("IgnoredResources") main_data.appendChild(root) defIgnore = [ "*.pyc", "*~", ".ropeproject", ".hg", ".svn", "_svn", ".git", "__pycache__" ] for i in defIgnore: tag = dom_document.createElement("item") root.appendChild(tag) t = dom_document.createTextNode(i) tag.appendChild(t) root = dom_document.createElement("CustomFolders") main_data.appendChild(root) file = open(os.path.join(self.projectPath, "Rope", "profile.xml"), "w") file.write('<?xml version="1.0" encoding="UTF-8"?>\n') file.write(dom_document.toString()) file.close()
def createDomDocument(self): """ Create the QDomDocument where to store project information. """ self.document = QtXml.QDomDocument() instruction = self.document.createProcessingInstruction( 'xml', 'version="1.0" encoding="UTF-8"') self.document.appendChild(instruction) graphol = self.document.createElement('graphol') graphol.setAttribute('version', '2') self.document.appendChild(graphol)
def writeDefaultSession(self): # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument("session") session = dom_document.createElement("session") dom_document.appendChild(session) file = open(os.path.join(self.projectPath, "Data", "session.xml"), "w") file.write('<?xml version="1.0" encoding="UTF-8"?>\n') file.write(dom_document.toString()) file.close()
def loadProjectData(self): # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument() file = open(os.path.join(self.projectPathDict[ "root"], "Data", "projectdata.xml"), "r") x = dom_document.setContent(file.read()) file.close() elements = dom_document.documentElement() node = elements.firstChild() shortcuts = [] recentfiles = [] favourites = [] launchers = {} settingsList = [] while node.isNull() is False: property = node.toElement() sub_node = property.firstChild() while sub_node.isNull() is False: sub_prop = sub_node.toElement() if node.nodeName() == "shortcuts": shortcuts.append(sub_prop.text()) elif node.nodeName() == "recentfiles": if os.path.exists(sub_prop.text()): recentfiles.append(sub_prop.text()) else: pass elif node.nodeName() == "favourites": favourites.append(sub_prop.text()) elif node.nodeName() == "settings": settingsList.append((tuple(sub_prop.text().split('=', 1)))) elif node.nodeName() == "launchers": tag = sub_prop.toElement() path = tag.attribute("path") param = tag.attribute("param") launchers[path] = param sub_node = sub_node.nextSibling() node = node.nextSibling() settingsDict = dict(settingsList) settingsDict['LastCloseSuccessful'] = settingsDict['Closed'] settingsDict['Closed'] = "False" self.projectData = {} self.projectData["shortcuts"] = shortcuts self.projectData["favourites"] = favourites self.projectData["recentfiles"] = recentfiles self.projectData["settings"] = settingsDict self.projectData["launchers"] = launchers # in order that a crash can be reported self.saveProjectData()
def setMainScript(self): fileName = self.getCurrentFilePath() self.projectPathDict["mainscript"] = fileName # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument() file = open(self.projectPathDict["projectmainfile"], "r") x = dom_document.setContent(file.read()) file.close() elements = dom_document.documentElement() node = elements.firstChild() settingsDict = {} while node.isNull() is False: tag = node.toElement() settingsDict["Type"] = tag.attribute("Type") settingsDict["Name"] = tag.attribute("Name") settingsDict["MainScript"] = tag.attribute("MainScript") settingsDict["Version"] = tag.attribute("Version") node = node.nextSibling() settingsDict["MainScript"] = fileName # save data # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument("Project") properties = dom_document.createElement("properties") dom_document.appendChild(properties) tag = dom_document.createElement("pycoder_project") for key, value in settingsDict.items(): tag.setAttribute(key, value) properties.appendChild(tag) file = open(self.projectPathDict["projectmainfile"], "w") file.write('<?xml version="1.0" encoding="UTF-8"?>\n') file.write(dom_document.toString()) file.close()
def getElements(self, fileopen): doc = QtXml.QDomDocument() if not doc.setContent(fileopen): return [] rectangles = self.__getRectangles(doc) ellipses = self.__getEllipses(doc) circles = self.__getCircles(doc) lines = self.__getLines(doc) polygons = self.__getPolygons(doc) texts = self.__getTexts(doc) return rectangles + ellipses + circles + lines + polygons + texts
def getSize(self, fileopen): doc = QtXml.QDomDocument() if not doc.setContent(fileopen): return QtCore.QRectF(0, 0, 200, 200) SVGNode = doc.elementsByTagName('svg') if len(SVGNode) > 0: SVGNodeElement = SVGNode.at(0).toElement() viewBoxParams = self.__findParams( r"([-?+?0-9.,]+)", SVGNodeElement.attribute('viewBox')) return QtCore.QRectF(int(viewBoxParams[0]), int(viewBoxParams[1]), int(viewBoxParams[2]), int(viewBoxParams[3])) else: return QtCore.QRectF(0, 0, 200, 200)
def deserialize_sld_named_layer( raw_sld_named_layer: str, ) -> typing.Tuple[typing.Optional[QtXml.QDomElement], str]: """Deserialize the SLD named layer element which is used to style QGIS layers.""" sld_doc = QtXml.QDomDocument() sld_loaded = sld_doc.setContent( QtCore.QByteArray(raw_sld_named_layer.encode()), True) error_message = "Could not parse SLD document" named_layer_element = None if sld_loaded: named_layer_element = sld_doc.documentElement() if not named_layer_element.isNull(): error_message = "" return named_layer_element, error_message
def createDomDocument(self): """ Create the QDomDocument from where to parse information. """ QtWidgets.QApplication.processEvents() LOGGER.info('Loading diagram: %s', self.path) if not fexists(self.path): raise DiagramNotFoundError('diagram not found: {0}'.format(self.path)) self.document = QtXml.QDomDocument() if not self.document.setContent(fread(self.path)): raise DiagramNotValidError('could not parse diagram from {0}'.format(self.path))
def execute(self, filename): doc = QtXml.QDomDocument("Geometric Constraints") root = doc.createElement("Objects") doc.appendChild(root) for prtObject in self.prototypeManager.prtObjects: if not prtObject.ghost: root.appendChild(prtObject.save(doc)) root.appendChild(self.prototypeManager.save(doc)) file = QtCore.QFile(filename) if file.open(QtCore.QIODevice.WriteOnly): ts = QtCore.QTextStream(file) ts << doc.toString() file.close()
def saveUseData(self): # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument("usedata") usedata = dom_document.createElement("usedata") dom_document.appendChild(usedata) root = dom_document.createElement("openedprojects") usedata.appendChild(root) for i in self.OPENED_PROJECTS: tag = dom_document.createElement("project") root.appendChild(tag) t = dom_document.createTextNode(i) tag.appendChild(t) root = dom_document.createElement("settings") usedata.appendChild(root) s = 0 for key, value in self.SETTINGS.items(): if key == "InstalledInterpreters": continue tag = dom_document.createElement("key") root.appendChild(tag) t = dom_document.createTextNode(key + '=' + value) tag.appendChild(t) s += 1 usedata = dom_document.createElement("usedata") dom_document.appendChild(usedata) try: file = open(self.appPathDict["usedata"], "w") file.write('<?xml version="1.0" encoding="UTF-8"?>\n') file.write(dom_document.toString()) file.close() except: exc_type, exc_value, exc_traceback = sys.exc_info() logging.error(repr(traceback.format_exception(exc_type, exc_value, exc_traceback))) return self.settings["running"] = 'False' self.saveSettings() self.saveModulesForCompletion()
def run(self): self.found = [] if self.reg: txt = self.text else: txt = re.escape(self.text) if self.wo: txt = "\\b{0}\\b".format(txt) flags = re.UNICODE | re.LOCALE if not self.cs: flags |= re.IGNORECASE try: search = re.compile(txt, flags) except re.error as why: print(why) files = os.listdir(self.libraryDir) # FIXME QtXml is no longer supported. dom_document = QtXml.QDomDocument() for i in range(len(files)): if self.stop: break file = os.path.abspath(os.path.join(self.libraryDir, files[i])) try: text = open(file, 'r').read() except: continue dom_document.setContent(text) documentElement = dom_document.documentElement() childElement = documentElement.firstChild().toElement() while childElement.isNull() is False: if childElement.nodeName() == 'comments': if (self.searchLoc == 0) or (self.searchLoc == 2): comments = childElement.firstChild().nodeValue() contains = search.search(comments) if contains: self.found.append(files[i]) elif childElement.nodeName() == 'code': if (self.searchLoc == 0) or (self.searchLoc == 1): code = childElement.firstChild().nodeValue() contains = search.search(code) if contains: if files[i] not in self.found: self.found.append(files[i]) childElement = childElement.nextSibling() self.searchSoFar.emit(i)
def deserialize_sld_doc( raw_sld_doc: QtCore.QByteArray, ) -> typing.Tuple[typing.Optional[QtXml.QDomElement], str]: """Deserialize SLD document gotten from GeoNode into a usable named layer element""" sld_doc = QtXml.QDomDocument() # in the line below, `True` means use XML namespaces and it is crucial for # QGIS to be able to load the SLD sld_loaded = sld_doc.setContent(raw_sld_doc, True) error_message = "Could not parse SLD document" named_layer_element = None if sld_loaded: root = sld_doc.documentElement() if not root.isNull(): sld_named_layer = root.firstChildElement("NamedLayer") if not sld_named_layer.isNull(): named_layer_element = sld_named_layer error_message = "" return named_layer_element, error_message
def run(self, path): """ Perform graph references document generation. :type path: str """ # CREATE THE DOCUMENT self.document = QtXml.QDomDocument() instruction = self.document.createProcessingInstruction('xml', 'version="1.0" encoding="UTF-8" standalone="no"') self.document.appendChild(instruction) # CREATE ROOT ELEMENT root = self.document.createElement('graphReferences') # GENERATE NODES for diagram in self.project.diagrams(): for node in diagram.nodes(): QtCore.QCoreApplication.processEvents() if node.isMeta(): iri = self.project.get_full_IRI( self.project.get_iri_of_node(node), None, node.remaining_characters) diagramElement = self.document.createElement('diagramName') diagramElement.appendChild(self.document.createTextNode(diagram.name)) xElement = self.document.createElement('x') xElement.appendChild(self.document.createTextNode(str(int(node.x())))) yElement = self.document.createElement('y') yElement.appendChild(self.document.createTextNode(str(int(node.y())))) wElement = self.document.createElement('w') wElement.appendChild(self.document.createTextNode(str(int(node.width())))) hElement = self.document.createElement('h') hElement.appendChild(self.document.createTextNode(str(int(node.height())))) nodeElement = self.document.createElement(node.type().realName.replace(' node', '')) nodeElement.setAttribute('name', iri) nodeElement.appendChild(diagramElement) nodeElement.appendChild(xElement) nodeElement.appendChild(yElement) nodeElement.appendChild(wElement) nodeElement.appendChild(hElement) root.appendChild(nodeElement) # APPEND THE GRAPH TO THE DOCUMENT self.document.appendChild(root) # GENERATE THE FILE fwrite(self.document.toString(2), path)