Network/IRC/IrcNetworkListDialog.py

Tue, 27 Nov 2012 20:05:59 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 27 Nov 2012 20:05:59 +0100
changeset 2233
26b34180a943
parent 2232
47290dad6d0b
child 2234
1e33501a0d33
permissions
-rw-r--r--

Started implementing the IRC network edit dialog.

# -*- 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
from .IrcNetworkEditDialog import IrcNetworkEditDialog


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):
        """
        Privat slot to handle changes of the selection of networks.
        """
        self.__checkButtons()
    
    @pyqtSlot()
    def on_newButton_clicked(self):
        """
        Slot documentation goes here.
        """
        # TODO: not implemented yet
        raise NotImplementedError
    
    @pyqtSlot()
    def on_editButton_clicked(self):
        """
        Private slot to edit the selected network.
        """
        itm = self.networksList.selectedItems()[0]
        if itm:
            networkName = itm.text(0)
            dlg = IrcNetworkEditDialog(self.__manager, networkName, self)
            if dlg.exec_() == QDialog.Accepted:
                pass
                # TODO: not implemented yet
    
    @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