Sat, 31 Dec 2022 16:27:49 +0100
Updated copyright for 2023.
# -*- coding: utf-8 -*- # Copyright (c) 2020 - 2023 Detlev Offenbach <detlev@die-offenbachs.de> # """ Module implementing the Flask configuration page. """ from PyQt6.QtCore import pyqtSlot try: from eric7.EricGui import EricPixmapCache except ImportError: from UI import PixmapCache as EricPixmapCache from eric7.EricWidgets.EricApplication import ericApp from eric7.EricWidgets.EricPathPicker import EricPathPickerModes from eric7.Preferences.ConfigurationPages.ConfigurationPageBase import ( ConfigurationPageBase, ) try: from eric7.SystemUtilities.OSUtilities import isMacPlatform, isWindowsPlatform except ImportError: # imports for eric < 23.1 from eric7.Globals import isMacPlatform, isWindowsPlatform from .. import AnsiTools from .Ui_FlaskPage import Ui_FlaskPage class FlaskPage(ConfigurationPageBase, Ui_FlaskPage): """ Class implementing the Flask configuration page. """ def __init__(self, plugin): """ Constructor @param plugin reference to the plugin object @type ProjectFlaskPlugin """ super().__init__() self.setupUi(self) self.setObjectName("FlaskPage") self.__plugin = plugin consoleList = [] if isWindowsPlatform(): consoleList.append("cmd.exe /c") elif isMacPlatform(): consoleList.append("xterm -e") consoleList.append("/opt/X11/bin/xterm -e") else: consoleList.append("konsole -e") consoleList.append("gnome-terminal -e") consoleList.append("mate-terminal -e") consoleList.append("xfce4-terminal -e") consoleList.append("xterm -e") self.consoleCommandCombo.addItems(consoleList) self.colorSchemeComboBox.addItems(sorted(AnsiTools.getAvailableColorSchemes())) self.urlResetButton.setIcon(EricPixmapCache.getIcon("editUndo")) self.py3VenvNamesReloadButton.setIcon(EricPixmapCache.getIcon("reload")) venvManager = ericApp().getObject("VirtualEnvManager") self.py3VenvNameComboBox.addItems( [""] + sorted(venvManager.getVirtualenvNames()) ) self.translationsEditorPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) self.translationsEditorPicker.setFilters(self.tr("All Files (*)")) # set initial values self.consoleCommandCombo.setEditText( self.__plugin.getPreferences("ConsoleCommand") ) self.externalBrowserCheckBox.setChecked( self.__plugin.getPreferences("UseExternalBrowser") ) venvName = self.__plugin.getPreferences("VirtualEnvironmentNamePy3") if venvName: index = self.py3VenvNameComboBox.findText(venvName) if index < 0: index = 0 self.py3VenvNameComboBox.setCurrentIndex(index) self.colorSchemeComboBox.setCurrentText( self.__plugin.getPreferences("AnsiColorScheme") ) self.urlEdit.setText(self.__plugin.getPreferences("FlaskDocUrl")) self.translationsEditorPicker.setText( self.__plugin.getPreferences("TranslationsEditor") ) def save(self): """ Public slot to save the Flask configuration. """ self.__plugin.setPreferences( "ConsoleCommand", self.consoleCommandCombo.currentText() ) self.__plugin.setPreferences( "UseExternalBrowser", self.externalBrowserCheckBox.isChecked() ) self.__plugin.setPreferences( "VirtualEnvironmentNamePy3", self.py3VenvNameComboBox.currentText() ) self.__plugin.setPreferences( "AnsiColorScheme", self.colorSchemeComboBox.currentText() ) self.__plugin.setPreferences("FlaskDocUrl", self.urlEdit.text()) self.__plugin.setPreferences( "TranslationsEditor", self.translationsEditorPicker.text() ) @pyqtSlot() def on_py3VenvNamesReloadButton_clicked(self): """ Private slot to reload the virtual environment names. """ currentVenvName = self.py3VenvNameComboBox.currentText() self.py3VenvNameComboBox.clear() venvManager = ericApp().getObject("VirtualEnvManager") self.py3VenvNameComboBox.addItems( [""] + sorted(venvManager.getVirtualenvNames()) ) if currentVenvName: index = self.py3VenvNameComboBox.findText(currentVenvName) if index < 0: index = 0 self.py3VenvNameComboBox.setCurrentIndex(index) @pyqtSlot() def on_urlResetButton_clicked(self): """ Private slot to reset the Flask documentation URL. """ self.urlEdit.setText(self.__plugin.getDefaultPreference("FlaskDocUrl"))