src/eric7/RemoteServerInterface/EricServerProfilesDialog.py

branch
server
changeset 10531
3308e8349e4c
child 10561
be23a662d709
equal deleted inserted replaced
10530:684f491a3bfc 10531:3308e8349e4c
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2024 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a dialog to manage server connection profiles.
8 """
9
10 import copy
11
12 from PyQt6.QtCore import Qt, pyqtSlot
13 from PyQt6.QtWidgets import QDialog, QListWidgetItem
14
15 from eric7.EricWidgets import EricMessageBox
16
17 from .EricServerConnectionDialog import EricServerConnectionDialog
18 from .Ui_EricServerProfilesDialog import Ui_EricServerProfilesDialog
19
20
21 class EricServerProfilesDialog(QDialog, Ui_EricServerProfilesDialog):
22 """
23 Class implementing a dialog to manage server connection profiles.
24 """
25
26 def __init__(self, profiles, parent=None):
27 """
28 Constructor
29
30 @param profiles dictionary containing the server connection profiles
31 @type dict
32 @param parent reference to the parent widget (defaults to None)
33 @type QWidget (optional)
34 """
35 super().__init__(parent)
36 self.setupUi(self)
37
38 self.__profiles = copy.deepcopy(profiles)
39 self.__populateProfilesList()
40
41 self.on_connectionsList_itemSelectionChanged()
42
43 def __populateProfilesList(self):
44 """
45 Private method to (re-) populate the list of server connection profiles.
46 """
47 self.connectionsList.clear()
48
49 for profile in self.__profiles:
50 itm = QListWidgetItem(profile, self.connectionsList)
51 itm.setData(Qt.ItemDataRole.UserRole, self.__profiles[profile])
52
53 def __getProfilesList(self):
54 """
55 Private method to get the list of defined profile names.
56
57 @return list of defined profile names
58 @rtype list of str
59 """
60 profileNames = []
61 for row in range(self.connectionsList.count()):
62 itm = self.connectionsList.item(row)
63 profileNames.append(itm.text())
64
65 return profileNames
66
67 @pyqtSlot()
68 def on_connectionsList_itemSelectionChanged(self):
69 """
70 Private slot to handle a change of selected items.
71 """
72 selectedItems = self.connectionsList.selectedItems()
73 self.editButton.setEnabled(len(selectedItems) == 1)
74 self.removeButton.setEnabled(len(selectedItems) > 0)
75
76 @pyqtSlot()
77 def on_addButton_clicked(self):
78 """
79 Private slot add a new connection profile.
80 """
81 dlg = EricServerConnectionDialog(
82 profileNames=self.__getProfilesList(), parent=self
83 )
84 if dlg.exec() == QDialog.DialogCode.Accepted:
85 profileData = dlg.getProfileData()
86 itm = QListWidgetItem(profileData[0], self.connectionsList)
87 itm.setData(Qt.ItemDataRole.UserRole, profileData[1:])
88
89 @pyqtSlot()
90 def on_editButton_clicked(self):
91 """
92 Private slot to edit the selected entry.
93 """
94 selectedItems = self.connectionsList.selectedItems()
95 if selectedItems:
96 itm = selectedItems[0]
97 dlg = EricServerConnectionDialog(
98 profileNames=self.__getProfilesList(), parent=self
99 )
100 data = itm.data(Qt.ItemDataRole.UserRole)
101 dlg.setProfileData(itm.text(), *data)
102 if dlg.exec() == QDialog.DialogCode.Accepted:
103 profileData = dlg.getProfileData()
104 itm.setText(profileData[0])
105 itm.setData(Qt.ItemDataRole.UserRole, profileData[1:])
106
107 @pyqtSlot()
108 def on_removeButton_clicked(self):
109 """
110 Private slot to remove the selected connection profiles.
111 """
112 yes = EricMessageBox.yesNo(
113 self,
114 self.tr("Remove Selected Entries"),
115 self.tr(
116 "Do you really want to remove the selected entries from the list?"
117 ),
118 )
119 if yes:
120 for itm in self.connectionsList.selectedItems()[:]:
121 self.connectionsList.takeItem(self.connectionsList.row(itm))
122 del itm
123
124 @pyqtSlot()
125 def on_resetButton_clicked(self):
126 """
127 Private slot to reset all changes performed.
128 """
129 yes = EricMessageBox.yesNo(
130 self,
131 self.tr("Reset Changes"),
132 self.tr(
133 "Do you really want to reset all changes performed up to this point?"
134 ),
135 )
136 if yes:
137 self.__populateProfilesList()
138
139 def getConnectionProfiles(self):
140 """
141 Public method to get the configured connection profiles.
142
143 @return dictionary containing the configured connection profiles
144 @rtype dict
145 """
146 profiles = {}
147
148 for row in range(self.connectionsList.count()):
149 itm = self.connectionsList.item(row)
150 profiles[itm.text()] = itm.data(Qt.ItemDataRole.UserRole)
151
152 return profiles
153

eric ide

mercurial