src/eric7/WebBrowser/Bookmarks/XbelWriter.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9473
3f23dbf37dbe
equal deleted inserted replaced
9220:e9e7eca7efee 9221:bf71ee032bb4
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.
18 """ 18 """
19
19 def __init__(self): 20 def __init__(self):
20 """ 21 """
21 Constructor 22 Constructor
22 """ 23 """
23 super().__init__() 24 super().__init__()
24 25
25 self.setAutoFormatting(True) 26 self.setAutoFormatting(True)
26 27
27 def write(self, fileNameOrDevice, root): 28 def write(self, fileNameOrDevice, root):
28 """ 29 """
29 Public method to write an XBEL bookmark file. 30 Public method to write an XBEL bookmark file.
30 31
31 @param fileNameOrDevice name of the file to write (string) 32 @param fileNameOrDevice name of the file to write (string)
32 or device to write to (QIODevice) 33 or device to write to (QIODevice)
33 @param root root node of the bookmark tree (BookmarkNode) 34 @param root root node of the bookmark tree (BookmarkNode)
34 @return flag indicating success (boolean) 35 @return flag indicating success (boolean)
35 """ 36 """
37 f = fileNameOrDevice 38 f = fileNameOrDevice
38 else: 39 else:
39 f = QFile(fileNameOrDevice) 40 f = QFile(fileNameOrDevice)
40 if root is None or not f.open(QIODevice.OpenModeFlag.WriteOnly): 41 if root is None or not f.open(QIODevice.OpenModeFlag.WriteOnly):
41 return False 42 return False
42 43
43 self.setDevice(f) 44 self.setDevice(f)
44 return self.__write(root) 45 return self.__write(root)
45 46
46 def __write(self, root): 47 def __write(self, root):
47 """ 48 """
48 Private method to write an XBEL bookmark file. 49 Private method to write an XBEL bookmark file.
49 50
50 @param root root node of the bookmark tree (BookmarkNode) 51 @param root root node of the bookmark tree (BookmarkNode)
51 @return flag indicating success (boolean) 52 @return flag indicating success (boolean)
52 """ 53 """
53 self.writeStartDocument() 54 self.writeStartDocument()
54 self.writeDTD("<!DOCTYPE xbel>") 55 self.writeDTD("<!DOCTYPE xbel>")
57 if root.type() == BookmarkNode.Root: 58 if root.type() == BookmarkNode.Root:
58 for child in root.children(): 59 for child in root.children():
59 self.__writeItem(child) 60 self.__writeItem(child)
60 else: 61 else:
61 self.__writeItem(root) 62 self.__writeItem(root)
62 63
63 self.writeEndDocument() 64 self.writeEndDocument()
64 return True 65 return True
65 66
66 def __writeItem(self, node): 67 def __writeItem(self, node):
67 """ 68 """
68 Private method to write an entry for a node. 69 Private method to write an entry for a node.
69 70
70 @param node reference to the node to be written (BookmarkNode) 71 @param node reference to the node to be written (BookmarkNode)
71 """ 72 """
72 if node.type() == BookmarkNode.Folder: 73 if node.type() == BookmarkNode.Folder:
73 self.writeStartElement("folder") 74 self.writeStartElement("folder")
74 if node.added.isValid(): 75 if node.added.isValid():
75 self.writeAttribute("added", 76 self.writeAttribute("added", node.added.toString(Qt.DateFormat.ISODate))
76 node.added.toString(Qt.DateFormat.ISODate))
77 self.writeAttribute("folded", node.expanded and "no" or "yes") 77 self.writeAttribute("folded", node.expanded and "no" or "yes")
78 self.writeTextElement("title", node.title) 78 self.writeTextElement("title", node.title)
79 for child in node.children(): 79 for child in node.children():
80 self.__writeItem(child) 80 self.__writeItem(child)
81 self.writeEndElement() 81 self.writeEndElement()
82 elif node.type() == BookmarkNode.Bookmark: 82 elif node.type() == BookmarkNode.Bookmark:
83 self.writeStartElement("bookmark") 83 self.writeStartElement("bookmark")
84 if node.url: 84 if node.url:
85 self.writeAttribute("href", node.url) 85 self.writeAttribute("href", node.url)
86 if node.added.isValid(): 86 if node.added.isValid():
87 self.writeAttribute("added", 87 self.writeAttribute("added", node.added.toString(Qt.DateFormat.ISODate))
88 node.added.toString(Qt.DateFormat.ISODate))
89 if node.modified.isValid(): 88 if node.modified.isValid():
90 self.writeAttribute( 89 self.writeAttribute(
91 "modified", node.modified.toString(Qt.DateFormat.ISODate)) 90 "modified", node.modified.toString(Qt.DateFormat.ISODate)
91 )
92 if node.visited.isValid(): 92 if node.visited.isValid():
93 self.writeAttribute( 93 self.writeAttribute(
94 "visited", node.visited.toString(Qt.DateFormat.ISODate)) 94 "visited", node.visited.toString(Qt.DateFormat.ISODate)
95 )
95 self.writeAttribute("visitCount", str(node.visitCount)) 96 self.writeAttribute("visitCount", str(node.visitCount))
96 self.writeTextElement("title", node.title) 97 self.writeTextElement("title", node.title)
97 if node.desc: 98 if node.desc:
98 self.writeTextElement("desc", node.desc) 99 self.writeTextElement("desc", node.desc)
99 self.writeEndElement() 100 self.writeEndElement()
100 elif node.type() == BookmarkNode.Separator: 101 elif node.type() == BookmarkNode.Separator:
101 self.writeEmptyElement("separator") 102 self.writeEmptyElement("separator")
102 if node.added.isValid(): 103 if node.added.isValid():
103 self.writeAttribute("added", 104 self.writeAttribute("added", node.added.toString(Qt.DateFormat.ISODate))
104 node.added.toString(Qt.DateFormat.ISODate))

eric ide

mercurial