eric7/Plugins/VcsPlugins/vcsGit/GitArchiveDataDialog.py

branch
eric7
changeset 8312
800c432b34c8
parent 8218
7c09585bd960
child 8318
962bce857696
equal deleted inserted replaced
8311:4e8b98454baa 8312:800c432b34c8
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2014 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a dialog to enter the data for the creation of an archive.
8 """
9
10 import os
11
12 from PyQt5.QtCore import pyqtSlot
13 from PyQt5.QtWidgets import QDialog, QDialogButtonBox
14
15 from E5Gui import E5FileDialog
16
17 from .Ui_GitArchiveDataDialog import Ui_GitArchiveDataDialog
18
19 import UI.PixmapCache
20 import Utilities
21
22
23 class GitArchiveDataDialog(QDialog, Ui_GitArchiveDataDialog):
24 """
25 Class implementing a dialog to enter the data for the creation of an
26 archive.
27 """
28 def __init__(self, tagsList, branchesList, formatsList, parent=None):
29 """
30 Constructor
31
32 @param tagsList list of tags (list of strings)
33 @param branchesList list of branches (list of strings)
34 @param formatsList list of archive formats (list of strings)
35 @param parent reference to the parent widget (QWidget)
36 """
37 super().__init__(parent)
38 self.setupUi(self)
39
40 self.fileButton.setIcon(UI.PixmapCache.getIcon("open"))
41
42 self.buttonBox.button(
43 QDialogButtonBox.StandardButton.Ok).setEnabled(False)
44
45 self.tagCombo.addItems(sorted(tagsList))
46 self.branchCombo.addItems(["master"] + sorted(branchesList))
47 self.formatComboBox.addItems(sorted(formatsList))
48 self.formatComboBox.setCurrentIndex(
49 self.formatComboBox.findText("zip"))
50
51 msh = self.minimumSizeHint()
52 self.resize(max(self.width(), msh.width()), msh.height())
53
54 def __updateOK(self):
55 """
56 Private slot to update the OK button.
57 """
58 enabled = True
59 if self.revButton.isChecked():
60 enabled = self.revEdit.text() != ""
61 elif self.tagButton.isChecked():
62 enabled = self.tagCombo.currentText() != ""
63 elif self.branchButton.isChecked():
64 enabled = self.branchCombo.currentText() != ""
65
66 enabled &= bool(self.fileEdit.text())
67
68 self.buttonBox.button(
69 QDialogButtonBox.StandardButton.Ok).setEnabled(enabled)
70
71 @pyqtSlot(str)
72 def on_fileEdit_textChanged(self, txt):
73 """
74 Private slot to handle changes of the file edit.
75
76 @param txt text of the edit (string)
77 """
78 self.__updateOK()
79
80 @pyqtSlot()
81 def on_fileButton_clicked(self):
82 """
83 Private slot to select a file via a file selection dialog.
84 """
85 fileName = E5FileDialog.getSaveFileName(
86 self,
87 self.tr("Select Archive File"),
88 Utilities.fromNativeSeparators(self.fileEdit.text()),
89 "")
90
91 if fileName:
92 root, ext = os.path.splitext(fileName)
93 if not ext:
94 ext = "." + self.formatComboBox.currentText()
95 fileName = root + ext
96 self.fileEdit.setText(Utilities.toNativeSeparators(fileName))
97
98 @pyqtSlot(bool)
99 def on_revButton_toggled(self, checked):
100 """
101 Private slot to handle changes of the rev select button.
102
103 @param checked state of the button (boolean)
104 """
105 self.__updateOK()
106
107 @pyqtSlot(str)
108 def on_revEdit_textChanged(self, txt):
109 """
110 Private slot to handle changes of the rev edit.
111
112 @param txt text of the edit (string)
113 """
114 self.__updateOK()
115
116 @pyqtSlot(bool)
117 def on_tagButton_toggled(self, checked):
118 """
119 Private slot to handle changes of the Tag select button.
120
121 @param checked state of the button (boolean)
122 """
123 self.__updateOK()
124
125 @pyqtSlot(str)
126 def on_tagCombo_editTextChanged(self, txt):
127 """
128 Private slot to handle changes of the Tag combo.
129
130 @param txt text of the combo (string)
131 """
132 self.__updateOK()
133
134 @pyqtSlot(bool)
135 def on_branchButton_toggled(self, checked):
136 """
137 Private slot to handle changes of the Branch select button.
138
139 @param checked state of the button (boolean)
140 """
141 self.__updateOK()
142
143 @pyqtSlot(str)
144 def on_branchCombo_editTextChanged(self, txt):
145 """
146 Private slot to handle changes of the Branch combo.
147
148 @param txt text of the combo (string)
149 """
150 self.__updateOK()
151
152 def getData(self):
153 """
154 Public method to retrieve the entered data.
155
156 @return tuple of selected revision (string), archive format (string),
157 archive file (string) and prefix (string)
158 """
159 if self.revButton.isChecked():
160 rev = self.revEdit.text()
161 elif self.tagButton.isChecked():
162 rev = self.tagCombo.currentText()
163 elif self.branchButton.isChecked():
164 rev = self.branchCombo.currentText()
165 else:
166 rev = "HEAD"
167
168 return (rev, self.formatComboBox.currentText(),
169 Utilities.toNativeSeparators(self.fileEdit.text()),
170 self.prefixEdit.text()
171 )

eric ide

mercurial