src/eric7/Network/IRC/IrcNetworkListDialog.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
equal deleted inserted replaced
9220:e9e7eca7efee 9221:bf71ee032bb4
17 17
18 class IrcNetworkListDialog(QDialog, Ui_IrcNetworkListDialog): 18 class IrcNetworkListDialog(QDialog, Ui_IrcNetworkListDialog):
19 """ 19 """
20 Class implementing a dialog to list the configured IRC networks. 20 Class implementing a dialog to list the configured IRC networks.
21 """ 21 """
22
22 def __init__(self, manager, parent=None): 23 def __init__(self, manager, parent=None):
23 """ 24 """
24 Constructor 25 Constructor
25 26
26 @param manager reference to the IRC network manager (IrcNetworkManager) 27 @param manager reference to the IRC network manager (IrcNetworkManager)
27 @param parent reference to the parent widget (QWidget) 28 @param parent reference to the parent widget (QWidget)
28 """ 29 """
29 super().__init__(parent) 30 super().__init__(parent)
30 self.setupUi(self) 31 self.setupUi(self)
31 32
32 self.__manager = manager 33 self.__manager = manager
33 34
34 self.__refreshNetworksList() 35 self.__refreshNetworksList()
35 36
36 def __resizeColumns(self): 37 def __resizeColumns(self):
37 """ 38 """
38 Private slot to resize all columns to their contents. 39 Private slot to resize all columns to their contents.
39 """ 40 """
40 for col in range(self.networksList.columnCount()): 41 for col in range(self.networksList.columnCount()):
41 self.networksList.resizeColumnToContents(col) 42 self.networksList.resizeColumnToContents(col)
42 43
43 def __checkButtons(self): 44 def __checkButtons(self):
44 """ 45 """
45 Private slot to set the enabled state of the buttons. 46 Private slot to set the enabled state of the buttons.
46 """ 47 """
47 enable = True 48 enable = True
49 if len(selectedItems) == 0: 50 if len(selectedItems) == 0:
50 enable = False 51 enable = False
51 else: 52 else:
52 for itm in selectedItems: 53 for itm in selectedItems:
53 enable &= itm.parent() is None 54 enable &= itm.parent() is None
54 55
55 self.editButton.setEnabled(enable) 56 self.editButton.setEnabled(enable)
56 self.deleteButton.setEnabled(enable) 57 self.deleteButton.setEnabled(enable)
57 self.autoConnectButton.setEnabled(enable) 58 self.autoConnectButton.setEnabled(enable)
58 59
59 if enable: 60 if enable:
60 itm = self.networksList.selectedItems()[0] 61 itm = self.networksList.selectedItems()[0]
61 check = self.__manager.getNetwork(itm.text(0)).autoConnect() 62 check = self.__manager.getNetwork(itm.text(0)).autoConnect()
62 self.autoConnectButton.setChecked(check) 63 self.autoConnectButton.setChecked(check)
63 64
64 def __refreshNetworkEntry(self, itm): 65 def __refreshNetworkEntry(self, itm):
65 """ 66 """
66 Private method to (re-)set the data of a network entry. 67 Private method to (re-)set the data of a network entry.
67 68
68 @param itm reference to the network entry (QTreeWidgetItem) 69 @param itm reference to the network entry (QTreeWidgetItem)
69 """ 70 """
70 # step 1: delete all child entries 71 # step 1: delete all child entries
71 children = itm.takeChildren() 72 children = itm.takeChildren()
72 for child in children: 73 for child in children:
73 del child 74 del child
74 75
75 # step 2: (re-)add the child entries 76 # step 2: (re-)add the child entries
76 from .IrcNetworkManager import IrcIdentity 77 from .IrcNetworkManager import IrcIdentity
78
77 networkName = itm.text(0) 79 networkName = itm.text(0)
78 network = self.__manager.getNetwork(networkName) 80 network = self.__manager.getNetwork(networkName)
79 server = network.getServer() 81 server = network.getServer()
80 identityName = network.getIdentityName() 82 identityName = network.getIdentityName()
81 if identityName == IrcIdentity.DefaultIdentityName: 83 if identityName == IrcIdentity.DefaultIdentityName:
82 identityName = IrcIdentity.DefaultIdentityDisplay 84 identityName = IrcIdentity.DefaultIdentityDisplay
83 autoConnect = ( 85 autoConnect = self.tr("Yes") if network.autoConnect() else self.tr("No")
84 self.tr("Yes") if network.autoConnect() else self.tr("No") 86
85 ) 87 QTreeWidgetItem(itm, [self.tr("Identity"), identityName])
86
87 QTreeWidgetItem( 88 QTreeWidgetItem(
88 itm, 89 itm,
89 [self.tr("Identity"), identityName]) 90 [self.tr("Server"), "{0}:{1}".format(server.getName(), server.getPort())],
91 )
90 QTreeWidgetItem( 92 QTreeWidgetItem(
91 itm, 93 itm, [self.tr("Channels"), ", ".join(network.getChannelNames())]
92 [self.tr("Server"), "{0}:{1}".format( 94 )
93 server.getName(), server.getPort())]) 95 QTreeWidgetItem(itm, [self.tr("Auto-Connect"), autoConnect])
94 QTreeWidgetItem( 96
95 itm, 97 self.__resizeColumns()
96 [self.tr("Channels"), ", ".join(network.getChannelNames())]) 98
97 QTreeWidgetItem(
98 itm,
99 [self.tr("Auto-Connect"), autoConnect])
100
101 self.__resizeColumns()
102
103 def __refreshNetworksList(self): 99 def __refreshNetworksList(self):
104 """ 100 """
105 Private method to refresh the complete networks list. 101 Private method to refresh the complete networks list.
106 """ 102 """
107 self.networksList.clear() 103 self.networksList.clear()
108 104
109 networkNames = self.__manager.getNetworkNames() 105 networkNames = self.__manager.getNetworkNames()
110 for networkName in networkNames: 106 for networkName in networkNames:
111 topitm = QTreeWidgetItem(self.networksList, [networkName]) 107 topitm = QTreeWidgetItem(self.networksList, [networkName])
112 self.__refreshNetworkEntry(topitm) 108 self.__refreshNetworkEntry(topitm)
113 topitm.setExpanded(True) 109 topitm.setExpanded(True)
114 self.__resizeColumns() 110 self.__resizeColumns()
115 111
116 self.__checkButtons() 112 self.__checkButtons()
117 113
118 @pyqtSlot() 114 @pyqtSlot()
119 def on_networksList_itemSelectionChanged(self): 115 def on_networksList_itemSelectionChanged(self):
120 """ 116 """
121 Private slot to handle changes of the selection of networks. 117 Private slot to handle changes of the selection of networks.
122 """ 118 """
123 self.__checkButtons() 119 self.__checkButtons()
124 120
125 @pyqtSlot() 121 @pyqtSlot()
126 def on_newButton_clicked(self): 122 def on_newButton_clicked(self):
127 """ 123 """
128 Private slot to add a new network entry. 124 Private slot to add a new network entry.
129 """ 125 """
130 from .IrcNetworkEditDialog import IrcNetworkEditDialog 126 from .IrcNetworkEditDialog import IrcNetworkEditDialog
127
131 dlg = IrcNetworkEditDialog(self.__manager, "", self) 128 dlg = IrcNetworkEditDialog(self.__manager, "", self)
132 if dlg.exec() == QDialog.DialogCode.Accepted: 129 if dlg.exec() == QDialog.DialogCode.Accepted:
133 network = dlg.getNetwork() 130 network = dlg.getNetwork()
134 self.__manager.addNetwork(network) 131 self.__manager.addNetwork(network)
135 self.__refreshNetworksList() 132 self.__refreshNetworksList()
136 133
137 @pyqtSlot() 134 @pyqtSlot()
138 def on_editButton_clicked(self): 135 def on_editButton_clicked(self):
139 """ 136 """
140 Private slot to edit the selected network. 137 Private slot to edit the selected network.
141 """ 138 """
142 itm = self.networksList.selectedItems()[0] 139 itm = self.networksList.selectedItems()[0]
143 if itm: 140 if itm:
144 from .IrcNetworkEditDialog import IrcNetworkEditDialog 141 from .IrcNetworkEditDialog import IrcNetworkEditDialog
142
145 networkName = itm.text(0) 143 networkName = itm.text(0)
146 dlg = IrcNetworkEditDialog(self.__manager, networkName, self) 144 dlg = IrcNetworkEditDialog(self.__manager, networkName, self)
147 if dlg.exec() == QDialog.DialogCode.Accepted: 145 if dlg.exec() == QDialog.DialogCode.Accepted:
148 network = dlg.getNetwork() 146 network = dlg.getNetwork()
149 self.__manager.setNetwork(network, networkName) 147 self.__manager.setNetwork(network, networkName)
150 if network.getName() != networkName: 148 if network.getName() != networkName:
151 itm.setText(0, network.getName()) 149 itm.setText(0, network.getName())
152 self.__refreshNetworkEntry(itm) 150 self.__refreshNetworkEntry(itm)
153 151
154 @pyqtSlot() 152 @pyqtSlot()
155 def on_deleteButton_clicked(self): 153 def on_deleteButton_clicked(self):
156 """ 154 """
157 Private slot to delete the selected entry. 155 Private slot to delete the selected entry.
158 """ 156 """
161 networkName = itm.text(0) 159 networkName = itm.text(0)
162 res = EricMessageBox.yesNo( 160 res = EricMessageBox.yesNo(
163 self, 161 self,
164 self.tr("Delete Irc Network"), 162 self.tr("Delete Irc Network"),
165 self.tr( 163 self.tr(
166 """Do you really want to delete IRC network <b>{0}</b>?""") 164 """Do you really want to delete IRC network <b>{0}</b>?"""
167 .format(networkName)) 165 ).format(networkName),
166 )
168 if res: 167 if res:
169 index = self.networksList.indexOfTopLevelItem(itm) 168 index = self.networksList.indexOfTopLevelItem(itm)
170 self.networksList.takeTopLevelItem(index) 169 self.networksList.takeTopLevelItem(index)
171 del itm 170 del itm
172 171
173 self.__manager.deleteNetwork(networkName) 172 self.__manager.deleteNetwork(networkName)
174 173
175 @pyqtSlot(QTreeWidgetItem) 174 @pyqtSlot(QTreeWidgetItem)
176 def on_networksList_itemExpanded(self, item): 175 def on_networksList_itemExpanded(self, item):
177 """ 176 """
178 Private slot handling the expansion of a top level item. 177 Private slot handling the expansion of a top level item.
179 178
180 @param item reference to the expanded item (QTreeWidgetItem) 179 @param item reference to the expanded item (QTreeWidgetItem)
181 """ 180 """
182 self.__resizeColumns() 181 self.__resizeColumns()
183 182
184 @pyqtSlot(QTreeWidgetItem) 183 @pyqtSlot(QTreeWidgetItem)
185 def on_networksList_itemCollapsed(self, item): 184 def on_networksList_itemCollapsed(self, item):
186 """ 185 """
187 Private slot handling the collapse of a top level item. 186 Private slot handling the collapse of a top level item.
188 187
189 @param item reference to the collapsed item (QTreeWidgetItem) 188 @param item reference to the collapsed item (QTreeWidgetItem)
190 """ 189 """
191 self.__resizeColumns() 190 self.__resizeColumns()
192 191
193 @pyqtSlot(bool) 192 @pyqtSlot(bool)
194 def on_autoConnectButton_clicked(self, checked): 193 def on_autoConnectButton_clicked(self, checked):
195 """ 194 """
196 Private slot handling the auto-connect selection. 195 Private slot handling the auto-connect selection.
197 196
198 @param checked flag indicating the state of the button (boolean) 197 @param checked flag indicating the state of the button (boolean)
199 """ 198 """
200 itm = self.networksList.selectedItems()[0] 199 itm = self.networksList.selectedItems()[0]
201 if itm.parent() is None: 200 if itm.parent() is None:
202 networkName = itm.text(0) 201 networkName = itm.text(0)
208 if name == networkName: 207 if name == networkName:
209 network.setAutoConnect(True) 208 network.setAutoConnect(True)
210 else: 209 else:
211 network.setAutoConnect(False) 210 network.setAutoConnect(False)
212 self.__manager.networkChanged() 211 self.__manager.networkChanged()
213 212
214 # step 2: update list entries 213 # step 2: update list entries
215 for index in range(self.networksList.topLevelItemCount()): 214 for index in range(self.networksList.topLevelItemCount()):
216 titm = self.networksList.topLevelItem(index) 215 titm = self.networksList.topLevelItem(index)
217 if titm.text(0) == networkName: 216 if titm.text(0) == networkName:
218 self.__setAutoConnectEntry(titm, True) 217 self.__setAutoConnectEntry(titm, True)
221 else: 220 else:
222 # step 1: update network object 221 # step 1: update network object
223 network = self.__manager.getNetwork(networkName) 222 network = self.__manager.getNetwork(networkName)
224 network.setAutoConnect(False) 223 network.setAutoConnect(False)
225 self.__manager.networkChanged() 224 self.__manager.networkChanged()
226 225
227 # step 2: update list entry 226 # step 2: update list entry
228 self.__setAutoConnectEntry(itm, False) 227 self.__setAutoConnectEntry(itm, False)
229 228
230 def __setAutoConnectEntry(self, itm, on): 229 def __setAutoConnectEntry(self, itm, on):
231 """ 230 """
232 Private method to set the auto-connect entry of a network item. 231 Private method to set the auto-connect entry of a network item.
233 232
234 @param itm reference to the network item (QTreeWidgetItem) 233 @param itm reference to the network item (QTreeWidgetItem)
235 @param on flag indicating the auto-connect state (boolean) 234 @param on flag indicating the auto-connect state (boolean)
236 """ 235 """
237 autoConnect = self.tr("Yes") if on else self.tr("No") 236 autoConnect = self.tr("Yes") if on else self.tr("No")
238 for index in range(itm.childCount()): 237 for index in range(itm.childCount()):
239 citm = itm.child(index) 238 citm = itm.child(index)
240 if citm.text(0) == self.tr("Auto-Connect"): 239 if citm.text(0) == self.tr("Auto-Connect"):
241 citm.setText(1, autoConnect) 240 citm.setText(1, autoConnect)
242 241
243 @pyqtSlot() 242 @pyqtSlot()
244 def on_editIdentitiesButton_clicked(self): 243 def on_editIdentitiesButton_clicked(self):
245 """ 244 """
246 Private slot to edit the identities. 245 Private slot to edit the identities.
247 """ 246 """
248 from .IrcIdentitiesEditDialog import IrcIdentitiesEditDialog 247 from .IrcIdentitiesEditDialog import IrcIdentitiesEditDialog
248
249 dlg = IrcIdentitiesEditDialog(self.__manager, "", self) 249 dlg = IrcIdentitiesEditDialog(self.__manager, "", self)
250 dlg.exec() 250 dlg.exec()
251 251
252 selectedNetwork = self.networksList.selectedItems() 252 selectedNetwork = self.networksList.selectedItems()
253 selectedNetworkName = ( 253 selectedNetworkName = selectedNetwork[0].text(0) if selectedNetwork else ""
254 selectedNetwork[0].text(0) if selectedNetwork else "")
255 self.__refreshNetworksList() 254 self.__refreshNetworksList()
256 if selectedNetworkName: 255 if selectedNetworkName:
257 for index in range(self.networksList.topLevelItemCount()): 256 for index in range(self.networksList.topLevelItemCount()):
258 itm = self.networksList.topLevelItem(index) 257 itm = self.networksList.topLevelItem(index)
259 if itm.text(0) == selectedNetworkName: 258 if itm.text(0) == selectedNetworkName:

eric ide

mercurial