Change the logic of the IRC widget to only show the "Edit Topic" button, if the user is allowed to do so.

Sat, 02 Mar 2013 19:06:18 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 02 Mar 2013 19:06:18 +0100
changeset 2445
e3fadb2b85c7
parent 2444
0fdd7f9ebd0b
child 2446
aed80104991a

Change the logic of the IRC widget to only show the "Edit Topic" button, if the user is allowed to do so.

Network/IRC/IrcChannelWidget.py file | annotate | diff | comparison | revisions
--- a/Network/IRC/IrcChannelWidget.py	Sat Mar 02 17:21:28 2013 +0100
+++ b/Network/IRC/IrcChannelWidget.py	Sat Mar 02 19:06:18 2013 +0100
@@ -161,6 +161,16 @@
             privilege |= IrcUserItem.Away
         self.__privilege = privilege
         self.__setIcon()
+    
+    def canChangeTopic(self):
+        """
+        Public method to check, if the user is allowed to change the topic.
+        
+        @return flag indicating that the topic can be changed (boolean)
+        """
+        return(bool(self.__privilege & IrcUserItem.Operator) or \
+               bool(self.__privilege & IrcUserItem.Admin) or \
+               bool(self.__privilege & IrcUserItem.Owner))
 
 
 class IrcChannelWidget(QWidget, Ui_IrcChannelWidget):
@@ -197,6 +207,7 @@
         self.__ircWidget = parent
         
         self.editTopicButton.setIcon(UI.PixmapCache.getIcon("ircEditTopic.png"))
+        self.editTopicButton.hide()
         
         height = self.usersList.height() + self.messages.height()
         self.splitter.setSizes([height * 0.3, height * 0.7])
@@ -617,10 +628,12 @@
                     itm = IrcUserItem(userName, self.usersList)
                 for privilege in userPrivileges:
                     itm.changePrivilege(privilege)
+            
+            self.__setEditTopicButton()
             return True
         
         return False
-    
+
     def __userAway(self, match):
         """
         Private method to handle a topic change of the channel.
@@ -888,6 +901,7 @@
             itm = self.__findUser(match.group(4))
             if itm:
                 itm.changePrivilege(match.group(3))
+                self.__setEditTopicButton()
             self.__addManagementMessage(IrcChannelWidget.MessageIndicator,
                 self.trUtf8("{0} sets mode for {1}: {2}.").format(
                     match.group(1), match.group(4), match.group(3)))
@@ -1659,6 +1673,14 @@
         
         return False
     
+    def __setEditTopicButton(self):
+        """
+        Private method to set the visibility of the Edit Topic button.
+        """
+        itm = self.__findUser(self.__userName)
+        if itm:
+            self.editTopicButton.setVisible(itm.canChangeTopic())
+    
     @pyqtSlot()
     def on_editTopicButton_clicked(self):
         """

eric ide

mercurial