Mon, 12 Feb 2018 19:04:07 +0100
Register QWebChannel on isolated ApplicationWorld
This way scripts on pages don't have access to it. Exceptions are eric: and qthelp: schemes as internal pages requires the bridge.
GreaseMonkey userscripts now runs on ApplicationWorld too. This fixes userscript that depend on script world being isolated from main page world.
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
6048
82ad8ec9548c
Updated copyright for 2018.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5726
diff
changeset
|
3 | # Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module containing a web site icon storage object. |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | from __future__ import unicode_literals |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | import json |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | import os |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | from PyQt5.QtCore import pyqtSignal, QObject, QByteArray, QBuffer, QIODevice, \ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | QUrl |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | from PyQt5.QtGui import QIcon, QPixmap, QImage |
4820
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
18 | from PyQt5.QtWidgets import QDialog |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | from Utilities.AutoSaver import AutoSaver |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | import UI.PixmapCache |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | class WebIconProvider(QObject): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | Class implementing a web site icon storage. |
5726
e1dbd217214a
Fixed a few source docu issues (forgotten signals and exceptions).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
28 | |
e1dbd217214a
Fixed a few source docu issues (forgotten signals and exceptions).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
29 | @signal changed() emitted to indicate a change of the icons database |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | changed = pyqtSignal() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | def __init__(self, parent=None): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | Constructor |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | @param parent reference to the parent object (QObject) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | super(WebIconProvider, self).__init__(parent) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | self.__encoding = "iso-8859-1" |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | self.__iconsFileName = "web_site_icons.json" |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | self.__iconDatabasePath = "" # saving of icons disabled |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | self.__iconsDB = {} |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | self.__loaded = False |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | self.__saveTimer = AutoSaver(self, self.save) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | self.changed.connect(self.__saveTimer.changeOccurred) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | def setIconDatabasePath(self, path): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | Public method to set the path for the web site icons store. |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | @param path path to store the icons file to |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | @type str |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | if path != self.__iconDatabasePath: |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | self.close() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | self.__iconDatabasePath = path |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | def iconDatabasePath(self): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | Public method o get the path for the web site icons store. |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | @return path to store the icons file to |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | @rtype str |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | return self.__iconDatabasePath |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | def close(self): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | Public method to close the web icon provider. |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | self.__saveTimer.saveIfNeccessary() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | self.__loaded = False |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | self.__iconsDB = {} |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | def load(self): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | Public method to load the bookmarks. |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | if self.__loaded: |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | return |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | if self.__iconDatabasePath: |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | filename = os.path.join(self.__iconDatabasePath, |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | self.__iconsFileName) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | try: |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | f = open(filename, "r") |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | db = json.load(f) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | f.close() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | except (IOError, OSError): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | # ignore silentyl |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | db = {} |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | self.__iconsDB = {} |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | for url, data in db.items(): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | self.__iconsDB[url] = QIcon(QPixmap.fromImage(QImage.fromData( |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | QByteArray(data.encode(self.__encoding))))) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | self.__loaded = True |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | def save(self): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | Public method to save the zoom values. |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | if not self.__loaded: |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | return |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | |
4820
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
113 | from WebBrowser.WebBrowserWindow import WebBrowserWindow |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
114 | if not WebBrowserWindow.isPrivate() and bool(self.__iconDatabasePath): |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | db = {} |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | for url, icon in self.__iconsDB.items(): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | ba = QByteArray() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | buffer = QBuffer(ba) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | buffer.open(QIODevice.WriteOnly) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | icon.pixmap(32).toImage().save(buffer, "PNG") |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | db[url] = bytes(buffer.data()).decode(self.__encoding) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | filename = os.path.join(self.__iconDatabasePath, |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | self.__iconsFileName) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | try: |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | f = open(filename, "w") |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | json.dump(db, f) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | f.close() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | except (IOError, OSError): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | # ignore silentyl |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | pass |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | def saveIcon(self, view): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | Public method to save a web site icon. |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | @param view reference to the view object |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | @type WebBrowserView |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | scheme = view.url().scheme() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | if scheme in ["eric", "about", "qthelp", "file", "abp", "ftp"]: |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | return |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | self.load() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | if view.mainWindow().isPrivate(): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | return |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | urlStr = self.__urlToString(view.url()) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | self.__iconsDB[urlStr] = view.icon() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | self.changed.emit() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | def __urlToString(self, url): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | Private method to convert an URL to a string. |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | @param url URL to be converted |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | @type QUrl |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | @return string representation of the URL |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | @rtype str |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | return url.toString(QUrl.PrettyDecoded | QUrl.RemoveUserInfo | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | QUrl.RemoveFragment) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | def iconForUrl(self, url): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | Public method to get an icon for an URL. |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | @param url URL to get icon for |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | @type QUrl |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | @return icon for the URL |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | @rtype QIcon |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | scheme = url.scheme() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | if scheme in ["eric", "about"]: |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | return UI.PixmapCache.getIcon("ericWeb.png") |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | elif scheme == "qthelp": |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | return UI.PixmapCache.getIcon("qthelp.png") |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | elif scheme == "file": |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | return UI.PixmapCache.getIcon("fileMisc.png") |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | elif scheme == "abp": |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | return UI.PixmapCache.getIcon("adBlockPlus.png") |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | elif scheme == "ftp": |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | return UI.PixmapCache.getIcon("network-server.png") |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | self.load() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | urlStr = self.__urlToString(url) |
4907
1e3d61349671
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4820
diff
changeset
|
190 | for iconUrlStr in self.__iconsDB: |
1e3d61349671
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4820
diff
changeset
|
191 | if iconUrlStr.startswith(urlStr): |
1e3d61349671
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4820
diff
changeset
|
192 | return self.__iconsDB[iconUrlStr] |
1e3d61349671
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4820
diff
changeset
|
193 | |
1e3d61349671
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4820
diff
changeset
|
194 | # try replacing http scheme with https scheme |
1e3d61349671
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4820
diff
changeset
|
195 | url = QUrl(url) |
1e3d61349671
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4820
diff
changeset
|
196 | if url.scheme() == "http": |
1e3d61349671
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4820
diff
changeset
|
197 | url.setScheme("https") |
1e3d61349671
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4820
diff
changeset
|
198 | urlStr = self.__urlToString(url) |
1e3d61349671
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4820
diff
changeset
|
199 | for iconUrlStr in self.__iconsDB: |
1e3d61349671
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4820
diff
changeset
|
200 | if iconUrlStr.startswith(urlStr): |
1e3d61349671
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4820
diff
changeset
|
201 | return self.__iconsDB[iconUrlStr] |
1e3d61349671
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4820
diff
changeset
|
202 | |
1e3d61349671
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4820
diff
changeset
|
203 | if scheme == "https": |
4741
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4732
diff
changeset
|
204 | return UI.PixmapCache.getIcon("securityHigh32.png") |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | else: |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | return UI.PixmapCache.getIcon("defaultIcon.png") |
4741
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4732
diff
changeset
|
207 | |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4732
diff
changeset
|
208 | def clear(self): |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4732
diff
changeset
|
209 | """ |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4732
diff
changeset
|
210 | Public method to clear the icons cache. |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4732
diff
changeset
|
211 | """ |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4732
diff
changeset
|
212 | self.load() |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4732
diff
changeset
|
213 | self.__iconsDB = {} |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4732
diff
changeset
|
214 | self.changed.emit() |
f9e1adc69076
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4732
diff
changeset
|
215 | self.__saveTimer.saveIfNeccessary() |
4820
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
216 | |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
217 | def showWebIconDialog(self): |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
218 | """ |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
219 | Public method to show a dialog to manage the Favicons. |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
220 | """ |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
221 | self.load() |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
222 | |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
223 | from .WebIconDialog import WebIconDialog |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
224 | dlg = WebIconDialog(self.__iconsDB) |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
225 | if dlg.exec_() == QDialog.Accepted: |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
226 | changed = False |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
227 | urls = dlg.getUrls() |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
228 | for url in list(self.__iconsDB.keys())[:]: |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
229 | if url not in urls: |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
230 | del self.__iconsDB[url] |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
231 | changed = True |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
232 | if changed: |
f38e4fb83ecd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
233 | self.changed.emit() |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | |
4971
0f21662c0d2d
Added a class to extract all top level domains from a file provided by Mozilla.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4907
diff
changeset
|
236 | _WebIconProvider = None |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | def instance(): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | Global function to get a reference to the web icon provider and create it, |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | if it hasn't been yet. |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | @return reference to the web icon provider object |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | @rtype WebIconProvider |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | """ |
4971
0f21662c0d2d
Added a class to extract all top level domains from a file provided by Mozilla.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4907
diff
changeset
|
247 | global _WebIconProvider |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | |
4971
0f21662c0d2d
Added a class to extract all top level domains from a file provided by Mozilla.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4907
diff
changeset
|
249 | if _WebIconProvider is None: |
0f21662c0d2d
Added a class to extract all top level domains from a file provided by Mozilla.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4907
diff
changeset
|
250 | _WebIconProvider = WebIconProvider() |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | |
4971
0f21662c0d2d
Added a class to extract all top level domains from a file provided by Mozilla.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4907
diff
changeset
|
252 | return _WebIconProvider |