67 settings.setValue("Password", self.__password) |
66 settings.setValue("Password", self.__password) |
68 settings.setValue("QuitMessage", self.__quitMessage) |
67 settings.setValue("QuitMessage", self.__quitMessage) |
69 settings.setValue("PartMessage", self.__partMessage) |
68 settings.setValue("PartMessage", self.__partMessage) |
70 settings.setValue("RememberAwayPosition", self.__rememberPosOnAway) |
69 settings.setValue("RememberAwayPosition", self.__rememberPosOnAway) |
71 settings.setValue("AwayMessage", self.__awayMessage) |
70 settings.setValue("AwayMessage", self.__awayMessage) |
72 |
71 |
73 def load(self, settings): |
72 def load(self, settings): |
74 """ |
73 """ |
75 Public method to load the identity data. |
74 Public method to load the identity data. |
76 |
75 |
77 @param settings reference to the settings object (QSettings) |
76 @param settings reference to the settings object (QSettings) |
78 """ |
77 """ |
79 self.__ident = settings.value("Ident", Utilities.getUserName()) |
78 self.__ident = settings.value("Ident", Utilities.getUserName()) |
80 self.__realName = settings.value("RealName", "") |
79 self.__realName = settings.value("RealName", "") |
81 self.__nickNames = Preferences.toList(settings.value("NickNames", [])) |
80 self.__nickNames = Preferences.toList(settings.value("NickNames", [])) |
82 self.__serviceName = settings.value("ServiceName", "") |
81 self.__serviceName = settings.value("ServiceName", "") |
83 self.__password = settings.value("Password", "") |
82 self.__password = settings.value("Password", "") |
84 self.__quitMessage = settings.value( |
83 self.__quitMessage = settings.value( |
85 "QuitMessage", IrcIdentity.DefaultQuitMessage) |
84 "QuitMessage", IrcIdentity.DefaultQuitMessage |
|
85 ) |
86 self.__partMessage = settings.value( |
86 self.__partMessage = settings.value( |
87 "PartMessage", IrcIdentity.DefaultPartMessage) |
87 "PartMessage", IrcIdentity.DefaultPartMessage |
|
88 ) |
88 self.__rememberPosOnAway = Preferences.toBool( |
89 self.__rememberPosOnAway = Preferences.toBool( |
89 settings.value("RememberAwayPosition", True)) |
90 settings.value("RememberAwayPosition", True) |
|
91 ) |
90 self.__awayMessage = settings.value( |
92 self.__awayMessage = settings.value( |
91 "AwayMessage", IrcIdentity.DefaultAwayMessage) |
93 "AwayMessage", IrcIdentity.DefaultAwayMessage |
92 |
94 ) |
|
95 |
93 def setName(self, name): |
96 def setName(self, name): |
94 """ |
97 """ |
95 Public method to set the identity name. |
98 Public method to set the identity name. |
96 |
99 |
97 @param name identity name (string) |
100 @param name identity name (string) |
98 """ |
101 """ |
99 self.__name = name |
102 self.__name = name |
100 |
103 |
101 def getName(self): |
104 def getName(self): |
102 """ |
105 """ |
103 Public method to get the identity name. |
106 Public method to get the identity name. |
104 |
107 |
105 @return identity name (string) |
108 @return identity name (string) |
106 """ |
109 """ |
107 return self.__name |
110 return self.__name |
108 |
111 |
109 def setIdent(self, name): |
112 def setIdent(self, name): |
110 """ |
113 """ |
111 Public method to set the real identity name. |
114 Public method to set the real identity name. |
112 |
115 |
113 @param name real identity name (string) |
116 @param name real identity name (string) |
114 """ |
117 """ |
115 self.__ident = name |
118 self.__ident = name |
116 |
119 |
117 def getIdent(self): |
120 def getIdent(self): |
118 """ |
121 """ |
119 Public method to get the real identity name. |
122 Public method to get the real identity name. |
120 |
123 |
121 @return real identity name (string) |
124 @return real identity name (string) |
122 """ |
125 """ |
123 return self.__ident |
126 return self.__ident |
124 |
127 |
125 def setRealName(self, name): |
128 def setRealName(self, name): |
126 """ |
129 """ |
127 Public method to set the real name of the identity. |
130 Public method to set the real name of the identity. |
128 |
131 |
129 @param name real name (string) |
132 @param name real name (string) |
130 """ |
133 """ |
131 self.__realName = name |
134 self.__realName = name |
132 |
135 |
133 def getRealName(self): |
136 def getRealName(self): |
134 """ |
137 """ |
135 Public method to get the real name. |
138 Public method to get the real name. |
136 |
139 |
137 @return real name (string) |
140 @return real name (string) |
138 """ |
141 """ |
139 return self.__realName |
142 return self.__realName |
140 |
143 |
141 def setNickNames(self, names): |
144 def setNickNames(self, names): |
142 """ |
145 """ |
143 Public method to set the nick names of the identity. |
146 Public method to set the nick names of the identity. |
144 |
147 |
145 @param names nick names (list of string) |
148 @param names nick names (list of string) |
146 """ |
149 """ |
147 self.__nickNames = names[:] |
150 self.__nickNames = names[:] |
148 |
151 |
149 def getNickNames(self): |
152 def getNickNames(self): |
150 """ |
153 """ |
151 Public method to get the nick names. |
154 Public method to get the nick names. |
152 |
155 |
153 @return nick names (list of string) |
156 @return nick names (list of string) |
154 """ |
157 """ |
155 return self.__nickNames |
158 return self.__nickNames |
156 |
159 |
157 def setServiceName(self, name): |
160 def setServiceName(self, name): |
158 """ |
161 """ |
159 Public method to set the service name of the identity used for |
162 Public method to set the service name of the identity used for |
160 identification. |
163 identification. |
161 |
164 |
162 @param name service name (string) |
165 @param name service name (string) |
163 """ |
166 """ |
164 self.__serviceName = name |
167 self.__serviceName = name |
165 |
168 |
166 def getServiceName(self): |
169 def getServiceName(self): |
167 """ |
170 """ |
168 Public method to get the service name of the identity used for |
171 Public method to get the service name of the identity used for |
169 identification. |
172 identification. |
170 |
173 |
171 @return service name (string) |
174 @return service name (string) |
172 """ |
175 """ |
173 return self.__serviceName |
176 return self.__serviceName |
174 |
177 |
175 def setPassword(self, password): |
178 def setPassword(self, password): |
176 """ |
179 """ |
177 Public method to set a new password. |
180 Public method to set a new password. |
178 |
181 |
179 @param password password to set (string) |
182 @param password password to set (string) |
180 """ |
183 """ |
181 self.__password = pwConvert(password, encode=True) |
184 self.__password = pwConvert(password, encode=True) |
182 |
185 |
183 def getPassword(self): |
186 def getPassword(self): |
184 """ |
187 """ |
185 Public method to get the password. |
188 Public method to get the password. |
186 |
189 |
187 @return password (string) |
190 @return password (string) |
188 """ |
191 """ |
189 return pwConvert(self.__password, encode=False) |
192 return pwConvert(self.__password, encode=False) |
190 |
193 |
191 def setQuitMessage(self, message): |
194 def setQuitMessage(self, message): |
192 """ |
195 """ |
193 Public method to set the QUIT message. |
196 Public method to set the QUIT message. |
194 |
197 |
195 @param message QUIT message (string) |
198 @param message QUIT message (string) |
196 """ |
199 """ |
197 if message: |
200 if message: |
198 self.__quitMessage = message |
201 self.__quitMessage = message |
199 else: |
202 else: |
200 self.__quitMessage = IrcIdentity.DefaultQuitMessage |
203 self.__quitMessage = IrcIdentity.DefaultQuitMessage |
201 |
204 |
202 def getQuitMessage(self): |
205 def getQuitMessage(self): |
203 """ |
206 """ |
204 Public method to get the QUIT message. |
207 Public method to get the QUIT message. |
205 |
208 |
206 @return QUIT message (string) |
209 @return QUIT message (string) |
207 """ |
210 """ |
208 return self.__quitMessage |
211 return self.__quitMessage |
209 |
212 |
210 def setPartMessage(self, message): |
213 def setPartMessage(self, message): |
211 """ |
214 """ |
212 Public method to set the PART message. |
215 Public method to set the PART message. |
213 |
216 |
214 @param message PART message (string) |
217 @param message PART message (string) |
215 """ |
218 """ |
216 if message: |
219 if message: |
217 self.__partMessage = message |
220 self.__partMessage = message |
218 else: |
221 else: |
219 self.__partMessage = IrcIdentity.DefaultPartMessage |
222 self.__partMessage = IrcIdentity.DefaultPartMessage |
220 |
223 |
221 def getPartMessage(self): |
224 def getPartMessage(self): |
222 """ |
225 """ |
223 Public method to get the PART message. |
226 Public method to get the PART message. |
224 |
227 |
225 @return PART message (string) |
228 @return PART message (string) |
226 """ |
229 """ |
227 return self.__partMessage |
230 return self.__partMessage |
228 |
231 |
229 def setRememberAwayPosition(self, remember): |
232 def setRememberAwayPosition(self, remember): |
230 """ |
233 """ |
231 Public method to set to remember the chat position upon AWAY. |
234 Public method to set to remember the chat position upon AWAY. |
232 |
235 |
233 @param remember flag indicating to remember the chat position (boolean) |
236 @param remember flag indicating to remember the chat position (boolean) |
234 """ |
237 """ |
235 self.__rememberPosOnAway = remember |
238 self.__rememberPosOnAway = remember |
236 |
239 |
237 def rememberAwayPosition(self): |
240 def rememberAwayPosition(self): |
238 """ |
241 """ |
239 Public method to get a flag indicating to remember the chat position |
242 Public method to get a flag indicating to remember the chat position |
240 upon AWAY. |
243 upon AWAY. |
241 |
244 |
242 @return flag indicating to remember the chat position (boolean) |
245 @return flag indicating to remember the chat position (boolean) |
243 """ |
246 """ |
244 return self.__rememberPosOnAway |
247 return self.__rememberPosOnAway |
245 |
248 |
246 def setAwayMessage(self, message): |
249 def setAwayMessage(self, message): |
247 """ |
250 """ |
248 Public method to set the AWAY message. |
251 Public method to set the AWAY message. |
249 |
252 |
250 @param message AWAY message (string) |
253 @param message AWAY message (string) |
251 """ |
254 """ |
252 if message: |
255 if message: |
253 self.__awayMessage = message |
256 self.__awayMessage = message |
254 else: |
257 else: |
255 self.__awayMessage = IrcIdentity.DefaultAwayMessage |
258 self.__awayMessage = IrcIdentity.DefaultAwayMessage |
256 |
259 |
257 def getAwayMessage(self): |
260 def getAwayMessage(self): |
258 """ |
261 """ |
259 Public method to get the AWAY message. |
262 Public method to get the AWAY message. |
260 |
263 |
261 @return AWAY message (string) |
264 @return AWAY message (string) |
262 """ |
265 """ |
263 return self.__awayMessage |
266 return self.__awayMessage |
264 |
267 |
265 @classmethod |
268 @classmethod |
266 def createDefaultIdentity(cls): |
269 def createDefaultIdentity(cls): |
267 """ |
270 """ |
268 Class method to create the default identity. |
271 Class method to create the default identity. |
269 |
272 |
270 @return default identity (IrcIdentity) |
273 @return default identity (IrcIdentity) |
271 """ |
274 """ |
272 userName = Utilities.getUserName() |
275 userName = Utilities.getUserName() |
273 realName = Utilities.getRealName() |
276 realName = Utilities.getRealName() |
274 if not realName: |
277 if not realName: |
282 |
285 |
283 class IrcServer: |
286 class IrcServer: |
284 """ |
287 """ |
285 Class implementing the IRC identity object. |
288 Class implementing the IRC identity object. |
286 """ |
289 """ |
|
290 |
287 DefaultPort = 6667 |
291 DefaultPort = 6667 |
288 DefaultSslPort = 6697 |
292 DefaultSslPort = 6697 |
289 |
293 |
290 def __init__(self, name): |
294 def __init__(self, name): |
291 """ |
295 """ |
292 Constructor |
296 Constructor |
293 |
297 |
294 @param name name of the server (string) |
298 @param name name of the server (string) |
295 """ |
299 """ |
296 super().__init__() |
300 super().__init__() |
297 |
301 |
298 self.__server = name |
302 self.__server = name |
299 self.__port = IrcServer.DefaultPort |
303 self.__port = IrcServer.DefaultPort |
300 self.__ssl = False |
304 self.__ssl = False |
301 self.__password = "" |
305 self.__password = "" |
302 |
306 |
303 def save(self, settings): |
307 def save(self, settings): |
304 """ |
308 """ |
305 Public method to save the server data. |
309 Public method to save the server data. |
306 |
310 |
307 @param settings reference to the settings object (QSettings) |
311 @param settings reference to the settings object (QSettings) |
308 """ |
312 """ |
309 settings.setValue("Name", self.__server) |
313 settings.setValue("Name", self.__server) |
310 settings.setValue("Port", self.__port) |
314 settings.setValue("Port", self.__port) |
311 settings.setValue("SSL", self.__ssl) |
315 settings.setValue("SSL", self.__ssl) |
312 settings.setValue("Password", self.__password) |
316 settings.setValue("Password", self.__password) |
313 |
317 |
314 def load(self, settings): |
318 def load(self, settings): |
315 """ |
319 """ |
316 Public method to load the server data. |
320 Public method to load the server data. |
317 |
321 |
318 @param settings reference to the settings object (QSettings) |
322 @param settings reference to the settings object (QSettings) |
319 """ |
323 """ |
320 self.__server = settings.value("Name", "") |
324 self.__server = settings.value("Name", "") |
321 self.__port = int(settings.value("Port", IrcServer.DefaultPort)) |
325 self.__port = int(settings.value("Port", IrcServer.DefaultPort)) |
322 self.__ssl = Preferences.toBool(settings.value("SSL", False)) |
326 self.__ssl = Preferences.toBool(settings.value("SSL", False)) |
323 self.__password = settings.value("Password", "") |
327 self.__password = settings.value("Password", "") |
324 |
328 |
325 def getName(self): |
329 def getName(self): |
326 """ |
330 """ |
327 Public method to get the server name. |
331 Public method to get the server name. |
328 |
332 |
329 @return server name (string) |
333 @return server name (string) |
330 """ |
334 """ |
331 return self.__server |
335 return self.__server |
332 |
336 |
333 def setName(self, name): |
337 def setName(self, name): |
334 """ |
338 """ |
335 Public method to set the server name. |
339 Public method to set the server name. |
336 |
340 |
337 @param name server name (string) |
341 @param name server name (string) |
338 """ |
342 """ |
339 self.__server = name |
343 self.__server = name |
340 |
344 |
341 def getPort(self): |
345 def getPort(self): |
342 """ |
346 """ |
343 Public method to get the server port number. |
347 Public method to get the server port number. |
344 |
348 |
345 @return port number (integer) |
349 @return port number (integer) |
346 """ |
350 """ |
347 return self.__port |
351 return self.__port |
348 |
352 |
349 def setPort(self, port): |
353 def setPort(self, port): |
350 """ |
354 """ |
351 Public method to set the server port number. |
355 Public method to set the server port number. |
352 |
356 |
353 @param port server port number (integer) |
357 @param port server port number (integer) |
354 """ |
358 """ |
355 self.__port = port |
359 self.__port = port |
356 |
360 |
357 def useSSL(self): |
361 def useSSL(self): |
358 """ |
362 """ |
359 Public method to check for SSL usage. |
363 Public method to check for SSL usage. |
360 |
364 |
361 @return flag indicating SSL usage (boolean) |
365 @return flag indicating SSL usage (boolean) |
362 """ |
366 """ |
363 return self.__ssl |
367 return self.__ssl |
364 |
368 |
365 def setUseSSL(self, on): |
369 def setUseSSL(self, on): |
366 """ |
370 """ |
367 Public method to set the SSL usage. |
371 Public method to set the SSL usage. |
368 |
372 |
369 @param on flag indicating SSL usage (boolean) |
373 @param on flag indicating SSL usage (boolean) |
370 """ |
374 """ |
371 self.__ssl = on |
375 self.__ssl = on |
372 |
376 |
373 def setPassword(self, password): |
377 def setPassword(self, password): |
374 """ |
378 """ |
375 Public method to set a new password. |
379 Public method to set a new password. |
376 |
380 |
377 @param password password to set (string) |
381 @param password password to set (string) |
378 """ |
382 """ |
379 self.__password = pwConvert(password, encode=True) |
383 self.__password = pwConvert(password, encode=True) |
380 |
384 |
381 def getPassword(self): |
385 def getPassword(self): |
382 """ |
386 """ |
383 Public method to get the password. |
387 Public method to get the password. |
384 |
388 |
385 @return password (string) |
389 @return password (string) |
386 """ |
390 """ |
387 return pwConvert(self.__password, encode=False) |
391 return pwConvert(self.__password, encode=False) |
388 |
392 |
389 |
393 |
390 class IrcChannel: |
394 class IrcChannel: |
391 """ |
395 """ |
392 Class implementing the IRC channel object. |
396 Class implementing the IRC channel object. |
393 """ |
397 """ |
|
398 |
394 def __init__(self, name): |
399 def __init__(self, name): |
395 """ |
400 """ |
396 Constructor |
401 Constructor |
397 |
402 |
398 @param name name of the network (string) |
403 @param name name of the network (string) |
399 """ |
404 """ |
400 super().__init__() |
405 super().__init__() |
401 |
406 |
402 self.__name = name |
407 self.__name = name |
403 self.__key = "" |
408 self.__key = "" |
404 self.__autoJoin = False |
409 self.__autoJoin = False |
405 |
410 |
406 def save(self, settings): |
411 def save(self, settings): |
407 """ |
412 """ |
408 Public method to save the channel data. |
413 Public method to save the channel data. |
409 |
414 |
410 @param settings reference to the settings object (QSettings) |
415 @param settings reference to the settings object (QSettings) |
411 """ |
416 """ |
412 # no need to save the channel name because that is the group key |
417 # no need to save the channel name because that is the group key |
413 settings.setValue("Key", self.__key) |
418 settings.setValue("Key", self.__key) |
414 settings.setValue("AutoJoin", self.__autoJoin) |
419 settings.setValue("AutoJoin", self.__autoJoin) |
415 |
420 |
416 def load(self, settings): |
421 def load(self, settings): |
417 """ |
422 """ |
418 Public method to load the network data. |
423 Public method to load the network data. |
419 |
424 |
420 @param settings reference to the settings object (QSettings) |
425 @param settings reference to the settings object (QSettings) |
421 """ |
426 """ |
422 self.__key = settings.value("Key", "") |
427 self.__key = settings.value("Key", "") |
423 self.__autoJoin = Preferences.toBool(settings.value("AutoJoin", False)) |
428 self.__autoJoin = Preferences.toBool(settings.value("AutoJoin", False)) |
424 |
429 |
425 def getName(self): |
430 def getName(self): |
426 """ |
431 """ |
427 Public method to get the channel name. |
432 Public method to get the channel name. |
428 |
433 |
429 @return channel name (string) |
434 @return channel name (string) |
430 """ |
435 """ |
431 return self.__name |
436 return self.__name |
432 |
437 |
433 def setKey(self, key): |
438 def setKey(self, key): |
434 """ |
439 """ |
435 Public method to set a new channel key. |
440 Public method to set a new channel key. |
436 |
441 |
437 @param key channel key to set (string) |
442 @param key channel key to set (string) |
438 """ |
443 """ |
439 self.__key = pwConvert(key, encode=True) |
444 self.__key = pwConvert(key, encode=True) |
440 |
445 |
441 def getKey(self): |
446 def getKey(self): |
442 """ |
447 """ |
443 Public method to get the channel key. |
448 Public method to get the channel key. |
444 |
449 |
445 @return channel key (string) |
450 @return channel key (string) |
446 """ |
451 """ |
447 return pwConvert(self.__key, encode=False) |
452 return pwConvert(self.__key, encode=False) |
448 |
453 |
449 def autoJoin(self): |
454 def autoJoin(self): |
450 """ |
455 """ |
451 Public method to check the auto join status. |
456 Public method to check the auto join status. |
452 |
457 |
453 @return flag indicating if the channel should be |
458 @return flag indicating if the channel should be |
454 joined automatically (boolean) |
459 joined automatically (boolean) |
455 """ |
460 """ |
456 return self.__autoJoin |
461 return self.__autoJoin |
457 |
462 |
458 def setAutoJoin(self, enable): |
463 def setAutoJoin(self, enable): |
459 """ |
464 """ |
460 Public method to set the auto join status of the channel. |
465 Public method to set the auto join status of the channel. |
461 |
466 |
462 @param enable flag indicating if the channel should be |
467 @param enable flag indicating if the channel should be |
463 joined automatically (boolean) |
468 joined automatically (boolean) |
464 """ |
469 """ |
465 self.__autoJoin = enable |
470 self.__autoJoin = enable |
466 |
471 |
467 |
472 |
468 class IrcNetwork: |
473 class IrcNetwork: |
469 """ |
474 """ |
470 Class implementing the IRC network object. |
475 Class implementing the IRC network object. |
471 """ |
476 """ |
|
477 |
472 def __init__(self, name): |
478 def __init__(self, name): |
473 """ |
479 """ |
474 Constructor |
480 Constructor |
475 |
481 |
476 @param name name of the network (string) |
482 @param name name of the network (string) |
477 """ |
483 """ |
478 super().__init__() |
484 super().__init__() |
479 |
485 |
480 self.__name = name |
486 self.__name = name |
481 self.__identity = "" |
487 self.__identity = "" |
482 self.__server = None |
488 self.__server = None |
483 self.__channels = {} |
489 self.__channels = {} |
484 self.__autoConnect = False |
490 self.__autoConnect = False |
485 |
491 |
486 def save(self, settings): |
492 def save(self, settings): |
487 """ |
493 """ |
488 Public method to save the network data. |
494 Public method to save the network data. |
489 |
495 |
490 @param settings reference to the settings object (QSettings) |
496 @param settings reference to the settings object (QSettings) |
491 """ |
497 """ |
492 # no need to save the network name because that is the group key |
498 # no need to save the network name because that is the group key |
493 settings.setValue("Identity", self.__identity) |
499 settings.setValue("Identity", self.__identity) |
494 settings.setValue("AutoConnect", self.__autoConnect) |
500 settings.setValue("AutoConnect", self.__autoConnect) |
495 |
501 |
496 settings.beginGroup("Server") |
502 settings.beginGroup("Server") |
497 self.__server.save(settings) |
503 self.__server.save(settings) |
498 settings.endGroup() |
504 settings.endGroup() |
499 |
505 |
500 settings.beginGroup("Channels") |
506 settings.beginGroup("Channels") |
501 for key in self.__channels: |
507 for key in self.__channels: |
502 settings.beginGroup(key) |
508 settings.beginGroup(key) |
503 self.__channels[key].save(settings) |
509 self.__channels[key].save(settings) |
504 settings.endGroup() |
510 settings.endGroup() |
505 settings.endGroup() |
511 settings.endGroup() |
506 |
512 |
507 def load(self, settings): |
513 def load(self, settings): |
508 """ |
514 """ |
509 Public method to load the network data. |
515 Public method to load the network data. |
510 |
516 |
511 @param settings reference to the settings object (QSettings) |
517 @param settings reference to the settings object (QSettings) |
512 """ |
518 """ |
513 self.__identity = settings.value("Identity", "") |
519 self.__identity = settings.value("Identity", "") |
514 self.__autoConnect = Preferences.toBool( |
520 self.__autoConnect = Preferences.toBool(settings.value("AutoConnect", False)) |
515 settings.value("AutoConnect", False)) |
521 |
516 |
|
517 settings.beginGroup("Server") |
522 settings.beginGroup("Server") |
518 self.__server = IrcServer("") |
523 self.__server = IrcServer("") |
519 self.__server.load(settings) |
524 self.__server.load(settings) |
520 settings.endGroup() |
525 settings.endGroup() |
521 |
526 |
522 settings.beginGroup("Channels") |
527 settings.beginGroup("Channels") |
523 for key in settings.childGroups(): |
528 for key in settings.childGroups(): |
524 self.__channels[key] = IrcChannel(key) |
529 self.__channels[key] = IrcChannel(key) |
525 settings.beginGroup(key) |
530 settings.beginGroup(key) |
526 self.__channels[key].load(settings) |
531 self.__channels[key].load(settings) |
527 settings.endGroup() |
532 settings.endGroup() |
528 settings.endGroup() |
533 settings.endGroup() |
529 |
534 |
530 def setName(self, name): |
535 def setName(self, name): |
531 """ |
536 """ |
532 Public method to set the network name. |
537 Public method to set the network name. |
533 |
538 |
534 @param name network name (string) |
539 @param name network name (string) |
535 """ |
540 """ |
536 self.__name = name |
541 self.__name = name |
537 |
542 |
538 def getName(self): |
543 def getName(self): |
539 """ |
544 """ |
540 Public method to get the network name. |
545 Public method to get the network name. |
541 |
546 |
542 @return network name (string) |
547 @return network name (string) |
543 """ |
548 """ |
544 return self.__name |
549 return self.__name |
545 |
550 |
546 def setIdentityName(self, name): |
551 def setIdentityName(self, name): |
547 """ |
552 """ |
548 Public method to set the name of the identity. |
553 Public method to set the name of the identity. |
549 |
554 |
550 @param name identity name (string) |
555 @param name identity name (string) |
551 """ |
556 """ |
552 self.__identity = name |
557 self.__identity = name |
553 |
558 |
554 def getIdentityName(self): |
559 def getIdentityName(self): |
555 """ |
560 """ |
556 Public method to get the name of the identity. |
561 Public method to get the name of the identity. |
557 |
562 |
558 @return identity name (string) |
563 @return identity name (string) |
559 """ |
564 """ |
560 return self.__identity |
565 return self.__identity |
561 |
566 |
562 def getServerName(self): |
567 def getServerName(self): |
563 """ |
568 """ |
564 Public method to get the server name. |
569 Public method to get the server name. |
565 |
570 |
566 @return server name (string) |
571 @return server name (string) |
567 """ |
572 """ |
568 if self.__server: |
573 if self.__server: |
569 return self.__server.getName() |
574 return self.__server.getName() |
570 else: |
575 else: |
571 return "" |
576 return "" |
572 |
577 |
573 def getServer(self): |
578 def getServer(self): |
574 """ |
579 """ |
575 Public method to get the server object. |
580 Public method to get the server object. |
576 |
581 |
577 @return reference to the server (IrcServer) |
582 @return reference to the server (IrcServer) |
578 """ |
583 """ |
579 return self.__server |
584 return self.__server |
580 |
585 |
581 def setServer(self, server): |
586 def setServer(self, server): |
582 """ |
587 """ |
583 Public method to set the server. |
588 Public method to set the server. |
584 |
589 |
585 @param server server object to set (IrcServer) |
590 @param server server object to set (IrcServer) |
586 """ |
591 """ |
587 self.__server = server |
592 self.__server = server |
588 |
593 |
589 def setChannels(self, channels): |
594 def setChannels(self, channels): |
590 """ |
595 """ |
591 Public method to set the list of channels. |
596 Public method to set the list of channels. |
592 |
597 |
593 @param channels list of channels for the network (list of IrcChannel) |
598 @param channels list of channels for the network (list of IrcChannel) |
594 """ |
599 """ |
595 self.__channels = {} |
600 self.__channels = {} |
596 for channel in channels: |
601 for channel in channels: |
597 self.__channels[channel.getName()] = channel |
602 self.__channels[channel.getName()] = channel |
598 |
603 |
599 def getChannels(self): |
604 def getChannels(self): |
600 """ |
605 """ |
601 Public method to get the channels. |
606 Public method to get the channels. |
602 |
607 |
603 @return list of channels for the network (list of IrcChannel) |
608 @return list of channels for the network (list of IrcChannel) |
604 """ |
609 """ |
605 return list(copy.deepcopy(self.__channels).values()) |
610 return list(copy.deepcopy(self.__channels).values()) |
606 |
611 |
607 def getChannelNames(self): |
612 def getChannelNames(self): |
608 """ |
613 """ |
609 Public method to get the list of channels. |
614 Public method to get the list of channels. |
610 |
615 |
611 @return list of channel names (list of string) |
616 @return list of channel names (list of string) |
612 """ |
617 """ |
613 return sorted(self.__channels.keys()) |
618 return sorted(self.__channels.keys()) |
614 |
619 |
615 def getChannel(self, channelName): |
620 def getChannel(self, channelName): |
616 """ |
621 """ |
617 Public method to get a channel. |
622 Public method to get a channel. |
618 |
623 |
619 @param channelName name of the channel to retrieve (string) |
624 @param channelName name of the channel to retrieve (string) |
620 @return reference to the channel (IrcChannel) |
625 @return reference to the channel (IrcChannel) |
621 """ |
626 """ |
622 if channelName in self.__channels: |
627 if channelName in self.__channels: |
623 return self.__channels[channelName] |
628 return self.__channels[channelName] |
624 else: |
629 else: |
625 return None |
630 return None |
626 |
631 |
627 def setChannel(self, channel): |
632 def setChannel(self, channel): |
628 """ |
633 """ |
629 Public method to set a channel. |
634 Public method to set a channel. |
630 |
635 |
631 @param channel channel object to set (IrcChannel) |
636 @param channel channel object to set (IrcChannel) |
632 """ |
637 """ |
633 channelName = channel.getName() |
638 channelName = channel.getName() |
634 if channelName in self.__channels: |
639 if channelName in self.__channels: |
635 self.__channels[channelName] = channel |
640 self.__channels[channelName] = channel |
636 |
641 |
637 def addChannel(self, channel): |
642 def addChannel(self, channel): |
638 """ |
643 """ |
639 Public method to add a channel. |
644 Public method to add a channel. |
640 |
645 |
641 @param channel channel object to add (IrcChannel) |
646 @param channel channel object to add (IrcChannel) |
642 """ |
647 """ |
643 channelName = channel.getName() |
648 channelName = channel.getName() |
644 if channelName not in self.__channels: |
649 if channelName not in self.__channels: |
645 self.__channels[channelName] = channel |
650 self.__channels[channelName] = channel |
646 |
651 |
647 def deleteChannel(self, channelName): |
652 def deleteChannel(self, channelName): |
648 """ |
653 """ |
649 Public method to delete the given channel. |
654 Public method to delete the given channel. |
650 |
655 |
651 @param channelName name of the channel to be deleted (string) |
656 @param channelName name of the channel to be deleted (string) |
652 """ |
657 """ |
653 if channelName in self.__channels: |
658 if channelName in self.__channels: |
654 del self.__channels[channelName] |
659 del self.__channels[channelName] |
655 |
660 |
656 def setAutoConnect(self, enable): |
661 def setAutoConnect(self, enable): |
657 """ |
662 """ |
658 Public method to set the auto connect flag. |
663 Public method to set the auto connect flag. |
659 |
664 |
660 @param enable flag indicate to connect to the network at start-up. |
665 @param enable flag indicate to connect to the network at start-up. |
661 """ |
666 """ |
662 self.__autoConnect = enable |
667 self.__autoConnect = enable |
663 |
668 |
664 def autoConnect(self): |
669 def autoConnect(self): |
665 """ |
670 """ |
666 Public method to check, if the network should be connected to at |
671 Public method to check, if the network should be connected to at |
667 start-up. |
672 start-up. |
668 |
673 |
669 @return flag indicating an auto connect (boolean) |
674 @return flag indicating an auto connect (boolean) |
670 """ |
675 """ |
671 return self.__autoConnect |
676 return self.__autoConnect |
672 |
677 |
673 @classmethod |
678 @classmethod |
674 def createDefaultNetwork(cls, ssl=False): |
679 def createDefaultNetwork(cls, ssl=False): |
675 """ |
680 """ |
676 Class method to create the default network. |
681 Class method to create the default network. |
677 |
682 |
678 @param ssl flag indicating to create a SSL network configuration |
683 @param ssl flag indicating to create a SSL network configuration |
679 (boolean) |
684 (boolean) |
680 @return default network object (IrcNetwork) |
685 @return default network object (IrcNetwork) |
681 """ |
686 """ |
682 # network |
687 # network |
683 networkName = "libera.chat (SSL)" if ssl else "libera.chat" |
688 networkName = "libera.chat (SSL)" if ssl else "libera.chat" |
684 network = IrcNetwork(networkName) |
689 network = IrcNetwork(networkName) |
685 network.setIdentityName(IrcIdentity.DefaultIdentityName) |
690 network.setIdentityName(IrcIdentity.DefaultIdentityName) |
686 |
691 |
687 # server |
692 # server |
688 serverName = "irc.libera.chat" |
693 serverName = "irc.libera.chat" |
689 server = IrcServer(serverName) |
694 server = IrcServer(serverName) |
690 if ssl: |
695 if ssl: |
691 server.setPort(IrcServer.DefaultSslPort) |
696 server.setPort(IrcServer.DefaultSslPort) |
692 server.setUseSSL(True) |
697 server.setUseSSL(True) |
693 else: |
698 else: |
694 server.setPort(IrcServer.DefaultPort) |
699 server.setPort(IrcServer.DefaultPort) |
695 network.setServer(server) |
700 network.setServer(server) |
696 |
701 |
697 # channel |
702 # channel |
698 channel = IrcChannel("#eric-ide") |
703 channel = IrcChannel("#eric-ide") |
699 channel.setAutoJoin(False) |
704 channel.setAutoJoin(False) |
700 network.addChannel(channel) |
705 network.addChannel(channel) |
701 |
706 |
702 # auto connect |
707 # auto connect |
703 network.setAutoConnect(False) |
708 network.setAutoConnect(False) |
704 |
709 |
705 return network |
710 return network |
706 |
711 |
707 |
712 |
708 class IrcNetworkManager(QObject): |
713 class IrcNetworkManager(QObject): |
709 """ |
714 """ |
710 Class implementing the IRC identity object. |
715 Class implementing the IRC identity object. |
711 |
716 |
712 @signal dataChanged() emitted after some data has changed |
717 @signal dataChanged() emitted after some data has changed |
713 @signal networksChanged() emitted after a network object has changed |
718 @signal networksChanged() emitted after a network object has changed |
714 @signal identitiesChanged() emitted after an identity object has changed |
719 @signal identitiesChanged() emitted after an identity object has changed |
715 """ |
720 """ |
|
721 |
716 dataChanged = pyqtSignal() |
722 dataChanged = pyqtSignal() |
717 networksChanged = pyqtSignal() |
723 networksChanged = pyqtSignal() |
718 identitiesChanged = pyqtSignal() |
724 identitiesChanged = pyqtSignal() |
719 |
725 |
720 def __init__(self, parent=None): |
726 def __init__(self, parent=None): |
721 """ |
727 """ |
722 Constructor |
728 Constructor |
723 |
729 |
724 @param parent reference to the parent object (QObject) |
730 @param parent reference to the parent object (QObject) |
725 """ |
731 """ |
726 super().__init__(parent) |
732 super().__init__(parent) |
727 |
733 |
728 self.__loaded = False |
734 self.__loaded = False |
729 self.__saveTimer = AutoSaver(self, self.save) |
735 self.__saveTimer = AutoSaver(self, self.save) |
730 |
736 |
731 self.__settings = Preferences.getSettings() |
737 self.__settings = Preferences.getSettings() |
732 |
738 |
733 self.__networks = {} |
739 self.__networks = {} |
734 self.__identities = {} |
740 self.__identities = {} |
735 |
741 |
736 self.dataChanged.connect(self.__saveTimer.changeOccurred) |
742 self.dataChanged.connect(self.__saveTimer.changeOccurred) |
737 |
743 |
738 def close(self): |
744 def close(self): |
739 """ |
745 """ |
740 Public method to close the open search engines manager. |
746 Public method to close the open search engines manager. |
741 """ |
747 """ |
742 self.__saveTimer.saveIfNeccessary() |
748 self.__saveTimer.saveIfNeccessary() |
743 |
749 |
744 def save(self): |
750 def save(self): |
745 """ |
751 """ |
746 Public slot to save the IRC data. |
752 Public slot to save the IRC data. |
747 """ |
753 """ |
748 if not self.__loaded: |
754 if not self.__loaded: |
749 return |
755 return |
750 |
756 |
751 # save IRC data |
757 # save IRC data |
752 self.__settings.beginGroup("IRC") |
758 self.__settings.beginGroup("IRC") |
753 |
759 |
754 # identities |
760 # identities |
755 self.__settings.remove("Identities") |
761 self.__settings.remove("Identities") |
756 self.__settings.beginGroup("Identities") |
762 self.__settings.beginGroup("Identities") |
757 for key in self.__identities: |
763 for key in self.__identities: |
758 self.__settings.beginGroup(key) |
764 self.__settings.beginGroup(key) |
759 self.__identities[key].save(self.__settings) |
765 self.__identities[key].save(self.__settings) |
760 self.__settings.endGroup() |
766 self.__settings.endGroup() |
761 self.__settings.endGroup() |
767 self.__settings.endGroup() |
762 |
768 |
763 # networks |
769 # networks |
764 self.__settings.remove("Networks") |
770 self.__settings.remove("Networks") |
765 self.__settings.beginGroup("Networks") |
771 self.__settings.beginGroup("Networks") |
766 for key in self.__networks: |
772 for key in self.__networks: |
767 self.__settings.beginGroup(key) |
773 self.__settings.beginGroup(key) |
768 self.__networks[key].save(self.__settings) |
774 self.__networks[key].save(self.__settings) |
769 self.__settings.endGroup() |
775 self.__settings.endGroup() |
770 self.__settings.endGroup() |
776 self.__settings.endGroup() |
771 |
777 |
772 self.__settings.endGroup() |
778 self.__settings.endGroup() |
773 |
779 |
774 def __load(self): |
780 def __load(self): |
775 """ |
781 """ |
776 Private slot to load the IRC data. |
782 Private slot to load the IRC data. |
777 """ |
783 """ |
778 if self.__loaded: |
784 if self.__loaded: |
779 return |
785 return |
780 |
786 |
781 # load IRC data |
787 # load IRC data |
782 self.__settings.beginGroup("IRC") |
788 self.__settings.beginGroup("IRC") |
783 |
789 |
784 # identities |
790 # identities |
785 self.__settings.beginGroup("Identities") |
791 self.__settings.beginGroup("Identities") |
786 for key in self.__settings.childGroups(): |
792 for key in self.__settings.childGroups(): |
787 self.__identities[key] = IrcIdentity(key) |
793 self.__identities[key] = IrcIdentity(key) |
788 self.__settings.beginGroup(key) |
794 self.__settings.beginGroup(key) |
789 self.__identities[key].load(self.__settings) |
795 self.__identities[key].load(self.__settings) |
790 self.__settings.endGroup() |
796 self.__settings.endGroup() |
791 self.__settings.endGroup() |
797 self.__settings.endGroup() |
792 |
798 |
793 # networks |
799 # networks |
794 self.__settings.beginGroup("Networks") |
800 self.__settings.beginGroup("Networks") |
795 for key in self.__settings.childGroups(): |
801 for key in self.__settings.childGroups(): |
796 self.__networks[key] = IrcNetwork(key) |
802 self.__networks[key] = IrcNetwork(key) |
797 self.__settings.beginGroup(key) |
803 self.__settings.beginGroup(key) |
798 self.__networks[key].load(self.__settings) |
804 self.__networks[key].load(self.__settings) |
799 self.__settings.endGroup() |
805 self.__settings.endGroup() |
800 self.__settings.endGroup() |
806 self.__settings.endGroup() |
801 |
807 |
802 self.__settings.endGroup() |
808 self.__settings.endGroup() |
803 |
809 |
804 if not self.__identities or not self.__networks: |
810 if not self.__identities or not self.__networks: |
805 # data structures got corrupted; load defaults |
811 # data structures got corrupted; load defaults |
806 self.__loadDefaults() |
812 self.__loadDefaults() |
807 |
813 |
808 if IrcIdentity.DefaultIdentityName not in self.__identities: |
814 if IrcIdentity.DefaultIdentityName not in self.__identities: |
809 self.__loadDefaults(identityOnly=True) |
815 self.__loadDefaults(identityOnly=True) |
810 |
816 |
811 self.__loaded = True |
817 self.__loaded = True |
812 |
818 |
813 def __loadDefaults(self, identityOnly=False): |
819 def __loadDefaults(self, identityOnly=False): |
814 """ |
820 """ |
815 Private method to load default values. |
821 Private method to load default values. |
816 |
822 |
817 @param identityOnly flag indicating to just load the default |
823 @param identityOnly flag indicating to just load the default |
818 identity (boolean) |
824 identity (boolean) |
819 """ |
825 """ |
820 if not identityOnly: |
826 if not identityOnly: |
821 self.__networks = {} |
827 self.__networks = {} |
822 self.__identities = {} |
828 self.__identities = {} |
823 |
829 |
824 # identity |
830 # identity |
825 identity = IrcIdentity.createDefaultIdentity() |
831 identity = IrcIdentity.createDefaultIdentity() |
826 self.__identities[identity.getName()] = identity |
832 self.__identities[identity.getName()] = identity |
827 |
833 |
828 if not identityOnly: |
834 if not identityOnly: |
829 network = IrcNetwork.createDefaultNetwork() |
835 network = IrcNetwork.createDefaultNetwork() |
830 self.__networks[network.getName()] = network |
836 self.__networks[network.getName()] = network |
831 network = IrcNetwork.createDefaultNetwork(True) |
837 network = IrcNetwork.createDefaultNetwork(True) |
832 self.__networks[network.getName()] = network |
838 self.__networks[network.getName()] = network |
833 |
839 |
834 self.dataChanged.emit() |
840 self.dataChanged.emit() |
835 |
841 |
836 ################################################################## |
842 ################################################################## |
837 ## Identity related methods below |
843 ## Identity related methods below |
838 ################################################################## |
844 ################################################################## |
839 |
845 |
840 def getIdentity(self, name, create=False): |
846 def getIdentity(self, name, create=False): |
841 """ |
847 """ |
842 Public method to get an identity object. |
848 Public method to get an identity object. |
843 |
849 |
844 @param name name of the identity to get (string) |
850 @param name name of the identity to get (string) |
845 @param create flag indicating to create a new object, |
851 @param create flag indicating to create a new object, |
846 if none exists (boolean) |
852 if none exists (boolean) |
847 @return reference to the identity (IrcIdentity) |
853 @return reference to the identity (IrcIdentity) |
848 """ |
854 """ |
849 if not name: |
855 if not name: |
850 return None |
856 return None |
851 |
857 |
852 if not self.__loaded: |
858 if not self.__loaded: |
853 self.__load() |
859 self.__load() |
854 |
860 |
855 if name in self.__identities: |
861 if name in self.__identities: |
856 return self.__identities[name] |
862 return self.__identities[name] |
857 elif create: |
863 elif create: |
858 ircId = IrcIdentity(name) |
864 ircId = IrcIdentity(name) |
859 self.__identities[name] = ircId |
865 self.__identities[name] = ircId |
860 |
866 |
861 self.dataChanged.emit() |
867 self.dataChanged.emit() |
862 |
868 |
863 return ircId |
869 return ircId |
864 else: |
870 else: |
865 return None |
871 return None |
866 |
872 |
867 def getIdentities(self): |
873 def getIdentities(self): |
868 """ |
874 """ |
869 Public method to get a copy of all identities. |
875 Public method to get a copy of all identities. |
870 |
876 |
871 @return dictionary of all identities (dict of IrcIdentity) |
877 @return dictionary of all identities (dict of IrcIdentity) |
872 """ |
878 """ |
873 return copy.deepcopy(self.__identities) |
879 return copy.deepcopy(self.__identities) |
874 |
880 |
875 def setIdentities(self, identities): |
881 def setIdentities(self, identities): |
876 """ |
882 """ |
877 Public method to set the identities. |
883 Public method to set the identities. |
878 |
884 |
879 @param identities dictionary of all identities (dict of IrcIdentity) |
885 @param identities dictionary of all identities (dict of IrcIdentity) |
880 """ |
886 """ |
881 self.__identities = copy.deepcopy(identities) |
887 self.__identities = copy.deepcopy(identities) |
882 self.identityChanged() |
888 self.identityChanged() |
883 |
889 |
884 # Check all networks, if the identity they use is still available. |
890 # Check all networks, if the identity they use is still available. |
885 # If it isn't, change them to use the default identity. |
891 # If it isn't, change them to use the default identity. |
886 for network in self.__networks.values(): |
892 for network in self.__networks.values(): |
887 if network.getIdentityName() not in self.__identities: |
893 if network.getIdentityName() not in self.__identities: |
888 network.setIdentityName(IrcIdentity.DefaultIdentityName) |
894 network.setIdentityName(IrcIdentity.DefaultIdentityName) |
889 |
895 |
890 def getIdentityNames(self): |
896 def getIdentityNames(self): |
891 """ |
897 """ |
892 Public method to get the names of all identities. |
898 Public method to get the names of all identities. |
893 |
899 |
894 @return names of all identities (list of string) |
900 @return names of all identities (list of string) |
895 """ |
901 """ |
896 return list(self.__identities.keys()) |
902 return list(self.__identities.keys()) |
897 |
903 |
898 def addIdentity(self, identity): |
904 def addIdentity(self, identity): |
899 """ |
905 """ |
900 Public method to add a new identity. |
906 Public method to add a new identity. |
901 |
907 |
902 @param identity reference to the identity to add (IrcIdentity) |
908 @param identity reference to the identity to add (IrcIdentity) |
903 """ |
909 """ |
904 name = identity.getName() |
910 name = identity.getName() |
905 self.__identities[name] = identity |
911 self.__identities[name] = identity |
906 self.identityChanged() |
912 self.identityChanged() |
907 |
913 |
908 def deleteIdentity(self, name): |
914 def deleteIdentity(self, name): |
909 """ |
915 """ |
910 Public method to delete the given identity. |
916 Public method to delete the given identity. |
911 |
917 |
912 @param name name of the identity to delete (string) |
918 @param name name of the identity to delete (string) |
913 """ |
919 """ |
914 if ( |
920 if name in self.__identities and name != IrcIdentity.DefaultIdentityName: |
915 name in self.__identities and |
|
916 name != IrcIdentity.DefaultIdentityName |
|
917 ): |
|
918 del self.__identities[name] |
921 del self.__identities[name] |
919 self.identityChanged() |
922 self.identityChanged() |
920 |
923 |
921 def renameIdentity(self, oldName, newName): |
924 def renameIdentity(self, oldName, newName): |
922 """ |
925 """ |
923 Public method to rename an identity. |
926 Public method to rename an identity. |
924 |
927 |
925 @param oldName old name of the identity (string) |
928 @param oldName old name of the identity (string) |
926 @param newName new name of the identity (string) |
929 @param newName new name of the identity (string) |
927 """ |
930 """ |
928 if oldName in self.__identities: |
931 if oldName in self.__identities: |
929 self.__identities[newName] = self.__identities[oldName] |
932 self.__identities[newName] = self.__identities[oldName] |
930 del self.__identities[oldName] |
933 del self.__identities[oldName] |
931 |
934 |
932 for network in self.__networks: |
935 for network in self.__networks: |
933 if network.getIdentityName() == oldName: |
936 if network.getIdentityName() == oldName: |
934 network.setIdentityName(newName) |
937 network.setIdentityName(newName) |
935 |
938 |
936 self.identityChanged() |
939 self.identityChanged() |
937 |
940 |
938 def identityChanged(self): |
941 def identityChanged(self): |
939 """ |
942 """ |
940 Public method to indicate a change of an identity object. |
943 Public method to indicate a change of an identity object. |
941 """ |
944 """ |
942 self.dataChanged.emit() |
945 self.dataChanged.emit() |
943 self.identitiesChanged.emit() |
946 self.identitiesChanged.emit() |
944 |
947 |
945 ################################################################## |
948 ################################################################## |
946 ## Network related methods below |
949 ## Network related methods below |
947 ################################################################## |
950 ################################################################## |
948 |
951 |
949 def getNetwork(self, name): |
952 def getNetwork(self, name): |
950 """ |
953 """ |
951 Public method to get a network object. |
954 Public method to get a network object. |
952 |
955 |
953 @param name name of the network (string) |
956 @param name name of the network (string) |
954 @return reference to the network object (IrcNetwork) |
957 @return reference to the network object (IrcNetwork) |
955 """ |
958 """ |
956 if not self.__loaded: |
959 if not self.__loaded: |
957 self.__load() |
960 self.__load() |
958 |
961 |
959 if name in self.__networks: |
962 if name in self.__networks: |
960 return self.__networks[name] |
963 return self.__networks[name] |
961 else: |
964 else: |
962 return None |
965 return None |
963 |
966 |
964 def setNetwork(self, network, networkName=""): |
967 def setNetwork(self, network, networkName=""): |
965 """ |
968 """ |
966 Public method to set a network. |
969 Public method to set a network. |
967 |
970 |
968 @param network network object to set (IrcNetwork) |
971 @param network network object to set (IrcNetwork) |
969 @param networkName name the network was known for (string) |
972 @param networkName name the network was known for (string) |
970 """ |
973 """ |
971 name = network.getName() |
974 name = network.getName() |
972 if networkName and name != networkName: |
975 if networkName and name != networkName: |