src/eric7/Preferences/ConfigurationPages/EditorLanguageTabIndentOverrideDialog.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
equal deleted inserted replaced
9220:e9e7eca7efee 9221:bf71ee032bb4
12 12
13 from PyQt6.QtCore import pyqtSlot 13 from PyQt6.QtCore import pyqtSlot
14 from PyQt6.QtWidgets import QDialog, QDialogButtonBox 14 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
15 15
16 from .Ui_EditorLanguageTabIndentOverrideDialog import ( 16 from .Ui_EditorLanguageTabIndentOverrideDialog import (
17 Ui_EditorLanguageTabIndentOverrideDialog 17 Ui_EditorLanguageTabIndentOverrideDialog,
18 ) 18 )
19 19
20 20
21 class EditorLanguageTabIndentOverrideDialog( 21 class EditorLanguageTabIndentOverrideDialog(
22 QDialog, Ui_EditorLanguageTabIndentOverrideDialog 22 QDialog, Ui_EditorLanguageTabIndentOverrideDialog
23 ): 23 ):
24 """ 24 """
25 Class implementing a dialog to set the tab and indentation width override 25 Class implementing a dialog to set the tab and indentation width override
26 for a language. 26 for a language.
27 """ 27 """
28
28 PygmentsMarker = "Pygments|" 29 PygmentsMarker = "Pygments|"
29 30
30 def __init__(self, *, editMode=False, languages=None, tabWidth=0, 31 def __init__(
31 indentWidth=0, parent=None): 32 self, *, editMode=False, languages=None, tabWidth=0, indentWidth=0, parent=None
33 ):
32 """ 34 """
33 Constructor 35 Constructor
34 36
35 @keyparam editMode flag indicating the edit mode (Note: in edit mode 37 @keyparam editMode flag indicating the edit mode (Note: in edit mode
36 the language is fixed) 38 the language is fixed)
37 @type bool 39 @type bool
38 @keyparam languages list of existing languages (if in add mode) or 40 @keyparam languages list of existing languages (if in add mode) or
39 a list containing the language to be edited 41 a list containing the language to be edited
45 @keyparam parent reference to the parent widget 47 @keyparam parent reference to the parent widget
46 @type QWidget 48 @type QWidget
47 """ 49 """
48 super().__init__(parent) 50 super().__init__(parent)
49 self.setupUi(self) 51 self.setupUi(self)
50 52
51 self.__extras = ["-----------", self.tr("Alternative")] 53 self.__extras = ["-----------", self.tr("Alternative")]
52 54
53 if editMode: 55 if editMode:
54 self.languageComboBox.addItems(languages) 56 self.languageComboBox.addItems(languages)
55 else: 57 else:
56 self.__populateLanguages(languages) 58 self.__populateLanguages(languages)
57 self.tabWidthSpinBox.setValue(tabWidth) 59 self.tabWidthSpinBox.setValue(tabWidth)
58 self.indentWidthSpinBox.setValue(indentWidth) 60 self.indentWidthSpinBox.setValue(indentWidth)
59 61
60 def __populateLanguages(self, filterLanguages): 62 def __populateLanguages(self, filterLanguages):
61 """ 63 """
62 Private method to populate the language combo boxes. 64 Private method to populate the language combo boxes.
63 65
64 @param filterLanguages list of languages to be filtered out 66 @param filterLanguages list of languages to be filtered out
65 @type list of str 67 @type list of str
66 """ 68 """
67 import QScintilla.Lexers 69 import QScintilla.Lexers
68 languages = list( 70
69 QScintilla.Lexers.getSupportedLanguages().keys()) 71 languages = list(QScintilla.Lexers.getSupportedLanguages().keys())
70 for lang in filterLanguages: 72 for lang in filterLanguages:
71 if lang in languages: 73 if lang in languages:
72 languages.remove(lang) 74 languages.remove(lang)
73 self.languageComboBox.addItems( 75 self.languageComboBox.addItems([""] + sorted(languages) + self.__extras)
74 [""] + sorted(languages) + self.__extras) 76
75
76 pygmentsLanguages = [lex[0] for lex in get_all_lexers()] 77 pygmentsLanguages = [lex[0] for lex in get_all_lexers()]
77 for lang in filterLanguages: 78 for lang in filterLanguages:
78 if lang.startswith(self.PygmentsMarker): 79 if lang.startswith(self.PygmentsMarker):
79 lang = lang.replace(self.PygmentsMarker, "") 80 lang = lang.replace(self.PygmentsMarker, "")
80 if lang in pygmentsLanguages: 81 if lang in pygmentsLanguages:
81 pygmentsLanguages.remove(lang) 82 pygmentsLanguages.remove(lang)
82 self.pygmentsLexerCombo.addItems([""] + sorted(pygmentsLanguages)) 83 self.pygmentsLexerCombo.addItems([""] + sorted(pygmentsLanguages))
83 84
84 def getData(self): 85 def getData(self):
85 """ 86 """
86 Public method to get the entered data. 87 Public method to get the entered data.
87 88
88 @return tuple containing the language, the tab width and the 89 @return tuple containing the language, the tab width and the
89 indentation width 90 indentation width
90 @rtype tuple of (str, int, int) 91 @rtype tuple of (str, int, int)
91 """ 92 """
92 language = self.languageComboBox.currentText() 93 language = self.languageComboBox.currentText()
96 return ( 97 return (
97 language, 98 language,
98 self.tabWidthSpinBox.value(), 99 self.tabWidthSpinBox.value(),
99 self.indentWidthSpinBox.value(), 100 self.indentWidthSpinBox.value(),
100 ) 101 )
101 102
102 def __updateOkButton(self): 103 def __updateOkButton(self):
103 """ 104 """
104 Private method to set the enabled status of the OK button. 105 Private method to set the enabled status of the OK button.
105 """ 106 """
106 lang = self.languageComboBox.currentText() 107 lang = self.languageComboBox.currentText()
107 if lang in self.__extras: 108 if lang in self.__extras:
108 self.buttonBox.button( 109 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(
109 QDialogButtonBox.StandardButton.Ok).setEnabled( 110 bool(self.pygmentsLexerCombo.currentText())
110 bool(self.pygmentsLexerCombo.currentText())) 111 )
111 else: 112 else:
112 self.buttonBox.button( 113 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(
113 QDialogButtonBox.StandardButton.Ok).setEnabled( 114 bool(lang)
114 bool(lang)) 115 )
115 116
116 @pyqtSlot(int) 117 @pyqtSlot(int)
117 def on_languageComboBox_currentIndexChanged(self, index): 118 def on_languageComboBox_currentIndexChanged(self, index):
118 """ 119 """
119 Private slot to handle the selection of a language. 120 Private slot to handle the selection of a language.
120 121
121 @param index index of the current item 122 @param index index of the current item
122 @type int 123 @type int
123 """ 124 """
124 lang = self.languageComboBox.itemText(index) 125 lang = self.languageComboBox.itemText(index)
125 if lang in self.__extras: 126 if lang in self.__extras:
126 self.pygmentsLexerCombo.setEnabled(True) 127 self.pygmentsLexerCombo.setEnabled(True)
127 self.pygmentsLabel.setEnabled(True) 128 self.pygmentsLabel.setEnabled(True)
128 else: 129 else:
129 self.pygmentsLexerCombo.setEnabled(False) 130 self.pygmentsLexerCombo.setEnabled(False)
130 self.pygmentsLabel.setEnabled(False) 131 self.pygmentsLabel.setEnabled(False)
131 132
132 self.__updateOkButton() 133 self.__updateOkButton()
133 134
134 @pyqtSlot(int) 135 @pyqtSlot(int)
135 def on_pygmentsLexerCombo_currentIndexChanged(self, index): 136 def on_pygmentsLexerCombo_currentIndexChanged(self, index):
136 """ 137 """
137 Private slot to handle the selection of a language. 138 Private slot to handle the selection of a language.
138 139
139 @param index index of the current item 140 @param index index of the current item
140 @type int 141 @type int
141 """ 142 """
142 self.__updateOkButton() 143 self.__updateOkButton()

eric ide

mercurial