13 from E5Gui import E5MessageBox |
13 from E5Gui import E5MessageBox |
14 |
14 |
15 from .UserAgentDefaults import UserAgentDefaults |
15 from .UserAgentDefaults import UserAgentDefaults |
16 |
16 |
17 from Helpviewer.HelpBrowserWV import HelpWebPage |
17 from Helpviewer.HelpBrowserWV import HelpWebPage |
|
18 import Helpviewer.HelpWindow |
18 |
19 |
19 |
20 |
20 class UserAgentMenu(QMenu): |
21 class UserAgentMenu(QMenu): |
21 """ |
22 """ |
22 Class implementing a menu to select the user agent string. |
23 Class implementing a menu to select the user agent string. |
23 """ |
24 """ |
24 def __init__(self, title, parent=None): |
25 def __init__(self, title, url=None, parent=None): |
25 """ |
26 """ |
26 Constructor |
27 Constructor |
27 |
28 |
28 @param title title of the menu (string) |
29 @param title title of the menu (string) |
|
30 @param url URL to set user agent for (QUrl) |
29 @param parent reference to the parent widget (QWidget) |
31 @param parent reference to the parent widget (QWidget) |
30 """ |
32 """ |
31 super().__init__(title, parent) |
33 super().__init__(title, parent) |
|
34 |
|
35 self.__manager = None |
|
36 self.__url = url |
|
37 if self.__url: |
|
38 if self.__url.isValid(): |
|
39 self.__manager = Helpviewer.HelpWindow.HelpWindow.userAgentsManager() |
|
40 else: |
|
41 self.__url = None |
32 |
42 |
33 self.aboutToShow.connect(self.__populateMenu) |
43 self.aboutToShow.connect(self.__populateMenu) |
34 |
44 |
35 def __populateMenu(self): |
45 def __populateMenu(self): |
36 """ |
46 """ |
43 # add default action |
53 # add default action |
44 self.__defaultUserAgent = QAction(self) |
54 self.__defaultUserAgent = QAction(self) |
45 self.__defaultUserAgent.setText(self.trUtf8("Default")) |
55 self.__defaultUserAgent.setText(self.trUtf8("Default")) |
46 self.__defaultUserAgent.setCheckable(True) |
56 self.__defaultUserAgent.setCheckable(True) |
47 self.__defaultUserAgent.triggered[()].connect(self.__switchToDefaultUserAgent) |
57 self.__defaultUserAgent.triggered[()].connect(self.__switchToDefaultUserAgent) |
48 self.__defaultUserAgent.setChecked(HelpWebPage().userAgent() == "") |
58 if self.__url: |
|
59 self.__defaultUserAgent.setChecked( |
|
60 self.__manager.userAgentForUrl(self.__url) == "") |
|
61 else: |
|
62 self.__defaultUserAgent.setChecked(HelpWebPage().userAgent() == "") |
49 self.addAction(self.__defaultUserAgent) |
63 self.addAction(self.__defaultUserAgent) |
50 self.__actionGroup.addAction(self.__defaultUserAgent) |
64 self.__actionGroup.addAction(self.__defaultUserAgent) |
51 isChecked = self.__defaultUserAgent.isChecked() |
65 isChecked = self.__defaultUserAgent.isChecked() |
52 |
66 |
53 # add default extra user agents |
67 # add default extra user agents |
65 |
79 |
66 def __switchToDefaultUserAgent(self): |
80 def __switchToDefaultUserAgent(self): |
67 """ |
81 """ |
68 Private slot to set the default user agent. |
82 Private slot to set the default user agent. |
69 """ |
83 """ |
70 HelpWebPage().setUserAgent("") |
84 if self.__url: |
|
85 self.__manager.removeUserAgent(self.__url.host()) |
|
86 else: |
|
87 HelpWebPage().setUserAgent("") |
71 |
88 |
72 def __switchToOtherUserAgent(self): |
89 def __switchToOtherUserAgent(self): |
73 """ |
90 """ |
74 Private slot to set a custom user agent string. |
91 Private slot to set a custom user agent string. |
75 """ |
92 """ |
78 self.trUtf8("Custom user agent"), |
95 self.trUtf8("Custom user agent"), |
79 self.trUtf8("User agent:"), |
96 self.trUtf8("User agent:"), |
80 QLineEdit.Normal, |
97 QLineEdit.Normal, |
81 HelpWebPage().userAgent(resolveEmpty=True)) |
98 HelpWebPage().userAgent(resolveEmpty=True)) |
82 if ok: |
99 if ok: |
83 HelpWebPage().setUserAgent(userAgent) |
100 if self.__url: |
|
101 self.__manager.setUserAgentForUrl(self.__url, userAgent) |
|
102 else: |
|
103 HelpWebPage().setUserAgent(userAgent) |
84 |
104 |
85 def __changeUserAgent(self): |
105 def __changeUserAgent(self): |
86 """ |
106 """ |
87 Private slot to change the user agent. |
107 Private slot to change the user agent. |
88 """ |
108 """ |
89 act = self.sender() |
109 act = self.sender() |
90 HelpWebPage().setUserAgent(act.data()) |
110 if self.__url: |
|
111 self.__manager.setUserAgentForUrl(self.__url, act.data()) |
|
112 else: |
|
113 HelpWebPage().setUserAgent(act.data()) |
91 |
114 |
92 def __addDefaultActions(self): |
115 def __addDefaultActions(self): |
93 """ |
116 """ |
94 Private slot to add the default user agent entries. |
117 Private slot to add the default user agent entries. |
95 |
118 |
97 """ |
120 """ |
98 menuStack = [] |
121 menuStack = [] |
99 isChecked = False |
122 isChecked = False |
100 defaultUserAgents = QByteArray(UserAgentDefaults) |
123 defaultUserAgents = QByteArray(UserAgentDefaults) |
101 |
124 |
102 currentUserAgentString = HelpWebPage().userAgent() |
125 if self.__url: |
|
126 currentUserAgentString = self.__manager.userAgentForUrl(self.__url) |
|
127 else: |
|
128 currentUserAgentString = HelpWebPage().userAgent() |
103 xml = QXmlStreamReader(defaultUserAgents) |
129 xml = QXmlStreamReader(defaultUserAgents) |
104 while not xml.atEnd(): |
130 while not xml.atEnd(): |
105 xml.readNext() |
131 xml.readNext() |
106 if xml.isStartElement() and xml.name() == "separator": |
132 if xml.isStartElement() and xml.name() == "separator": |
107 if menuStack: |
133 if menuStack: |