Wed, 25 Sep 2019 19:00:09 +0200
Continued to resolve code style issue M841.
4725
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
6645
ad476851d7e0
Updated copyright for 2019.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6630
diff
changeset
|
3 | # Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de> |
4725
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing tool functions for the web browser. |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | |
4763
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
11 | import os |
4810
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
12 | import re |
4763
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
13 | |
7270
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
14 | from PyQt5.QtCore import ( |
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
15 | QFile, QByteArray, QUrl, QCoreApplication, QBuffer, QIODevice |
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
16 | ) |
4783
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
17 | from PyQt5.QtGui import QPixmap |
4725
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | def readAllFileContents(filename): |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | """ |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | Function to read the string contents of the given file. |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | @param filename name of the file |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | @type str |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | @return contents of the file |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | @rtype str |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | """ |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | return str(readAllFileByteContents(filename), encoding="utf-8") |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | def readAllFileByteContents(filename): |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | """ |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | Function to read the bytes contents of the given file. |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | @param filename name of the file |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | @type str |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | @return contents of the file |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | @rtype str |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | """ |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | dataFile = QFile(filename) |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | if filename and dataFile.open(QFile.ReadOnly): |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | contents = dataFile.readAll() |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | dataFile.close() |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | return contents |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | return QByteArray() |
4741
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
48 | |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
49 | |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
50 | def containsSpace(string): |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
51 | """ |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
52 | Function to check, if a string contains whitespace characters. |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
53 | |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
54 | @param string string to be checked |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
55 | @type str |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
56 | @return flag indicating the presence of at least one whitespace character |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
57 | @rtype bool |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
58 | """ |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
59 | for ch in string: |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
60 | if ch.isspace(): |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
61 | return True |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
62 | |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
63 | return False |
4763
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
64 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
65 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
66 | def ensureUniqueFilename(name, appendFormat="({0})"): |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
67 | """ |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
68 | Module function to generate an unique file name based on a pattern. |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
69 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
70 | @param name desired file name (string) |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
71 | @param appendFormat format pattern to be used to make the unique name |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
72 | (string) |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
73 | @return unique file name |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
74 | """ |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
75 | if not os.path.exists(name): |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
76 | return name |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
77 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
78 | tmpFileName = name |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
79 | i = 1 |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
80 | while os.path.exists(tmpFileName): |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
81 | tmpFileName = name |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
82 | index = tmpFileName.rfind(".") |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
83 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
84 | appendString = appendFormat.format(i) |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
85 | if index == -1: |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
86 | tmpFileName += appendString |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
87 | else: |
7270
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
88 | tmpFileName = ( |
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
89 | tmpFileName[:index] + appendString + tmpFileName[index:] |
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
90 | ) |
4763
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
91 | i += 1 |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
92 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
93 | return tmpFileName |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
94 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
95 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
96 | def getFileNameFromUrl(url): |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
97 | """ |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
98 | Module function to generate a file name based on the given URL. |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
99 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
100 | @param url URL (QUrl) |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
101 | @return file name (string) |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
102 | """ |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
103 | fileName = url.toString(QUrl.RemoveFragment | QUrl.RemoveQuery | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
104 | QUrl.RemoveScheme | QUrl.RemovePort) |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
105 | if fileName.find("/") != -1: |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
106 | pos = fileName.rfind("/") |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
107 | fileName = fileName[pos:] |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
108 | fileName = fileName.replace("/", "") |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
109 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
110 | fileName = filterCharsFromFilename(fileName) |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
111 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
112 | if not fileName: |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
113 | fileName = filterCharsFromFilename(url.host().replace(".", "_")) |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
114 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
115 | return fileName |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
116 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
117 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
118 | def filterCharsFromFilename(name): |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
119 | """ |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
120 | Module function to filter illegal characters. |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
121 | |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
122 | @param name name to be sanitized (string) |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
123 | @return sanitized name (string) |
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
124 | """ |
7270
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
125 | return ( |
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
126 | name |
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
127 | .replace("/", "_") |
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
128 | .replace("\\", "") |
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
129 | .replace(":", "") |
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
130 | .replace("*", "") |
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
131 | .replace("?", "") |
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
132 | .replace('"', "") |
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
133 | .replace("<", "") |
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
134 | .replace(">", "") |
4763
8ad353f31184
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
135 | .replace("|", "") |
7270
41d09cf20415
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
136 | ) |
4783
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
137 | |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
138 | |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
139 | def pixmapFromByteArray(data): |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
140 | """ |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
141 | Module function to convert a byte array to a pixmap. |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
142 | |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
143 | @param data data for the pixmap |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
144 | @type bytes or QByteArray |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
145 | @return extracted pixmap |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
146 | @rtype QPixmap |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
147 | """ |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
148 | pixmap = QPixmap() |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
149 | barray = QByteArray.fromBase64(data) |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
150 | pixmap.loadFromData(barray) |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
151 | |
7de17766a5df
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4763
diff
changeset
|
152 | return pixmap |
4810
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
153 | |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
154 | |
4865
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
155 | def pixmapToByteArray(pixmap): |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
156 | """ |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
157 | Module function to convert a pixmap to a byte array containing the pixmap |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
158 | as a PNG encoded as base64. |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
159 | |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
160 | @param pixmap pixmap to be converted |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
161 | @type QPixmap |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
162 | @return byte array containing the pixmap |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
163 | @rtype QByteArray |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
164 | """ |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
165 | byteArray = QByteArray() |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
166 | buffer = QBuffer(byteArray) |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
167 | buffer.open(QIODevice.WriteOnly) |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
168 | if pixmap.save(buffer, "PNG"): |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
169 | return buffer.buffer().toBase64() |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
170 | |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
171 | return QByteArray() |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
172 | |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
173 | |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
174 | def pixmapToDataUrl(pixmap): |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
175 | """ |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
176 | Module function to convert a pixmap to a data: URL. |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
177 | |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
178 | @param pixmap pixmap to be converted |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
179 | @type QPixmap |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
180 | @return data: URL |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
181 | @rtype QUrl |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
182 | """ |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
183 | data = bytes(pixmapToByteArray(pixmap)).decode() |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
184 | if data: |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
185 | return QUrl("data:image/png;base64," + data) |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
186 | else: |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
187 | return QUrl() |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
188 | |
4adc526bc4b3
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4810
diff
changeset
|
189 | |
4810
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
190 | def getWebEngineVersions(): |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
191 | """ |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
192 | Module function to extract the web engine version from the default user |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
193 | agent string. |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
194 | |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
195 | @return tuple containing the Chrome version and the QtWebEngine version |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
196 | @rtype tuple of str |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
197 | """ |
6630
bddd12f27a4c
Web Browser (QtWebKit): applied the changes of the new Web Brwoser to the QtWebKit based variant.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
198 | from PyQt5.QtWebEngineWidgets import QWebEngineProfile |
bddd12f27a4c
Web Browser (QtWebKit): applied the changes of the new Web Brwoser to the QtWebKit based variant.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
199 | |
bddd12f27a4c
Web Browser (QtWebKit): applied the changes of the new Web Brwoser to the QtWebKit based variant.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
200 | useragent = QWebEngineProfile.defaultProfile().httpUserAgent() |
4810
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
201 | match = re.search(r"""Chrome/([\d.]+)""", useragent) |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
202 | if match: |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
203 | chromeVersion = match.group(1) |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
204 | else: |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
205 | chromeVersion = QCoreApplication.translate( |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
206 | "WebBrowserTools", "<unknown>") |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
207 | match = re.search(r"""QtWebEngine/([\d.]+)""", useragent) |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
208 | if match: |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
209 | webengineVersion = match.group(1) |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
210 | else: |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
211 | webengineVersion = QCoreApplication.translate( |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
212 | "WebBrowserTools", "<unknown>") |
f68d0446609e
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4783
diff
changeset
|
213 | return (chromeVersion, webengineVersion) |