Network/IRC/IrcNetworkListDialog.py

changeset 2232
47290dad6d0b
child 2233
26b34180a943
equal deleted inserted replaced
2231:241df9311ade 2232:47290dad6d0b
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a dialog to list the configured IRC networks.
8 """
9
10 from PyQt4.QtCore import pyqtSlot
11 from PyQt4.QtGui import QDialog, QTreeWidgetItem
12
13 from E5Gui import E5MessageBox
14
15 from .Ui_IrcNetworkListDialog import Ui_IrcNetworkListDialog
16
17 from .IrcNetworkManager import IrcIdentity
18
19
20 class IrcNetworkListDialog(QDialog, Ui_IrcNetworkListDialog):
21 """
22 Class implementing a dialog to list the configured IRC networks.
23 """
24 def __init__(self, manager, parent=None):
25 """
26 Constructor
27
28 @param manager reference to the IRC network manager (IrcNetworkManager)
29 @param parent reference to the parent widget (QWidget)
30 """
31 super().__init__(parent)
32 self.setupUi(self)
33
34 self.__manager = manager
35
36 networkNames = self.__manager.getNetworkNames()
37 for networkName in networkNames:
38 topitm = QTreeWidgetItem(self.networksList, [networkName])
39 network = self.__manager.getNetwork(networkName)
40 server = self.__manager.getServer(network.getServerName())
41 identityName = network.getIdentityName()
42 if identityName == IrcIdentity.DefaultIdentityName:
43 identityName = IrcIdentity.DefaultIdentityDisplay
44 QTreeWidgetItem(topitm,
45 [self.trUtf8("Identity"), identityName])
46 QTreeWidgetItem(topitm,
47 [self.trUtf8("Server"), "{0}:{1}".format(
48 server.getServer(), server.getPort())])
49 QTreeWidgetItem(topitm,
50 [self.trUtf8("Channels"), ", ".join(network.getChannels())])
51 if network.autoJoinChannels():
52 autoJoin = self.trUtf8("Yes")
53 else:
54 autoJoin = self.trUtf8("No")
55 QTreeWidgetItem(topitm,
56 [self.trUtf8("Auto-join Channels"), autoJoin])
57 topitm.setExpanded(True)
58 self.__resizeColumns()
59
60 self.__checkButtons()
61
62 def __resizeColumns(self):
63 """
64 Private slot to resize all columns to their contents.
65 """
66 for col in range(self.networksList.columnCount()):
67 self.networksList.resizeColumnToContents(col)
68
69 def __checkButtons(self):
70 """
71 Public slot to set the enabled state of the buttons.
72 """
73 enable = True
74 selectedItems = self.networksList.selectedItems()
75 if len(selectedItems) == 0:
76 enable = False
77 else:
78 for itm in selectedItems:
79 enable &= itm.parent() is None
80
81 self.editButton.setEnabled(enable)
82 self.deleteButton.setEnabled(enable)
83
84 @pyqtSlot()
85 def on_networksList_itemSelectionChanged(self):
86 """
87 Slot documentation goes here.
88 """
89 self.__checkButtons()
90
91 @pyqtSlot()
92 def on_newButton_clicked(self):
93 """
94 Slot documentation goes here.
95 """
96 # TODO: not implemented yet
97 raise NotImplementedError
98
99 @pyqtSlot()
100 def on_editButton_clicked(self):
101 """
102 Slot documentation goes here.
103 """
104 # TODO: not implemented yet
105 raise NotImplementedError
106
107 @pyqtSlot()
108 def on_deleteButton_clicked(self):
109 """
110 Private slot to delete the selected entry.
111 """
112 itm = self.networksList.selectedItems()[0]
113 if itm.parent() is None:
114 networkName = itm.text(0)
115 res = E5MessageBox.yesNo(self,
116 self.trUtf8("Delete Irc Network"),
117 self.trUtf8("""Do you really want to delete IRC network <b>{0}</b>?""")\
118 .format(networkName))
119 if res:
120 index = self.networksList.indexOfTopLevelItem(itm)
121 self.networksList.takeTopLevelItem(index)
122 del itm
123
124 self.__manager.deleteNetwork(networkName)
125
126 @pyqtSlot(QTreeWidgetItem)
127 def on_networksList_itemExpanded(self, item):
128 """
129 Private slot handling the expansion of a top level item.
130 """
131 self.__resizeColumns()
132
133 @pyqtSlot(QTreeWidgetItem)
134 def on_networksList_itemCollapsed(self, item):
135 """
136 Private slot handling the collapse of a top level item.
137 """
138 self.__resizeColumns()

eric ide

mercurial