src/eric7/WebBrowser/SpeedDial/SpeedDialReader.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9473
3f23dbf37dbe
equal deleted inserted replaced
9220:e9e7eca7efee 9221:bf71ee032bb4
13 13
14 class SpeedDialReader(QXmlStreamReader): 14 class SpeedDialReader(QXmlStreamReader):
15 """ 15 """
16 Class implementing a reader object for speed dial data files. 16 Class implementing a reader object for speed dial data files.
17 """ 17 """
18
18 def __init__(self): 19 def __init__(self):
19 """ 20 """
20 Constructor 21 Constructor
21 """ 22 """
22 super().__init__() 23 super().__init__()
23 24
24 def read(self, fileNameOrDevice): 25 def read(self, fileNameOrDevice):
25 """ 26 """
26 Public method to read a user agent file. 27 Public method to read a user agent file.
27 28
28 @param fileNameOrDevice name of the file to read (string) 29 @param fileNameOrDevice name of the file to read (string)
29 or reference to the device to read (QIODevice) 30 or reference to the device to read (QIODevice)
30 @return list of speed dial pages (list of Page), number of pages per 31 @return list of speed dial pages (list of Page), number of pages per
31 row (integer) and size of the speed dial pages (integer) 32 row (integer) and size of the speed dial pages (integer)
32 """ 33 """
33 self.__pages = [] 34 self.__pages = []
34 self.__pagesPerRow = 0 35 self.__pagesPerRow = 0
35 self.__sdSize = 0 36 self.__sdSize = 0
36 37
37 if isinstance(fileNameOrDevice, QIODevice): 38 if isinstance(fileNameOrDevice, QIODevice):
38 self.setDevice(fileNameOrDevice) 39 self.setDevice(fileNameOrDevice)
39 else: 40 else:
40 f = QFile(fileNameOrDevice) 41 f = QFile(fileNameOrDevice)
41 if not f.exists(): 42 if not f.exists():
42 return self.__pages, self.__pagesPerRow, self.__sdSize 43 return self.__pages, self.__pagesPerRow, self.__sdSize
43 opened = f.open(QIODevice.OpenModeFlag.ReadOnly) 44 opened = f.open(QIODevice.OpenModeFlag.ReadOnly)
44 if not opened: 45 if not opened:
45 self.raiseError(QCoreApplication.translate( 46 self.raiseError(
46 "SpeedDialReader", 47 QCoreApplication.translate(
47 "The file {0} could not be opened. Error: {1}").format( 48 "SpeedDialReader",
48 fileNameOrDevice, f.errorString())) 49 "The file {0} could not be opened. Error: {1}",
50 ).format(fileNameOrDevice, f.errorString())
51 )
49 return self.__pages, self.__pagesPerRow, self.__sdSize 52 return self.__pages, self.__pagesPerRow, self.__sdSize
50 self.setDevice(f) 53 self.setDevice(f)
51 54
52 while not self.atEnd(): 55 while not self.atEnd():
53 self.readNext() 56 self.readNext()
54 if self.isStartElement(): 57 if self.isStartElement():
55 version = self.attributes().value("version") 58 version = self.attributes().value("version")
56 if ( 59 if self.name() == "SpeedDial" and (not version or version == "1.0"):
57 self.name() == "SpeedDial" and
58 (not version or version == "1.0")
59 ):
60 self.__readSpeedDial() 60 self.__readSpeedDial()
61 else: 61 else:
62 self.raiseError(QCoreApplication.translate( 62 self.raiseError(
63 "SpeedDialReader", 63 QCoreApplication.translate(
64 "The file is not a SpeedDial version 1.0 file.")) 64 "SpeedDialReader",
65 65 "The file is not a SpeedDial version 1.0 file.",
66 )
67 )
68
66 return self.__pages, self.__pagesPerRow, self.__sdSize 69 return self.__pages, self.__pagesPerRow, self.__sdSize
67 70
68 def __readSpeedDial(self): 71 def __readSpeedDial(self):
69 """ 72 """
70 Private method to read the speed dial data. 73 Private method to read the speed dial data.
71 """ 74 """
72 if not self.isStartElement() and self.name() != "SpeedDial": 75 if not self.isStartElement() and self.name() != "SpeedDial":
73 return 76 return
74 77
75 while not self.atEnd(): 78 while not self.atEnd():
76 self.readNext() 79 self.readNext()
77 if self.isEndElement(): 80 if self.isEndElement():
78 if self.name() in ["Pages", "Page"]: 81 if self.name() in ["Pages", "Page"]:
79 continue 82 continue
80 else: 83 else:
81 break 84 break
82 85
83 if self.isStartElement(): 86 if self.isStartElement():
84 if self.name() == "Pages": 87 if self.name() == "Pages":
85 attributes = self.attributes() 88 attributes = self.attributes()
86 pagesPerRow = attributes.value("row") 89 pagesPerRow = attributes.value("row")
87 if pagesPerRow.isdigit(): 90 if pagesPerRow.isdigit():
95 title = attributes.value("title") 98 title = attributes.value("title")
96 if url: 99 if url:
97 if not title: 100 if not title:
98 title = url 101 title = url
99 from .Page import Page 102 from .Page import Page
103
100 page = Page(url, title) 104 page = Page(url, title)
101 self.__pages.append(page) 105 self.__pages.append(page)
102 else: 106 else:
103 self.__skipUnknownElement() 107 self.__skipUnknownElement()
104 108
105 def __skipUnknownElement(self): 109 def __skipUnknownElement(self):
106 """ 110 """
107 Private method to skip over all unknown elements. 111 Private method to skip over all unknown elements.
108 """ 112 """
109 if not self.isStartElement(): 113 if not self.isStartElement():
110 return 114 return
111 115
112 while not self.atEnd(): 116 while not self.atEnd():
113 self.readNext() 117 self.readNext()
114 if self.isEndElement(): 118 if self.isEndElement():
115 break 119 break
116 120
117 if self.isStartElement(): 121 if self.isStartElement():
118 self.__skipUnknownElement() 122 self.__skipUnknownElement()

eric ide

mercurial