Helpviewer/UserAgent/UserAgentMenu.py

changeset 1596
8d59e4f3c828
parent 1509
c0b5e693b0eb
child 2302
f29e9405c851
equal deleted inserted replaced
1593:470b03ae90e7 1596:8d59e4f3c828
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:

eric ide

mercurial