src/eric7/WebBrowser/SpeedDial/SpeedDialWriter.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 8881
54e42bc2437a
child 9221
bf71ee032bb4
equal deleted inserted replaced
9208:3fc8dfeb6ebe 9209:b99e7fd55fd3
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2012 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a class to write speed dial data files.
8 """
9
10 from PyQt6.QtCore import QXmlStreamWriter, QIODevice, QFile
11
12
13 class SpeedDialWriter(QXmlStreamWriter):
14 """
15 Class implementing a writer object to generate speed dial data files.
16 """
17 def __init__(self):
18 """
19 Constructor
20 """
21 super().__init__()
22
23 self.setAutoFormatting(True)
24
25 def write(self, fileNameOrDevice, pages, pagesPerRow, speedDialSize):
26 """
27 Public method to write a speed dial data file.
28
29 @param fileNameOrDevice name of the file to write (string)
30 or device to write to (QIODevice)
31 @param pages list of speed dial pages (list of Page)
32 @param pagesPerRow number of pages per row (integer)
33 @param speedDialSize size of the speed dial pages (integer)
34 @return flag indicating success (boolean)
35 """
36 if isinstance(fileNameOrDevice, QIODevice):
37 f = fileNameOrDevice
38 else:
39 f = QFile(fileNameOrDevice)
40 if not f.open(QIODevice.OpenModeFlag.WriteOnly):
41 return False
42
43 self.setDevice(f)
44 return self.__write(pages, pagesPerRow, speedDialSize)
45
46 def __write(self, pages, pagesPerRow, speedDialSize):
47 """
48 Private method to write a speed dial file.
49
50 @param pages list of speed dial pages (list of Page)
51 @param pagesPerRow number of pages per row (integer)
52 @param speedDialSize size of the speed dial pages (integer)
53 @return flag indicating success (boolean)
54 """
55 self.writeStartDocument()
56 self.writeDTD("<!DOCTYPE speeddial>")
57 self.writeStartElement("SpeedDial")
58 self.writeAttribute("version", "1.0")
59
60 self.writeStartElement("Pages")
61 self.writeAttribute("row", str(pagesPerRow))
62 self.writeAttribute("size", str(speedDialSize))
63
64 for page in pages:
65 self.writeEmptyElement("Page")
66 self.writeAttribute("url", page.url)
67 self.writeAttribute("title", page.title)
68
69 self.writeEndDocument()
70 return True

eric ide

mercurial