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 """ |
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 """ |