20 |
20 |
21 class TemplatePropertiesDialog(QDialog, Ui_TemplatePropertiesDialog): |
21 class TemplatePropertiesDialog(QDialog, Ui_TemplatePropertiesDialog): |
22 """ |
22 """ |
23 Class implementing the templates properties dialog. |
23 Class implementing the templates properties dialog. |
24 """ |
24 """ |
|
25 |
25 def __init__(self, parent, groupMode=False, itm=None): |
26 def __init__(self, parent, groupMode=False, itm=None): |
26 """ |
27 """ |
27 Constructor |
28 Constructor |
28 |
29 |
29 @param parent the parent widget (QWidget) |
30 @param parent the parent widget (QWidget) |
30 @param groupMode flag indicating group mode (boolean) |
31 @param groupMode flag indicating group mode (boolean) |
31 @param itm item (TemplateEntry or TemplateGroup) to |
32 @param itm item (TemplateEntry or TemplateGroup) to |
32 read the data from |
33 read the data from |
33 """ |
34 """ |
34 super().__init__(parent) |
35 super().__init__(parent) |
35 self.setupUi(self) |
36 self.setupUi(self) |
36 |
37 |
37 self.templateEdit.setFont(Preferences.getTemplates("EditorFont")) |
38 self.templateEdit.setFont(Preferences.getTemplates("EditorFont")) |
38 |
39 |
39 if not groupMode: |
40 if not groupMode: |
40 self.nameEdit.setWhatsThis(self.tr( |
41 self.nameEdit.setWhatsThis( |
41 """<b>Template name<b><p>Enter the name of the template.""" |
42 self.tr( |
42 """ Templates may be autocompleted upon this name.""" |
43 """<b>Template name<b><p>Enter the name of the template.""" |
43 """ In order to support autocompletion. the template name""" |
44 """ Templates may be autocompleted upon this name.""" |
44 """ must only consist of letters (a-z and A-Z),""" |
45 """ In order to support autocompletion. the template name""" |
45 """ digits (0-9) and underscores (_).</p>""" |
46 """ must only consist of letters (a-z and A-Z),""" |
46 )) |
47 """ digits (0-9) and underscores (_).</p>""" |
|
48 ) |
|
49 ) |
47 self.__nameValidator = QRegularExpressionValidator( |
50 self.__nameValidator = QRegularExpressionValidator( |
48 QRegularExpression("[a-zA-Z0-9_]+"), self.nameEdit) |
51 QRegularExpression("[a-zA-Z0-9_]+"), self.nameEdit |
|
52 ) |
49 self.nameEdit.setValidator(self.__nameValidator) |
53 self.nameEdit.setValidator(self.__nameValidator) |
50 |
54 |
51 import QScintilla.Lexers |
55 import QScintilla.Lexers |
|
56 |
52 self.languages = [("All", self.tr("All"))] |
57 self.languages = [("All", self.tr("All"))] |
53 supportedLanguages = QScintilla.Lexers.getSupportedLanguages() |
58 supportedLanguages = QScintilla.Lexers.getSupportedLanguages() |
54 languages = sorted(supportedLanguages.keys()) |
59 languages = sorted(supportedLanguages.keys()) |
55 for language in languages: |
60 for language in languages: |
56 self.languages.append((language, supportedLanguages[language][0])) |
61 self.languages.append((language, supportedLanguages[language][0])) |
57 |
62 |
58 self.groupMode = groupMode |
63 self.groupMode = groupMode |
59 if groupMode: |
64 if groupMode: |
60 self.groupLabel.setText(self.tr("Language:")) |
65 self.groupLabel.setText(self.tr("Language:")) |
61 for lang, langDisp in self.languages: |
66 for lang, langDisp in self.languages: |
62 self.groupCombo.addItem( |
67 self.groupCombo.addItem( |
63 QScintilla.Lexers.getLanguageIcon(lang, False), |
68 QScintilla.Lexers.getLanguageIcon(lang, False), langDisp |
64 langDisp) |
69 ) |
65 self.templateLabel.setEnabled(False) |
70 self.templateLabel.setEnabled(False) |
66 self.templateEdit.setEnabled(False) |
71 self.templateEdit.setEnabled(False) |
67 self.templateEdit.setPlainText(self.tr("GROUP")) |
72 self.templateEdit.setPlainText(self.tr("GROUP")) |
68 self.helpButton.setEnabled(False) |
73 self.helpButton.setEnabled(False) |
69 self.descriptionLabel.hide() |
74 self.descriptionLabel.hide() |
84 break |
89 break |
85 else: |
90 else: |
86 self.setSelectedGroup(itm.getGroupName()) |
91 self.setSelectedGroup(itm.getGroupName()) |
87 self.templateEdit.setPlainText(itm.getTemplateText()) |
92 self.templateEdit.setPlainText(itm.getTemplateText()) |
88 self.descriptionEdit.setText(itm.getDescription()) |
93 self.descriptionEdit.setText(itm.getDescription()) |
89 |
94 |
90 self.nameEdit.selectAll() |
95 self.nameEdit.selectAll() |
91 |
96 |
92 self.__helpDialog = None |
97 self.__helpDialog = None |
93 |
98 |
94 def keyPressEvent(self, ev): |
99 def keyPressEvent(self, ev): |
95 """ |
100 """ |
96 Protected method to handle the user pressing the escape key. |
101 Protected method to handle the user pressing the escape key. |
97 |
102 |
98 @param ev key event (QKeyEvent) |
103 @param ev key event (QKeyEvent) |
99 """ |
104 """ |
100 if ev.key() == Qt.Key.Key_Escape: |
105 if ev.key() == Qt.Key.Key_Escape: |
101 res = EricMessageBox.yesNo( |
106 res = EricMessageBox.yesNo( |
102 self, |
107 self, |
103 self.tr("Close dialog"), |
108 self.tr("Close dialog"), |
104 self.tr("""Do you really want to close the dialog?""")) |
109 self.tr("""Do you really want to close the dialog?"""), |
|
110 ) |
105 if not res: |
111 if not res: |
106 self.reject() |
112 self.reject() |
107 |
113 |
108 @pyqtSlot() |
114 @pyqtSlot() |
109 def on_helpButton_clicked(self): |
115 def on_helpButton_clicked(self): |
110 """ |
116 """ |
111 Private slot to show some help. |
117 Private slot to show some help. |
112 """ |
118 """ |
113 if self.__helpDialog is None: |
119 if self.__helpDialog is None: |
114 from EricWidgets.EricSimpleHelpDialog import EricSimpleHelpDialog |
120 from EricWidgets.EricSimpleHelpDialog import EricSimpleHelpDialog |
|
121 |
115 self.__helpDialog = EricSimpleHelpDialog( |
122 self.__helpDialog = EricSimpleHelpDialog( |
116 title=self.tr("Template Help"), |
123 title=self.tr("Template Help"), |
117 label=self.tr("<b>Template Help</b>"), |
124 label=self.tr("<b>Template Help</b>"), |
118 helpStr=self.tr( |
125 helpStr=self.tr( |
119 """<p>To use variables in a template, you just have to""" |
126 """<p>To use variables in a template, you just have to""" |
200 """</table></p>""" |
207 """</table></p>""" |
201 """<p>If you want to change the default delimiter to""" |
208 """<p>If you want to change the default delimiter to""" |
202 """ anything different, please use the configuration""" |
209 """ anything different, please use the configuration""" |
203 """ dialog to do so.</p>""" |
210 """ dialog to do so.</p>""" |
204 ), |
211 ), |
205 parent=self) |
212 parent=self, |
|
213 ) |
206 self.__helpDialog.show() |
214 self.__helpDialog.show() |
207 |
215 |
208 def setSelectedGroup(self, name): |
216 def setSelectedGroup(self, name): |
209 """ |
217 """ |
210 Public method to select a group. |
218 Public method to select a group. |
211 |
219 |
212 @param name name of the group to be selected (string) |
220 @param name name of the group to be selected (string) |
213 """ |
221 """ |
214 index = self.groupCombo.findText(name) |
222 index = self.groupCombo.findText(name) |
215 self.groupCombo.setCurrentIndex(index) |
223 self.groupCombo.setCurrentIndex(index) |
216 |
224 |
217 def getData(self): |
225 def getData(self): |
218 """ |
226 """ |
219 Public method to get the data entered into the dialog. |
227 Public method to get the data entered into the dialog. |
220 |
228 |
221 @return a tuple of two strings (name, language), if the dialog is in |
229 @return a tuple of two strings (name, language), if the dialog is in |
222 group mode, and a tuple of four strings (name, description, group |
230 group mode, and a tuple of four strings (name, description, group |
223 name, template) otherwise. |
231 name, template) otherwise. |
224 """ |
232 """ |
225 if self.groupMode: |
233 if self.groupMode: |
226 return (self.nameEdit.text(), |
234 return ( |
227 self.languages[self.groupCombo.currentIndex()][0] |
235 self.nameEdit.text(), |
228 ) |
236 self.languages[self.groupCombo.currentIndex()][0], |
|
237 ) |
229 else: |
238 else: |
230 return (self.nameEdit.text(), |
239 return ( |
231 self.descriptionEdit.text(), |
240 self.nameEdit.text(), |
232 self.groupCombo.currentText(), |
241 self.descriptionEdit.text(), |
233 self.templateEdit.toPlainText() |
242 self.groupCombo.currentText(), |
234 ) |
243 self.templateEdit.toPlainText(), |
|
244 ) |