Network/IRC/IrcNetworkListDialog.py

changeset 2232
47290dad6d0b
child 2233
26b34180a943
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Network/IRC/IrcNetworkListDialog.py	Tue Nov 27 18:50:02 2012 +0100
@@ -0,0 +1,138 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to list the configured IRC networks.
+"""
+
+from PyQt4.QtCore import pyqtSlot
+from PyQt4.QtGui import QDialog, QTreeWidgetItem
+
+from E5Gui import E5MessageBox
+
+from .Ui_IrcNetworkListDialog import Ui_IrcNetworkListDialog
+
+from .IrcNetworkManager import IrcIdentity
+
+
+class IrcNetworkListDialog(QDialog, Ui_IrcNetworkListDialog):
+    """
+    Class implementing a dialog to list the configured IRC networks.
+    """
+    def __init__(self, manager, parent=None):
+        """
+        Constructor
+        
+        @param manager reference to the IRC network manager (IrcNetworkManager)
+        @param parent reference to the parent widget (QWidget)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        self.__manager = manager
+        
+        networkNames = self.__manager.getNetworkNames()
+        for networkName in networkNames:
+            topitm = QTreeWidgetItem(self.networksList, [networkName])
+            network = self.__manager.getNetwork(networkName)
+            server = self.__manager.getServer(network.getServerName())
+            identityName = network.getIdentityName()
+            if identityName == IrcIdentity.DefaultIdentityName:
+                identityName = IrcIdentity.DefaultIdentityDisplay
+            QTreeWidgetItem(topitm,
+                [self.trUtf8("Identity"), identityName])
+            QTreeWidgetItem(topitm,
+                [self.trUtf8("Server"), "{0}:{1}".format(
+                 server.getServer(), server.getPort())])
+            QTreeWidgetItem(topitm,
+                [self.trUtf8("Channels"), ", ".join(network.getChannels())])
+            if network.autoJoinChannels():
+                autoJoin = self.trUtf8("Yes")
+            else:
+                autoJoin = self.trUtf8("No")
+            QTreeWidgetItem(topitm,
+                [self.trUtf8("Auto-join Channels"), autoJoin])
+            topitm.setExpanded(True)
+        self.__resizeColumns()
+        
+        self.__checkButtons()
+
+    def __resizeColumns(self):
+        """
+        Private slot to resize all columns to their contents.
+        """
+        for col in range(self.networksList.columnCount()):
+            self.networksList.resizeColumnToContents(col)
+    
+    def __checkButtons(self):
+        """
+        Public slot to set the enabled state of the buttons.
+        """
+        enable = True
+        selectedItems = self.networksList.selectedItems()
+        if len(selectedItems) == 0:
+            enable = False
+        else:
+            for itm in selectedItems:
+                enable &= itm.parent() is None
+        
+        self.editButton.setEnabled(enable)
+        self.deleteButton.setEnabled(enable)
+    
+    @pyqtSlot()
+    def on_networksList_itemSelectionChanged(self):
+        """
+        Slot documentation goes here.
+        """
+        self.__checkButtons()
+    
+    @pyqtSlot()
+    def on_newButton_clicked(self):
+        """
+        Slot documentation goes here.
+        """
+        # TODO: not implemented yet
+        raise NotImplementedError
+    
+    @pyqtSlot()
+    def on_editButton_clicked(self):
+        """
+        Slot documentation goes here.
+        """
+        # TODO: not implemented yet
+        raise NotImplementedError
+    
+    @pyqtSlot()
+    def on_deleteButton_clicked(self):
+        """
+        Private slot to delete the selected entry.
+        """
+        itm = self.networksList.selectedItems()[0]
+        if itm.parent() is None:
+            networkName = itm.text(0)
+            res = E5MessageBox.yesNo(self,
+                self.trUtf8("Delete Irc Network"),
+                self.trUtf8("""Do you really want to delete  IRC network <b>{0}</b>?""")\
+                    .format(networkName))
+            if res:
+                index = self.networksList.indexOfTopLevelItem(itm)
+                self.networksList.takeTopLevelItem(index)
+                del itm
+                
+                self.__manager.deleteNetwork(networkName)
+    
+    @pyqtSlot(QTreeWidgetItem)
+    def on_networksList_itemExpanded(self, item):
+        """
+        Private slot handling the expansion of a top level item.
+        """
+        self.__resizeColumns()
+    
+    @pyqtSlot(QTreeWidgetItem)
+    def on_networksList_itemCollapsed(self, item):
+        """
+        Private slot handling the collapse of a top level item.
+        """
+        self.__resizeColumns()

eric ide

mercurial