Added functionality to kick and ban users and to manage banned users.

Wed, 31 Mar 2010 17:11:28 +0000

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 31 Mar 2010 17:11:28 +0000
changeset 165
3302a726fd1e
parent 164
b395b006d2a8
child 166
11e9ed8ae18c

Added functionality to kick and ban users and to manage banned users.

APIs/Python3/eric5.api file | annotate | diff | comparison | revisions
Cooperation/ChatWidget.py file | annotate | diff | comparison | revisions
Cooperation/ChatWidget.ui file | annotate | diff | comparison | revisions
Cooperation/Connection.py file | annotate | diff | comparison | revisions
Cooperation/CooperationClient.py file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Cooperation.ChatWidget.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Cooperation.CooperationClient.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Preferences.ConfigurationPages.CooperationPage.html file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/CooperationPage.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/CooperationPage.ui file | annotate | diff | comparison | revisions
Preferences/__init__.py file | annotate | diff | comparison | revisions
i18n/eric5_cs.ts file | annotate | diff | comparison | revisions
i18n/eric5_de.qm file | annotate | diff | comparison | revisions
i18n/eric5_de.ts file | annotate | diff | comparison | revisions
i18n/eric5_es.ts file | annotate | diff | comparison | revisions
i18n/eric5_fr.ts file | annotate | diff | comparison | revisions
i18n/eric5_it.ts file | annotate | diff | comparison | revisions
i18n/eric5_ru.ts file | annotate | diff | comparison | revisions
i18n/eric5_tr.ts file | annotate | diff | comparison | revisions
i18n/eric5_zh_CN.GB2312.ts file | annotate | diff | comparison | revisions
icons/default/chatBanKickUser.png file | annotate | diff | comparison | revisions
icons/default/chatBanUser.png file | annotate | diff | comparison | revisions
icons/default/chatKickUser.png file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric5.api	Wed Mar 31 12:52:59 2010 +0000
+++ b/APIs/Python3/eric5.api	Wed Mar 31 17:11:28 2010 +0000
@@ -14,6 +14,7 @@
 eric5.Cooperation.ChatWidget.ChatWidget.on_serverButton_clicked?4()
 eric5.Cooperation.ChatWidget.ChatWidget.on_shareButton_clicked?4(checked)
 eric5.Cooperation.ChatWidget.ChatWidget.on_startEditButton_clicked?4(checked)
+eric5.Cooperation.ChatWidget.ChatWidget.on_usersList_customContextMenuRequested?4(pos)
 eric5.Cooperation.ChatWidget.ChatWidget.preferencesChanged?4()
 eric5.Cooperation.ChatWidget.ChatWidget.sendEdit?7
 eric5.Cooperation.ChatWidget.ChatWidget.shareEditor?7
@@ -57,6 +58,8 @@
 eric5.Cooperation.Connection.PongTimeout?7
 eric5.Cooperation.Connection.SeparatorToken?7
 eric5.Cooperation.Connection.TransferTimeout?7
+eric5.Cooperation.CooperationClient.CooperationClient.banKickUser?4(nick)
+eric5.Cooperation.CooperationClient.CooperationClient.banUser?4(nick)
 eric5.Cooperation.CooperationClient.CooperationClient.cannotConnect?7
 eric5.Cooperation.CooperationClient.CooperationClient.connectToHost?4(host, port)
 eric5.Cooperation.CooperationClient.CooperationClient.connectionError?7
@@ -64,10 +67,12 @@
 eric5.Cooperation.CooperationClient.CooperationClient.editorCommand?7
 eric5.Cooperation.CooperationClient.CooperationClient.hasConnection?4(senderIp, senderPort = -1)
 eric5.Cooperation.CooperationClient.CooperationClient.hasConnections?4()
+eric5.Cooperation.CooperationClient.CooperationClient.kickUser?4(nick)
 eric5.Cooperation.CooperationClient.CooperationClient.newMessage?7
 eric5.Cooperation.CooperationClient.CooperationClient.newParticipant?7
 eric5.Cooperation.CooperationClient.CooperationClient.nickName?4()
 eric5.Cooperation.CooperationClient.CooperationClient.participantLeft?7
+eric5.Cooperation.CooperationClient.CooperationClient.removeConnection?4(connection)
 eric5.Cooperation.CooperationClient.CooperationClient.sendEditorCommand?4(projectHash, filename, message)
 eric5.Cooperation.CooperationClient.CooperationClient.sendMessage?4(message)
 eric5.Cooperation.CooperationClient.CooperationClient.server?4()
@@ -3385,6 +3390,10 @@
 eric5.Preferences.ConfigurationPages.ConfigurationPageBase.ConfigurationPageBase.selectFont?4(fontSample, fontVar, showFontInfo = False)
 eric5.Preferences.ConfigurationPages.ConfigurationPageBase.ConfigurationPageBase.setState?4(state)
 eric5.Preferences.ConfigurationPages.ConfigurationPageBase.ConfigurationPageBase?1()
+eric5.Preferences.ConfigurationPages.CooperationPage.CooperationPage.on_addBannedUserButton_clicked?4()
+eric5.Preferences.ConfigurationPages.CooperationPage.CooperationPage.on_bannedUserEdit_textChanged?4(txt)
+eric5.Preferences.ConfigurationPages.CooperationPage.CooperationPage.on_bannedUsersList_itemSelectionChanged?4()
+eric5.Preferences.ConfigurationPages.CooperationPage.CooperationPage.on_deleteBannedUsersButton_clicked?4()
 eric5.Preferences.ConfigurationPages.CooperationPage.CooperationPage.save?4()
 eric5.Preferences.ConfigurationPages.CooperationPage.CooperationPage?1()
 eric5.Preferences.ConfigurationPages.CooperationPage.create?4(dlg)
--- a/Cooperation/ChatWidget.py	Wed Mar 31 12:52:59 2010 +0000
+++ b/Cooperation/ChatWidget.py	Wed Mar 31 17:11:28 2010 +0000
@@ -72,34 +72,8 @@
         self.__client = CooperationClient(self)
         self.__myNickName = self.__client.nickName()
         
-        self.__chatMenu = QMenu(self)
-        self.__cutChatAct = \
-            self.__chatMenu.addAction(
-                UI.PixmapCache.getIcon("editCut.png"), 
-                self.trUtf8("Cut"), self.__cutChat)
-        self.__copyChatAct = \
-            self.__chatMenu.addAction(
-                UI.PixmapCache.getIcon("editCopy.png"), 
-                self.trUtf8("Copy"), self.__copyChat)
-        self.__chatMenu.addSeparator()
-        self.__cutAllChatAct = \
-            self.__chatMenu.addAction(
-                UI.PixmapCache.getIcon("editCut.png"), 
-                self.trUtf8("Cut all"), self.__cutAllChat)
-        self.__copyAllChatAct = \
-            self.__chatMenu.addAction(
-                UI.PixmapCache.getIcon("editCopy.png"), 
-                self.trUtf8("Copy all"), self.__copyAllChat)
-        self.__chatMenu.addSeparator()
-        self.__clearChatAct = \
-            self.__chatMenu.addAction(
-                UI.PixmapCache.getIcon("editDelete.png"), 
-                self.trUtf8("Clear"), self.__clearChat)
-        self.__chatMenu.addSeparator()
-        self.__saveChatAct = \
-            self.__chatMenu.addAction(
-                UI.PixmapCache.getIcon("fileSave.png"), 
-                self.trUtf8("Save"), self.__saveChat)
+        self.__initChatMenu()
+        self.__initUsersMenu()
         
         self.messageEdit.returnPressed.connect(self.__handleMessage)
         self.sendButton.clicked.connect(self.__handleMessage)
@@ -366,7 +340,7 @@
         self.chatEdit.setTextColor(Qt.red)
         self.chatEdit.append(
             QDateTime.currentDateTime().toString(Qt.SystemLocaleLongDate) + ":")
-        self.chatEdit.append(message)
+        self.chatEdit.append(message + "\n")
         self.chatEdit.setTextColor(color)
     
     def __initialConnectionRefused(self):
@@ -487,6 +461,39 @@
         self.sendEditButton.setEnabled(editing)
         self.cancelEditButton.setEnabled(editing)
     
+    def __initChatMenu(self):
+        """
+        Private slot to initialize the chat edit context menu.
+        """
+        self.__chatMenu = QMenu(self)
+        self.__cutChatAct = \
+            self.__chatMenu.addAction(
+                UI.PixmapCache.getIcon("editCut.png"), 
+                self.trUtf8("Cut"), self.__cutChat)
+        self.__copyChatAct = \
+            self.__chatMenu.addAction(
+                UI.PixmapCache.getIcon("editCopy.png"), 
+                self.trUtf8("Copy"), self.__copyChat)
+        self.__chatMenu.addSeparator()
+        self.__cutAllChatAct = \
+            self.__chatMenu.addAction(
+                UI.PixmapCache.getIcon("editCut.png"), 
+                self.trUtf8("Cut all"), self.__cutAllChat)
+        self.__copyAllChatAct = \
+            self.__chatMenu.addAction(
+                UI.PixmapCache.getIcon("editCopy.png"), 
+                self.trUtf8("Copy all"), self.__copyAllChat)
+        self.__chatMenu.addSeparator()
+        self.__clearChatAct = \
+            self.__chatMenu.addAction(
+                UI.PixmapCache.getIcon("editDelete.png"), 
+                self.trUtf8("Clear"), self.__clearChat)
+        self.__chatMenu.addSeparator()
+        self.__saveChatAct = \
+            self.__chatMenu.addAction(
+                UI.PixmapCache.getIcon("fileSave.png"), 
+                self.trUtf8("Save"), self.__saveChat)
+    
     @pyqtSlot(bool)
     def on_chatEdit_copyAvailable(self, yes):
         """
@@ -589,3 +596,79 @@
             cb = QApplication.clipboard()
             cb.setText(txt)
         self.chatEdit.clear()
+    
+    def __initUsersMenu(self):
+        """
+        Private slot to initialize the users list context menu.
+        """
+        self.__usersMenu = QMenu(self)
+        self.__kickUserAct = \
+            self.__usersMenu.addAction(
+                UI.PixmapCache.getIcon("chatKickUser.png"), 
+                self.trUtf8("Kick User"), self.__kickUser)
+        self.__banUserAct = \
+            self.__usersMenu.addAction(
+                UI.PixmapCache.getIcon("chatBanUser.png"), 
+                self.trUtf8("Ban User"), self.__banUser)
+        self.__banKickUserAct = \
+            self.__usersMenu.addAction(
+                UI.PixmapCache.getIcon("chatBanKickUser.png"), 
+                self.trUtf8("Ban and Kick User"), self.__banKickUser)
+    
+    @pyqtSlot(QPoint)
+    def on_usersList_customContextMenuRequested(self, pos):
+        """
+        Private slot to show the context menu for the users list.
+        
+        @param pos the position of the mouse pointer (QPoint)
+        """
+        itm = self.usersList.itemAt(pos)
+        self.__kickUserAct.setEnabled(itm is not None)
+        self.__banUserAct.setEnabled(itm is not None)
+        self.__banKickUserAct.setEnabled(itm is not None)
+        self.__usersMenu.popup(self.usersList.mapToGlobal(pos))
+    
+    def __kickUser(self):
+        """
+        Private slot to disconnect a user.
+        """
+        itm = self.usersList.currentItem()
+        self.__client.kickUser(itm.text())
+        
+        color = self.chatEdit.textColor()
+        self.chatEdit.setTextColor(Qt.darkYellow)
+        self.chatEdit.append(
+            QDateTime.currentDateTime().toString(Qt.SystemLocaleLongDate) + ":")
+        self.chatEdit.append(self.trUtf8("* {0} has been kicked.\n").format(
+            itm.text().split(":")[0]))
+        self.chatEdit.setTextColor(color)
+    
+    def __banUser(self):
+        """
+        Private slot to ban a user.
+        """
+        itm = self.usersList.currentItem()
+        self.__client.banUser(itm.text())
+        
+        color = self.chatEdit.textColor()
+        self.chatEdit.setTextColor(Qt.darkYellow)
+        self.chatEdit.append(
+            QDateTime.currentDateTime().toString(Qt.SystemLocaleLongDate) + ":")
+        self.chatEdit.append(self.trUtf8("* {0} has been banned.\n").format(
+            itm.text().split(":")[0]))
+        self.chatEdit.setTextColor(color)
+    
+    def __banKickUser(self):
+        """
+        Private slot to ban and kick a user.
+        """
+        itm = self.usersList.currentItem()
+        self.__client.banKickUser(itm.text())
+        
+        color = self.chatEdit.textColor()
+        self.chatEdit.setTextColor(Qt.darkYellow)
+        self.chatEdit.append(
+            QDateTime.currentDateTime().toString(Qt.SystemLocaleLongDate) + ":")
+        self.chatEdit.append(self.trUtf8("* {0} has been banned and kicked.\n").format(
+            itm.text().split(":")[0]))
+        self.chatEdit.setTextColor(color)
--- a/Cooperation/ChatWidget.ui	Wed Mar 31 12:52:59 2010 +0000
+++ b/Cooperation/ChatWidget.ui	Wed Mar 31 17:11:28 2010 +0000
@@ -31,6 +31,9 @@
         <property name="focusPolicy">
          <enum>Qt::NoFocus</enum>
         </property>
+        <property name="contextMenuPolicy">
+         <enum>Qt::CustomContextMenu</enum>
+        </property>
        </widget>
       </item>
      </layout>
--- a/Cooperation/Connection.py	Wed Mar 31 12:52:59 2010 +0000
+++ b/Cooperation/Connection.py	Wed Mar 31 17:11:28 2010 +0000
@@ -175,6 +175,18 @@
                 self.abort()
                 return
             
+            bannedName = "{0}@{1}".format(
+                user, 
+                self.peerAddress().toString()
+            )
+            Preferences.syncPreferences()
+            if bannedName in Preferences.getCooperation("BannedUsers"):
+                self.rejected.emit(
+                    self.trUtf8("* Connection attempted by banned user '{0}'.")\
+                    .format(bannedName))
+                self.abort()
+                return
+            
             if self.__serverPort != self.peerPort() and \
                not Preferences.getCooperation("AutoAcceptConnections"):
                 # don't ask for reverse connections or 
--- a/Cooperation/CooperationClient.py	Wed Mar 31 12:52:59 2010 +0000
+++ b/Cooperation/CooperationClient.py	Wed Mar 31 17:11:28 2010 +0000
@@ -15,6 +15,8 @@
 from .CooperationServer import CooperationServer
 from .Connection import Connection
 
+import Preferences
+
 class CooperationClient(QObject):
     """
     Class implementing the client of the cooperation package.
@@ -134,9 +136,9 @@
         
         return False
     
-    def __removeConnection(self, connection):
+    def removeConnection(self, connection):
         """
-        Private method to remove a connection.
+        Public method to remove a connection.
         
         @param connection reference to the connection to be removed (Connection)
         """
@@ -147,6 +149,9 @@
             if nick != "":
                 self.participantLeft.emit(nick)
         
+        if connection.isValid():
+            connection.abort()
+        
         connection.deleteLater()
     
     def disconnectConnections(self):
@@ -155,7 +160,7 @@
         """
         for connectionList in self.__peers.values():
             while connectionList:
-                self.__removeConnection(connectionList[0])
+                self.removeConnection(connectionList[0])
     
     def __newConnection(self, connection):
         """
@@ -199,14 +204,14 @@
             self.connectionError.emit(msg)
         if connection == self.__initialConnection:
             self.cannotConnect.emit()
-        self.__removeConnection(connection)
+        self.removeConnection(connection)
     
     def __disconnected(self):
         """
         Private slot to handle the disconnection of a chat client.
         """
         connection = self.sender()
-        self.__removeConnection(connection)
+        self.removeConnection(connection)
     
     def __readyForUse(self):
         """
@@ -285,3 +290,53 @@
         for connectionList in self.__peers.values():
             for connection in connectionList:
                 connection.sendEditorCommand(projectHash, filename, message)
+    
+    def __findConnections(self, nick):
+        """
+        Public method to get a list of connection given a nick name.
+        
+        @param nick nick name in the format of self.nickName() (string)
+        @return list of references to the connection objects (list of Connection)
+        """
+        if "@" not in nick or ":" not in nick:
+            # nick given in wrong format
+            return []
+        
+        user, host = nick.split(":")[0].split("@")
+        senderIp = QHostAddress(host)
+        
+        if senderIp not in self.__peers:
+            return []
+        
+        return self.__peers[senderIp][:]
+    
+    def kickUser(self, nick):
+        """
+        Public method to kick a user by its nick name.
+        
+        @param nick nick name in the format of self.nickName() (string)
+        """
+        for connection in self.__findConnections(nick):
+            connection.abort()
+    
+    def banUser(self, nick):
+        """
+        Public method to ban a user by its nick name.
+        
+        @param nick nick name in the format of self.nickName() (string)
+        """
+        Preferences.syncPreferences()
+        user = nick.split(":")[0]
+        bannedUsers = Preferences.getCooperation("BannedUsers")[:]
+        if user not in bannedUsers:
+            bannedUsers.append(user)
+            Preferences.setCooperation("BannedUsers", bannedUsers)
+    
+    def banKickUser(self, nick):
+        """
+        Public method to ban and kick a user by its nick name.
+        
+        @param nick nick name in the format of self.nickName() (string)
+        """
+        self.banUser(nick)
+        self.kickUser(nick)
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Wed Mar 31 12:52:59 2010 +0000
+++ b/Documentation/Help/source.qhp	Wed Mar 31 17:11:28 2010 +0000
@@ -3184,6 +3184,8 @@
       <keyword name="ChatWidget (Module)" id="ChatWidget (Module)" ref="eric5.Cooperation.ChatWidget.html" />
       <keyword name="ChatWidget" id="ChatWidget" ref="eric5.Cooperation.ChatWidget.html#ChatWidget" />
       <keyword name="ChatWidget (Constructor)" id="ChatWidget (Constructor)" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__init__" />
+      <keyword name="ChatWidget.__banKickUser" id="ChatWidget.__banKickUser" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__banKickUser" />
+      <keyword name="ChatWidget.__banUser" id="ChatWidget.__banUser" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__banUser" />
       <keyword name="ChatWidget.__clearChat" id="ChatWidget.__clearChat" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__clearChat" />
       <keyword name="ChatWidget.__clearHostsHistory" id="ChatWidget.__clearHostsHistory" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__clearHostsHistory" />
       <keyword name="ChatWidget.__copyAllChat" id="ChatWidget.__copyAllChat" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__copyAllChat" />
@@ -3193,7 +3195,10 @@
       <keyword name="ChatWidget.__editorCommandMessage" id="ChatWidget.__editorCommandMessage" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__editorCommandMessage" />
       <keyword name="ChatWidget.__getConnectionParameters" id="ChatWidget.__getConnectionParameters" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__getConnectionParameters" />
       <keyword name="ChatWidget.__handleMessage" id="ChatWidget.__handleMessage" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__handleMessage" />
+      <keyword name="ChatWidget.__initChatMenu" id="ChatWidget.__initChatMenu" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__initChatMenu" />
+      <keyword name="ChatWidget.__initUsersMenu" id="ChatWidget.__initUsersMenu" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__initUsersMenu" />
       <keyword name="ChatWidget.__initialConnectionRefused" id="ChatWidget.__initialConnectionRefused" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__initialConnectionRefused" />
+      <keyword name="ChatWidget.__kickUser" id="ChatWidget.__kickUser" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__kickUser" />
       <keyword name="ChatWidget.__loadHostsHistory" id="ChatWidget.__loadHostsHistory" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__loadHostsHistory" />
       <keyword name="ChatWidget.__newParticipant" id="ChatWidget.__newParticipant" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__newParticipant" />
       <keyword name="ChatWidget.__participantLeft" id="ChatWidget.__participantLeft" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.__participantLeft" />
@@ -3215,6 +3220,7 @@
       <keyword name="ChatWidget.on_serverButton_clicked" id="ChatWidget.on_serverButton_clicked" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.on_serverButton_clicked" />
       <keyword name="ChatWidget.on_shareButton_clicked" id="ChatWidget.on_shareButton_clicked" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.on_shareButton_clicked" />
       <keyword name="ChatWidget.on_startEditButton_clicked" id="ChatWidget.on_startEditButton_clicked" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.on_startEditButton_clicked" />
+      <keyword name="ChatWidget.on_usersList_customContextMenuRequested" id="ChatWidget.on_usersList_customContextMenuRequested" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.on_usersList_customContextMenuRequested" />
       <keyword name="ChatWidget.preferencesChanged" id="ChatWidget.preferencesChanged" ref="eric5.Cooperation.ChatWidget.html#ChatWidget.preferencesChanged" />
       <keyword name="Connection (Module)" id="Connection (Module)" ref="eric5.Cooperation.Connection.html" />
       <keyword name="Connection" id="Connection" ref="eric5.Cooperation.Connection.html#Connection" />
@@ -3247,16 +3253,20 @@
       <keyword name="CooperationClient.__connectionError" id="CooperationClient.__connectionError" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.__connectionError" />
       <keyword name="CooperationClient.__connectionRejected" id="CooperationClient.__connectionRejected" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.__connectionRejected" />
       <keyword name="CooperationClient.__disconnected" id="CooperationClient.__disconnected" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.__disconnected" />
+      <keyword name="CooperationClient.__findConnections" id="CooperationClient.__findConnections" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.__findConnections" />
       <keyword name="CooperationClient.__getParticipants" id="CooperationClient.__getParticipants" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.__getParticipants" />
       <keyword name="CooperationClient.__newConnection" id="CooperationClient.__newConnection" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.__newConnection" />
       <keyword name="CooperationClient.__processParticipants" id="CooperationClient.__processParticipants" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.__processParticipants" />
       <keyword name="CooperationClient.__readyForUse" id="CooperationClient.__readyForUse" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.__readyForUse" />
-      <keyword name="CooperationClient.__removeConnection" id="CooperationClient.__removeConnection" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.__removeConnection" />
+      <keyword name="CooperationClient.banKickUser" id="CooperationClient.banKickUser" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.banKickUser" />
+      <keyword name="CooperationClient.banUser" id="CooperationClient.banUser" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.banUser" />
       <keyword name="CooperationClient.connectToHost" id="CooperationClient.connectToHost" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.connectToHost" />
       <keyword name="CooperationClient.disconnectConnections" id="CooperationClient.disconnectConnections" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.disconnectConnections" />
       <keyword name="CooperationClient.hasConnection" id="CooperationClient.hasConnection" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.hasConnection" />
       <keyword name="CooperationClient.hasConnections" id="CooperationClient.hasConnections" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.hasConnections" />
+      <keyword name="CooperationClient.kickUser" id="CooperationClient.kickUser" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.kickUser" />
       <keyword name="CooperationClient.nickName" id="CooperationClient.nickName" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.nickName" />
+      <keyword name="CooperationClient.removeConnection" id="CooperationClient.removeConnection" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.removeConnection" />
       <keyword name="CooperationClient.sendEditorCommand" id="CooperationClient.sendEditorCommand" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.sendEditorCommand" />
       <keyword name="CooperationClient.sendMessage" id="CooperationClient.sendMessage" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.sendMessage" />
       <keyword name="CooperationClient.server" id="CooperationClient.server" ref="eric5.Cooperation.CooperationClient.html#CooperationClient.server" />
@@ -7596,6 +7606,10 @@
       <keyword name="CooperationPage" id="CooperationPage" ref="eric5.Preferences.ConfigurationPages.CooperationPage.html#CooperationPage" />
       <keyword name="create" id="create" ref="eric5.Preferences.ConfigurationPages.CooperationPage.html#create" />
       <keyword name="CooperationPage (Constructor)" id="CooperationPage (Constructor)" ref="eric5.Preferences.ConfigurationPages.CooperationPage.html#CooperationPage.__init__" />
+      <keyword name="CooperationPage.on_addBannedUserButton_clicked" id="CooperationPage.on_addBannedUserButton_clicked" ref="eric5.Preferences.ConfigurationPages.CooperationPage.html#CooperationPage.on_addBannedUserButton_clicked" />
+      <keyword name="CooperationPage.on_bannedUserEdit_textChanged" id="CooperationPage.on_bannedUserEdit_textChanged" ref="eric5.Preferences.ConfigurationPages.CooperationPage.html#CooperationPage.on_bannedUserEdit_textChanged" />
+      <keyword name="CooperationPage.on_bannedUsersList_itemSelectionChanged" id="CooperationPage.on_bannedUsersList_itemSelectionChanged" ref="eric5.Preferences.ConfigurationPages.CooperationPage.html#CooperationPage.on_bannedUsersList_itemSelectionChanged" />
+      <keyword name="CooperationPage.on_deleteBannedUsersButton_clicked" id="CooperationPage.on_deleteBannedUsersButton_clicked" ref="eric5.Preferences.ConfigurationPages.CooperationPage.html#CooperationPage.on_deleteBannedUsersButton_clicked" />
       <keyword name="CooperationPage.save" id="CooperationPage.save" ref="eric5.Preferences.ConfigurationPages.CooperationPage.html#CooperationPage.save" />
       <keyword name="InterfacePage (Module)" id="InterfacePage (Module)" ref="eric5.Preferences.ConfigurationPages.InterfacePage.html" />
       <keyword name="InterfacePage" id="InterfacePage" ref="eric5.Preferences.ConfigurationPages.InterfacePage.html#InterfacePage" />
--- a/Documentation/Source/eric5.Cooperation.ChatWidget.html	Wed Mar 31 12:52:59 2010 +0000
+++ b/Documentation/Source/eric5.Cooperation.ChatWidget.html	Wed Mar 31 17:11:28 2010 +0000
@@ -80,6 +80,12 @@
 <td><a href="#ChatWidget.__init__">ChatWidget</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#ChatWidget.__banKickUser">__banKickUser</a></td>
+<td>Private slot to ban and kick a user.</td>
+</tr><tr>
+<td><a href="#ChatWidget.__banUser">__banUser</a></td>
+<td>Private slot to ban a user.</td>
+</tr><tr>
 <td><a href="#ChatWidget.__clearChat">__clearChat</a></td>
 <td>Private slot to clear the contents of the chat display.</td>
 </tr><tr>
@@ -107,9 +113,18 @@
 <td><a href="#ChatWidget.__handleMessage">__handleMessage</a></td>
 <td>Private slot handling the Return key pressed in the message edit.</td>
 </tr><tr>
+<td><a href="#ChatWidget.__initChatMenu">__initChatMenu</a></td>
+<td>Private slot to initialize the chat edit context menu.</td>
+</tr><tr>
+<td><a href="#ChatWidget.__initUsersMenu">__initUsersMenu</a></td>
+<td>Private slot to initialize the users list context menu.</td>
+</tr><tr>
 <td><a href="#ChatWidget.__initialConnectionRefused">__initialConnectionRefused</a></td>
 <td>Private slot to handle the refusal of the initial connection.</td>
 </tr><tr>
+<td><a href="#ChatWidget.__kickUser">__kickUser</a></td>
+<td>Private slot to disconnect a user.</td>
+</tr><tr>
 <td><a href="#ChatWidget.__loadHostsHistory">__loadHostsHistory</a></td>
 <td>Private method to load the recently connected hosts.</td>
 </tr><tr>
@@ -173,6 +188,9 @@
 <td><a href="#ChatWidget.on_startEditButton_clicked">on_startEditButton_clicked</a></td>
 <td>Private slot to start a shared edit session.</td>
 </tr><tr>
+<td><a href="#ChatWidget.on_usersList_customContextMenuRequested">on_usersList_customContextMenuRequested</a></td>
+<td>Private slot to show the context menu for the users list.</td>
+</tr><tr>
 <td><a href="#ChatWidget.preferencesChanged">preferencesChanged</a></td>
 <td>Public slot to handle a change of preferences.</td>
 </tr>
@@ -190,7 +208,17 @@
 <dd>
 reference to the parent widget (QWidget)
 </dd>
-</dl><a NAME="ChatWidget.__clearChat" ID="ChatWidget.__clearChat"></a>
+</dl><a NAME="ChatWidget.__banKickUser" ID="ChatWidget.__banKickUser"></a>
+<h4>ChatWidget.__banKickUser</h4>
+<b>__banKickUser</b>(<i></i>)
+<p>
+        Private slot to ban and kick a user.
+</p><a NAME="ChatWidget.__banUser" ID="ChatWidget.__banUser"></a>
+<h4>ChatWidget.__banUser</h4>
+<b>__banUser</b>(<i></i>)
+<p>
+        Private slot to ban a user.
+</p><a NAME="ChatWidget.__clearChat" ID="ChatWidget.__clearChat"></a>
 <h4>ChatWidget.__clearChat</h4>
 <b>__clearChat</b>(<i></i>)
 <p>
@@ -251,11 +279,26 @@
 <b>__handleMessage</b>(<i></i>)
 <p>
         Private slot handling the Return key pressed in the message edit.
+</p><a NAME="ChatWidget.__initChatMenu" ID="ChatWidget.__initChatMenu"></a>
+<h4>ChatWidget.__initChatMenu</h4>
+<b>__initChatMenu</b>(<i></i>)
+<p>
+        Private slot to initialize the chat edit context menu.
+</p><a NAME="ChatWidget.__initUsersMenu" ID="ChatWidget.__initUsersMenu"></a>
+<h4>ChatWidget.__initUsersMenu</h4>
+<b>__initUsersMenu</b>(<i></i>)
+<p>
+        Private slot to initialize the users list context menu.
 </p><a NAME="ChatWidget.__initialConnectionRefused" ID="ChatWidget.__initialConnectionRefused"></a>
 <h4>ChatWidget.__initialConnectionRefused</h4>
 <b>__initialConnectionRefused</b>(<i></i>)
 <p>
         Private slot to handle the refusal of the initial connection.
+</p><a NAME="ChatWidget.__kickUser" ID="ChatWidget.__kickUser"></a>
+<h4>ChatWidget.__kickUser</h4>
+<b>__kickUser</b>(<i></i>)
+<p>
+        Private slot to disconnect a user.
 </p><a NAME="ChatWidget.__loadHostsHistory" ID="ChatWidget.__loadHostsHistory"></a>
 <h4>ChatWidget.__loadHostsHistory</h4>
 <b>__loadHostsHistory</b>(<i></i>)
@@ -424,6 +467,16 @@
 <dd>
 flag indicating the button state (boolean)
 </dd>
+</dl><a NAME="ChatWidget.on_usersList_customContextMenuRequested" ID="ChatWidget.on_usersList_customContextMenuRequested"></a>
+<h4>ChatWidget.on_usersList_customContextMenuRequested</h4>
+<b>on_usersList_customContextMenuRequested</b>(<i>pos</i>)
+<p>
+        Private slot to show the context menu for the users list.
+</p><dl>
+<dt><i>pos</i></dt>
+<dd>
+the position of the mouse pointer (QPoint)
+</dd>
 </dl><a NAME="ChatWidget.preferencesChanged" ID="ChatWidget.preferencesChanged"></a>
 <h4>ChatWidget.preferencesChanged</h4>
 <b>preferencesChanged</b>(<i></i>)
--- a/Documentation/Source/eric5.Cooperation.CooperationClient.html	Wed Mar 31 12:52:59 2010 +0000
+++ b/Documentation/Source/eric5.Cooperation.CooperationClient.html	Wed Mar 31 17:11:28 2010 +0000
@@ -89,6 +89,9 @@
 <td><a href="#CooperationClient.__disconnected">__disconnected</a></td>
 <td>Private slot to handle the disconnection of a chat client.</td>
 </tr><tr>
+<td><a href="#CooperationClient.__findConnections">__findConnections</a></td>
+<td>Public method to get a list of connection given a nick name.</td>
+</tr><tr>
 <td><a href="#CooperationClient.__getParticipants">__getParticipants</a></td>
 <td>Private slot to handle the request for a list of participants.</td>
 </tr><tr>
@@ -101,8 +104,11 @@
 <td><a href="#CooperationClient.__readyForUse">__readyForUse</a></td>
 <td>Private slot to handle a connection getting ready for use.</td>
 </tr><tr>
-<td><a href="#CooperationClient.__removeConnection">__removeConnection</a></td>
-<td>Private method to remove a connection.</td>
+<td><a href="#CooperationClient.banKickUser">banKickUser</a></td>
+<td>Public method to ban and kick a user by its nick name.</td>
+</tr><tr>
+<td><a href="#CooperationClient.banUser">banUser</a></td>
+<td>Public method to ban a user by its nick name.</td>
 </tr><tr>
 <td><a href="#CooperationClient.connectToHost">connectToHost</a></td>
 <td>Public method to connect to a host.</td>
@@ -116,9 +122,15 @@
 <td><a href="#CooperationClient.hasConnections">hasConnections</a></td>
 <td>Public method to check, if there are any connections established.</td>
 </tr><tr>
+<td><a href="#CooperationClient.kickUser">kickUser</a></td>
+<td>Public method to kick a user by its nick name.</td>
+</tr><tr>
 <td><a href="#CooperationClient.nickName">nickName</a></td>
 <td>Public method to get the nick name.</td>
 </tr><tr>
+<td><a href="#CooperationClient.removeConnection">removeConnection</a></td>
+<td>Public method to remove a connection.</td>
+</tr><tr>
 <td><a href="#CooperationClient.sendEditorCommand">sendEditorCommand</a></td>
 <td>Public method to send an editor command.</td>
 </tr><tr>
@@ -164,7 +176,22 @@
 <b>__disconnected</b>(<i></i>)
 <p>
         Private slot to handle the disconnection of a chat client.
-</p><a NAME="CooperationClient.__getParticipants" ID="CooperationClient.__getParticipants"></a>
+</p><a NAME="CooperationClient.__findConnections" ID="CooperationClient.__findConnections"></a>
+<h4>CooperationClient.__findConnections</h4>
+<b>__findConnections</b>(<i>nick</i>)
+<p>
+        Public method to get a list of connection given a nick name.
+</p><dl>
+<dt><i>nick</i></dt>
+<dd>
+nick name in the format of self.nickName() (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+list of references to the connection objects (list of Connection)
+</dd>
+</dl><a NAME="CooperationClient.__getParticipants" ID="CooperationClient.__getParticipants"></a>
 <h4>CooperationClient.__getParticipants</h4>
 <b>__getParticipants</b>(<i></i>)
 <p>
@@ -194,15 +221,25 @@
 <b>__readyForUse</b>(<i></i>)
 <p>
         Private slot to handle a connection getting ready for use.
-</p><a NAME="CooperationClient.__removeConnection" ID="CooperationClient.__removeConnection"></a>
-<h4>CooperationClient.__removeConnection</h4>
-<b>__removeConnection</b>(<i>connection</i>)
+</p><a NAME="CooperationClient.banKickUser" ID="CooperationClient.banKickUser"></a>
+<h4>CooperationClient.banKickUser</h4>
+<b>banKickUser</b>(<i>nick</i>)
 <p>
-        Private method to remove a connection.
+        Public method to ban and kick a user by its nick name.
 </p><dl>
-<dt><i>connection</i></dt>
+<dt><i>nick</i></dt>
 <dd>
-reference to the connection to be removed (Connection)
+nick name in the format of self.nickName() (string)
+</dd>
+</dl><a NAME="CooperationClient.banUser" ID="CooperationClient.banUser"></a>
+<h4>CooperationClient.banUser</h4>
+<b>banUser</b>(<i>nick</i>)
+<p>
+        Public method to ban a user by its nick name.
+</p><dl>
+<dt><i>nick</i></dt>
+<dd>
+nick name in the format of self.nickName() (string)
 </dd>
 </dl><a NAME="CooperationClient.connectToHost" ID="CooperationClient.connectToHost"></a>
 <h4>CooperationClient.connectToHost</h4>
@@ -250,6 +287,16 @@
 <dd>
 flag indicating the presence of connections (boolean)
 </dd>
+</dl><a NAME="CooperationClient.kickUser" ID="CooperationClient.kickUser"></a>
+<h4>CooperationClient.kickUser</h4>
+<b>kickUser</b>(<i>nick</i>)
+<p>
+        Public method to kick a user by its nick name.
+</p><dl>
+<dt><i>nick</i></dt>
+<dd>
+nick name in the format of self.nickName() (string)
+</dd>
 </dl><a NAME="CooperationClient.nickName" ID="CooperationClient.nickName"></a>
 <h4>CooperationClient.nickName</h4>
 <b>nickName</b>(<i></i>)
@@ -260,6 +307,16 @@
 <dd>
 nick name (string)
 </dd>
+</dl><a NAME="CooperationClient.removeConnection" ID="CooperationClient.removeConnection"></a>
+<h4>CooperationClient.removeConnection</h4>
+<b>removeConnection</b>(<i>connection</i>)
+<p>
+        Public method to remove a connection.
+</p><dl>
+<dt><i>connection</i></dt>
+<dd>
+reference to the connection to be removed (Connection)
+</dd>
 </dl><a NAME="CooperationClient.sendEditorCommand" ID="CooperationClient.sendEditorCommand"></a>
 <h4>CooperationClient.sendEditorCommand</h4>
 <b>sendEditorCommand</b>(<i>projectHash, filename, message</i>)
--- a/Documentation/Source/eric5.Preferences.ConfigurationPages.CooperationPage.html	Wed Mar 31 12:52:59 2010 +0000
+++ b/Documentation/Source/eric5.Preferences.ConfigurationPages.CooperationPage.html	Wed Mar 31 17:11:28 2010 +0000
@@ -60,6 +60,18 @@
 <td><a href="#CooperationPage.__init__">CooperationPage</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#CooperationPage.on_addBannedUserButton_clicked">on_addBannedUserButton_clicked</a></td>
+<td>Private slot to add a user to the list of banned users.</td>
+</tr><tr>
+<td><a href="#CooperationPage.on_bannedUserEdit_textChanged">on_bannedUserEdit_textChanged</a></td>
+<td>Private slot to handle the user entering a banned user.</td>
+</tr><tr>
+<td><a href="#CooperationPage.on_bannedUsersList_itemSelectionChanged">on_bannedUsersList_itemSelectionChanged</a></td>
+<td>Private slot to react on changes of selected banned users.</td>
+</tr><tr>
+<td><a href="#CooperationPage.on_deleteBannedUsersButton_clicked">on_deleteBannedUsersButton_clicked</a></td>
+<td>Private slot to remove the selected users from the list of banned users.</td>
+</tr><tr>
 <td><a href="#CooperationPage.save">save</a></td>
 <td>Public slot to save the Cooperation configuration.</td>
 </tr>
@@ -69,6 +81,32 @@
 <b>CooperationPage</b>(<i></i>)
 <p>
         Constructor
+</p><a NAME="CooperationPage.on_addBannedUserButton_clicked" ID="CooperationPage.on_addBannedUserButton_clicked"></a>
+<h4>CooperationPage.on_addBannedUserButton_clicked</h4>
+<b>on_addBannedUserButton_clicked</b>(<i></i>)
+<p>
+        Private slot to add a user to the list of banned users.
+</p><a NAME="CooperationPage.on_bannedUserEdit_textChanged" ID="CooperationPage.on_bannedUserEdit_textChanged"></a>
+<h4>CooperationPage.on_bannedUserEdit_textChanged</h4>
+<b>on_bannedUserEdit_textChanged</b>(<i>txt</i>)
+<p>
+        Private slot to handle the user entering a banned user.
+</p><dl>
+<dt><i>txt</i></dt>
+<dd>
+text entered by the user (string)
+</dd>
+</dl><a NAME="CooperationPage.on_bannedUsersList_itemSelectionChanged" ID="CooperationPage.on_bannedUsersList_itemSelectionChanged"></a>
+<h4>CooperationPage.on_bannedUsersList_itemSelectionChanged</h4>
+<b>on_bannedUsersList_itemSelectionChanged</b>(<i></i>)
+<p>
+        Private slot to react on changes of selected banned users.
+</p><a NAME="CooperationPage.on_deleteBannedUsersButton_clicked" ID="CooperationPage.on_deleteBannedUsersButton_clicked"></a>
+<h4>CooperationPage.on_deleteBannedUsersButton_clicked</h4>
+<b>on_deleteBannedUsersButton_clicked</b>(<i></i>)
+<p>
+        Private slot to remove the selected users from the list of 
+        banned users.
 </p><a NAME="CooperationPage.save" ID="CooperationPage.save"></a>
 <h4>CooperationPage.save</h4>
 <b>save</b>(<i></i>)
--- a/Preferences/ConfigurationPages/CooperationPage.py	Wed Mar 31 12:52:59 2010 +0000
+++ b/Preferences/ConfigurationPages/CooperationPage.py	Wed Mar 31 17:11:28 2010 +0000
@@ -7,6 +7,9 @@
 Module implementing the Cooperation configuration page.
 """
 
+from PyQt4.QtCore import pyqtSlot, QRegExp
+from PyQt4.QtGui import QRegExpValidator, QValidator
+
 from .ConfigurationPageBase import ConfigurationPageBase
 from .Ui_CooperationPage import Ui_CooperationPage
 
@@ -24,6 +27,13 @@
         self.setupUi(self)
         self.setObjectName("CooperationPage")
         
+        self.__bannedUserValidator = QRegExpValidator(
+            QRegExp("[a-zA-Z0-9.-]+@"
+                    "(?:(?:2(?:[0-4][0-9]|5[0-5])|[01]?[0-9]{1,2})\.){3}"
+                    "(?:2(?:[0-4][0-9]|5[0-5])|[01]?[0-9]{1,2})"), 
+            self.bannedUserEdit)
+        self.bannedUserEdit.setValidator(self.__bannedUserValidator)
+        
         # set initial values
         self.autostartCheckBox.setChecked(
             Preferences.getCooperation("AutoStartServer"))
@@ -35,6 +45,9 @@
             Preferences.getCooperation("MaxPortsToTry"))
         self.autoAcceptCheckBox.setChecked(
             Preferences.getCooperation("AutoAcceptConnections"))
+        
+        self.bannedUsersList.addItems(list(sorted(
+            Preferences.getCooperation("BannedUsers"))))
     
     def save(self):
         """
@@ -50,6 +63,49 @@
             self.serverPortSpin.value())
         Preferences.setCooperation("MaxPortsToTry", 
             self.portToTrySpin.value())
+        
+        bannedUsers = []
+        for row in range(self.bannedUsersList.count()):
+            bannedUsers.append(self.bannedUsersList.item(row).text())
+        Preferences.setCooperation("BannedUsers", bannedUsers)
+    
+    @pyqtSlot()
+    def on_bannedUsersList_itemSelectionChanged(self):
+        """
+        Private slot to react on changes of selected banned users.
+        """
+        self.deleteBannedUsersButton.setEnabled(
+            len(self.bannedUsersList.selectedItems()) > 0)
+    
+    @pyqtSlot(str)
+    def on_bannedUserEdit_textChanged(self, txt):
+        """
+        Private slot to handle the user entering a banned user.
+        
+        @param txt text entered by the user (string)
+        """
+        self.addBannedUserButton.setEnabled(
+            self.__bannedUserValidator.validate(txt, len(txt))[0] == \
+                QValidator.Acceptable)
+    
+    @pyqtSlot()
+    def on_deleteBannedUsersButton_clicked(self):
+        """
+        Private slot to remove the selected users from the list of 
+        banned users.
+        """
+        for itm in self.bannedUsersList.selectedItems():
+            row = self.bannedUsersList.row(itm)
+            itm = self.bannedUsersList.takeItem(row)
+            del itm
+    
+    @pyqtSlot()
+    def on_addBannedUserButton_clicked(self):
+        """
+        Private slot to add a user to the list of banned users.
+        """
+        self.bannedUsersList.addItem(self.bannedUserEdit.text())
+        self.bannedUserEdit.clear()
     
 def create(dlg):
     """
--- a/Preferences/ConfigurationPages/CooperationPage.ui	Wed Mar 31 12:52:59 2010 +0000
+++ b/Preferences/ConfigurationPages/CooperationPage.ui	Wed Mar 31 17:11:28 2010 +0000
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>508</width>
-    <height>442</height>
+    <height>540</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -161,17 +161,56 @@
     </widget>
    </item>
    <item>
-    <spacer name="verticalSpacer">
-     <property name="orientation">
-      <enum>Qt::Vertical</enum>
+    <widget class="QGroupBox" name="bannedUsersGroup">
+     <property name="title">
+      <string>Banned Users</string>
      </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>20</width>
-       <height>291</height>
-      </size>
-     </property>
-    </spacer>
+     <layout class="QGridLayout" name="gridLayout_2">
+      <item row="0" column="0" colspan="3">
+       <widget class="QListWidget" name="bannedUsersList">
+        <property name="selectionMode">
+         <enum>QAbstractItemView::ExtendedSelection</enum>
+        </property>
+        <property name="sortingEnabled">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QPushButton" name="deleteBannedUsersButton">
+        <property name="enabled">
+         <bool>false</bool>
+        </property>
+        <property name="toolTip">
+         <string>Delete the selected entries from the list of banned users</string>
+        </property>
+        <property name="text">
+         <string>Delete</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <widget class="QLineEdit" name="bannedUserEdit">
+        <property name="toolTip">
+         <string>Enter the user and host of the banned user</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="2">
+       <widget class="QPushButton" name="addBannedUserButton">
+        <property name="enabled">
+         <bool>false</bool>
+        </property>
+        <property name="toolTip">
+         <string>Add the user to the list of banned users</string>
+        </property>
+        <property name="text">
+         <string>Add</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
    </item>
   </layout>
  </widget>
@@ -180,6 +219,11 @@
   <tabstop>serverPortSpin</tabstop>
   <tabstop>otherPortsCheckBox</tabstop>
   <tabstop>portToTrySpin</tabstop>
+  <tabstop>autoAcceptCheckBox</tabstop>
+  <tabstop>bannedUsersList</tabstop>
+  <tabstop>deleteBannedUsersButton</tabstop>
+  <tabstop>bannedUserEdit</tabstop>
+  <tabstop>addBannedUserButton</tabstop>
  </tabstops>
  <resources/>
  <connections>
@@ -190,12 +234,12 @@
    <slot>setEnabled(bool)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>41</x>
-     <y>96</y>
+     <x>54</x>
+     <y>140</y>
     </hint>
     <hint type="destinationlabel">
-     <x>38</x>
-     <y>125</y>
+     <x>51</x>
+     <y>169</y>
     </hint>
    </hints>
   </connection>
@@ -206,12 +250,12 @@
    <slot>setEnabled(bool)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>129</x>
-     <y>102</y>
+     <x>142</x>
+     <y>140</y>
     </hint>
     <hint type="destinationlabel">
-     <x>129</x>
-     <y>123</y>
+     <x>161</x>
+     <y>169</y>
     </hint>
    </hints>
   </connection>
--- a/Preferences/__init__.py	Wed Mar 31 12:52:59 2010 +0000
+++ b/Preferences/__init__.py	Wed Mar 31 17:11:28 2010 +0000
@@ -201,6 +201,7 @@
         "TryOtherPorts" : True, 
         "MaxPortsToTry" : 100, 
         "AutoAcceptConnections" : False, 
+        "BannedUsers" : [], 
     }
     
     # defaults for the editor settings
@@ -815,7 +816,8 @@
     @param prefClass preferences class used as the storage area
     """
     prefClass.settings.setValue("General/Configured", True)
-    initPreferences()
+    prefClass.settings.sync()
+##    initPreferences()
     
 def exportPreferences(prefClass = Prefs):
     """
@@ -1175,6 +1177,9 @@
     elif key in ["ServerPort", "MaxPortsToTry"]:
         return int(prefClass.settings.value("Cooperation/" + key,
             prefClass.cooperationDefaults[key]))
+    elif key in ["BannedUsers"]:
+        return toList(prefClass.settings.value("Cooperation/" + key,
+            prefClass.cooperationDefaults[key]))
     else:
         return prefClass.settings.value("Cooperation/" + key, 
             prefClass.cooperationDefaults[key])
--- a/i18n/eric5_cs.ts	Wed Mar 31 12:52:59 2010 +0000
+++ b/i18n/eric5_cs.ts	Wed Mar 31 17:11:28 2010 +0000
@@ -1945,7 +1945,7 @@
 <context>
     <name>ChatWidget</name>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="48"/>
+        <location filename="Cooperation/ChatWidget.ui" line="51"/>
         <source>Chat</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1955,204 +1955,237 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="87"/>
+        <location filename="Cooperation/ChatWidget.ui" line="90"/>
         <source>Press to send the text above</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="90"/>
+        <location filename="Cooperation/ChatWidget.ui" line="93"/>
         <source>Send</source>
         <translation type="unfinished">Odeslat</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="196"/>
+        <location filename="Cooperation/ChatWidget.ui" line="199"/>
         <source>Connection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="204"/>
+        <location filename="Cooperation/ChatWidget.ui" line="207"/>
         <source>Host:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="297"/>
+        <location filename="Cooperation/ChatWidget.ui" line="300"/>
         <source>Port:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="279"/>
+        <location filename="Cooperation/ChatWidget.ui" line="282"/>
         <source>Shows the connection status</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="291"/>
+        <location filename="Cooperation/ChatWidget.ui" line="294"/>
         <source>Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="339"/>
+        <location filename="Cooperation/ChatWidget.ui" line="342"/>
         <source>Shows the status of the server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="313"/>
+        <location filename="Cooperation/ChatWidget.py" line="287"/>
         <source>Start Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="179"/>
+        <location filename="Cooperation/ChatWidget.py" line="153"/>
         <source>! Unknown command: {0}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="200"/>
+        <location filename="Cooperation/ChatWidget.py" line="174"/>
         <source>* {0} has joined.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="229"/>
+        <location filename="Cooperation/ChatWidget.py" line="203"/>
         <source>* {0} has left.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="321"/>
+        <location filename="Cooperation/ChatWidget.py" line="295"/>
         <source>Stop Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="326"/>
+        <location filename="Cooperation/ChatWidget.py" line="300"/>
         <source>! Server Error: {0}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="338"/>
+        <location filename="Cooperation/ChatWidget.py" line="312"/>
         <source>Disconnect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="342"/>
+        <location filename="Cooperation/ChatWidget.py" line="316"/>
         <source>Connect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="103"/>
+        <location filename="Cooperation/ChatWidget.ui" line="106"/>
         <source>Share Editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="125"/>
+        <location filename="Cooperation/ChatWidget.ui" line="128"/>
         <source>Press to toggle the shared status of the current editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="Cooperation/ChatWidget.ui" line="242"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="144"/>
+        <source>Press to start a shared edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="160"/>
+        <source>Press to end the edit and send the changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="173"/>
+        <source>Press to cancel the shared edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="488"/>
+        <source>Clear</source>
+        <translation type="unfinished">Vyčistit</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="493"/>
+        <source>Save</source>
+        <translation type="unfinished">Uložit</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="474"/>
+        <source>Copy</source>
+        <translation type="unfinished">Kopírovat</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>Save Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="532"/>
+        <source>Text Files (*.txt);;All Files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>Error saving Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="70"/>
+        <source>Enter the text to send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="307"/>
+        <source>Enter the server port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="80"/>
+        <source>Press to clear the message text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="220"/>
+        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="Cooperation/ChatWidget.ui" line="239"/>
-        <source>...</source>
-        <translation type="unfinished">...</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="141"/>
-        <source>Press to start a shared edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="157"/>
-        <source>Press to end the edit and send the changes</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="170"/>
-        <source>Press to cancel the shared edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="95"/>
-        <source>Clear</source>
-        <translation type="unfinished">Vyčistit</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="100"/>
-        <source>Save</source>
-        <translation type="unfinished">Uložit</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="81"/>
-        <source>Copy</source>
-        <translation type="unfinished">Kopírovat</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>Save Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="525"/>
-        <source>Text Files (*.txt);;All Files (*)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>Error saving Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="67"/>
-        <source>Enter the text to send</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="304"/>
-        <source>Enter the server port</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="77"/>
-        <source>Press to clear the message text</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="217"/>
-        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="236"/>
         <source>Press to clear the host</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="250"/>
+        <location filename="Cooperation/ChatWidget.ui" line="253"/>
         <source>Press to clear the hosts list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="77"/>
+        <location filename="Cooperation/ChatWidget.py" line="470"/>
         <source>Cut</source>
         <translation type="unfinished">Vyjmout</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="86"/>
+        <location filename="Cooperation/ChatWidget.py" line="479"/>
         <source>Cut all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="90"/>
+        <location filename="Cooperation/ChatWidget.py" line="483"/>
         <source>Copy all</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="606"/>
+        <source>Kick User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="610"/>
+        <source>Ban User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="614"/>
+        <source>Ban and Kick User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="642"/>
+        <source>* {0} has been kicked.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="657"/>
+        <source>* {0} has been banned.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="672"/>
+        <source>* {0} has been banned and kicked.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CodeMetricsDialog</name>
@@ -2992,20 +3025,25 @@
         <translation type="unfinished">neznámý</translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>New Connection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>&lt;p&gt;Accept connection from &lt;strong&gt;{0}@{1}&lt;/strong&gt;?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="405"/>
+        <location filename="Cooperation/Connection.py" line="417"/>
         <source>* Connection to {0}:{1} refused.</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Cooperation/Connection.py" line="184"/>
+        <source>* Connection attempted by banned user &apos;{0}&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CookieDetailsDialog</name>
@@ -3343,12 +3381,12 @@
 <context>
     <name>CooperationClient</name>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="68"/>
+        <location filename="Cooperation/CooperationClient.py" line="70"/>
         <source>unknown</source>
         <translation type="unfinished">neznámý</translation>
     </message>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="268"/>
+        <location filename="Cooperation/CooperationClient.py" line="273"/>
         <source>Illegal address: {0}:{1}
 </source>
         <translation type="unfinished"></translation>
@@ -3421,6 +3459,36 @@
         <source>Accept connections automatically</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="166"/>
+        <source>Banned Users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="185"/>
+        <source>Delete the selected entries from the list of banned users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="188"/>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="195"/>
+        <source>Enter the user and host of the banned user</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="205"/>
+        <source>Add the user to the list of banned users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="208"/>
+        <source>Add</source>
+        <translation type="unfinished">Přidat</translation>
+    </message>
 </context>
 <context>
     <name>CorbaPage</name>
@@ -20181,12 +20249,12 @@
 <context>
     <name>Preferences</name>
     <message>
-        <location filename="Preferences/__init__.py" line="826"/>
+        <location filename="Preferences/__init__.py" line="828"/>
         <source>Export Preferences</source>
         <translation>Předvolby exportu</translation>
     </message>
     <message>
-        <location filename="Preferences/__init__.py" line="845"/>
+        <location filename="Preferences/__init__.py" line="847"/>
         <source>Import Preferences</source>
         <translation>Předvolby importu</translation>
     </message>
Binary file i18n/eric5_de.qm has changed
--- a/i18n/eric5_de.ts	Wed Mar 31 12:52:59 2010 +0000
+++ b/i18n/eric5_de.ts	Wed Mar 31 17:11:28 2010 +0000
@@ -1810,7 +1810,7 @@
 <context>
     <name>ChatWidget</name>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="48"/>
+        <location filename="Cooperation/ChatWidget.ui" line="51"/>
         <source>Chat</source>
         <translation>Chat</translation>
     </message>
@@ -1820,208 +1820,241 @@
         <translation>Nutzer</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="87"/>
+        <location filename="Cooperation/ChatWidget.ui" line="90"/>
         <source>Press to send the text above</source>
         <translation>Drücken, um den obigen Text zu senden</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="90"/>
+        <location filename="Cooperation/ChatWidget.ui" line="93"/>
         <source>Send</source>
         <translation>Senden</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="196"/>
+        <location filename="Cooperation/ChatWidget.ui" line="199"/>
         <source>Connection</source>
         <translation>Verbindung</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="204"/>
+        <location filename="Cooperation/ChatWidget.ui" line="207"/>
         <source>Host:</source>
         <translation>Rechner:</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="297"/>
+        <location filename="Cooperation/ChatWidget.ui" line="300"/>
         <source>Port:</source>
         <translation>Port:</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="279"/>
+        <location filename="Cooperation/ChatWidget.ui" line="282"/>
         <source>Shows the connection status</source>
         <translation>Zeigt den Verbindungsstatus</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="291"/>
+        <location filename="Cooperation/ChatWidget.ui" line="294"/>
         <source>Server</source>
         <translation>Server</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="339"/>
+        <location filename="Cooperation/ChatWidget.ui" line="342"/>
         <source>Shows the status of the server</source>
         <translation>Zeigt den Status des Servers</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="313"/>
+        <location filename="Cooperation/ChatWidget.py" line="287"/>
         <source>Start Server</source>
         <translation>Server starten</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="179"/>
+        <location filename="Cooperation/ChatWidget.py" line="153"/>
         <source>! Unknown command: {0}
 </source>
         <translation>! Unbekannter Befehl: {0}
 </translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="200"/>
+        <location filename="Cooperation/ChatWidget.py" line="174"/>
         <source>* {0} has joined.
 </source>
         <translation>* {0} ist beigetreten.
 </translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="229"/>
+        <location filename="Cooperation/ChatWidget.py" line="203"/>
         <source>* {0} has left.
 </source>
         <translation>* {0} hat die Sitzung verlassen.
 </translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="321"/>
+        <location filename="Cooperation/ChatWidget.py" line="295"/>
         <source>Stop Server</source>
         <translation>Server anhalten</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="326"/>
+        <location filename="Cooperation/ChatWidget.py" line="300"/>
         <source>! Server Error: {0}
 </source>
         <translation>! Serverfehler: {0}
 </translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="338"/>
+        <location filename="Cooperation/ChatWidget.py" line="312"/>
         <source>Disconnect</source>
         <translation>Unterbrechen</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="342"/>
+        <location filename="Cooperation/ChatWidget.py" line="316"/>
         <source>Connect</source>
         <translation>Verbinden</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="103"/>
+        <location filename="Cooperation/ChatWidget.ui" line="106"/>
         <source>Share Editor</source>
         <translation>Verteilter Editor</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="125"/>
+        <location filename="Cooperation/ChatWidget.ui" line="128"/>
         <source>Press to toggle the shared status of the current editor</source>
         <translation>Drücken, um den Freigabestatus des aktuellen Editors umzuschalten</translation>
     </message>
     <message>
+        <location filename="Cooperation/ChatWidget.ui" line="242"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="144"/>
+        <source>Press to start a shared edit</source>
+        <translation>Drücken, um eine verteilte Änderungssitzung zu starten</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="160"/>
+        <source>Press to end the edit and send the changes</source>
+        <translation>Drücken, um eine verteilte Änderungssitzung zu beenden und die Änderungen zu senden</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="173"/>
+        <source>Press to cancel the shared edit</source>
+        <translation>Drücken, um eine verteilte Änderungssitzung abzubrechen</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="488"/>
+        <source>Clear</source>
+        <translation>Löschen</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="493"/>
+        <source>Save</source>
+        <translation>Speichern</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>Save Chat</source>
+        <translation>Chat speichern</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="532"/>
+        <source>Text Files (*.txt);;All Files (*)</source>
+        <translation>Text Dateien (*.txt);;Alle Dateien (*)</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>Error saving Chat</source>
+        <translation>Fehlr beim Speichern</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Der Inhalt des Chats konnte nicht nach &lt;b&gt;{0}&lt;/b&gt; geschrieben werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; existiert bereits.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="474"/>
+        <source>Copy</source>
+        <translation>Kopieren</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="70"/>
+        <source>Enter the text to send</source>
+        <translation>Gib den zu sendenden Text ein</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="307"/>
+        <source>Enter the server port</source>
+        <translation>Gib den Serverport ein</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="80"/>
+        <source>Press to clear the message text</source>
+        <translation>Drücken, um den Nachrichtentext zu löschen</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="220"/>
+        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
+        <translation>Gib den Host und den Port in der Form &quot;Host:Port&quot; für die Verbindung ein</translation>
+    </message>
+    <message>
         <location filename="Cooperation/ChatWidget.ui" line="239"/>
-        <source>...</source>
-        <translation>...</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="141"/>
-        <source>Press to start a shared edit</source>
-        <translation>Drücken, um eine verteilte Änderungssitzung zu starten</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="157"/>
-        <source>Press to end the edit and send the changes</source>
-        <translation>Drücken, um eine verteilte Änderungssitzung zu beenden und die Änderungen zu senden</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="170"/>
-        <source>Press to cancel the shared edit</source>
-        <translation>Drücken, um eine verteilte Änderungssitzung abzubrechen</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="95"/>
-        <source>Clear</source>
-        <translation>Löschen</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="100"/>
-        <source>Save</source>
-        <translation>Speichern</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>Save Chat</source>
-        <translation>Chat speichern</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="525"/>
-        <source>Text Files (*.txt);;All Files (*)</source>
-        <translation>Text Dateien (*.txt);;Alle Dateien (*)</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>Error saving Chat</source>
-        <translation>Fehlr beim Speichern</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Der Inhalt des Chats konnte nicht nach &lt;b&gt;{0}&lt;/b&gt; geschrieben werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; existiert bereits.&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="81"/>
-        <source>Copy</source>
-        <translation>Kopieren</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="67"/>
-        <source>Enter the text to send</source>
-        <translation>Gib den zu sendenden Text ein</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="304"/>
-        <source>Enter the server port</source>
-        <translation>Gib den Serverport ein</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="77"/>
-        <source>Press to clear the message text</source>
-        <translation>Drücken, um den Nachrichtentext zu löschen</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="217"/>
-        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
-        <translation>Gib den Host und den Port in der Form &quot;Host:Port&quot; für die Verbindung ein</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="236"/>
         <source>Press to clear the host</source>
         <translation>Drücken, um den Hosteintrag zu löschen</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="250"/>
+        <location filename="Cooperation/ChatWidget.ui" line="253"/>
         <source>Press to clear the hosts list</source>
         <translation>Drücken, um die Hostsliste zu löschen</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="77"/>
+        <location filename="Cooperation/ChatWidget.py" line="470"/>
         <source>Cut</source>
         <translation>Ausschneiden</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="86"/>
+        <location filename="Cooperation/ChatWidget.py" line="479"/>
         <source>Cut all</source>
         <translation>Alles ausschneiden</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="90"/>
+        <location filename="Cooperation/ChatWidget.py" line="483"/>
         <source>Copy all</source>
         <translation>Alles kopieren</translation>
     </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="606"/>
+        <source>Kick User</source>
+        <translation>Nutzer ausschließen</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="610"/>
+        <source>Ban User</source>
+        <translation>Nutzer bannen</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="614"/>
+        <source>Ban and Kick User</source>
+        <translation>Nutzer bannen und ausschließen</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="642"/>
+        <source>* {0} has been kicked.
+</source>
+        <translation>* {0} wurde ausgeschlossen.</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="657"/>
+        <source>* {0} has been banned.
+</source>
+        <translation>* {0} wurde gebannt.</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="672"/>
+        <source>* {0} has been banned and kicked.
+</source>
+        <translation>* {0} wurde gebannt und ausgeschlossen.</translation>
+    </message>
 </context>
 <context>
     <name>CodeMetricsDialog</name>
@@ -2812,20 +2845,25 @@
         <translation>unbekannt</translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>New Connection</source>
         <translation>Neue Verbindung</translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>&lt;p&gt;Accept connection from &lt;strong&gt;{0}@{1}&lt;/strong&gt;?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Verbindungswunsch von &lt;strong&gt;{0}@{1}&lt;/strong&gt; annehmen?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="405"/>
+        <location filename="Cooperation/Connection.py" line="417"/>
         <source>* Connection to {0}:{1} refused.</source>
         <translation>* Verbindung zu {0}:{1} abgelehnt.</translation>
     </message>
+    <message>
+        <location filename="Cooperation/Connection.py" line="184"/>
+        <source>* Connection attempted by banned user &apos;{0}&apos;.</source>
+        <translation>* Verbindungsversuch durch gebannten Nutzer &apos;{0}&apos;.</translation>
+    </message>
 </context>
 <context>
     <name>CookieDetailsDialog</name>
@@ -3163,12 +3201,12 @@
 <context>
     <name>CooperationClient</name>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="68"/>
+        <location filename="Cooperation/CooperationClient.py" line="70"/>
         <source>unknown</source>
         <translation>unbekannt</translation>
     </message>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="268"/>
+        <location filename="Cooperation/CooperationClient.py" line="273"/>
         <source>Illegal address: {0}:{1}
 </source>
         <translation>Ungültige Adresse: {0}:{1}
@@ -3242,6 +3280,36 @@
         <source>Accept connections automatically</source>
         <translation>Verbindungswünsche automatisch annehmen</translation>
     </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="166"/>
+        <source>Banned Users</source>
+        <translation>Gebannte Nutzer</translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="185"/>
+        <source>Delete the selected entries from the list of banned users</source>
+        <translation>Löscht die ausgewählten Einträge aus der Liste gebannter Nutzer</translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="188"/>
+        <source>Delete</source>
+        <translation>Löschen</translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="195"/>
+        <source>Enter the user and host of the banned user</source>
+        <translation>Gib den Nutzer und den Host des gebannten Nutzers ein</translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="205"/>
+        <source>Add the user to the list of banned users</source>
+        <translation>Füge den Nutzer zur Liste gebannter Nutzer hinzu</translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="208"/>
+        <source>Add</source>
+        <translation>Hinzufügen</translation>
+    </message>
 </context>
 <context>
     <name>CorbaPage</name>
@@ -18689,12 +18757,12 @@
 <context>
     <name>Preferences</name>
     <message>
-        <location filename="Preferences/__init__.py" line="826"/>
+        <location filename="Preferences/__init__.py" line="828"/>
         <source>Export Preferences</source>
         <translation>Konfiguration exportieren</translation>
     </message>
     <message>
-        <location filename="Preferences/__init__.py" line="845"/>
+        <location filename="Preferences/__init__.py" line="847"/>
         <source>Import Preferences</source>
         <translation>Konfiguration importieren</translation>
     </message>
--- a/i18n/eric5_es.ts	Wed Mar 31 12:52:59 2010 +0000
+++ b/i18n/eric5_es.ts	Wed Mar 31 17:11:28 2010 +0000
@@ -1806,7 +1806,7 @@
 <context>
     <name>ChatWidget</name>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="48"/>
+        <location filename="Cooperation/ChatWidget.ui" line="51"/>
         <source>Chat</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1816,204 +1816,237 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="87"/>
+        <location filename="Cooperation/ChatWidget.ui" line="90"/>
         <source>Press to send the text above</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="90"/>
+        <location filename="Cooperation/ChatWidget.ui" line="93"/>
         <source>Send</source>
         <translation type="unfinished">Enviar</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="196"/>
+        <location filename="Cooperation/ChatWidget.ui" line="199"/>
         <source>Connection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="204"/>
+        <location filename="Cooperation/ChatWidget.ui" line="207"/>
         <source>Host:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="297"/>
+        <location filename="Cooperation/ChatWidget.ui" line="300"/>
         <source>Port:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="279"/>
+        <location filename="Cooperation/ChatWidget.ui" line="282"/>
         <source>Shows the connection status</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="291"/>
+        <location filename="Cooperation/ChatWidget.ui" line="294"/>
         <source>Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="339"/>
+        <location filename="Cooperation/ChatWidget.ui" line="342"/>
         <source>Shows the status of the server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="313"/>
+        <location filename="Cooperation/ChatWidget.py" line="287"/>
         <source>Start Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="179"/>
+        <location filename="Cooperation/ChatWidget.py" line="153"/>
         <source>! Unknown command: {0}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="200"/>
+        <location filename="Cooperation/ChatWidget.py" line="174"/>
         <source>* {0} has joined.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="229"/>
+        <location filename="Cooperation/ChatWidget.py" line="203"/>
         <source>* {0} has left.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="321"/>
+        <location filename="Cooperation/ChatWidget.py" line="295"/>
         <source>Stop Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="326"/>
+        <location filename="Cooperation/ChatWidget.py" line="300"/>
         <source>! Server Error: {0}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="338"/>
+        <location filename="Cooperation/ChatWidget.py" line="312"/>
         <source>Disconnect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="342"/>
+        <location filename="Cooperation/ChatWidget.py" line="316"/>
         <source>Connect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="103"/>
+        <location filename="Cooperation/ChatWidget.ui" line="106"/>
         <source>Share Editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="125"/>
+        <location filename="Cooperation/ChatWidget.ui" line="128"/>
         <source>Press to toggle the shared status of the current editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="Cooperation/ChatWidget.ui" line="242"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="144"/>
+        <source>Press to start a shared edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="160"/>
+        <source>Press to end the edit and send the changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="173"/>
+        <source>Press to cancel the shared edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="488"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="493"/>
+        <source>Save</source>
+        <translation type="unfinished">Guardar</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="474"/>
+        <source>Copy</source>
+        <translation type="unfinished">Copiar</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>Save Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="532"/>
+        <source>Text Files (*.txt);;All Files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
+        <translation type="unfinished">&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; ya existe.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>Error saving Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="70"/>
+        <source>Enter the text to send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="307"/>
+        <source>Enter the server port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="80"/>
+        <source>Press to clear the message text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="220"/>
+        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="Cooperation/ChatWidget.ui" line="239"/>
-        <source>...</source>
-        <translation type="unfinished">...</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="141"/>
-        <source>Press to start a shared edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="157"/>
-        <source>Press to end the edit and send the changes</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="170"/>
-        <source>Press to cancel the shared edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="95"/>
-        <source>Clear</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="100"/>
-        <source>Save</source>
-        <translation type="unfinished">Guardar</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="81"/>
-        <source>Copy</source>
-        <translation type="unfinished">Copiar</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>Save Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="525"/>
-        <source>Text Files (*.txt);;All Files (*)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
-        <translation type="unfinished">&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; ya existe.&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>Error saving Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="67"/>
-        <source>Enter the text to send</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="304"/>
-        <source>Enter the server port</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="77"/>
-        <source>Press to clear the message text</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="217"/>
-        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="236"/>
         <source>Press to clear the host</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="250"/>
+        <location filename="Cooperation/ChatWidget.ui" line="253"/>
         <source>Press to clear the hosts list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="77"/>
+        <location filename="Cooperation/ChatWidget.py" line="470"/>
         <source>Cut</source>
         <translation type="unfinished">Cortar</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="86"/>
+        <location filename="Cooperation/ChatWidget.py" line="479"/>
         <source>Cut all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="90"/>
+        <location filename="Cooperation/ChatWidget.py" line="483"/>
         <source>Copy all</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="606"/>
+        <source>Kick User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="610"/>
+        <source>Ban User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="614"/>
+        <source>Ban and Kick User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="642"/>
+        <source>* {0} has been kicked.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="657"/>
+        <source>* {0} has been banned.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="672"/>
+        <source>* {0} has been banned and kicked.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CodeMetricsDialog</name>
@@ -2804,20 +2837,25 @@
         <translation type="unfinished">desconocido</translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>New Connection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>&lt;p&gt;Accept connection from &lt;strong&gt;{0}@{1}&lt;/strong&gt;?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="405"/>
+        <location filename="Cooperation/Connection.py" line="417"/>
         <source>* Connection to {0}:{1} refused.</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Cooperation/Connection.py" line="184"/>
+        <source>* Connection attempted by banned user &apos;{0}&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CookieDetailsDialog</name>
@@ -3155,12 +3193,12 @@
 <context>
     <name>CooperationClient</name>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="68"/>
+        <location filename="Cooperation/CooperationClient.py" line="70"/>
         <source>unknown</source>
         <translation type="unfinished">desconocido</translation>
     </message>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="268"/>
+        <location filename="Cooperation/CooperationClient.py" line="273"/>
         <source>Illegal address: {0}:{1}
 </source>
         <translation type="unfinished"></translation>
@@ -3233,6 +3271,36 @@
         <source>Accept connections automatically</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="166"/>
+        <source>Banned Users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="185"/>
+        <source>Delete the selected entries from the list of banned users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="188"/>
+        <source>Delete</source>
+        <translation type="unfinished">Borrar</translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="195"/>
+        <source>Enter the user and host of the banned user</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="205"/>
+        <source>Add the user to the list of banned users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="208"/>
+        <source>Add</source>
+        <translation type="unfinished">Añadir</translation>
+    </message>
 </context>
 <context>
     <name>CorbaPage</name>
@@ -18699,12 +18767,12 @@
 <context>
     <name>Preferences</name>
     <message>
-        <location filename="Preferences/__init__.py" line="826"/>
+        <location filename="Preferences/__init__.py" line="828"/>
         <source>Export Preferences</source>
         <translation>Exportar Preferencias</translation>
     </message>
     <message>
-        <location filename="Preferences/__init__.py" line="845"/>
+        <location filename="Preferences/__init__.py" line="847"/>
         <source>Import Preferences</source>
         <translation>Importar Preferencias</translation>
     </message>
--- a/i18n/eric5_fr.ts	Wed Mar 31 12:52:59 2010 +0000
+++ b/i18n/eric5_fr.ts	Wed Mar 31 17:11:28 2010 +0000
@@ -1995,7 +1995,7 @@
 <context>
     <name>ChatWidget</name>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="48"/>
+        <location filename="Cooperation/ChatWidget.ui" line="51"/>
         <source>Chat</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2005,204 +2005,237 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="87"/>
+        <location filename="Cooperation/ChatWidget.ui" line="90"/>
         <source>Press to send the text above</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="90"/>
+        <location filename="Cooperation/ChatWidget.ui" line="93"/>
         <source>Send</source>
         <translation type="unfinished">Envoyer</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="196"/>
+        <location filename="Cooperation/ChatWidget.ui" line="199"/>
         <source>Connection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="204"/>
+        <location filename="Cooperation/ChatWidget.ui" line="207"/>
         <source>Host:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="297"/>
+        <location filename="Cooperation/ChatWidget.ui" line="300"/>
         <source>Port:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="279"/>
+        <location filename="Cooperation/ChatWidget.ui" line="282"/>
         <source>Shows the connection status</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="291"/>
+        <location filename="Cooperation/ChatWidget.ui" line="294"/>
         <source>Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="339"/>
+        <location filename="Cooperation/ChatWidget.ui" line="342"/>
         <source>Shows the status of the server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="313"/>
+        <location filename="Cooperation/ChatWidget.py" line="287"/>
         <source>Start Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="179"/>
+        <location filename="Cooperation/ChatWidget.py" line="153"/>
         <source>! Unknown command: {0}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="200"/>
+        <location filename="Cooperation/ChatWidget.py" line="174"/>
         <source>* {0} has joined.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="229"/>
+        <location filename="Cooperation/ChatWidget.py" line="203"/>
         <source>* {0} has left.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="321"/>
+        <location filename="Cooperation/ChatWidget.py" line="295"/>
         <source>Stop Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="326"/>
+        <location filename="Cooperation/ChatWidget.py" line="300"/>
         <source>! Server Error: {0}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="338"/>
+        <location filename="Cooperation/ChatWidget.py" line="312"/>
         <source>Disconnect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="342"/>
+        <location filename="Cooperation/ChatWidget.py" line="316"/>
         <source>Connect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="103"/>
+        <location filename="Cooperation/ChatWidget.ui" line="106"/>
         <source>Share Editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="125"/>
+        <location filename="Cooperation/ChatWidget.ui" line="128"/>
         <source>Press to toggle the shared status of the current editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="Cooperation/ChatWidget.ui" line="242"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="144"/>
+        <source>Press to start a shared edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="160"/>
+        <source>Press to end the edit and send the changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="173"/>
+        <source>Press to cancel the shared edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="488"/>
+        <source>Clear</source>
+        <translation type="unfinished">Effacer</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="493"/>
+        <source>Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="474"/>
+        <source>Copy</source>
+        <translation type="unfinished">Copier</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>Save Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="532"/>
+        <source>Text Files (*.txt);;All Files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>Error saving Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="70"/>
+        <source>Enter the text to send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="307"/>
+        <source>Enter the server port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="80"/>
+        <source>Press to clear the message text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="220"/>
+        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="Cooperation/ChatWidget.ui" line="239"/>
-        <source>...</source>
-        <translation type="unfinished">...</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="141"/>
-        <source>Press to start a shared edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="157"/>
-        <source>Press to end the edit and send the changes</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="170"/>
-        <source>Press to cancel the shared edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="95"/>
-        <source>Clear</source>
-        <translation type="unfinished">Effacer</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="100"/>
-        <source>Save</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="81"/>
-        <source>Copy</source>
-        <translation type="unfinished">Copier</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>Save Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="525"/>
-        <source>Text Files (*.txt);;All Files (*)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>Error saving Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="67"/>
-        <source>Enter the text to send</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="304"/>
-        <source>Enter the server port</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="77"/>
-        <source>Press to clear the message text</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="217"/>
-        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="236"/>
         <source>Press to clear the host</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="250"/>
+        <location filename="Cooperation/ChatWidget.ui" line="253"/>
         <source>Press to clear the hosts list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="77"/>
+        <location filename="Cooperation/ChatWidget.py" line="470"/>
         <source>Cut</source>
         <translation type="unfinished">Couper</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="86"/>
+        <location filename="Cooperation/ChatWidget.py" line="479"/>
         <source>Cut all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="90"/>
+        <location filename="Cooperation/ChatWidget.py" line="483"/>
         <source>Copy all</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="606"/>
+        <source>Kick User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="610"/>
+        <source>Ban User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="614"/>
+        <source>Ban and Kick User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="642"/>
+        <source>* {0} has been kicked.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="657"/>
+        <source>* {0} has been banned.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="672"/>
+        <source>* {0} has been banned and kicked.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CodeMetricsDialog</name>
@@ -3043,20 +3076,25 @@
         <translation type="unfinished">inconnu</translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>New Connection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>&lt;p&gt;Accept connection from &lt;strong&gt;{0}@{1}&lt;/strong&gt;?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="405"/>
+        <location filename="Cooperation/Connection.py" line="417"/>
         <source>* Connection to {0}:{1} refused.</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Cooperation/Connection.py" line="184"/>
+        <source>* Connection attempted by banned user &apos;{0}&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CookieDetailsDialog</name>
@@ -3394,12 +3432,12 @@
 <context>
     <name>CooperationClient</name>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="68"/>
+        <location filename="Cooperation/CooperationClient.py" line="70"/>
         <source>unknown</source>
         <translation type="unfinished">inconnu</translation>
     </message>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="268"/>
+        <location filename="Cooperation/CooperationClient.py" line="273"/>
         <source>Illegal address: {0}:{1}
 </source>
         <translation type="unfinished"></translation>
@@ -3472,6 +3510,36 @@
         <source>Accept connections automatically</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="166"/>
+        <source>Banned Users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="185"/>
+        <source>Delete the selected entries from the list of banned users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="188"/>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="195"/>
+        <source>Enter the user and host of the banned user</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="205"/>
+        <source>Add the user to the list of banned users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="208"/>
+        <source>Add</source>
+        <translation type="unfinished">Ajouter</translation>
+    </message>
 </context>
 <context>
     <name>CorbaPage</name>
@@ -20506,12 +20574,12 @@
 <context>
     <name>Preferences</name>
     <message>
-        <location filename="Preferences/__init__.py" line="826"/>
+        <location filename="Preferences/__init__.py" line="828"/>
         <source>Export Preferences</source>
         <translation>Export des préférences</translation>
     </message>
     <message>
-        <location filename="Preferences/__init__.py" line="845"/>
+        <location filename="Preferences/__init__.py" line="847"/>
         <source>Import Preferences</source>
         <translation>Import des préférences</translation>
     </message>
--- a/i18n/eric5_it.ts	Wed Mar 31 12:52:59 2010 +0000
+++ b/i18n/eric5_it.ts	Wed Mar 31 17:11:28 2010 +0000
@@ -1950,7 +1950,7 @@
 <context>
     <name>ChatWidget</name>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="48"/>
+        <location filename="Cooperation/ChatWidget.ui" line="51"/>
         <source>Chat</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1960,204 +1960,237 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="87"/>
+        <location filename="Cooperation/ChatWidget.ui" line="90"/>
         <source>Press to send the text above</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="90"/>
+        <location filename="Cooperation/ChatWidget.ui" line="93"/>
         <source>Send</source>
         <translation type="unfinished">Spedisci</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="196"/>
+        <location filename="Cooperation/ChatWidget.ui" line="199"/>
         <source>Connection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="204"/>
+        <location filename="Cooperation/ChatWidget.ui" line="207"/>
         <source>Host:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="297"/>
+        <location filename="Cooperation/ChatWidget.ui" line="300"/>
         <source>Port:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="279"/>
+        <location filename="Cooperation/ChatWidget.ui" line="282"/>
         <source>Shows the connection status</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="291"/>
+        <location filename="Cooperation/ChatWidget.ui" line="294"/>
         <source>Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="339"/>
+        <location filename="Cooperation/ChatWidget.ui" line="342"/>
         <source>Shows the status of the server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="313"/>
+        <location filename="Cooperation/ChatWidget.py" line="287"/>
         <source>Start Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="179"/>
+        <location filename="Cooperation/ChatWidget.py" line="153"/>
         <source>! Unknown command: {0}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="200"/>
+        <location filename="Cooperation/ChatWidget.py" line="174"/>
         <source>* {0} has joined.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="229"/>
+        <location filename="Cooperation/ChatWidget.py" line="203"/>
         <source>* {0} has left.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="321"/>
+        <location filename="Cooperation/ChatWidget.py" line="295"/>
         <source>Stop Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="326"/>
+        <location filename="Cooperation/ChatWidget.py" line="300"/>
         <source>! Server Error: {0}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="338"/>
+        <location filename="Cooperation/ChatWidget.py" line="312"/>
         <source>Disconnect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="342"/>
+        <location filename="Cooperation/ChatWidget.py" line="316"/>
         <source>Connect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="103"/>
+        <location filename="Cooperation/ChatWidget.ui" line="106"/>
         <source>Share Editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="125"/>
+        <location filename="Cooperation/ChatWidget.ui" line="128"/>
         <source>Press to toggle the shared status of the current editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="Cooperation/ChatWidget.ui" line="242"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="144"/>
+        <source>Press to start a shared edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="160"/>
+        <source>Press to end the edit and send the changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="173"/>
+        <source>Press to cancel the shared edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="488"/>
+        <source>Clear</source>
+        <translation type="unfinished">Pulisci</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="493"/>
+        <source>Save</source>
+        <translation type="unfinished">Salva</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="474"/>
+        <source>Copy</source>
+        <translation type="unfinished">Copia</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>Save Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="532"/>
+        <source>Text Files (*.txt);;All Files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>Error saving Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="70"/>
+        <source>Enter the text to send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="307"/>
+        <source>Enter the server port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="80"/>
+        <source>Press to clear the message text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="220"/>
+        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="Cooperation/ChatWidget.ui" line="239"/>
-        <source>...</source>
-        <translation type="unfinished">...</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="141"/>
-        <source>Press to start a shared edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="157"/>
-        <source>Press to end the edit and send the changes</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="170"/>
-        <source>Press to cancel the shared edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="95"/>
-        <source>Clear</source>
-        <translation type="unfinished">Pulisci</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="100"/>
-        <source>Save</source>
-        <translation type="unfinished">Salva</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="81"/>
-        <source>Copy</source>
-        <translation type="unfinished">Copia</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>Save Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="525"/>
-        <source>Text Files (*.txt);;All Files (*)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>Error saving Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="67"/>
-        <source>Enter the text to send</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="304"/>
-        <source>Enter the server port</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="77"/>
-        <source>Press to clear the message text</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="217"/>
-        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="236"/>
         <source>Press to clear the host</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="250"/>
+        <location filename="Cooperation/ChatWidget.ui" line="253"/>
         <source>Press to clear the hosts list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="77"/>
+        <location filename="Cooperation/ChatWidget.py" line="470"/>
         <source>Cut</source>
         <translation type="unfinished">Taglia</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="86"/>
+        <location filename="Cooperation/ChatWidget.py" line="479"/>
         <source>Cut all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="90"/>
+        <location filename="Cooperation/ChatWidget.py" line="483"/>
         <source>Copy all</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="606"/>
+        <source>Kick User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="610"/>
+        <source>Ban User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="614"/>
+        <source>Ban and Kick User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="642"/>
+        <source>* {0} has been kicked.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="657"/>
+        <source>* {0} has been banned.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="672"/>
+        <source>* {0} has been banned and kicked.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CodeMetricsDialog</name>
@@ -2998,20 +3031,25 @@
         <translation type="unfinished">sconosciuto</translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>New Connection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>&lt;p&gt;Accept connection from &lt;strong&gt;{0}@{1}&lt;/strong&gt;?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="405"/>
+        <location filename="Cooperation/Connection.py" line="417"/>
         <source>* Connection to {0}:{1} refused.</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Cooperation/Connection.py" line="184"/>
+        <source>* Connection attempted by banned user &apos;{0}&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CookieDetailsDialog</name>
@@ -3349,12 +3387,12 @@
 <context>
     <name>CooperationClient</name>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="68"/>
+        <location filename="Cooperation/CooperationClient.py" line="70"/>
         <source>unknown</source>
         <translation type="unfinished">sconosciuto</translation>
     </message>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="268"/>
+        <location filename="Cooperation/CooperationClient.py" line="273"/>
         <source>Illegal address: {0}:{1}
 </source>
         <translation type="unfinished"></translation>
@@ -3427,6 +3465,36 @@
         <source>Accept connections automatically</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="166"/>
+        <source>Banned Users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="185"/>
+        <source>Delete the selected entries from the list of banned users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="188"/>
+        <source>Delete</source>
+        <translation type="unfinished">Cancella</translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="195"/>
+        <source>Enter the user and host of the banned user</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="205"/>
+        <source>Add the user to the list of banned users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="208"/>
+        <source>Add</source>
+        <translation type="unfinished">Aggiungi</translation>
+    </message>
 </context>
 <context>
     <name>CorbaPage</name>
@@ -20241,12 +20309,12 @@
 <context>
     <name>Preferences</name>
     <message>
-        <location filename="Preferences/__init__.py" line="826"/>
+        <location filename="Preferences/__init__.py" line="828"/>
         <source>Export Preferences</source>
         <translation>Esporta Preferenze</translation>
     </message>
     <message>
-        <location filename="Preferences/__init__.py" line="845"/>
+        <location filename="Preferences/__init__.py" line="847"/>
         <source>Import Preferences</source>
         <translation>Importa Preferenze</translation>
     </message>
--- a/i18n/eric5_ru.ts	Wed Mar 31 12:52:59 2010 +0000
+++ b/i18n/eric5_ru.ts	Wed Mar 31 17:11:28 2010 +0000
@@ -1955,7 +1955,7 @@
 <context>
     <name>ChatWidget</name>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="48"/>
+        <location filename="Cooperation/ChatWidget.ui" line="51"/>
         <source>Chat</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1965,204 +1965,237 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="87"/>
+        <location filename="Cooperation/ChatWidget.ui" line="90"/>
         <source>Press to send the text above</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="90"/>
+        <location filename="Cooperation/ChatWidget.ui" line="93"/>
         <source>Send</source>
         <translation type="unfinished">Отправить</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="196"/>
+        <location filename="Cooperation/ChatWidget.ui" line="199"/>
         <source>Connection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="204"/>
+        <location filename="Cooperation/ChatWidget.ui" line="207"/>
         <source>Host:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="297"/>
+        <location filename="Cooperation/ChatWidget.ui" line="300"/>
         <source>Port:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="279"/>
+        <location filename="Cooperation/ChatWidget.ui" line="282"/>
         <source>Shows the connection status</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="291"/>
+        <location filename="Cooperation/ChatWidget.ui" line="294"/>
         <source>Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="339"/>
+        <location filename="Cooperation/ChatWidget.ui" line="342"/>
         <source>Shows the status of the server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="313"/>
+        <location filename="Cooperation/ChatWidget.py" line="287"/>
         <source>Start Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="179"/>
+        <location filename="Cooperation/ChatWidget.py" line="153"/>
         <source>! Unknown command: {0}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="200"/>
+        <location filename="Cooperation/ChatWidget.py" line="174"/>
         <source>* {0} has joined.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="229"/>
+        <location filename="Cooperation/ChatWidget.py" line="203"/>
         <source>* {0} has left.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="321"/>
+        <location filename="Cooperation/ChatWidget.py" line="295"/>
         <source>Stop Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="326"/>
+        <location filename="Cooperation/ChatWidget.py" line="300"/>
         <source>! Server Error: {0}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="338"/>
+        <location filename="Cooperation/ChatWidget.py" line="312"/>
         <source>Disconnect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="342"/>
+        <location filename="Cooperation/ChatWidget.py" line="316"/>
         <source>Connect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="103"/>
+        <location filename="Cooperation/ChatWidget.ui" line="106"/>
         <source>Share Editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="125"/>
+        <location filename="Cooperation/ChatWidget.ui" line="128"/>
         <source>Press to toggle the shared status of the current editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="Cooperation/ChatWidget.ui" line="242"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="144"/>
+        <source>Press to start a shared edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="160"/>
+        <source>Press to end the edit and send the changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="173"/>
+        <source>Press to cancel the shared edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="488"/>
+        <source>Clear</source>
+        <translation type="unfinished">Очистить</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="493"/>
+        <source>Save</source>
+        <translation type="unfinished">Сохранить</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="474"/>
+        <source>Copy</source>
+        <translation type="unfinished">Копировать</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>Save Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="532"/>
+        <source>Text Files (*.txt);;All Files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>Error saving Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="70"/>
+        <source>Enter the text to send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="307"/>
+        <source>Enter the server port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="80"/>
+        <source>Press to clear the message text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="220"/>
+        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="Cooperation/ChatWidget.ui" line="239"/>
-        <source>...</source>
-        <translation type="unfinished">...</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="141"/>
-        <source>Press to start a shared edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="157"/>
-        <source>Press to end the edit and send the changes</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="170"/>
-        <source>Press to cancel the shared edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="95"/>
-        <source>Clear</source>
-        <translation type="unfinished">Очистить</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="100"/>
-        <source>Save</source>
-        <translation type="unfinished">Сохранить</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="81"/>
-        <source>Copy</source>
-        <translation type="unfinished">Копировать</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>Save Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="525"/>
-        <source>Text Files (*.txt);;All Files (*)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>Error saving Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="67"/>
-        <source>Enter the text to send</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="304"/>
-        <source>Enter the server port</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="77"/>
-        <source>Press to clear the message text</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="217"/>
-        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="236"/>
         <source>Press to clear the host</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="250"/>
+        <location filename="Cooperation/ChatWidget.ui" line="253"/>
         <source>Press to clear the hosts list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="77"/>
+        <location filename="Cooperation/ChatWidget.py" line="470"/>
         <source>Cut</source>
         <translation type="unfinished">Вырезать</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="86"/>
+        <location filename="Cooperation/ChatWidget.py" line="479"/>
         <source>Cut all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="90"/>
+        <location filename="Cooperation/ChatWidget.py" line="483"/>
         <source>Copy all</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="606"/>
+        <source>Kick User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="610"/>
+        <source>Ban User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="614"/>
+        <source>Ban and Kick User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="642"/>
+        <source>* {0} has been kicked.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="657"/>
+        <source>* {0} has been banned.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="672"/>
+        <source>* {0} has been banned and kicked.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CodeMetricsDialog</name>
@@ -3004,20 +3037,25 @@
         <translation type="unfinished">неизвестный</translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>New Connection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>&lt;p&gt;Accept connection from &lt;strong&gt;{0}@{1}&lt;/strong&gt;?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="405"/>
+        <location filename="Cooperation/Connection.py" line="417"/>
         <source>* Connection to {0}:{1} refused.</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Cooperation/Connection.py" line="184"/>
+        <source>* Connection attempted by banned user &apos;{0}&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CookieDetailsDialog</name>
@@ -3355,12 +3393,12 @@
 <context>
     <name>CooperationClient</name>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="68"/>
+        <location filename="Cooperation/CooperationClient.py" line="70"/>
         <source>unknown</source>
         <translation type="unfinished">неизвестный</translation>
     </message>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="268"/>
+        <location filename="Cooperation/CooperationClient.py" line="273"/>
         <source>Illegal address: {0}:{1}
 </source>
         <translation type="unfinished"></translation>
@@ -3433,6 +3471,36 @@
         <source>Accept connections automatically</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="166"/>
+        <source>Banned Users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="185"/>
+        <source>Delete the selected entries from the list of banned users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="188"/>
+        <source>Delete</source>
+        <translation type="unfinished">Удалить</translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="195"/>
+        <source>Enter the user and host of the banned user</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="205"/>
+        <source>Add the user to the list of banned users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="208"/>
+        <source>Add</source>
+        <translation type="unfinished">Добавить</translation>
+    </message>
 </context>
 <context>
     <name>CorbaPage</name>
@@ -20304,12 +20372,12 @@
 <context>
     <name>Preferences</name>
     <message>
-        <location filename="Preferences/__init__.py" line="826"/>
+        <location filename="Preferences/__init__.py" line="828"/>
         <source>Export Preferences</source>
         <translation>Экспорт предпочтений</translation>
     </message>
     <message>
-        <location filename="Preferences/__init__.py" line="845"/>
+        <location filename="Preferences/__init__.py" line="847"/>
         <source>Import Preferences</source>
         <translation>Импорт предпочтений</translation>
     </message>
--- a/i18n/eric5_tr.ts	Wed Mar 31 12:52:59 2010 +0000
+++ b/i18n/eric5_tr.ts	Wed Mar 31 17:11:28 2010 +0000
@@ -1986,7 +1986,7 @@
 <context>
     <name>ChatWidget</name>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="48"/>
+        <location filename="Cooperation/ChatWidget.ui" line="51"/>
         <source>Chat</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1996,204 +1996,237 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="87"/>
+        <location filename="Cooperation/ChatWidget.ui" line="90"/>
         <source>Press to send the text above</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="90"/>
+        <location filename="Cooperation/ChatWidget.ui" line="93"/>
         <source>Send</source>
         <translation type="unfinished">Gönder</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="196"/>
+        <location filename="Cooperation/ChatWidget.ui" line="199"/>
         <source>Connection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="204"/>
+        <location filename="Cooperation/ChatWidget.ui" line="207"/>
         <source>Host:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="297"/>
+        <location filename="Cooperation/ChatWidget.ui" line="300"/>
         <source>Port:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="279"/>
+        <location filename="Cooperation/ChatWidget.ui" line="282"/>
         <source>Shows the connection status</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="291"/>
+        <location filename="Cooperation/ChatWidget.ui" line="294"/>
         <source>Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="339"/>
+        <location filename="Cooperation/ChatWidget.ui" line="342"/>
         <source>Shows the status of the server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="313"/>
+        <location filename="Cooperation/ChatWidget.py" line="287"/>
         <source>Start Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="179"/>
+        <location filename="Cooperation/ChatWidget.py" line="153"/>
         <source>! Unknown command: {0}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="200"/>
+        <location filename="Cooperation/ChatWidget.py" line="174"/>
         <source>* {0} has joined.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="229"/>
+        <location filename="Cooperation/ChatWidget.py" line="203"/>
         <source>* {0} has left.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="321"/>
+        <location filename="Cooperation/ChatWidget.py" line="295"/>
         <source>Stop Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="326"/>
+        <location filename="Cooperation/ChatWidget.py" line="300"/>
         <source>! Server Error: {0}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="338"/>
+        <location filename="Cooperation/ChatWidget.py" line="312"/>
         <source>Disconnect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="342"/>
+        <location filename="Cooperation/ChatWidget.py" line="316"/>
         <source>Connect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="103"/>
+        <location filename="Cooperation/ChatWidget.ui" line="106"/>
         <source>Share Editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="125"/>
+        <location filename="Cooperation/ChatWidget.ui" line="128"/>
         <source>Press to toggle the shared status of the current editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="Cooperation/ChatWidget.ui" line="242"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="144"/>
+        <source>Press to start a shared edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="160"/>
+        <source>Press to end the edit and send the changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="173"/>
+        <source>Press to cancel the shared edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="488"/>
+        <source>Clear</source>
+        <translation type="unfinished">Temizle</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="493"/>
+        <source>Save</source>
+        <translation type="unfinished">Kaydet</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="474"/>
+        <source>Copy</source>
+        <translation type="unfinished">Kopyala</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>Save Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="532"/>
+        <source>Text Files (*.txt);;All Files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>Error saving Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="70"/>
+        <source>Enter the text to send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="307"/>
+        <source>Enter the server port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="80"/>
+        <source>Press to clear the message text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="220"/>
+        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="Cooperation/ChatWidget.ui" line="239"/>
-        <source>...</source>
-        <translation type="unfinished">...</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="141"/>
-        <source>Press to start a shared edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="157"/>
-        <source>Press to end the edit and send the changes</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="170"/>
-        <source>Press to cancel the shared edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="95"/>
-        <source>Clear</source>
-        <translation type="unfinished">Temizle</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="100"/>
-        <source>Save</source>
-        <translation type="unfinished">Kaydet</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="81"/>
-        <source>Copy</source>
-        <translation type="unfinished">Kopyala</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>Save Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="525"/>
-        <source>Text Files (*.txt);;All Files (*)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>Error saving Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="67"/>
-        <source>Enter the text to send</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="304"/>
-        <source>Enter the server port</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="77"/>
-        <source>Press to clear the message text</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="217"/>
-        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="236"/>
         <source>Press to clear the host</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="250"/>
+        <location filename="Cooperation/ChatWidget.ui" line="253"/>
         <source>Press to clear the hosts list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="77"/>
+        <location filename="Cooperation/ChatWidget.py" line="470"/>
         <source>Cut</source>
         <translation type="unfinished">Kes</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="86"/>
+        <location filename="Cooperation/ChatWidget.py" line="479"/>
         <source>Cut all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="90"/>
+        <location filename="Cooperation/ChatWidget.py" line="483"/>
         <source>Copy all</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="606"/>
+        <source>Kick User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="610"/>
+        <source>Ban User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="614"/>
+        <source>Ban and Kick User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="642"/>
+        <source>* {0} has been kicked.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="657"/>
+        <source>* {0} has been banned.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="672"/>
+        <source>* {0} has been banned and kicked.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CodeMetricsDialog</name>
@@ -3033,20 +3066,25 @@
         <translation type="unfinished">bilinmeyen</translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>New Connection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>&lt;p&gt;Accept connection from &lt;strong&gt;{0}@{1}&lt;/strong&gt;?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="405"/>
+        <location filename="Cooperation/Connection.py" line="417"/>
         <source>* Connection to {0}:{1} refused.</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Cooperation/Connection.py" line="184"/>
+        <source>* Connection attempted by banned user &apos;{0}&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CookieDetailsDialog</name>
@@ -3384,12 +3422,12 @@
 <context>
     <name>CooperationClient</name>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="68"/>
+        <location filename="Cooperation/CooperationClient.py" line="70"/>
         <source>unknown</source>
         <translation type="unfinished">bilinmeyen</translation>
     </message>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="268"/>
+        <location filename="Cooperation/CooperationClient.py" line="273"/>
         <source>Illegal address: {0}:{1}
 </source>
         <translation type="unfinished"></translation>
@@ -3462,6 +3500,36 @@
         <source>Accept connections automatically</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="166"/>
+        <source>Banned Users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="185"/>
+        <source>Delete the selected entries from the list of banned users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="188"/>
+        <source>Delete</source>
+        <translation type="unfinished">Sil</translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="195"/>
+        <source>Enter the user and host of the banned user</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="205"/>
+        <source>Add the user to the list of banned users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="208"/>
+        <source>Add</source>
+        <translation type="unfinished">Ekle</translation>
+    </message>
 </context>
 <context>
     <name>CorbaPage</name>
@@ -20381,12 +20449,12 @@
 <context>
     <name>Preferences</name>
     <message>
-        <location filename="Preferences/__init__.py" line="826"/>
+        <location filename="Preferences/__init__.py" line="828"/>
         <source>Export Preferences</source>
         <translation>Tercihleri Dışarı Aktar</translation>
     </message>
     <message>
-        <location filename="Preferences/__init__.py" line="845"/>
+        <location filename="Preferences/__init__.py" line="847"/>
         <source>Import Preferences</source>
         <translation>Tercihleri İçe Aktar</translation>
     </message>
--- a/i18n/eric5_zh_CN.GB2312.ts	Wed Mar 31 12:52:59 2010 +0000
+++ b/i18n/eric5_zh_CN.GB2312.ts	Wed Mar 31 17:11:28 2010 +0000
@@ -1988,7 +1988,7 @@
 <context>
     <name>ChatWidget</name>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="48"/>
+        <location filename="Cooperation/ChatWidget.ui" line="51"/>
         <source>Chat</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1998,204 +1998,237 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="87"/>
+        <location filename="Cooperation/ChatWidget.ui" line="90"/>
         <source>Press to send the text above</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="90"/>
+        <location filename="Cooperation/ChatWidget.ui" line="93"/>
         <source>Send</source>
         <translation type="unfinished">发送</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="196"/>
+        <location filename="Cooperation/ChatWidget.ui" line="199"/>
         <source>Connection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="204"/>
+        <location filename="Cooperation/ChatWidget.ui" line="207"/>
         <source>Host:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="297"/>
+        <location filename="Cooperation/ChatWidget.ui" line="300"/>
         <source>Port:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="279"/>
+        <location filename="Cooperation/ChatWidget.ui" line="282"/>
         <source>Shows the connection status</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="291"/>
+        <location filename="Cooperation/ChatWidget.ui" line="294"/>
         <source>Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="339"/>
+        <location filename="Cooperation/ChatWidget.ui" line="342"/>
         <source>Shows the status of the server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="313"/>
+        <location filename="Cooperation/ChatWidget.py" line="287"/>
         <source>Start Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="179"/>
+        <location filename="Cooperation/ChatWidget.py" line="153"/>
         <source>! Unknown command: {0}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="200"/>
+        <location filename="Cooperation/ChatWidget.py" line="174"/>
         <source>* {0} has joined.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="229"/>
+        <location filename="Cooperation/ChatWidget.py" line="203"/>
         <source>* {0} has left.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="321"/>
+        <location filename="Cooperation/ChatWidget.py" line="295"/>
         <source>Stop Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="326"/>
+        <location filename="Cooperation/ChatWidget.py" line="300"/>
         <source>! Server Error: {0}
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="338"/>
+        <location filename="Cooperation/ChatWidget.py" line="312"/>
         <source>Disconnect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="342"/>
+        <location filename="Cooperation/ChatWidget.py" line="316"/>
         <source>Connect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="103"/>
+        <location filename="Cooperation/ChatWidget.ui" line="106"/>
         <source>Share Editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="125"/>
+        <location filename="Cooperation/ChatWidget.ui" line="128"/>
         <source>Press to toggle the shared status of the current editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="Cooperation/ChatWidget.ui" line="242"/>
+        <source>...</source>
+        <translation type="unfinished">……</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="144"/>
+        <source>Press to start a shared edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="160"/>
+        <source>Press to end the edit and send the changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="173"/>
+        <source>Press to cancel the shared edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="488"/>
+        <source>Clear</source>
+        <translation type="unfinished">清除</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="493"/>
+        <source>Save</source>
+        <translation type="unfinished">保存</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="474"/>
+        <source>Copy</source>
+        <translation type="unfinished">复制</translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>Save Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="532"/>
+        <source>Text Files (*.txt);;All Files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="546"/>
+        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>Error saving Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="563"/>
+        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="70"/>
+        <source>Enter the text to send</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="307"/>
+        <source>Enter the server port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="80"/>
+        <source>Press to clear the message text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.ui" line="220"/>
+        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="Cooperation/ChatWidget.ui" line="239"/>
-        <source>...</source>
-        <translation type="unfinished">……</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="141"/>
-        <source>Press to start a shared edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="157"/>
-        <source>Press to end the edit and send the changes</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="170"/>
-        <source>Press to cancel the shared edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="95"/>
-        <source>Clear</source>
-        <translation type="unfinished">清除</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="100"/>
-        <source>Save</source>
-        <translation type="unfinished">保存</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="81"/>
-        <source>Copy</source>
-        <translation type="unfinished">复制</translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>Save Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="525"/>
-        <source>Text Files (*.txt);;All Files (*)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="539"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists.&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>Error saving Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.py" line="556"/>
-        <source>&lt;p&gt;The chat contents could not be written to &lt;b&gt;{0}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="67"/>
-        <source>Enter the text to send</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="304"/>
-        <source>Enter the server port</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="77"/>
-        <source>Press to clear the message text</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="217"/>
-        <source>Enter the host and port to connect to in the form &quot;host:port&quot;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="Cooperation/ChatWidget.ui" line="236"/>
         <source>Press to clear the host</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.ui" line="250"/>
+        <location filename="Cooperation/ChatWidget.ui" line="253"/>
         <source>Press to clear the hosts list</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="77"/>
+        <location filename="Cooperation/ChatWidget.py" line="470"/>
         <source>Cut</source>
         <translation type="unfinished">剪切</translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="86"/>
+        <location filename="Cooperation/ChatWidget.py" line="479"/>
         <source>Cut all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/ChatWidget.py" line="90"/>
+        <location filename="Cooperation/ChatWidget.py" line="483"/>
         <source>Copy all</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="606"/>
+        <source>Kick User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="610"/>
+        <source>Ban User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="614"/>
+        <source>Ban and Kick User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="642"/>
+        <source>* {0} has been kicked.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="657"/>
+        <source>* {0} has been banned.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Cooperation/ChatWidget.py" line="672"/>
+        <source>* {0} has been banned and kicked.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CodeMetricsDialog</name>
@@ -3035,20 +3068,25 @@
         <translation type="unfinished">未知</translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>New Connection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="182"/>
+        <location filename="Cooperation/Connection.py" line="194"/>
         <source>&lt;p&gt;Accept connection from &lt;strong&gt;{0}@{1}&lt;/strong&gt;?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="Cooperation/Connection.py" line="405"/>
+        <location filename="Cooperation/Connection.py" line="417"/>
         <source>* Connection to {0}:{1} refused.</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Cooperation/Connection.py" line="184"/>
+        <source>* Connection attempted by banned user &apos;{0}&apos;.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CookieDetailsDialog</name>
@@ -3386,12 +3424,12 @@
 <context>
     <name>CooperationClient</name>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="68"/>
+        <location filename="Cooperation/CooperationClient.py" line="70"/>
         <source>unknown</source>
         <translation type="unfinished">未知</translation>
     </message>
     <message>
-        <location filename="Cooperation/CooperationClient.py" line="268"/>
+        <location filename="Cooperation/CooperationClient.py" line="273"/>
         <source>Illegal address: {0}:{1}
 </source>
         <translation type="unfinished"></translation>
@@ -3464,6 +3502,36 @@
         <source>Accept connections automatically</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="166"/>
+        <source>Banned Users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="185"/>
+        <source>Delete the selected entries from the list of banned users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="188"/>
+        <source>Delete</source>
+        <translation type="unfinished">删除</translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="195"/>
+        <source>Enter the user and host of the banned user</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="205"/>
+        <source>Add the user to the list of banned users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="Preferences/ConfigurationPages/CooperationPage.ui" line="208"/>
+        <source>Add</source>
+        <translation type="unfinished">添加</translation>
+    </message>
 </context>
 <context>
     <name>CorbaPage</name>
@@ -20484,12 +20552,12 @@
 <context>
     <name>Preferences</name>
     <message>
-        <location filename="Preferences/__init__.py" line="826"/>
+        <location filename="Preferences/__init__.py" line="828"/>
         <source>Export Preferences</source>
         <translation>导出首选项</translation>
     </message>
     <message>
-        <location filename="Preferences/__init__.py" line="845"/>
+        <location filename="Preferences/__init__.py" line="847"/>
         <source>Import Preferences</source>
         <translation>导入首选项</translation>
     </message>
Binary file icons/default/chatBanKickUser.png has changed
Binary file icons/default/chatBanUser.png has changed
Binary file icons/default/chatKickUser.png has changed

eric ide

mercurial