src/eric7/Templates/TemplatePropertiesDialog.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
equal deleted inserted replaced
9220:e9e7eca7efee 9221:bf71ee032bb4
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()
71 else: 76 else:
72 groups = [] 77 groups = []
73 for group in parent.getGroupNames(): 78 for group in parent.getGroupNames():
74 groups.append(group) 79 groups.append(group)
75 self.groupCombo.addItems(groups) 80 self.groupCombo.addItems(groups)
76 81
77 if itm is not None: 82 if itm is not None:
78 self.nameEdit.setText(itm.getName()) 83 self.nameEdit.setText(itm.getName())
79 if groupMode: 84 if groupMode:
80 language = itm.getLanguage() 85 language = itm.getLanguage()
81 for lang, langDisp in self.languages: 86 for lang, langDisp in self.languages:
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 )

eric ide

mercurial