eric6/WebBrowser/UserAgent/UserAgentMenu.py

Sat, 26 Sep 2020 10:58:18 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 26 Sep 2020 10:58:18 +0200
changeset 7717
f32d7965a17e
parent 7716
313e09453306
child 7923
91e843545d9a
permissions
-rw-r--r--

Changed the code to not rely on the Qt Resource system anymore (no .qrc files and no use of pyrcc5 anymore).

383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
7360
9190402e4505 Updated copyright for 2020.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7270
diff changeset
3 # Copyright (c) 2010 - 2020 Detlev Offenbach <detlev@die-offenbachs.de>
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a menu to select the user agent string.
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
7717
f32d7965a17e Changed the code to not rely on the Qt Resource system anymore (no .qrc files and no use of pyrcc5 anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7716
diff changeset
10 import os
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2403
diff changeset
11
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
12 from PyQt5.QtCore import QXmlStreamReader, QFile, QIODevice
7270
41d09cf20415 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
13 from PyQt5.QtWidgets import (
41d09cf20415 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
14 QMenu, QAction, QActionGroup, QInputDialog, QLineEdit
41d09cf20415 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
15 )
537
72b32daeb8d6 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 454
diff changeset
16
72b32daeb8d6 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 454
diff changeset
17 from E5Gui import E5MessageBox
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
19
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 class UserAgentMenu(QMenu):
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 Class implementing a menu to select the user agent string.
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
1596
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
24 def __init__(self, title, url=None, parent=None):
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 Constructor
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 @param title title of the menu (string)
1596
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
29 @param url URL to set user agent for (QUrl)
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 @param parent reference to the parent widget (QWidget)
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2403
diff changeset
32 super(UserAgentMenu, self).__init__(title, parent)
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
1596
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
34 self.__manager = None
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
35 self.__url = url
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
36 if self.__url:
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
37 if self.__url.isValid():
4906
939ff20f712d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
38 from WebBrowser.WebBrowserWindow import WebBrowserWindow
939ff20f712d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
39 self.__manager = WebBrowserWindow.userAgentsManager()
1596
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
40 else:
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
41 self.__url = None
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
42
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 self.aboutToShow.connect(self.__populateMenu)
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 def __populateMenu(self):
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 """
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 Private slot to populate the menu.
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 """
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.aboutToShow.disconnect(self.__populateMenu)
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50
1102
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
51 self.__actionGroup = QActionGroup(self)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
52
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 # add default action
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.__defaultUserAgent = QAction(self)
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
55 self.__defaultUserAgent.setText(self.tr("Default"))
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__defaultUserAgent.setCheckable(True)
3345
071afe8be2a1 Changed signal/slot usage to not use constructs like 'triggered[()].connect(...)' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
57 self.__defaultUserAgent.triggered.connect(
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
58 self.__switchToDefaultUserAgent)
1596
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
59 if self.__url:
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
60 self.__defaultUserAgent.setChecked(
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
61 self.__manager.userAgentForUrl(self.__url) == "")
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
62 else:
4906
939ff20f712d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
63 from WebBrowser.WebBrowserPage import WebBrowserPage
939ff20f712d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
64 self.__defaultUserAgent.setChecked(
939ff20f712d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
65 WebBrowserPage.userAgent() == "")
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.addAction(self.__defaultUserAgent)
1102
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
67 self.__actionGroup.addAction(self.__defaultUserAgent)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
68 isChecked = self.__defaultUserAgent.isChecked()
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 # add default extra user agents
1102
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
71 isChecked = self.__addDefaultActions() or isChecked
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 # add other action
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 self.addSeparator()
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self.__otherUserAgent = QAction(self)
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
76 self.__otherUserAgent.setText(self.tr("Other..."))
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 self.__otherUserAgent.setCheckable(True)
3345
071afe8be2a1 Changed signal/slot usage to not use constructs like 'triggered[()].connect(...)' anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
78 self.__otherUserAgent.triggered.connect(
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
79 self.__switchToOtherUserAgent)
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 self.addAction(self.__otherUserAgent)
1102
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
81 self.__actionGroup.addAction(self.__otherUserAgent)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
82 self.__otherUserAgent.setChecked(not isChecked)
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 def __switchToDefaultUserAgent(self):
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 """
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 Private slot to set the default user agent.
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 """
1596
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
88 if self.__url:
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
89 self.__manager.removeUserAgent(self.__url.host())
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
90 else:
4906
939ff20f712d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
91 from WebBrowser.WebBrowserPage import WebBrowserPage
939ff20f712d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
92 WebBrowserPage.setUserAgent("")
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 def __switchToOtherUserAgent(self):
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 """
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 Private slot to set a custom user agent string.
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 """
4906
939ff20f712d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
98 from WebBrowser.WebBrowserPage import WebBrowserPage
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 userAgent, ok = QInputDialog.getText(
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
101 self.tr("Custom user agent"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
102 self.tr("User agent:"),
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 QLineEdit.Normal,
4906
939ff20f712d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
104 WebBrowserPage.userAgent(resolveEmpty=True))
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 if ok:
1596
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
106 if self.__url:
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
107 self.__manager.setUserAgentForUrl(self.__url, userAgent)
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
108 else:
4906
939ff20f712d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
109 WebBrowserPage.setUserAgent(userAgent)
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
111 def __changeUserAgent(self, act):
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 """
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 Private slot to change the user agent.
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
114
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
115 @param act reference to the action that triggered
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
116 @type QAction
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 """
1596
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
118 if self.__url:
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
119 self.__manager.setUserAgentForUrl(self.__url, act.data())
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
120 else:
4906
939ff20f712d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
121 from WebBrowser.WebBrowserPage import WebBrowserPage
939ff20f712d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
122 WebBrowserPage.setUserAgent(act.data())
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 def __addDefaultActions(self):
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 """
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 Private slot to add the default user agent entries.
1102
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
127
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
128 @return flag indicating that a user agent entry is checked (boolean)
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 """
7717
f32d7965a17e Changed the code to not rely on the Qt Resource system anymore (no .qrc files and no use of pyrcc5 anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7716
diff changeset
130 defaultUserAgents = QFile(os.path.join(
f32d7965a17e Changed the code to not rely on the Qt Resource system anymore (no .qrc files and no use of pyrcc5 anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7716
diff changeset
131 os.path.dirname(__file__), "UserAgentDefaults.xml"))
3014
9c5e6ef87252 Changed some files contain default values for some web browser functions to non-Python files and using the Qt resource system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
132 defaultUserAgents.open(QIODevice.ReadOnly)
9c5e6ef87252 Changed some files contain default values for some web browser functions to non-Python files and using the Qt resource system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3002
diff changeset
133
1102
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
134 menuStack = []
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
135 isChecked = False
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136
1596
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
137 if self.__url:
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
138 currentUserAgentString = self.__manager.userAgentForUrl(self.__url)
8d59e4f3c828 Extended the User Agent handling to be able to set the string on a host basis (next to the global user agent string).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
139 else:
4906
939ff20f712d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
140 from WebBrowser.WebBrowserPage import WebBrowserPage
939ff20f712d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
141 currentUserAgentString = WebBrowserPage.userAgent()
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 xml = QXmlStreamReader(defaultUserAgents)
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 while not xml.atEnd():
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 xml.readNext()
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 if xml.isStartElement() and xml.name() == "separator":
1102
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
146 if menuStack:
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
147 menuStack[-1].addSeparator()
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
148 else:
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
149 self.addSeparator()
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 continue
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 if xml.isStartElement() and xml.name() == "useragent":
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 attributes = xml.attributes()
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 title = attributes.value("description")
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 userAgent = attributes.value("useragent")
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 act = QAction(self)
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 act.setText(title)
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 act.setData(userAgent)
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 act.setToolTip(userAgent)
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 act.setCheckable(True)
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 act.setChecked(userAgent == currentUserAgentString)
6121
d3d64f3128b3 Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
163 act.triggered.connect(lambda: self.__changeUserAgent(act))
1102
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
164 if menuStack:
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
165 menuStack[-1].addAction(act)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
166 else:
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
167 self.addAction(act)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
168 self.__actionGroup.addAction(act)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
169 isChecked = isChecked or act.isChecked()
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
170
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
171 if xml.isStartElement() and xml.name() == "useragentmenu":
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
172 attributes = xml.attributes()
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
173 title = attributes.value("title")
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
174 if title == "v_a_r_i_o_u_s":
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
175 title = self.tr("Various")
1102
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
176
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
177 menu = QMenu(self)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
178 menu.setTitle(title)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
179 self.addMenu(menu)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
180 menuStack.append(menu)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
181
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
182 if xml.isEndElement() and xml.name() == "useragentmenu":
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
183 menuStack.pop()
383
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 if xml.hasError():
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3014
diff changeset
186 E5MessageBox.critical(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3014
diff changeset
187 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
188 self.tr("Parsing default user agents"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
189 self.tr(
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
190 """<p>Error parsing default user agents.</p><p>{0}</p>""")
3035
36e9f388958b Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
191 .format(xml.errorString()))
1102
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
192
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
193 return isChecked

eric ide

mercurial