81 virtualSpaceOptions |= QsciScintillaBase.SCVS_RECTANGULARSELECTION |
94 virtualSpaceOptions |= QsciScintillaBase.SCVS_RECTANGULARSELECTION |
82 if self.vsUserCheckBox.isChecked(): |
95 if self.vsUserCheckBox.isChecked(): |
83 virtualSpaceOptions |= QsciScintillaBase.SCVS_USERACCESSIBLE |
96 virtualSpaceOptions |= QsciScintillaBase.SCVS_USERACCESSIBLE |
84 Preferences.setEditor("VirtualSpaceOptions", virtualSpaceOptions) |
97 Preferences.setEditor("VirtualSpaceOptions", virtualSpaceOptions) |
85 |
98 |
|
99 self.__saveLanguageOverrides() |
|
100 |
86 def on_tabforindentationCheckBox_toggled(self, checked): |
101 def on_tabforindentationCheckBox_toggled(self, checked): |
87 """ |
102 """ |
88 Private slot used to set the tab conversion check box. |
103 Private slot used to set the tab conversion check box. |
89 |
104 |
90 @param checked flag received from the signal (boolean) |
105 @param checked flag received from the signal (boolean) |
91 """ |
106 """ |
92 if checked and self.converttabsCheckBox.isChecked(): |
107 if checked and self.converttabsCheckBox.isChecked(): |
93 self.converttabsCheckBox.setChecked(not checked) |
108 self.converttabsCheckBox.setChecked(not checked) |
94 self.converttabsCheckBox.setEnabled(not checked) |
109 self.converttabsCheckBox.setEnabled(not checked) |
95 |
110 |
|
111 def __populateLanguageOverrideWidget(self): |
|
112 """ |
|
113 Private method to populate the language specific indentation and tab |
|
114 width override widget. |
|
115 """ |
|
116 overrides = Preferences.getEditor("TabIndentOverride") |
|
117 for language, (tabWidth, indentWidth) in overrides.items(): |
|
118 self.__createOverrideItem(language, tabWidth, indentWidth) |
|
119 self.languageOverrideWidget.sortItems(0, Qt.AscendingOrder) |
|
120 self.__resizeOverrideColumns() |
|
121 self.on_languageOverrideWidget_itemSelectionChanged() |
|
122 |
|
123 def __createOverrideItem(self, language, tabWidth, indentWidth): |
|
124 """ |
|
125 Private method to create an entry for a language override. |
|
126 |
|
127 @param language name of the language |
|
128 @type str |
|
129 @param tabWidth tabulator width |
|
130 @type int |
|
131 @param indentWidth indentation width |
|
132 @type int |
|
133 """ |
|
134 itm = QTreeWidgetItem(self.languageOverrideWidget, [ |
|
135 language, |
|
136 "{0:2d}".format(tabWidth), |
|
137 "{0:2d}".format(indentWidth)]) |
|
138 itm.setTextAlignment(1, Qt.AlignHCenter) |
|
139 itm.setTextAlignment(2, Qt.AlignHCenter) |
|
140 |
|
141 def __resizeOverrideColumns(self): |
|
142 """ |
|
143 Private method to resize the list columns. |
|
144 """ |
|
145 self.languageOverrideWidget.header().resizeSections( |
|
146 QHeaderView.ResizeToContents) |
|
147 self.languageOverrideWidget.header().setStretchLastSection(True) |
|
148 |
|
149 def __saveLanguageOverrides(self): |
|
150 """ |
|
151 Private method to save the language specific indentation and tab width |
|
152 overrides. |
|
153 """ |
|
154 overrides = {} |
|
155 for row in range(self.languageOverrideWidget.topLevelItemCount()): |
|
156 itm = self.languageOverrideWidget.topLevelItem(row) |
|
157 language = itm.text(0) |
|
158 overrides[language] = [ |
|
159 int(itm.text(1)), |
|
160 int(itm.text(2)), |
|
161 ] |
|
162 |
|
163 Preferences.setEditor("TabIndentOverride", overrides) |
|
164 |
|
165 @pyqtSlot() |
|
166 def on_languageOverrideWidget_itemSelectionChanged(self): |
|
167 """ |
|
168 Private slot handling a change of the override selection. |
|
169 """ |
|
170 self.deleteButton.setEnabled( |
|
171 len(self.languageOverrideWidget.selectedItems()) > 0) |
|
172 self.editButton.setEnabled( |
|
173 len(self.languageOverrideWidget.selectedItems()) == 1) |
|
174 |
|
175 @pyqtSlot() |
|
176 def on_addButton_clicked(self): |
|
177 """ |
|
178 Private slot to add a new override entry. |
|
179 """ |
|
180 import QScintilla.Lexers |
|
181 languages = list( |
|
182 QScintilla.Lexers.getSupportedLanguages().keys()) |
|
183 for row in range(self.languageOverrideWidget.topLevelItemCount()): |
|
184 itm = self.languageOverrideWidget.topLevelItem(row) |
|
185 language = itm.text(0) |
|
186 if language in languages: |
|
187 languages.remove(language) |
|
188 dlg = EditorLanguageTabIndentOverrideDialog( |
|
189 editMode=False, |
|
190 languages=languages, |
|
191 tabWidth=self.tabwidthSlider.value(), |
|
192 indentWidth=self.indentwidthSlider.value(), |
|
193 ) |
|
194 if dlg.exec_() == QDialog.Accepted: |
|
195 language, tabWidth, indentWidth = dlg.getData() |
|
196 self.__createOverrideItem(language, tabWidth, indentWidth) |
|
197 self.languageOverrideWidget.sortItems(0, Qt.AscendingOrder) |
|
198 self.__resizeOverrideColumns() |
|
199 |
|
200 @pyqtSlot() |
|
201 def on_deleteButton_clicked(self): |
|
202 """ |
|
203 Private slot to delete the selected override entries. |
|
204 """ |
|
205 ok = E5MessageBox.yesNo( |
|
206 self, |
|
207 self.tr("Tab and Indent Override"), |
|
208 self.tr("""Shall the selected entries really be removed?""")) |
|
209 if ok: |
|
210 for itm in self.languageOverrideWidget.selectedItems(): |
|
211 index = self.languageOverrideWidget.indexOfTopLevelItem(itm) |
|
212 self.languageOverrideWidget.takeTopLevelItem(index) |
|
213 del itm |
|
214 |
|
215 @pyqtSlot() |
|
216 def on_editButton_clicked(self): |
|
217 """ |
|
218 Private slot to edit the selected override entry. |
|
219 """ |
|
220 itm = self.languageOverrideWidget.selectedItems()[0] |
|
221 dlg = EditorLanguageTabIndentOverrideDialog( |
|
222 editMode=True, |
|
223 languages=[itm.text(0)], |
|
224 tabWidth=int(itm.text(1)), |
|
225 indentWidth=int(itm.text(2)), |
|
226 ) |
|
227 if dlg.exec_() == QDialog.Accepted: |
|
228 language, tabWidth, indentWidth = dlg.getData() |
|
229 itm.setText(1, "{0:2d}".format(tabWidth)) |
|
230 itm.setText(2, "{0:2d}".format(indentWidth)) |
|
231 |
96 |
232 |
97 def create(dlg): |
233 def create(dlg): |
98 """ |
234 """ |
99 Module function to create the configuration page. |
235 Module function to create the configuration page. |
100 |
236 |