eric7/WebBrowser/UserAgent/UserAgentMenu.py

Sat, 22 May 2021 18:51:46 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 22 May 2021 18:51:46 +0200
branch
eric7
changeset 8356
68ec9c3d4de5
parent 8318
962bce857696
child 8358
144a6b854f70
permissions
-rw-r--r--

Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.

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
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7717
diff changeset
3 # Copyright (c) 2010 - 2021 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
7937
181d1160f617 Fixed some 'lambda' related issues by converting them to 'functools.partial'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
11 import functools
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
12
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
13 from PyQt6.QtCore import QXmlStreamReader, QFile, QIODevice
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
14 from PyQt6.QtGui import QAction, QActionGroup
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
15 from PyQt6.QtWidgets import QMenu, QInputDialog, QLineEdit
537
72b32daeb8d6 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 454
diff changeset
16
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
17 from E5Gui import EricMessageBox
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 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
32 super().__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:"),
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7937
diff changeset
103 QLineEdit.EchoMode.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"))
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7937
diff changeset
132 defaultUserAgents.open(QIODevice.OpenModeFlag.ReadOnly)
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
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)
7937
181d1160f617 Fixed some 'lambda' related issues by converting them to 'functools.partial'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
163 act.triggered.connect(
181d1160f617 Fixed some 'lambda' related issues by converting them to 'functools.partial'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
164 functools.partial(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
165 if menuStack:
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
166 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
167 else:
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
168 self.addAction(act)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
169 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
170 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
171
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
172 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
173 attributes = xml.attributes()
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
174 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
175 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
176 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
177
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
178 menu = QMenu(self)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
179 menu.setTitle(title)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
180 self.addMenu(menu)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
181 menuStack.append(menu)
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
182
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
183 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
184 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
185
286de4e5179c Added capability to select the user agent string for the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 if xml.hasError():
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
187 EricMessageBox.critical(
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3014
diff changeset
188 self,
3190
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("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
190 self.tr(
3002
6ffc581f00f1 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2403
diff changeset
191 """<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
192 .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
193
aae999261983 Added some more user agent strings to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
194 return isChecked

eric ide

mercurial