eric6/Preferences/ConfigurationPages/InterfacePage.py

changeset 6942
2602857055c5
parent 6803
4a6257252525
child 6987
3371a03ed0a7
equal deleted inserted replaced
6941:f99d60d6b59b 6942:2602857055c5
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2006 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the Interface configuration page.
8 """
9
10 from __future__ import unicode_literals
11
12 import glob
13 import os
14
15 from PyQt5.QtCore import pyqtSlot, QTranslator
16 from PyQt5.QtWidgets import QStyleFactory
17
18 from E5Gui.E5PathPicker import E5PathPickerModes
19
20 from .ConfigurationPageBase import ConfigurationPageBase
21 from .Ui_InterfacePage import Ui_InterfacePage
22
23 import Preferences
24 import Utilities
25
26 from eric6config import getConfig
27
28
29 class InterfacePage(ConfigurationPageBase, Ui_InterfacePage):
30 """
31 Class implementing the Interface configuration page.
32 """
33 def __init__(self):
34 """
35 Constructor
36 """
37 super(InterfacePage, self).__init__()
38 self.setupUi(self)
39 self.setObjectName("InterfacePage")
40
41 self.styleSheetPicker.setMode(E5PathPickerModes.OpenFileMode)
42 self.styleSheetPicker.setFilters(self.tr(
43 "Qt Style Sheets (*.qss);;Cascading Style Sheets (*.css);;"
44 "All files (*)"))
45 self.styleSheetPicker.setDefaultDirectory(getConfig("ericStylesDir"))
46
47 # set initial values
48 self.__populateStyleCombo()
49 self.__populateLanguageCombo()
50
51 self.uiBrowsersListFoldersFirstCheckBox.setChecked(
52 Preferences.getUI("BrowsersListFoldersFirst"))
53 self.uiBrowsersHideNonPublicCheckBox.setChecked(
54 Preferences.getUI("BrowsersHideNonPublic"))
55 self.uiBrowsersSortByOccurrenceCheckBox.setChecked(
56 Preferences.getUI("BrowsersListContentsByOccurrence"))
57 self.uiBrowsersShowHiddenCheckBox.setChecked(
58 Preferences.getUI("BrowsersListHiddenFiles"))
59 self.fileFiltersEdit.setText(
60 Preferences.getUI("BrowsersFileFilters"))
61
62 self.uiCaptionShowsFilenameGroupBox.setChecked(
63 Preferences.getUI("CaptionShowsFilename"))
64 self.filenameLengthSpinBox.setValue(
65 Preferences.getUI("CaptionFilenameLength"))
66 self.styleSheetPicker.setText(Preferences.getUI("StyleSheet"))
67
68 if Preferences.getUI("TopLeftByLeft"):
69 self.tlLeftButton.setChecked(True)
70 else:
71 self.tlTopButton.setChecked(True)
72 if Preferences.getUI("BottomLeftByLeft"):
73 self.blLeftButton.setChecked(True)
74 else:
75 self.blBottomButton.setChecked(True)
76 if Preferences.getUI("TopRightByRight"):
77 self.trRightButton.setChecked(True)
78 else:
79 self.trTopButton.setChecked(True)
80 if Preferences.getUI("BottomRightByRight"):
81 self.brRightButton.setChecked(True)
82 else:
83 self.brTopButton.setChecked(True)
84
85 layoutType = Preferences.getUI("LayoutType")
86 if layoutType == "Sidebars":
87 index = 0
88 elif layoutType == "Toolboxes":
89 index = 1
90 else:
91 index = 0 # default for bad values
92 self.layoutComboBox.setCurrentIndex(index)
93
94 # integrated tools activation
95 # left side
96 self.templateViewerCheckBox.setChecked(
97 Preferences.getUI("ShowTemplateViewer"))
98 self.fileBrowserCheckBox.setChecked(
99 Preferences.getUI("ShowFileBrowser"))
100 self.symbolsCheckBox.setChecked(
101 Preferences.getUI("ShowSymbolsViewer"))
102 # right side
103 self.codeDocumentationViewerCheckBox.setChecked(
104 Preferences.getUI("ShowCodeDocumentationViewer"))
105 self.pypiCheckBox.setChecked(
106 Preferences.getUI("ShowPyPIPackageManager"))
107 self.condaCheckBox.setChecked(
108 Preferences.getUI("ShowCondaPackageManager"))
109 self.cooperationCheckBox.setChecked(
110 Preferences.getUI("ShowCooperation"))
111 self.ircCheckBox.setChecked(
112 Preferences.getUI("ShowIrc"))
113 # bottom side
114 self.numbersCheckBox.setChecked(
115 Preferences.getUI("ShowNumbersViewer"))
116
117 self.tabsGroupBox.setEnabled(True)
118 self.tabsCloseButtonCheckBox.setChecked(
119 Preferences.getUI("SingleCloseButton"))
120
121 self.delaySpinBox.setValue(Preferences.getUI("SidebarDelay"))
122
123 def save(self):
124 """
125 Public slot to save the Interface configuration.
126 """
127 # save the style settings
128 styleIndex = self.styleComboBox.currentIndex()
129 style = self.styleComboBox.itemData(styleIndex)
130 Preferences.setUI("Style", style)
131
132 # save the other UI related settings
133 Preferences.setUI(
134 "BrowsersListFoldersFirst",
135 self.uiBrowsersListFoldersFirstCheckBox.isChecked())
136 Preferences.setUI(
137 "BrowsersHideNonPublic",
138 self.uiBrowsersHideNonPublicCheckBox.isChecked())
139 Preferences.setUI(
140 "BrowsersListContentsByOccurrence",
141 self.uiBrowsersSortByOccurrenceCheckBox.isChecked())
142 Preferences.setUI(
143 "BrowsersListHiddenFiles",
144 self.uiBrowsersShowHiddenCheckBox.isChecked())
145 Preferences.setUI(
146 "BrowsersFileFilters",
147 self.fileFiltersEdit.text())
148
149 Preferences.setUI(
150 "CaptionShowsFilename",
151 self.uiCaptionShowsFilenameGroupBox.isChecked())
152 Preferences.setUI(
153 "CaptionFilenameLength",
154 self.filenameLengthSpinBox.value())
155 Preferences.setUI(
156 "StyleSheet",
157 self.styleSheetPicker.text())
158
159 # save the dockarea corner settings
160 Preferences.setUI(
161 "TopLeftByLeft",
162 self.tlLeftButton.isChecked())
163 Preferences.setUI(
164 "BottomLeftByLeft",
165 self.blLeftButton.isChecked())
166 Preferences.setUI(
167 "TopRightByRight",
168 self.trRightButton.isChecked())
169 Preferences.setUI(
170 "BottomRightByRight",
171 self.brRightButton.isChecked())
172
173 # save the language settings
174 uiLanguageIndex = self.languageComboBox.currentIndex()
175 if uiLanguageIndex:
176 uiLanguage = \
177 self.languageComboBox.itemData(uiLanguageIndex)
178 else:
179 uiLanguage = None
180 Preferences.setUILanguage(uiLanguage)
181
182 # save the interface layout settings
183 if self.layoutComboBox.currentIndex() == 0:
184 layoutType = "Sidebars"
185 elif self.layoutComboBox.currentIndex() == 1:
186 layoutType = "Toolboxes"
187 else:
188 layoutType = "Sidebars" # just in case
189 Preferences.setUI("LayoutType", layoutType)
190
191 # save the integrated tools activation
192 # left side
193 Preferences.setUI(
194 "ShowTemplateViewer",
195 self.templateViewerCheckBox.isChecked())
196 Preferences.setUI(
197 "ShowFileBrowser",
198 self.fileBrowserCheckBox.isChecked())
199 Preferences.setUI(
200 "ShowSymbolsViewer",
201 self.symbolsCheckBox.isChecked())
202 # right side
203 Preferences.setUI(
204 "ShowCodeDocumentationViewer",
205 self.codeDocumentationViewerCheckBox.isChecked())
206 Preferences.setUI(
207 "ShowPyPIPackageManager",
208 self.pypiCheckBox.isChecked())
209 Preferences.setUI(
210 "ShowCondaPackageManager",
211 self.condaCheckBox.isChecked())
212 Preferences.setUI(
213 "ShowCooperation",
214 self.cooperationCheckBox.isChecked())
215 Preferences.setUI(
216 "ShowIrc",
217 self.ircCheckBox.isChecked())
218 # bottom side
219 Preferences.setUI(
220 "ShowNumbersViewer",
221 self.numbersCheckBox.isChecked())
222
223 Preferences.setUI(
224 "SingleCloseButton",
225 self.tabsCloseButtonCheckBox.isChecked())
226
227 Preferences.setUI("SidebarDelay", self.delaySpinBox.value())
228
229 def __populateStyleCombo(self):
230 """
231 Private method to populate the style combo box.
232 """
233 curStyle = Preferences.getUI("Style")
234 styles = sorted(list(QStyleFactory.keys()))
235 self.styleComboBox.addItem(self.tr('System'), "System")
236 for style in styles:
237 self.styleComboBox.addItem(style, style)
238 currentIndex = self.styleComboBox.findData(curStyle)
239 if currentIndex == -1:
240 currentIndex = 0
241 self.styleComboBox.setCurrentIndex(currentIndex)
242
243 def __populateLanguageCombo(self):
244 """
245 Private method to initialize the language combobox of the Interface
246 configuration page.
247 """
248 self.languageComboBox.clear()
249
250 fnlist = glob.glob("eric6_*.qm") + \
251 glob.glob(os.path.join(
252 getConfig('ericTranslationsDir'), "eric6_*.qm")) + \
253 glob.glob(os.path.join(Utilities.getConfigDir(), "eric6_*.qm"))
254 locales = {}
255 for fn in fnlist:
256 locale = os.path.basename(fn)[6:-3]
257 if locale not in locales:
258 translator = QTranslator()
259 translator.load(fn)
260 locales[locale] = translator.translate(
261 "InterfacePage", "English",
262 "Translate this with your language") + \
263 " ({0})".format(locale)
264 localeList = sorted(list(locales.keys()))
265 try:
266 uiLanguage = Preferences.getUILanguage()
267 if uiLanguage == "None" or uiLanguage is None:
268 currentIndex = 0
269 elif uiLanguage == "System":
270 currentIndex = 1
271 else:
272 currentIndex = localeList.index(uiLanguage) + 2
273 except ValueError:
274 currentIndex = 0
275 self.languageComboBox.clear()
276
277 self.languageComboBox.addItem("English (default)", "None")
278 self.languageComboBox.addItem(self.tr('System'), "System")
279 for locale in localeList:
280 self.languageComboBox.addItem(locales[locale], locale)
281 self.languageComboBox.setCurrentIndex(currentIndex)
282
283 @pyqtSlot()
284 def on_resetLayoutButton_clicked(self):
285 """
286 Private method to reset layout to factory defaults.
287 """
288 Preferences.resetLayout()
289
290
291 def create(dlg):
292 """
293 Module function to create the configuration page.
294
295 @param dlg reference to the configuration dialog
296 @return reference to the instantiated page (ConfigurationPageBase)
297 """
298 page = InterfacePage()
299 return page

eric ide

mercurial