Wed, 04 Oct 2023 17:50:59 +0200
Fixed in issue with several editable combo box selectors, that the value could not be changed if the edited text differed by case only. This was caused by the standard QComboBox completer.
9620
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
9653
e67609152c5e
Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9620
diff
changeset
|
3 | # Copyright (c) 2022 - 2023 Detlev Offenbach <detlev@die-offenbachs.de> |
9620
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a dialog to enter a list of worktree paths. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | from PyQt6.QtCore import pyqtSlot |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QListWidgetItem |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | from eric7.EricWidgets import EricPathPickerDialog |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | from .Ui_GitWorktreePathsDialog import Ui_GitWorktreePathsDialog |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | class GitWorktreePathsDialog(QDialog, Ui_GitWorktreePathsDialog): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | Class implementing a dialog to enter a list of worktree paths. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | def __init__(self, parentDirectory, parent=None): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | Constructor |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | @param parentDirectory path of the worktrees parent directory |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | @type str |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | @param parent reference to the parent widget (defaults to None) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | @type QWidget (optional) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | super().__init__(parent) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | self.setupUi(self) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | self.__parentDir = parentDirectory |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | self.removeButton.setEnabled(False) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | self.__updateOK |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | def __updateOK(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | Private method to set the enabled state of the OK button. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | self.pathsList.count() > 0 |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | def on_addButton_clicked(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | Private slot to add a path entry. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | worktree, ok = EricPathPickerDialog.getStrPath( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | self.tr("Worktree Path"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | self.tr("Enter new path of the worktree:"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | mode=EricPathPickerDialog.EricPathPickerModes.DIRECTORY_MODE, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | strPath=self.__parentDir, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | defaultDirectory=self.__parentDir, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | if ok and worktree: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | QListWidgetItem(worktree, self.pathsList) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | self.__updateOK() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | def on_removeButton_clicked(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | Private slot to remove the selected items. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | for itm in self.pathsList.selectedItems(): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | self.pathsList.takeItem(self.pathsList.row(itm)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | del itm |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | self.__updateOK() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | def on_removeAllButton_clicked(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | Private slot to remove all items from the list. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | self.pathsList.clear() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | self.__updateOK() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | def on_pathsList_itemSelectionChanged(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | Private slot handling a change of selected items. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | self.removeButton.setEnabled(bool(self.pathsList.selectedItems())) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | def getPathsList(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | Public method to get the entered worktree paths. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | @return list of worktree paths |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | @rtype list of str |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | return [ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | self.pathsList.item(row).text() for row in range(self.pathsList.count()) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | ] |