Helpviewer/UserAgent/UserAgentMenu.py

changeset 1102
aae999261983
parent 945
8cd4d08fa9f6
child 1131
7781e396c903
equal deleted inserted replaced
1101:43da69edffc4 1102:aae999261983
36 """ 36 """
37 Private slot to populate the menu. 37 Private slot to populate the menu.
38 """ 38 """
39 self.aboutToShow.disconnect(self.__populateMenu) 39 self.aboutToShow.disconnect(self.__populateMenu)
40 40
41 self.__actionGroup = QActionGroup(self)
42
41 # add default action 43 # add default action
42 self.__defaultUserAgent = QAction(self) 44 self.__defaultUserAgent = QAction(self)
43 self.__defaultUserAgent.setText(self.trUtf8("Default")) 45 self.__defaultUserAgent.setText(self.trUtf8("Default"))
44 self.__defaultUserAgent.setCheckable(True) 46 self.__defaultUserAgent.setCheckable(True)
45 self.__defaultUserAgent.triggered[()].connect(self.__switchToDefaultUserAgent) 47 self.__defaultUserAgent.triggered[()].connect(self.__switchToDefaultUserAgent)
46 self.__defaultUserAgent.setChecked(HelpWebPage().userAgent() == "") 48 self.__defaultUserAgent.setChecked(HelpWebPage().userAgent() == "")
47 self.addAction(self.__defaultUserAgent) 49 self.addAction(self.__defaultUserAgent)
50 self.__actionGroup.addAction(self.__defaultUserAgent)
51 isChecked = self.__defaultUserAgent.isChecked()
48 52
49 # add default extra user agents 53 # add default extra user agents
50 self.__addDefaultActions() 54 isChecked = self.__addDefaultActions() or isChecked
51 55
52 # add other action 56 # add other action
53 self.addSeparator() 57 self.addSeparator()
54 self.__otherUserAgent = QAction(self) 58 self.__otherUserAgent = QAction(self)
55 self.__otherUserAgent.setText(self.trUtf8("Other...")) 59 self.__otherUserAgent.setText(self.trUtf8("Other..."))
56 self.__otherUserAgent.setCheckable(True) 60 self.__otherUserAgent.setCheckable(True)
57 self.__otherUserAgent.triggered[()].connect(self.__switchToOtherUserAgent) 61 self.__otherUserAgent.triggered[()].connect(self.__switchToOtherUserAgent)
58 self.addAction(self.__otherUserAgent) 62 self.addAction(self.__otherUserAgent)
59 63 self.__actionGroup.addAction(self.__otherUserAgent)
60 usingCustomUserAgent = True 64 self.__otherUserAgent.setChecked(not isChecked)
61 actionGroup = QActionGroup(self)
62 for act in self.actions():
63 actionGroup.addAction(act)
64 if act.isChecked():
65 usingCustomUserAgent = False
66 self.__otherUserAgent.setChecked(usingCustomUserAgent)
67 65
68 def __switchToDefaultUserAgent(self): 66 def __switchToDefaultUserAgent(self):
69 """ 67 """
70 Private slot to set the default user agent. 68 Private slot to set the default user agent.
71 """ 69 """
92 HelpWebPage().setUserAgent(act.data()) 90 HelpWebPage().setUserAgent(act.data())
93 91
94 def __addDefaultActions(self): 92 def __addDefaultActions(self):
95 """ 93 """
96 Private slot to add the default user agent entries. 94 Private slot to add the default user agent entries.
95
96 @return flag indicating that a user agent entry is checked (boolean)
97 """ 97 """
98 menuStack = []
99 isChecked = False
98 defaultUserAgents = QByteArray(UserAgentDefaults) 100 defaultUserAgents = QByteArray(UserAgentDefaults)
99 101
100 currentUserAgentString = HelpWebPage().userAgent() 102 currentUserAgentString = HelpWebPage().userAgent()
101 xml = QXmlStreamReader(defaultUserAgents) 103 xml = QXmlStreamReader(defaultUserAgents)
102 while not xml.atEnd(): 104 while not xml.atEnd():
103 xml.readNext() 105 xml.readNext()
104 if xml.isStartElement() and xml.name() == "separator": 106 if xml.isStartElement() and xml.name() == "separator":
105 self.addSeparator() 107 if menuStack:
108 menuStack[-1].addSeparator()
109 else:
110 self.addSeparator()
106 continue 111 continue
107 112
108 if xml.isStartElement() and xml.name() == "useragent": 113 if xml.isStartElement() and xml.name() == "useragent":
109 attributes = xml.attributes() 114 attributes = xml.attributes()
110 title = attributes.value("description") 115 title = attributes.value("description")
115 act.setData(userAgent) 120 act.setData(userAgent)
116 act.setToolTip(userAgent) 121 act.setToolTip(userAgent)
117 act.setCheckable(True) 122 act.setCheckable(True)
118 act.setChecked(userAgent == currentUserAgentString) 123 act.setChecked(userAgent == currentUserAgentString)
119 act.triggered[()].connect(self.__changeUserAgent) 124 act.triggered[()].connect(self.__changeUserAgent)
120 self.addAction(act) 125 if menuStack:
126 menuStack[-1].addAction(act)
127 else:
128 self.addAction(act)
129 self.__actionGroup.addAction(act)
130 isChecked = isChecked or act.isChecked()
131
132 if xml.isStartElement() and xml.name() == "useragentmenu":
133 attributes = xml.attributes()
134 title = attributes.value("title")
135 if title == "v_a_r_i_o_u_s":
136 title = self.trUtf8("Various")
137
138 menu = QMenu(self)
139 menu.setTitle(title)
140 self.addMenu(menu)
141 menuStack.append(menu)
142
143 if xml.isEndElement() and xml.name() == "useragentmenu":
144 menuStack.pop()
121 145
122 if xml.hasError(): 146 if xml.hasError():
123 E5MessageBox.critical(self, 147 E5MessageBox.critical(self,
124 self.trUtf8("Parsing default user agents"), 148 self.trUtf8("Parsing default user agents"),
125 self.trUtf8("""<p>Error parsing default user agents.</p><p>{0}</p>""")\ 149 self.trUtf8("""<p>Error parsing default user agents.</p><p>{0}</p>""")\
126 .format(xml.errorString())) 150 .format(xml.errorString()))
151
152 return isChecked

eric ide

mercurial