7 Module implementing a class to write XBEL bookmark files. |
7 Module implementing a class to write XBEL bookmark files. |
8 """ |
8 """ |
9 |
9 |
10 from PyQt6.QtCore import QFile, QIODevice, Qt, QXmlStreamWriter |
10 from PyQt6.QtCore import QFile, QIODevice, Qt, QXmlStreamWriter |
11 |
11 |
12 from .BookmarkNode import BookmarkNode |
12 from .BookmarkNode import BookmarkNodeType |
13 |
13 |
14 |
14 |
15 class XbelWriter(QXmlStreamWriter): |
15 class XbelWriter(QXmlStreamWriter): |
16 """ |
16 """ |
17 Class implementing a writer object to generate XBEL bookmark files. |
17 Class implementing a writer object to generate XBEL bookmark files. |
58 """ |
58 """ |
59 self.writeStartDocument() |
59 self.writeStartDocument() |
60 self.writeDTD("<!DOCTYPE xbel>") |
60 self.writeDTD("<!DOCTYPE xbel>") |
61 self.writeStartElement("xbel") |
61 self.writeStartElement("xbel") |
62 self.writeAttribute("version", "1.0") |
62 self.writeAttribute("version", "1.0") |
63 if root.type() == BookmarkNode.Root: |
63 if root.type() == BookmarkNodeType.Root: |
64 for child in root.children(): |
64 for child in root.children(): |
65 self.__writeItem(child) |
65 self.__writeItem(child) |
66 else: |
66 else: |
67 self.__writeItem(root) |
67 self.__writeItem(root) |
68 |
68 |
74 Private method to write an entry for a node. |
74 Private method to write an entry for a node. |
75 |
75 |
76 @param node reference to the node to be written |
76 @param node reference to the node to be written |
77 @type BookmarkNode |
77 @type BookmarkNode |
78 """ |
78 """ |
79 if node.type() == BookmarkNode.Folder: |
79 if node.type() == BookmarkNodeType.Folder: |
80 self.writeStartElement("folder") |
80 self.writeStartElement("folder") |
81 if node.added.isValid(): |
81 if node.added.isValid(): |
82 self.writeAttribute("added", node.added.toString(Qt.DateFormat.ISODate)) |
82 self.writeAttribute("added", node.added.toString(Qt.DateFormat.ISODate)) |
83 self.writeAttribute("folded", node.expanded and "no" or "yes") |
83 self.writeAttribute("folded", node.expanded and "no" or "yes") |
84 self.writeTextElement("title", node.title) |
84 self.writeTextElement("title", node.title) |
85 for child in node.children(): |
85 for child in node.children(): |
86 self.__writeItem(child) |
86 self.__writeItem(child) |
87 self.writeEndElement() |
87 self.writeEndElement() |
88 elif node.type() == BookmarkNode.Bookmark: |
88 elif node.type() == BookmarkNodeType.Bookmark: |
89 self.writeStartElement("bookmark") |
89 self.writeStartElement("bookmark") |
90 if node.url: |
90 if node.url: |
91 self.writeAttribute("href", node.url) |
91 self.writeAttribute("href", node.url) |
92 if node.added.isValid(): |
92 if node.added.isValid(): |
93 self.writeAttribute("added", node.added.toString(Qt.DateFormat.ISODate)) |
93 self.writeAttribute("added", node.added.toString(Qt.DateFormat.ISODate)) |
102 self.writeAttribute("visitCount", str(node.visitCount)) |
102 self.writeAttribute("visitCount", str(node.visitCount)) |
103 self.writeTextElement("title", node.title) |
103 self.writeTextElement("title", node.title) |
104 if node.desc: |
104 if node.desc: |
105 self.writeTextElement("desc", node.desc) |
105 self.writeTextElement("desc", node.desc) |
106 self.writeEndElement() |
106 self.writeEndElement() |
107 elif node.type() == BookmarkNode.Separator: |
107 elif node.type() == BookmarkNodeType.Separator: |
108 self.writeEmptyElement("separator") |
108 self.writeEmptyElement("separator") |
109 if node.added.isValid(): |
109 if node.added.isValid(): |
110 self.writeAttribute("added", node.added.toString(Qt.DateFormat.ISODate)) |
110 self.writeAttribute("added", node.added.toString(Qt.DateFormat.ISODate)) |