|
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() |