Cooperation/ChatWidget.py

changeset 165
3302a726fd1e
parent 164
b395b006d2a8
child 501
5c615a85241a
child 792
a13346916170
diff -r b395b006d2a8 -r 3302a726fd1e Cooperation/ChatWidget.py
--- 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)

eric ide

mercurial