ExtensionIrc/IrcWidget.py

Sat, 03 May 2025 16:23:18 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 03 May 2025 16:23:18 +0200
changeset 10
f98d019645f9
parent 2
5b635dc8895f
permissions
-rw-r--r--

Created global tag <release-10.0.1>.

2
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2012 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the IRC window.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import enum
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import logging
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import re
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from PyQt6.QtCore import QByteArray, QDateTime, Qt, QTimer, pyqtSignal, pyqtSlot
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from PyQt6.QtNetwork import QAbstractSocket, QTcpSocket
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from PyQt6.QtWidgets import QLabel, QTabWidget, QToolButton, QWidget
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 try:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from PyQt6.QtNetwork import QSslConfiguration, QSslSocket
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 from eric7.EricNetwork.EricSslErrorHandler import (
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 EricSslErrorHandler,
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 EricSslErrorState,
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 SSL_AVAILABLE = True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 except ImportError:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 SSL_AVAILABLE = False
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 from eric7 import Preferences
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 from eric7.__version__ import Version
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 from eric7.EricWidgets import EricMessageBox
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 from eric7.SystemUtilities import OSUtilities
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 from eric7.UI.Info import Copyright
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 from .IrcNetworkManager import IrcNetworkManager
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 from .Ui_IrcWidget import Ui_IrcWidget
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 class IrcConnectionState(enum.Enum):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 Class defining the connection states.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 Disconnected = 1
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 Connected = 2
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 Connecting = 3
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 class IrcWidget(QWidget, Ui_IrcWidget):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 Class implementing the IRC window.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 @signal autoConnected() emitted after an automatic connection was initiated
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 autoConnected = pyqtSignal()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 def __init__(self, plugin, parent=None):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 Constructor
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 @param plugin reference to the plug-in object
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 @type MqttMonitorPlugin
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @param parent reference to the parent widget
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 @type QWidget
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 super().__init__(parent)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 self.setupUi(self)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.layout().setContentsMargins(0, 3, 0, 0)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.__plugin = plugin
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self.__ircNetworkManager = IrcNetworkManager(self)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 self.__leaveButton = QToolButton(self)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 self.__leaveButton.setIcon(self.__plugin.getIcon("ircCloseChannel"))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 self.__leaveButton.setToolTip(self.tr("Press to leave the current channel"))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 self.__leaveButton.clicked.connect(self.__leaveChannel)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 self.__leaveButton.setEnabled(False)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 self.channelsWidget.setCornerWidget(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.__leaveButton, Qt.Corner.BottomRightCorner
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 self.channelsWidget.setTabsClosable(False)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 if not OSUtilities.isMacPlatform():
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.channelsWidget.setTabPosition(QTabWidget.TabPosition.South)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 height = self.height()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 self.splitter.setSizes([int(height * 0.6), int(height * 0.4)])
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 self.__channelList = []
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 self.__channelTypePrefixes = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 self.__userName = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 self.__identityName = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 self.__quitMessage = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 self.__nickIndex = -1
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 self.__nickName = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 self.__server = None
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.__registering = False
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 self.__connectionState = IrcConnectionState.Disconnected
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 self.__sslErrorLock = False
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 self.__buffer = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 self.__userPrefix = {}
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 self.__socket = None
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 if SSL_AVAILABLE:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 self.__sslErrorHandler = EricSslErrorHandler(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 Preferences.getSettings(), self
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 self.__sslErrorHandler = None
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 self.__patterns = [
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 # :foo_!n=foo@foohost.bar.net PRIVMSG bar_ :some long message
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 (re.compile(r":([^!]+)!([^ ]+)\sPRIVMSG\s([^ ]+)\s:(.*)"), self.__query),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 # :foo.bar.net COMMAND some message
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 (re.compile(r""":([^ ]+)\s+([A-Z]+)\s+(.+)"""), self.__handleNamedMessage),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 # :foo.bar.net 123 * :info
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 (re.compile(r""":([^ ]+)\s+(\d{3})\s+(.+)"""), self.__handleNumericMessage),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 # PING :ping message
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 (re.compile(r"""PING\s+:(.*)"""), self.__ping),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 ]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 self.__prefixRe = re.compile(r""".*\sPREFIX=\((.*)\)([^ ]+).*""")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 self.__chanTypesRe = re.compile(r""".*\sCHANTYPES=([^ ]+).*""")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 ircPic = self.__plugin.getPixmap("irc128")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 self.__emptyLabel = QLabel()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 self.__emptyLabel.setPixmap(ircPic)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 self.__emptyLabel.setAlignment(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 Qt.AlignmentFlag.AlignVCenter | Qt.AlignmentFlag.AlignHCenter
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 self.channelsWidget.addTab(self.__emptyLabel, "")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 # all initialized, do connections now
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 self.__ircNetworkManager.dataChanged.connect(self.__networkDataChanged)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 self.networkWidget.initialize(manager=self.__ircNetworkManager)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 self.networkWidget.connectNetwork.connect(self.__connectNetwork)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 self.networkWidget.editNetwork.connect(self.__editNetwork)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 self.networkWidget.joinChannel.connect(self.joinChannel)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 self.networkWidget.nickChanged.connect(self.__changeNick)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 self.networkWidget.sendData.connect(self.__send)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 self.networkWidget.away.connect(self.__away)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 self.networkWidget.autoConnected.connect(self.autoConnected)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 @pyqtSlot()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 def shutdown(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 Public slot to shut down the widget.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 if self.__server:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 self.__connectNetwork("", False, True)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 self.__ircNetworkManager.close()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 def autoConnect(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 Public method to initiate the IRC auto connection.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 self.networkWidget.autoConnect()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 def __connectNetwork(self, name, connect, silent):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 Private slot to connect to or disconnect from the given network.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 @param name name of the network to connect to
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 @param connect flag indicating to connect
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 @type bool
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 @param silent flag indicating a silent connect/disconnect
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 @type bool
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 if connect:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 network = self.__ircNetworkManager.getNetwork(name)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 if network:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 self.__server = network.getServer()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 self.__identityName = network.getIdentityName()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 identity = self.__ircNetworkManager.getIdentity(self.__identityName)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 if identity:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 self.__userName = identity.getIdent()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 self.__quitMessage = identity.getQuitMessage()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 if self.__server:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 useSSL = self.__server.useSSL()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 if useSSL and not SSL_AVAILABLE:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 EricMessageBox.critical(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 self,
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 self.tr("SSL Connection"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 """An encrypted connection to the IRC"""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 """ network was requested but SSL is not"""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 """ available. Please change the server"""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 """ configuration."""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 ),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 return
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 if useSSL:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 # create SSL socket
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 self.__socket = QSslSocket(self)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 self.__socket.encrypted.connect(self.__hostConnected)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 self.__socket.sslErrors.connect(self.__sslErrors)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 # create TCP socket
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 self.__socket = QTcpSocket(self)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 self.__socket.connected.connect(self.__hostConnected)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 self.__socket.hostFound.connect(self.__hostFound)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 self.__socket.disconnected.connect(self.__hostDisconnected)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 self.__socket.readyRead.connect(self.__readyRead)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 self.__socket.errorOccurred.connect(self.__tcpError)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 self.__connectionState = IrcConnectionState.Connecting
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 if useSSL:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 self.tr("Info"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 "Looking for server {0} (port {1})"
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 " using an SSL encrypted connection"
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 "..."
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 ).format(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 self.__server.getName(), self.__server.getPort()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 ),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 self.__socket.connectToHostEncrypted(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 self.__server.getName(), self.__server.getPort()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 self.tr("Info"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 self.tr("Looking for server {0} (port {1})...").format(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 self.__server.getName(), self.__server.getPort()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 ),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 self.__socket.connectToHost(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 self.__server.getName(), self.__server.getPort()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 if silent:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 ok = True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 ok = EricMessageBox.yesNo(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 self,
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 self.tr("Disconnect from Server"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 """<p>Do you really want to disconnect from"""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 """ <b>{0}</b>?</p><p>All channels will be"""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 """ closed.</p>"""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 ).format(self.__server.getName()),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 if ok:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 if self.__server is not None:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 self.tr("Info"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 self.tr("Disconnecting from server {0}...").format(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 self.__server.getName()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 ),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 elif name:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 self.tr("Info"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 self.tr("Disconnecting from network {0}...").format(name),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 self.tr("Info"), self.tr("Disconnecting from server.")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 self.__closeAllChannels()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 self.__send("QUIT :" + self.__quitMessage)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 if self.__socket:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 self.__socket.flush()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 self.__socket.close()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 if self.__socket:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 # socket is still existing
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 self.__socket.deleteLater()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 self.__socket = None
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 self.__userName = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 self.__identityName = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 self.__quitMessage = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 @pyqtSlot()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 def __editNetwork(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 Private slot to edit the network configuration.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 from .IrcNetworkListDialog import IrcNetworkListDialog
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 dlg = IrcNetworkListDialog(manager=self.__ircNetworkManager, parent=self)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 dlg.exec()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 def __networkDataChanged(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 Private slot handling changes of the network and identity definitions.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 identity = self.__ircNetworkManager.getIdentity(self.__identityName)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 if identity:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 partMsg = identity.getPartMessage()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 for channel in self.__channelList:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 channel.setPartMessage(partMsg)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 def joinChannel(self, name, key=""):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 Public slot to join a channel.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 @param name name of the channel
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 @param key key of the channel
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 from .IrcChannelWidget import IrcChannelWidget
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 # step 1: check, if this channel is already joined
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 for channel in self.__channelList:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 if channel.name() == name:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 return
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 channel = IrcChannelWidget(self)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 channel.setName(name)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 channel.setUserName(self.__nickName)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 identity = self.__ircNetworkManager.getIdentity(self.__identityName)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 if identity:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 channel.setPartMessage(identity.getPartMessage())
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 channel.setUserPrivilegePrefix(self.__userPrefix)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 channel.initAutoWho()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 channel.sendData.connect(self.__send)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 channel.sendCtcpRequest.connect(self.__sendCtcpRequest)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 channel.sendCtcpReply.connect(self.__sendCtcpReply)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 channel.channelClosed.connect(self.__closeChannel)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 channel.openPrivateChat.connect(self.__openPrivate)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 channel.awayCommand.connect(self.networkWidget.handleAwayCommand)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 channel.leaveChannels.connect(self.__leaveChannels)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 channel.leaveAllChannels.connect(self.__leaveAllChannels)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 self.channelsWidget.addTab(channel, name)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 self.__channelList.append(channel)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 self.channelsWidget.setCurrentWidget(channel)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 joinCommand = ["JOIN", name]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 if key:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 joinCommand.append(key)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 self.__send(" ".join(joinCommand))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 self.__send("MODE " + name)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 emptyIndex = self.channelsWidget.indexOf(self.__emptyLabel)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 if emptyIndex > -1:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 self.channelsWidget.removeTab(emptyIndex)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 self.__leaveButton.setEnabled(True)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 self.channelsWidget.setTabsClosable(True)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 def __query(self, match):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 Private method to handle a new private connection.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 @param match reference to the match object
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 @type re.Match
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 @return flag indicating, if the message was handled
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 @rtype bool
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 # group(1) sender user name
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 # group(2) sender user@host
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 # group(3) target nick
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 # group(4) message
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 if match.group(4).startswith("\x01"):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 return self.__handleCtcp(match)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 self.__openPrivate(match.group(1))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 # the above call sets the new channel as the current widget
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 channel = self.channelsWidget.currentWidget()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 channel.addMessage(match.group(1), match.group(4))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 channel.setPrivateInfo("{0} - {1}".format(match.group(1), match.group(2)))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 return True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 @pyqtSlot(str)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 def __openPrivate(self, name):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 Private slot to open a private chat with the given user.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 @param name name of the user
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 from .IrcChannelWidget import IrcChannelWidget
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 channel = IrcChannelWidget(self)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 channel.setName(self.__nickName)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 channel.setUserName(self.__nickName)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 identity = self.__ircNetworkManager.getIdentity(self.__identityName)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 if identity:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 channel.setPartMessage(identity.getPartMessage())
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 channel.setUserPrivilegePrefix(self.__userPrefix)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 channel.setPrivate(True, name)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 channel.addUsers([name, self.__nickName])
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395 channel.sendData.connect(self.__send)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 channel.sendCtcpRequest.connect(self.__sendCtcpRequest)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 channel.sendCtcpReply.connect(self.__sendCtcpReply)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 channel.channelClosed.connect(self.__closeChannel)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 channel.awayCommand.connect(self.networkWidget.handleAwayCommand)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 channel.leaveChannels.connect(self.__leaveChannels)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401 channel.leaveAllChannels.connect(self.__leaveAllChannels)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
403 self.channelsWidget.addTab(channel, name)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 self.__channelList.append(channel)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405 self.channelsWidget.setCurrentWidget(channel)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 @pyqtSlot()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 def __leaveChannel(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 Private slot to leave a channel and close the associated tab.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
412 channel = self.channelsWidget.currentWidget()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413 channel.requestLeave()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 @pyqtSlot(list)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416 def __leaveChannels(self, channelNames):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 Private slot to leave a list of channels and close their associated
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 tabs.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421 @param channelNames list of channels to leave
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 @type list of str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
423 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
424 for channelName in channelNames:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 for channel in self.__channelList:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426 if channel.name() == channelName:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 channel.leaveChannel()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 @pyqtSlot()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 def __leaveAllChannels(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 Private slot to leave all channels and close their tabs.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 while self.__channelList:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435 channel = self.__channelList[0]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 channel.leaveChannel()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438 def __closeAllChannels(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 Private method to close all channels.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 while self.__channelList:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 channel = self.__channelList.pop()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 self.channelsWidget.removeTab(self.channelsWidget.indexOf(channel))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 channel.deleteLater()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 channel = None
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 self.channelsWidget.addTab(self.__emptyLabel, "")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 self.__emptyLabel.show()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 self.__leaveButton.setEnabled(False)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 self.channelsWidget.setTabsClosable(False)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 def __closeChannel(self, name):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 Private slot handling the closing of a channel.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457 @param name name of the closed channel
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 for channel in self.__channelList[:]:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 if channel.name() == name:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 self.channelsWidget.removeTab(self.channelsWidget.indexOf(channel))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 self.__channelList.remove(channel)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 channel.deleteLater()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 if self.channelsWidget.count() == 0:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 self.channelsWidget.addTab(self.__emptyLabel, "")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 self.__emptyLabel.show()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469 self.__leaveButton.setEnabled(False)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470 self.channelsWidget.setTabsClosable(False)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 @pyqtSlot(int)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 def on_channelsWidget_tabCloseRequested(self, index):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 Private slot to close a channel by pressing the close button of
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 the channels widget.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 @param index index of the tab to be closed
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 @type int
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 channel = self.channelsWidget.widget(index)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482 channel.requestLeave()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 def __send(self, data):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 Private slot to send data to the IRC server.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488 @param data data to be sent
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 if self.__socket:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 self.__socket.write(QByteArray("{0}\r\n".format(data).encode("utf-8")))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 def __sendCtcpRequest(self, receiver, request, arguments):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 Private slot to send a CTCP request.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 @param receiver nick name of the receiver
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 @param request CTCP request to be sent
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 @param arguments arguments to be sent
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 request = request.upper()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 if request == "PING":
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 arguments = "Eric IRC {0}".format(QDateTime.currentMSecsSinceEpoch())
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 self.__send("PRIVMSG {0} :\x01{1} {2}\x01".format(receiver, request, arguments))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
510
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 def __sendCtcpReply(self, receiver, text):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 Private slot to send a CTCP reply.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515 @param receiver nick name of the receiver
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
517 @param text text to be sent
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
518 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520 self.__send("NOTICE {0} :\x01{1}\x01".format(receiver, text))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 def __hostFound(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
523 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
524 Private slot to indicate the host was found.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
527 self.tr("Info"), self.tr("Server found,connecting...")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
528 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
529
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 def __hostConnected(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
531 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 Private slot to log in to the server after the connection was
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
533 established.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
535 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536 self.tr("Info"), self.tr("Connected,logging in...")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
538 self.networkWidget.setConnected(True)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
540 self.__registering = True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
541 serverPassword = self.__server.getPassword()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 if serverPassword:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 self.__send("PASS " + serverPassword)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 identity = self.__ircNetworkManager.getIdentity(self.__identityName)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 nick = self.networkWidget.getNickname()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 if not nick and identity:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 self.__nickIndex = 0
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 try:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 nick = identity.getNickNames()[self.__nickIndex]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 except IndexError:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552 nick = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553 if not nick:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554 nick = self.__userName
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 self.__nickName = nick
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
556 self.networkWidget.setNickName(nick)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
557 if identity:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 realName = identity.getRealName()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 if not realName:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560 realName = "eric IDE chat"
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 self.__send("NICK " + nick)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
562 self.__send("USER " + self.__userName + " 0 * :" + realName)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 def __hostDisconnected(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566 Private slot to indicate the host was disconnected.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
567 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568 if self.networkWidget.isConnected():
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569 self.__closeAllChannels()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
571 self.tr("Info"), self.tr("Server disconnected.")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
572 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
573 self.networkWidget.setRegistered(False)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574 self.networkWidget.setConnected(False)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
575 self.__server = None
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 self.__nickName = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
577 self.__nickIndex = -1
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
578 self.__channelTypePrefixes = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
579
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580 if self.__socket:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
581 self.__socket.deleteLater()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
582 self.__socket = None
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
583
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584 self.__connectionState = IrcConnectionState.Disconnected
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 self.__sslErrorLock = False
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 def __readyRead(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 Private slot to read data from the socket.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
591 if self.__socket:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
592 self.__buffer += str(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593 self.__socket.readAll(), Preferences.getSystem("IOEncoding"), "replace"
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
594 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595 if self.__buffer.endswith("\r\n"):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
596 for line in self.__buffer.splitlines():
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
597 line = line.strip()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
598 if line:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599 logging.getLogger(__name__).debug("<IRC> %s", line)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600 handled = False
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 # step 1: give channels a chance to handle the message
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602 for channel in self.__channelList:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 handled = channel.handleMessage(line)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
604 if handled:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 break
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607 # step 2: try to process the message ourselves
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 for patternRe, patternFunc in self.__patterns:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609 match = patternRe.match(line)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610 if match is not None and patternFunc(match):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 break
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613 # Oops, the message wasn't handled
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
614 self.networkWidget.addErrorMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
615 self.tr("Message Error"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
616 self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 "Unknown message received from server:"
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618 "<br/>{0}"
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
619 ).format(line),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
620 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 self.__updateUsersCount()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623 self.__buffer = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625 def __handleCtcpReply(self, match):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
627 Private method to handle a server message containing a CTCP reply.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629 @param match reference to the match object
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
630 @type re.Match
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
631 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
632 if "!" in match.group(1):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
633 sender = match.group(1).split("!", 1)[0]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
634
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
635 try:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
636 ctcpCommand = match.group(3).split(":", 1)[1]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
637 except IndexError:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
638 ctcpCommand = match.group(3)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
639 ctcpCommand = ctcpCommand[1:].split("\x01", 1)[0]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
640 if " " in ctcpCommand:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
641 ctcpReply, ctcpArg = ctcpCommand.split(" ", 1)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
642 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
643 ctcpReply, ctcpArg = ctcpCommand, ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
644 ctcpReply = ctcpReply.upper()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
645
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
646 if ctcpReply == "PING" and ctcpArg.startswith("Eric IRC "):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
647 # it is a response to a ping request
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
648 pingDateTime = int(ctcpArg.split()[-1])
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
649 latency = QDateTime.currentMSecsSinceEpoch() - pingDateTime
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
650 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
651 self.tr("CTCP"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
652 self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
653 "Received CTCP-PING response from {0} with latency"
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
654 " of {1} ms."
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
655 ).format(sender, latency),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
656 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
657 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
658 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
659 self.tr("CTCP"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
660 self.tr("Received unknown CTCP-{0} response from {1}.").format(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
661 ctcpReply, sender
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
662 ),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
663 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
664
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
665 def __handleNamedMessage(self, match):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
666 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
667 Private method to handle a server message containing a message name.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
668
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
669 @param match reference to the match object
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
670 @type re.Match
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
671 @return flag indicating, if the message was handled
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
672 @rtype bool
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
673 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
674 name = match.group(2)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
675 if name == "NOTICE":
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
676 try:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677 msg = match.group(3).split(":", 1)[1]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
678 except IndexError:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
679 msg = match.group(3)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
680
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
681 if msg.startswith("\x01"):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
682 self.__handleCtcpReply(match)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
683 return True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
684
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
685 if "!" in match.group(1):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
686 name = match.group(1).split("!", 1)[0]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
687 msg = "-{0}- {1}".format(name, msg)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
688 self.networkWidget.addServerMessage(self.tr("Notice"), msg)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
689 return True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
690 elif name == "MODE":
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
691 self.__registering = False
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
692 if ":" in match.group(3):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
693 # :foo MODE foo :+i
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
694 name, modes = match.group(3).split(" :")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
695 sourceNick = match.group(1)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
696 if not self.isChannelName(name) and name == self.__nickName:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
697 if sourceNick == self.__nickName:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
698 msg = self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
699 "You have set your personal modes to <b>[{0}]</b>."
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
700 ).format(modes)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
701 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
702 msg = self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
703 "{0} has changed your personal modes to <b>[{1}]</b>."
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
704 ).format(sourceNick, modes)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
705 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
706 self.tr("Mode"), msg, filterMsg=False
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
707 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
708 return True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
709 elif name == "PART":
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
710 nick = match.group(1).split("!", 1)[0]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
711 if nick == self.__nickName:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
712 channel = match.group(3).split(None, 1)[0]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
713 self.networkWidget.addMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
714 self.tr("You have left channel {0}.").format(channel)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
715 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
716 return True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
717 elif name == "QUIT":
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
718 # don't do anything with it here
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
719 return True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
720 elif name == "NICK":
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
721 # :foo_!n=foo@foohost.bar.net NICK :newnick
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
722 oldNick = match.group(1).split("!", 1)[0]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
723 newNick = match.group(3).split(":", 1)[1]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
724 if oldNick == self.__nickName:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
725 self.networkWidget.addMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
726 self.tr("You are now known as {0}.").format(newNick)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
727 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
728 self.__nickName = newNick
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
729 self.networkWidget.setNickName(newNick)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
730 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
731 self.networkWidget.addMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
732 self.tr("User {0} is now known as {1}.").format(oldNick, newNick)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
733 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
734 return True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
735 elif name == "PONG":
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
736 nick = match.group(3).split(":", 1)[1]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
737 self.networkWidget.addMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
738 self.tr("Received PONG from {0}").format(nick)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
739 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
740 return True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
741 elif name == "ERROR":
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
742 self.networkWidget.addErrorMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
743 self.tr("Server Error"), match.group(3).split(":", 1)[1]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
744 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
745 return True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
746
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
747 return False
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
748
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
749 def __handleNumericMessage(self, match):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
750 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
751 Private method to handle a server message containing a numeric code.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
752
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
753 @param match reference to the match object
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
754 @type re.Match
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
755 @return flag indicating, if the message was handled
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
756 @rtype bool
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
757 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
758 code = int(match.group(2))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
759 if code < 400:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
760 return self.__handleServerReply(code, match.group(1), match.group(3))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
761 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
762 return self.__handleServerError(code, match.group(3))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
763
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
764 def __handleServerError(self, code, message):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
765 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
766 Private slot to handle a server error reply.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
767
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
768 @param code numerical code sent by the server
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
769 @type int
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
770 @param message message sent by the server
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
771 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
772 @return flag indicating, if the message was handled
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
773 @rtype bool
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
774 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
775 if code == 433:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
776 if self.__registering:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
777 self.__handleNickInUseLogin()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
778 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
779 self.__handleNickInUse()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
780 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
781 self.networkWidget.addServerMessage(self.tr("Error"), message)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
782
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
783 return True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
784
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
785 def __handleServerReply(self, code, server, message):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
786 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
787 Private slot to handle a server reply.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
788
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
789 @param code numerical code sent by the server
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
790 @type int
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
791 @param server name of the server
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
792 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
793 @param message message sent by the server
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
794 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
795 @return flag indicating, if the message was handled
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
796 @rtype bool
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
797 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
798 # determine message type
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
799 if code in [1, 2, 3, 4]:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
800 msgType = self.tr("Welcome")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
801 elif code == 5:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
802 msgType = self.tr("Support")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
803 elif code in [250, 251, 252, 253, 254, 255, 265, 266]:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
804 msgType = self.tr("User")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
805 elif code in [372, 375, 376]:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
806 msgType = self.tr("MOTD")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
807 elif code in [305, 306]:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
808 msgType = self.tr("Away")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
809 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
810 msgType = self.tr("Info ({0})").format(code)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
811
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
812 # special treatment for some messages
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
813 if code == 375:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
814 message = self.tr("Message of the day")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
815 elif code == 376:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
816 message = self.tr("End of message of the day")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
817 elif code == 4:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
818 parts = message.strip().split()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
819 message = self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
820 "Server {0} (Version {1}), User-Modes: {2}, Channel-Modes: {3}"
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
821 ).format(parts[1], parts[2], parts[3], parts[4])
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
822 elif code == 265:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
823 parts = message.strip().split()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
824 message = self.tr("Current users on {0}: {1}, max. {2}").format(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
825 server, parts[1], parts[2]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
826 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
827 elif code == 266:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
828 parts = message.strip().split()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
829 message = self.tr("Current users on the network: {0}, max. {1}").format(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
830 parts[1], parts[2]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
831 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
832 elif code == 305:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
833 message = self.tr("You are no longer marked as being away.")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
834 elif code == 306:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
835 message = self.tr("You have been marked as being away.")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
836 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
837 _first, message = message.split(None, 1)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
838 if message.startswith(":"):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
839 message = message[1:]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
840 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
841 message = message.replace(":", "", 1)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
842
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
843 self.networkWidget.addServerMessage(msgType, message)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
844
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
845 if code == 1:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
846 # register with services after the welcome message
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
847 self.__connectionState = IrcConnectionState.Connected
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
848 self.__registerWithServices()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
849 self.networkWidget.setRegistered(True)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
850 QTimer.singleShot(1000, self.__autoJoinChannels)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
851 elif code == 5:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
852 # extract the user privilege prefixes
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
853 # ... PREFIX=(ov)@+ ...
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
854 m = self.__prefixRe.match(message)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
855 if m:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
856 self.__setUserPrivilegePrefix(m.group(1), m.group(2))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
857 # extract the channel type prefixes
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
858 # ... CHANTYPES=# ...
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
859 m = self.__chanTypesRe.match(message)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
860 if m:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
861 self.__setChannelTypePrefixes(m.group(1))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
862
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
863 return True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
864
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
865 def __registerWithServices(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
866 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
867 Private method to register to services.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
868 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
869 identity = self.__ircNetworkManager.getIdentity(self.__identityName)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
870 if identity:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
871 service = identity.getServiceName()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
872 password = identity.getPassword()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
873 if service and password:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
874 self.__send("PRIVMSG " + service + " :identify " + password)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
875
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
876 def __autoJoinChannels(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
877 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
878 Private slot to join channels automatically once a server got
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
879 connected.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
880 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
881 for channel in self.networkWidget.getNetworkChannels():
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
882 if channel.autoJoin():
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
883 name = channel.getName()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
884 key = channel.getKey()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
885 self.joinChannel(name, key)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
886
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
887 def __tcpError(self, error):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
888 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
889 Private slot to handle errors reported by the TCP socket.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
890
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
891 @param error error code reported by the socket
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
892 @type QAbstractSocket.SocketError
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
893 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
894 if error == QAbstractSocket.SocketError.RemoteHostClosedError:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
895 # ignore this one, it's a disconnect
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
896 if self.__sslErrorLock:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
897 self.networkWidget.addErrorMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
898 self.tr("SSL Error"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
899 self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
900 """Connection to server {0} (port {1}) lost while"""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
901 """ waiting for user response to an SSL error."""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
902 ).format(self.__server.getName(), self.__server.getPort()),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
903 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
904 self.__connectionState = IrcConnectionState.Disconnected
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
905 elif error == QAbstractSocket.SocketError.HostNotFoundError:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
906 self.networkWidget.addErrorMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
907 self.tr("Socket Error"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
908 self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
909 "The host was not found. Please check the host name"
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
910 " and port settings."
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
911 ),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
912 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
913 elif error == QAbstractSocket.SocketError.ConnectionRefusedError:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
914 self.networkWidget.addErrorMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
915 self.tr("Socket Error"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
916 self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
917 "The connection was refused by the peer. Please check the"
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
918 " host name and port settings."
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
919 ),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
920 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
921 elif error == QAbstractSocket.SocketError.SslHandshakeFailedError:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
922 self.networkWidget.addErrorMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
923 self.tr("Socket Error"), self.tr("The SSL handshake failed.")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
924 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
925 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
926 if self.__socket:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
927 self.networkWidget.addErrorMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
928 self.tr("Socket Error"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
929 self.tr("The following network error occurred:<br/>{0}").format(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
930 self.__socket.errorString()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
931 ),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
932 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
933 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
934 self.networkWidget.addErrorMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
935 self.tr("Socket Error"), self.tr("A network error occurred.")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
936 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
937
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
938 def __sslErrors(self, errors):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
939 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
940 Private slot to handle SSL errors.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
941
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
942 @param errors list of SSL errors
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
943 @type list of QSslError
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
944 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
945 ignored, defaultChanged = self.__sslErrorHandler.sslErrors(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
946 errors, self.__server.getName(), self.__server.getPort()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
947 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
948 if ignored == EricSslErrorState.NOT_IGNORED:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
949 self.networkWidget.addErrorMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
950 self.tr("SSL Error"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
951 self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
952 """Could not connect to {0} (port {1}) using an SSL"""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
953 """ encrypted connection. Either the server does not"""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
954 """ support SSL (did you use the correct port?) or"""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
955 """ you rejected the certificate."""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
956 ).format(self.__server.getName(), self.__server.getPort()),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
957 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
958 self.__socket.close()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
959 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
960 if defaultChanged:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
961 self.__socket.setSslConfiguration(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
962 QSslConfiguration.defaultConfiguration()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
963 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
964 if ignored == EricSslErrorState.USER_IGNORED:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
965 self.networkWidget.addErrorMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
966 self.tr("SSL Error"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
967 self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
968 """The SSL certificate for the server {0} (port {1})"""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
969 """ failed the authenticity check. SSL errors"""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
970 """ were accepted by you."""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
971 ).format(self.__server.getName(), self.__server.getPort()),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
972 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
973 if self.__connectionState == IrcConnectionState.Connecting:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
974 self.__socket.ignoreSslErrors()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
975
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
976 def __setUserPrivilegePrefix(self, prefix1, prefix2):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
977 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
978 Private method to set the user privilege prefix.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
979
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
980 @param prefix1 first part of the prefix
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
981 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
982 @param prefix2 indictors the first part gets mapped to
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
983 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
984 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
985 # PREFIX=(ov)@+
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
986 # o = @ -> @ircbot , channel operator
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
987 # v = + -> +userName , voice operator
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
988 for i in range(len(prefix1)):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
989 self.__userPrefix["+" + prefix1[i]] = prefix2[i]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
990 self.__userPrefix["-" + prefix1[i]] = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
991
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
992 def __ping(self, match):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
993 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
994 Private method to handle a PING message.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
995
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
996 @param match reference to the match object
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
997 @type re.Match
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
998 @return flag indicating, if the message was handled
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
999 @rtype bool
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1000 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1001 self.__send("PONG " + match.group(1))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1002 return True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1003
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1004 def __handleCtcp(self, match):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1005 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1006 Private method to handle a CTCP command.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1007
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1008 @param match reference to the match object
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1009 @type re.Match
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1010 @return flag indicating, if the message was handled
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1011 @rtype bool
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1012 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1013 # group(1) sender user name
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1014 # group(2) sender user@host
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1015 # group(3) target nick
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1016 # group(4) message
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1017 if match.group(4).startswith("\x01"):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1018 ctcpCommand = match.group(4)[1:].split("\x01", 1)[0]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1019 if " " in ctcpCommand:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1020 ctcpRequest, ctcpArg = ctcpCommand.split(" ", 1)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1021 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1022 ctcpRequest, ctcpArg = ctcpCommand, ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1023 ctcpRequest = ctcpRequest.lower()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1024 if ctcpRequest == "version":
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1025 if Version.startswith("@@"):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1026 vers = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1027 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1028 vers = " " + Version
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1029 msg = "Eric IRC client{0}, {1}".format(vers, Copyright)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1030 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1031 self.tr("CTCP"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1032 self.tr("Received Version request from {0}.").format(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1033 match.group(1)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1034 ),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1035 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1036 self.__sendCtcpReply(match.group(1), "VERSION " + msg)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1037 elif ctcpRequest == "ping":
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1038 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1039 self.tr("CTCP"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1040 self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1041 "Received CTCP-PING request from {0}, sending answer."
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1042 ).format(match.group(1)),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1043 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1044 self.__sendCtcpReply(match.group(1), "PING {0}".format(ctcpArg))
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1045 elif ctcpRequest == "clientinfo":
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1046 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1047 self.tr("CTCP"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1048 self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1049 "Received CTCP-CLIENTINFO request from {0}, sending answer."
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1050 ).format(match.group(1)),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1051 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1052 self.__sendCtcpReply(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1053 match.group(1), "CLIENTINFO CLIENTINFO PING VERSION"
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1054 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1055 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1056 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1057 self.tr("CTCP"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1058 self.tr("Received unknown CTCP-{0} request from {1}.").format(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1059 ctcpRequest, match.group(1)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1060 ),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1061 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1062 return True
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1063
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1064 return False
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1065
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1066 def __updateUsersCount(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1067 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1068 Private method to update the users count on the channel tabs.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1069 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1070 for channel in self.__channelList:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1071 index = self.channelsWidget.indexOf(channel)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1072 self.channelsWidget.setTabText(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1073 index,
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1074 self.tr("{0} ({1})", "channel name, users count").format(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1075 channel.name(), channel.getUsersCount()
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1076 ),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1077 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1078
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1079 def __handleNickInUseLogin(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1080 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1081 Private method to handle a 443 server error at login.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1082 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1083 self.__nickIndex += 1
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1084 try:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1085 identity = self.__ircNetworkManager.getIdentity(self.__identityName)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1086 if identity:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1087 nick = identity.getNickNames()[self.__nickIndex]
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1088 self.__nickName = nick
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1089 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1090 self.__connectNetwork("", False, True)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1091 self.__nickName = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1092 self.__nickIndex = -1
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1093 return
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1094 except IndexError:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1095 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1096 self.tr("Critical"),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1097 self.tr(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1098 "No nickname acceptable to the server configured"
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1099 " for <b>{0}</b>. Disconnecting..."
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1100 ).format(self.__userName),
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1101 filterMsg=False,
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1102 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1103 self.__connectNetwork("", False, True)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1104 self.__nickName = ""
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1105 self.__nickIndex = -1
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1106 return
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1107
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1108 self.networkWidget.setNickName(nick)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1109 self.__send("NICK " + nick)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1110
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1111 def __handleNickInUse(self):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1112 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1113 Private method to handle a 443 server error.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1114 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1115 self.networkWidget.addServerMessage(
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1116 self.tr("Critical"), self.tr("The given nickname is already in use.")
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1117 )
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1118
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1119 def __changeNick(self, nick):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1120 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1121 Private slot to use a new nick name.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1122
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1123 @param nick nick name to use
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1124 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1125 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1126 if nick and nick != self.__nickName:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1127 self.__send("NICK " + nick)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1128
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1129 def __setChannelTypePrefixes(self, prefixes):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1130 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1131 Private method to set the channel type prefixes.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1132
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1133 @param prefixes channel prefix characters
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1134 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1135 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1136 self.__channelTypePrefixes = prefixes
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1137
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1138 def isChannelName(self, name):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1139 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1140 Public method to check, if the given name is a channel name.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1141
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1142 @param name name to check
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1143 @type str
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1144 @return flag indicating a channel name
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1145 @rtype bool
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1146 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1147 if not name:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1148 return False
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1149
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1150 if self.__channelTypePrefixes:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1151 return name[0] in self.__channelTypePrefixes
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1152 else:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1153 return name[0] in "#&"
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1154
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1155 def __away(self, isAway):
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1156 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1157 Private slot handling the change of the away state.
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1158
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1159 @param isAway flag indicating the current away state
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1160 @type bool
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1161 """
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1162 if isAway and self.__identityName:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1163 identity = self.__ircNetworkManager.getIdentity(self.__identityName)
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1164 if identity and identity.rememberAwayPosition():
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1165 for channel in self.__channelList:
5b635dc8895f Extracted the IRC widgets from eric-ide to provide them as a plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1166 channel.setMarkerLine()

eric ide

mercurial