src/eric7/Network/IRC/IrcIdentitiesEditDialog.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
equal deleted inserted replaced
9220:e9e7eca7efee 9221:bf71ee032bb4
24 24
25 class IrcIdentitiesEditDialog(QDialog, Ui_IrcIdentitiesEditDialog): 25 class IrcIdentitiesEditDialog(QDialog, Ui_IrcIdentitiesEditDialog):
26 """ 26 """
27 Class implementing the identities management dialog. 27 Class implementing the identities management dialog.
28 """ 28 """
29
29 def __init__(self, manager, identityName, parent=None): 30 def __init__(self, manager, identityName, parent=None):
30 """ 31 """
31 Constructor 32 Constructor
32 33
33 @param manager reference to the IRC network manager object 34 @param manager reference to the IRC network manager object
34 (IrcNetworkManager) 35 (IrcNetworkManager)
35 @param identityName name of the identity to be selected (string) 36 @param identityName name of the identity to be selected (string)
36 @param parent reference to the parent widget (QWidget) 37 @param parent reference to the parent widget (QWidget)
37 """ 38 """
38 super().__init__(parent) 39 super().__init__(parent)
39 self.setupUi(self) 40 self.setupUi(self)
40 41
41 self.addButton.setIcon(UI.PixmapCache.getIcon("plus")) 42 self.addButton.setIcon(UI.PixmapCache.getIcon("plus"))
42 self.copyButton.setIcon(UI.PixmapCache.getIcon("editCopy")) 43 self.copyButton.setIcon(UI.PixmapCache.getIcon("editCopy"))
43 self.renameButton.setIcon(UI.PixmapCache.getIcon("editRename")) 44 self.renameButton.setIcon(UI.PixmapCache.getIcon("editRename"))
44 self.deleteButton.setIcon(UI.PixmapCache.getIcon("minus")) 45 self.deleteButton.setIcon(UI.PixmapCache.getIcon("minus"))
45 self.nicknameAddButton.setIcon(UI.PixmapCache.getIcon("plus")) 46 self.nicknameAddButton.setIcon(UI.PixmapCache.getIcon("plus"))
46 self.nicknameDeleteButton.setIcon(UI.PixmapCache.getIcon("minus")) 47 self.nicknameDeleteButton.setIcon(UI.PixmapCache.getIcon("minus"))
47 self.nicknameUpButton.setIcon(UI.PixmapCache.getIcon("1uparrow")) 48 self.nicknameUpButton.setIcon(UI.PixmapCache.getIcon("1uparrow"))
48 self.nicknameDownButton.setIcon( 49 self.nicknameDownButton.setIcon(UI.PixmapCache.getIcon("1downarrow"))
49 UI.PixmapCache.getIcon("1downarrow")) 50 self.showPasswordButton.setIcon(UI.PixmapCache.getIcon("showPassword"))
50 self.showPasswordButton.setIcon( 51
51 UI.PixmapCache.getIcon("showPassword"))
52
53 self.__manager = manager 52 self.__manager = manager
54 53
55 self.__identities = self.__manager.getIdentities() 54 self.__identities = self.__manager.getIdentities()
56 self.__currentIdentity = None 55 self.__currentIdentity = None
57 56
58 identities = sorted(self.__manager.getIdentityNames()) 57 identities = sorted(self.__manager.getIdentityNames())
59 identities[identities.index(IrcIdentity.DefaultIdentityName)] = ( 58 identities[
60 IrcIdentity.DefaultIdentityDisplay 59 identities.index(IrcIdentity.DefaultIdentityName)
61 ) 60 ] = IrcIdentity.DefaultIdentityDisplay
62 self.identitiesCombo.addItems(identities) 61 self.identitiesCombo.addItems(identities)
63 if identityName == IrcIdentity.DefaultIdentityName: 62 if identityName == IrcIdentity.DefaultIdentityName:
64 identityName = IrcIdentity.DefaultIdentityDisplay 63 identityName = IrcIdentity.DefaultIdentityDisplay
65 index = self.identitiesCombo.findText(identityName) 64 index = self.identitiesCombo.findText(identityName)
66 if index == -1: 65 if index == -1:
67 index = 0 66 index = 0
68 identityName = self.identitiesCombo.itemText(0) 67 identityName = self.identitiesCombo.itemText(0)
69 self.identitiesCombo.setCurrentIndex(index) 68 self.identitiesCombo.setCurrentIndex(index)
70 69
71 self.on_identitiesCombo_currentIndexChanged(index) 70 self.on_identitiesCombo_currentIndexChanged(index)
72 71
73 self.nicknameEdit.installEventFilter(self) 72 self.nicknameEdit.installEventFilter(self)
74 73
75 def eventFilter(self, obj, evt): 74 def eventFilter(self, obj, evt):
76 """ 75 """
77 Public method to handle events for other objects. 76 Public method to handle events for other objects.
78 77
79 @param obj reference to the object (QObject) 78 @param obj reference to the object (QObject)
80 @param evt reference to the event (QEvent) 79 @param evt reference to the event (QEvent)
81 @return flag indicating that the event should be filtered out (boolean) 80 @return flag indicating that the event should be filtered out (boolean)
82 """ 81 """
83 if ( 82 if (
84 obj == self.nicknameEdit and 83 obj == self.nicknameEdit
85 evt.type() == QEvent.Type.KeyPress and 84 and evt.type() == QEvent.Type.KeyPress
86 evt.key() in [Qt.Key.Key_Enter, Qt.Key.Key_Return] 85 and evt.key() in [Qt.Key.Key_Enter, Qt.Key.Key_Return]
87 ): 86 ):
88 self.on_nicknameAddButton_clicked() 87 self.on_nicknameAddButton_clicked()
89 return True 88 return True
90 89
91 return super().eventFilter(obj, evt) 90 return super().eventFilter(obj, evt)
92 91
93 def __updateIdentitiesButtons(self): 92 def __updateIdentitiesButtons(self):
94 """ 93 """
95 Private slot to update the status of the identity related buttons. 94 Private slot to update the status of the identity related buttons.
96 """ 95 """
97 enable = (self.identitiesCombo.currentText() != 96 enable = (
98 IrcIdentity.DefaultIdentityDisplay) 97 self.identitiesCombo.currentText() != IrcIdentity.DefaultIdentityDisplay
98 )
99 self.renameButton.setEnabled(enable) 99 self.renameButton.setEnabled(enable)
100 self.deleteButton.setEnabled(enable) 100 self.deleteButton.setEnabled(enable)
101 101
102 @pyqtSlot(int) 102 @pyqtSlot(int)
103 def on_identitiesCombo_currentIndexChanged(self, index): 103 def on_identitiesCombo_currentIndexChanged(self, index):
104 """ 104 """
105 Private slot to handle the selection of an identity. 105 Private slot to handle the selection of an identity.
106 106
107 @param index index of the selected entry 107 @param index index of the selected entry
108 @type int 108 @type int
109 """ 109 """
110 identity = self.identitiesCombo.itemText(index) 110 identity = self.identitiesCombo.itemText(index)
111 if identity == IrcIdentity.DefaultIdentityDisplay: 111 if identity == IrcIdentity.DefaultIdentityDisplay:
112 identity = IrcIdentity.DefaultIdentityName 112 identity = IrcIdentity.DefaultIdentityName
113 self.__updateIdentitiesButtons() 113 self.__updateIdentitiesButtons()
114 114
115 if self.__currentIdentity and not self.__checkCurrentIdentity(): 115 if self.__currentIdentity and not self.__checkCurrentIdentity():
116 return 116 return
117 117
118 self.__refreshCurrentIdentity() 118 self.__refreshCurrentIdentity()
119 119
120 self.__currentIdentity = self.__identities[identity] 120 self.__currentIdentity = self.__identities[identity]
121 121
122 # General Tab 122 # General Tab
123 self.realnameEdit.setText(self.__currentIdentity.getRealName()) 123 self.realnameEdit.setText(self.__currentIdentity.getRealName())
124 self.nicknamesList.clear() 124 self.nicknamesList.clear()
125 self.nicknamesList.addItems(self.__currentIdentity.getNickNames()) 125 self.nicknamesList.addItems(self.__currentIdentity.getNickNames())
126 self.serviceEdit.setText(self.__currentIdentity.getServiceName()) 126 self.serviceEdit.setText(self.__currentIdentity.getServiceName())
127 self.passwordEdit.setText(self.__currentIdentity.getPassword()) 127 self.passwordEdit.setText(self.__currentIdentity.getPassword())
128 128
129 # Away Tab 129 # Away Tab
130 self.rememberPosOnAwayCheckBox.setChecked( 130 self.rememberPosOnAwayCheckBox.setChecked(
131 self.__currentIdentity.rememberAwayPosition()) 131 self.__currentIdentity.rememberAwayPosition()
132 )
132 self.awayEdit.setText(self.__currentIdentity.getAwayMessage()) 133 self.awayEdit.setText(self.__currentIdentity.getAwayMessage())
133 134
134 # Advanced Tab 135 # Advanced Tab
135 self.identEdit.setText(self.__currentIdentity.getIdent()) 136 self.identEdit.setText(self.__currentIdentity.getIdent())
136 self.quitEdit.setText(self.__currentIdentity.getQuitMessage()) 137 self.quitEdit.setText(self.__currentIdentity.getQuitMessage())
137 self.partEdit.setText(self.__currentIdentity.getPartMessage()) 138 self.partEdit.setText(self.__currentIdentity.getPartMessage())
138 139
139 self.__updateIdentitiesButtons() 140 self.__updateIdentitiesButtons()
140 self.__updateNicknameUpDownButtons() 141 self.__updateNicknameUpDownButtons()
141 self.__updateNicknameButtons() 142 self.__updateNicknameButtons()
142 143
143 self.identityTabWidget.setCurrentIndex(0) 144 self.identityTabWidget.setCurrentIndex(0)
144 145
145 def __refreshCurrentIdentity(self): 146 def __refreshCurrentIdentity(self):
146 """ 147 """
147 Private method to read back the data for the current identity. 148 Private method to read back the data for the current identity.
148 """ 149 """
149 if self.__currentIdentity is None: 150 if self.__currentIdentity is None:
150 return 151 return
151 152
152 # General Tab 153 # General Tab
153 self.__currentIdentity.setRealName(self.realnameEdit.text()) 154 self.__currentIdentity.setRealName(self.realnameEdit.text())
154 self.__currentIdentity.setNickNames( 155 self.__currentIdentity.setNickNames(
155 [self.nicknamesList.item(row).text() 156 [
156 for row in range(self.nicknamesList.count())]) 157 self.nicknamesList.item(row).text()
158 for row in range(self.nicknamesList.count())
159 ]
160 )
157 self.__currentIdentity.setServiceName(self.serviceEdit.text()) 161 self.__currentIdentity.setServiceName(self.serviceEdit.text())
158 self.__currentIdentity.setPassword(self.passwordEdit.text()) 162 self.__currentIdentity.setPassword(self.passwordEdit.text())
159 163
160 # Away Tab 164 # Away Tab
161 self.__currentIdentity.setRememberAwayPosition( 165 self.__currentIdentity.setRememberAwayPosition(
162 self.rememberPosOnAwayCheckBox.isChecked()) 166 self.rememberPosOnAwayCheckBox.isChecked()
167 )
163 self.__currentIdentity.setAwayMessage(self.awayEdit.text()) 168 self.__currentIdentity.setAwayMessage(self.awayEdit.text())
164 169
165 # Advanced Tab 170 # Advanced Tab
166 self.__currentIdentity.setIdent(self.identEdit.text()) 171 self.__currentIdentity.setIdent(self.identEdit.text())
167 self.__currentIdentity.setQuitMessage(self.quitEdit.text()) 172 self.__currentIdentity.setQuitMessage(self.quitEdit.text())
168 self.__currentIdentity.setPartMessage(self.partEdit.text()) 173 self.__currentIdentity.setPartMessage(self.partEdit.text())
169 174
170 def __checkCurrentIdentity(self): 175 def __checkCurrentIdentity(self):
171 """ 176 """
172 Private method to check the data for the current identity. 177 Private method to check the data for the current identity.
173 178
174 @return flag indicating a successful check (boolean) 179 @return flag indicating a successful check (boolean)
175 """ 180 """
176 if self.nicknamesList.count() == 0: 181 if self.nicknamesList.count() == 0:
177 EricMessageBox.critical( 182 EricMessageBox.critical(
178 self, 183 self,
179 self.tr("Edit Identity"), 184 self.tr("Edit Identity"),
180 self.tr( 185 self.tr("""The identity must contain at least one nick name."""),
181 """The identity must contain at least one nick name.""")) 186 )
182 block = self.identitiesCombo.blockSignals(True) 187 block = self.identitiesCombo.blockSignals(True)
183 identity = self.__currentIdentity.getName() 188 identity = self.__currentIdentity.getName()
184 if identity == IrcIdentity.DefaultIdentityName: 189 if identity == IrcIdentity.DefaultIdentityName:
185 identity = IrcIdentity.DefaultIdentityDisplay 190 identity = IrcIdentity.DefaultIdentityDisplay
186 self.identitiesCombo.setCurrentIndex( 191 self.identitiesCombo.setCurrentIndex(
187 self.identitiesCombo.findText(identity)) 192 self.identitiesCombo.findText(identity)
193 )
188 self.identitiesCombo.blockSignals(block) 194 self.identitiesCombo.blockSignals(block)
189 self.identityTabWidget.setCurrentIndex(0) 195 self.identityTabWidget.setCurrentIndex(0)
190 self.nicknameEdit.setFocus() 196 self.nicknameEdit.setFocus()
191 return False 197 return False
192 198
193 if not self.realnameEdit.text(): 199 if not self.realnameEdit.text():
194 EricMessageBox.critical( 200 EricMessageBox.critical(
195 self, 201 self,
196 self.tr("Edit Identity"), 202 self.tr("Edit Identity"),
197 self.tr("""The identity must have a real name.""")) 203 self.tr("""The identity must have a real name."""),
204 )
198 block = self.identitiesCombo.blockSignals(True) 205 block = self.identitiesCombo.blockSignals(True)
199 identity = self.__currentIdentity.getName() 206 identity = self.__currentIdentity.getName()
200 if identity == IrcIdentity.DefaultIdentityName: 207 if identity == IrcIdentity.DefaultIdentityName:
201 identity = IrcIdentity.DefaultIdentityDisplay 208 identity = IrcIdentity.DefaultIdentityDisplay
202 self.identitiesCombo.setCurrentIndex( 209 self.identitiesCombo.setCurrentIndex(
203 self.identitiesCombo.findText(identity)) 210 self.identitiesCombo.findText(identity)
211 )
204 self.identitiesCombo.blockSignals(block) 212 self.identitiesCombo.blockSignals(block)
205 self.identityTabWidget.setCurrentIndex(0) 213 self.identityTabWidget.setCurrentIndex(0)
206 self.realnameEdit.setFocus() 214 self.realnameEdit.setFocus()
207 return False 215 return False
208 216
209 return True 217 return True
210 218
211 @pyqtSlot() 219 @pyqtSlot()
212 def on_addButton_clicked(self): 220 def on_addButton_clicked(self):
213 """ 221 """
214 Private slot to add a new idntity. 222 Private slot to add a new idntity.
215 """ 223 """
216 name, ok = QInputDialog.getText( 224 name, ok = QInputDialog.getText(
217 self, 225 self,
218 self.tr("Add Identity"), 226 self.tr("Add Identity"),
219 self.tr("Identity Name:"), 227 self.tr("Identity Name:"),
220 QLineEdit.EchoMode.Normal) 228 QLineEdit.EchoMode.Normal,
221 229 )
230
222 if ok: 231 if ok:
223 if name: 232 if name:
224 if name in self.__identities: 233 if name in self.__identities:
225 EricMessageBox.critical( 234 EricMessageBox.critical(
226 self, 235 self,
227 self.tr("Add Identity"), 236 self.tr("Add Identity"),
228 self.tr( 237 self.tr(
229 """An identity named <b>{0}</b> already exists.""" 238 """An identity named <b>{0}</b> already exists."""
230 """ You must provide a different name.""").format( 239 """ You must provide a different name."""
231 name)) 240 ).format(name),
241 )
232 self.on_addButton_clicked() 242 self.on_addButton_clicked()
233 else: 243 else:
234 identity = IrcIdentity(name) 244 identity = IrcIdentity(name)
235 identity.setIdent(Utilities.getUserName()) 245 identity.setIdent(Utilities.getUserName())
236 identity.setRealName(Utilities.getRealName()) 246 identity.setRealName(Utilities.getRealName())
237 self.__identities[name] = identity 247 self.__identities[name] = identity
238 self.identitiesCombo.addItem(name) 248 self.identitiesCombo.addItem(name)
239 self.identitiesCombo.setCurrentIndex( 249 self.identitiesCombo.setCurrentIndex(
240 self.identitiesCombo.count() - 1) 250 self.identitiesCombo.count() - 1
251 )
241 else: 252 else:
242 EricMessageBox.critical( 253 EricMessageBox.critical(
243 self, 254 self,
244 self.tr("Add Identity"), 255 self.tr("Add Identity"),
245 self.tr("""The identity has to have a name.""")) 256 self.tr("""The identity has to have a name."""),
257 )
246 self.on_addButton_clicked() 258 self.on_addButton_clicked()
247 259
248 @pyqtSlot() 260 @pyqtSlot()
249 def on_copyButton_clicked(self): 261 def on_copyButton_clicked(self):
250 """ 262 """
251 Private slot to copy the selected identity. 263 Private slot to copy the selected identity.
252 """ 264 """
254 name, ok = QInputDialog.getText( 266 name, ok = QInputDialog.getText(
255 self, 267 self,
256 self.tr("Copy Identity"), 268 self.tr("Copy Identity"),
257 self.tr("Identity Name:"), 269 self.tr("Identity Name:"),
258 QLineEdit.EchoMode.Normal, 270 QLineEdit.EchoMode.Normal,
259 currentIdentity) 271 currentIdentity,
260 272 )
273
261 if ok: 274 if ok:
262 if name: 275 if name:
263 if name in self.__identities: 276 if name in self.__identities:
264 EricMessageBox.critical( 277 EricMessageBox.critical(
265 self, 278 self,
266 self.tr("Copy Identity"), 279 self.tr("Copy Identity"),
267 self.tr( 280 self.tr(
268 """An identity named <b>{0}</b> already exists.""" 281 """An identity named <b>{0}</b> already exists."""
269 """ You must provide a different name.""").format( 282 """ You must provide a different name."""
270 name)) 283 ).format(name),
284 )
271 self.on_copyButton_clicked() 285 self.on_copyButton_clicked()
272 else: 286 else:
273 identity = copy.deepcopy(self.__currentIdentity) 287 identity = copy.deepcopy(self.__currentIdentity)
274 identity.setName(name) 288 identity.setName(name)
275 self.__identities[name] = identity 289 self.__identities[name] = identity
276 self.identitiesCombo.addItem(name) 290 self.identitiesCombo.addItem(name)
277 self.identitiesCombo.setCurrentIndex( 291 self.identitiesCombo.setCurrentIndex(
278 self.identitiesCombo.count() - 1) 292 self.identitiesCombo.count() - 1
293 )
279 else: 294 else:
280 EricMessageBox.critical( 295 EricMessageBox.critical(
281 self, 296 self,
282 self.tr("Copy Identity"), 297 self.tr("Copy Identity"),
283 self.tr("""The identity has to have a name.""")) 298 self.tr("""The identity has to have a name."""),
299 )
284 self.on_copyButton_clicked() 300 self.on_copyButton_clicked()
285 301
286 @pyqtSlot() 302 @pyqtSlot()
287 def on_renameButton_clicked(self): 303 def on_renameButton_clicked(self):
288 """ 304 """
289 Private slot to rename the selected identity. 305 Private slot to rename the selected identity.
290 """ 306 """
292 name, ok = QInputDialog.getText( 308 name, ok = QInputDialog.getText(
293 self, 309 self,
294 self.tr("Rename Identity"), 310 self.tr("Rename Identity"),
295 self.tr("Identity Name:"), 311 self.tr("Identity Name:"),
296 QLineEdit.EchoMode.Normal, 312 QLineEdit.EchoMode.Normal,
297 currentIdentity) 313 currentIdentity,
298 314 )
315
299 if ok and name != currentIdentity: 316 if ok and name != currentIdentity:
300 if name: 317 if name:
301 if name in self.__identities: 318 if name in self.__identities:
302 EricMessageBox.critical( 319 EricMessageBox.critical(
303 self, 320 self,
304 self.tr("Rename Identity"), 321 self.tr("Rename Identity"),
305 self.tr( 322 self.tr(
306 """An identity named <b>{0}</b> already exists.""" 323 """An identity named <b>{0}</b> already exists."""
307 """ You must provide a different name.""").format( 324 """ You must provide a different name."""
308 name)) 325 ).format(name),
326 )
309 self.on_renameButton_clicked() 327 self.on_renameButton_clicked()
310 else: 328 else:
311 del self.__identities[currentIdentity] 329 del self.__identities[currentIdentity]
312 self.__currentIdentity.setName(name) 330 self.__currentIdentity.setName(name)
313 self.__identities[name] = self.__currentIdentity 331 self.__identities[name] = self.__currentIdentity
314 self.identitiesCombo.setItemText( 332 self.identitiesCombo.setItemText(
315 self.identitiesCombo.currentIndex(), name) 333 self.identitiesCombo.currentIndex(), name
334 )
316 else: 335 else:
317 EricMessageBox.critical( 336 EricMessageBox.critical(
318 self, 337 self,
319 self.tr("Copy Identity"), 338 self.tr("Copy Identity"),
320 self.tr("""The identity has to have a name.""")) 339 self.tr("""The identity has to have a name."""),
340 )
321 self.on_renameButton_clicked() 341 self.on_renameButton_clicked()
322 342
323 @pyqtSlot() 343 @pyqtSlot()
324 def on_deleteButton_clicked(self): 344 def on_deleteButton_clicked(self):
325 """ 345 """
326 Private slot to rename the selected identity. 346 Private slot to rename the selected identity.
327 """ 347 """
328 currentIdentity = self.identitiesCombo.currentText() 348 currentIdentity = self.identitiesCombo.currentText()
329 if currentIdentity == IrcIdentity.DefaultIdentityDisplay: 349 if currentIdentity == IrcIdentity.DefaultIdentityDisplay:
330 return 350 return
331 351
332 inUse = False 352 inUse = False
333 for networkName in self.__manager.getNetworkNames(): 353 for networkName in self.__manager.getNetworkNames():
334 inUse = ( 354 inUse = (
335 self.__manager.getNetwork(networkName).getIdentityName() == 355 self.__manager.getNetwork(networkName).getIdentityName()
336 currentIdentity) 356 == currentIdentity
357 )
337 if inUse: 358 if inUse:
338 break 359 break
339 360
340 msg = ( 361 msg = (
341 self.tr("This identity is in use. If you remove it, the network" 362 self.tr(
342 " settings using it will fall back to the default" 363 "This identity is in use. If you remove it, the network"
343 " identity. Should it be deleted anyway?") 364 " settings using it will fall back to the default"
344 if inUse else 365 " identity. Should it be deleted anyway?"
345 self.tr("Do you really want to delete all information for" 366 )
346 " this identity?") 367 if inUse
368 else self.tr(
369 "Do you really want to delete all information for" " this identity?"
370 )
347 ) 371 )
348 res = EricMessageBox.yesNo( 372 res = EricMessageBox.yesNo(
349 self, 373 self, self.tr("Delete Identity"), msg, icon=EricMessageBox.Warning
350 self.tr("Delete Identity"), 374 )
351 msg,
352 icon=EricMessageBox.Warning)
353 if res: 375 if res:
354 del self.__identities[currentIdentity] 376 del self.__identities[currentIdentity]
355 self.identitiesCombo.removeItem( 377 self.identitiesCombo.removeItem(
356 self.identitiesCombo.findText(currentIdentity)) 378 self.identitiesCombo.findText(currentIdentity)
357 379 )
380
358 def __updateNicknameUpDownButtons(self): 381 def __updateNicknameUpDownButtons(self):
359 """ 382 """
360 Private method to set the enabled state of the nick name up and 383 Private method to set the enabled state of the nick name up and
361 down buttons. 384 down buttons.
362 """ 385 """
365 self.nicknameDownButton.setEnabled(False) 388 self.nicknameDownButton.setEnabled(False)
366 else: 389 else:
367 if self.nicknamesList.currentRow() == 0: 390 if self.nicknamesList.currentRow() == 0:
368 self.nicknameUpButton.setEnabled(False) 391 self.nicknameUpButton.setEnabled(False)
369 self.nicknameDownButton.setEnabled(True) 392 self.nicknameDownButton.setEnabled(True)
370 elif ( 393 elif self.nicknamesList.currentRow() == self.nicknamesList.count() - 1:
371 self.nicknamesList.currentRow() ==
372 self.nicknamesList.count() - 1
373 ):
374 self.nicknameUpButton.setEnabled(True) 394 self.nicknameUpButton.setEnabled(True)
375 self.nicknameDownButton.setEnabled(False) 395 self.nicknameDownButton.setEnabled(False)
376 else: 396 else:
377 self.nicknameUpButton.setEnabled(True) 397 self.nicknameUpButton.setEnabled(True)
378 self.nicknameDownButton.setEnabled(True) 398 self.nicknameDownButton.setEnabled(True)
379 399
380 def __updateNicknameButtons(self): 400 def __updateNicknameButtons(self):
381 """ 401 """
382 Private slot to update the nick name buttons except the up and 402 Private slot to update the nick name buttons except the up and
383 down buttons. 403 down buttons.
384 """ 404 """
385 self.nicknameDeleteButton.setEnabled( 405 self.nicknameDeleteButton.setEnabled(
386 len(self.nicknamesList.selectedItems()) != 0) 406 len(self.nicknamesList.selectedItems()) != 0
387 407 )
408
388 self.nicknameAddButton.setEnabled(self.nicknameEdit.text() != "") 409 self.nicknameAddButton.setEnabled(self.nicknameEdit.text() != "")
389 410
390 @pyqtSlot(str) 411 @pyqtSlot(str)
391 def on_nicknameEdit_textEdited(self, nick): 412 def on_nicknameEdit_textEdited(self, nick):
392 """ 413 """
393 Private slot handling a change of the nick name. 414 Private slot handling a change of the nick name.
394 415
395 @param nick new nick name (string) 416 @param nick new nick name (string)
396 """ 417 """
397 sel = self.nicknamesList.selectedItems() 418 sel = self.nicknamesList.selectedItems()
398 if sel: 419 if sel:
399 sel[0].setText(nick) 420 sel[0].setText(nick)
400 421
401 self.__updateNicknameButtons() 422 self.__updateNicknameButtons()
402 423
403 @pyqtSlot() 424 @pyqtSlot()
404 def on_nicknamesList_itemSelectionChanged(self): 425 def on_nicknamesList_itemSelectionChanged(self):
405 """ 426 """
406 Private slot handling the selection of a nick name. 427 Private slot handling the selection of a nick name.
407 """ 428 """
408 items = self.nicknamesList.selectedItems() 429 items = self.nicknamesList.selectedItems()
409 if items: 430 if items:
410 self.nicknameEdit.setText(items[0].text()) 431 self.nicknameEdit.setText(items[0].text())
411 432
412 self.__updateNicknameUpDownButtons() 433 self.__updateNicknameUpDownButtons()
413 self.__updateNicknameButtons() 434 self.__updateNicknameButtons()
414 435
415 self.nicknameEdit.setFocus() 436 self.nicknameEdit.setFocus()
416 437
417 @pyqtSlot() 438 @pyqtSlot()
418 def on_nicknameAddButton_clicked(self): 439 def on_nicknameAddButton_clicked(self):
419 """ 440 """
420 Private slot to add a new nickname. 441 Private slot to add a new nickname.
421 """ 442 """
422 nick = self.nicknameEdit.text() 443 nick = self.nicknameEdit.text()
423 if nick not in [self.nicknamesList.item(row).text() 444 if nick not in [
424 for row in range(self.nicknamesList.count())]: 445 self.nicknamesList.item(row).text()
446 for row in range(self.nicknamesList.count())
447 ]:
425 self.nicknamesList.insertItem(0, nick) 448 self.nicknamesList.insertItem(0, nick)
426 self.nicknamesList.setCurrentRow( 449 self.nicknamesList.setCurrentRow(0, QItemSelectionModel.SelectionFlag.Clear)
427 0, QItemSelectionModel.SelectionFlag.Clear)
428 self.nicknameEdit.clear() 450 self.nicknameEdit.clear()
429 self.__updateNicknameButtons() 451 self.__updateNicknameButtons()
430 452
431 @pyqtSlot() 453 @pyqtSlot()
432 def on_nicknameDeleteButton_clicked(self): 454 def on_nicknameDeleteButton_clicked(self):
433 """ 455 """
434 Private slot to delete a nick name. 456 Private slot to delete a nick name.
435 """ 457 """
436 itm = self.nicknamesList.takeItem(self.nicknamesList.currentRow()) 458 itm = self.nicknamesList.takeItem(self.nicknamesList.currentRow())
437 del itm 459 del itm
438 self.__updateNicknameButtons() 460 self.__updateNicknameButtons()
439 461
440 @pyqtSlot() 462 @pyqtSlot()
441 def on_nicknameUpButton_clicked(self): 463 def on_nicknameUpButton_clicked(self):
442 """ 464 """
443 Private slot to move the selected entry up one row. 465 Private slot to move the selected entry up one row.
444 """ 466 """
446 if row > 0: 468 if row > 0:
447 itm = self.nicknamesList.takeItem(row) 469 itm = self.nicknamesList.takeItem(row)
448 row -= 1 470 row -= 1
449 self.nicknamesList.insertItem(row, itm) 471 self.nicknamesList.insertItem(row, itm)
450 self.nicknamesList.setCurrentItem(itm) 472 self.nicknamesList.setCurrentItem(itm)
451 473
452 @pyqtSlot() 474 @pyqtSlot()
453 def on_nicknameDownButton_clicked(self): 475 def on_nicknameDownButton_clicked(self):
454 """ 476 """
455 Private slot to move the selected entry down one row. 477 Private slot to move the selected entry down one row.
456 """ 478 """
458 if row < self.nicknamesList.count() - 1: 480 if row < self.nicknamesList.count() - 1:
459 itm = self.nicknamesList.takeItem(row) 481 itm = self.nicknamesList.takeItem(row)
460 row += 1 482 row += 1
461 self.nicknamesList.insertItem(row, itm) 483 self.nicknamesList.insertItem(row, itm)
462 self.nicknamesList.setCurrentItem(itm) 484 self.nicknamesList.setCurrentItem(itm)
463 485
464 @pyqtSlot(bool) 486 @pyqtSlot(bool)
465 def on_showPasswordButton_clicked(self, checked): 487 def on_showPasswordButton_clicked(self, checked):
466 """ 488 """
467 Private slot to show or hide the password. 489 Private slot to show or hide the password.
468 490
469 @param checked state of the button 491 @param checked state of the button
470 @type bool 492 @type bool
471 """ 493 """
472 if checked: 494 if checked:
473 self.passwordEdit.setEchoMode(QLineEdit.EchoMode.Normal) 495 self.passwordEdit.setEchoMode(QLineEdit.EchoMode.Normal)
474 self.showPasswordButton.setIcon( 496 self.showPasswordButton.setIcon(UI.PixmapCache.getIcon("hidePassword"))
475 UI.PixmapCache.getIcon("hidePassword")) 497 self.showPasswordButton.setToolTip(self.tr("Press to hide the password"))
476 self.showPasswordButton.setToolTip(
477 self.tr("Press to hide the password"))
478 else: 498 else:
479 self.passwordEdit.setEchoMode(QLineEdit.EchoMode.Password) 499 self.passwordEdit.setEchoMode(QLineEdit.EchoMode.Password)
480 self.showPasswordButton.setIcon( 500 self.showPasswordButton.setIcon(UI.PixmapCache.getIcon("showPassword"))
481 UI.PixmapCache.getIcon("showPassword")) 501 self.showPasswordButton.setToolTip(self.tr("Press to show the password"))
482 self.showPasswordButton.setToolTip( 502
483 self.tr("Press to show the password"))
484
485 def accept(self): 503 def accept(self):
486 """ 504 """
487 Public slot handling the acceptance of the dialog. 505 Public slot handling the acceptance of the dialog.
488 """ 506 """
489 if not self.__checkCurrentIdentity(): 507 if not self.__checkCurrentIdentity():
490 return 508 return
491 509
492 self.__refreshCurrentIdentity() 510 self.__refreshCurrentIdentity()
493 self.__manager.setIdentities(self.__identities) 511 self.__manager.setIdentities(self.__identities)
494 512
495 super().accept() 513 super().accept()

eric ide

mercurial