ProjectDjango/ConfigurationPage/DjangoPage.py

Wed, 21 Sep 2022 16:42:20 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 21 Sep 2022 16:42:20 +0200
branch
eric7
changeset 180
64339135bd61
parent 175
30cb5e553e7e
child 181
2f5c3487139c
permissions
-rw-r--r--

Reformatted source code with 'Black'.

# -*- coding: utf-8 -*-

# Copyright (c) 2013 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
#

"""
Module implementing the Django configuration page.
"""

from EricWidgets.EricApplication import ericApp
from EricWidgets.EricPathPicker import EricPathPickerModes

from Preferences.ConfigurationPages.ConfigurationPageBase import ConfigurationPageBase
from .Ui_DjangoPage import Ui_DjangoPage

from Globals import isWindowsPlatform, isMacPlatform


class DjangoPage(ConfigurationPageBase, Ui_DjangoPage):
    """
    Class implementing the Django configuration page.
    """

    def __init__(self, plugin):
        """
        Constructor

        @param plugin reference to the plugin object
        """
        super().__init__()
        self.setupUi(self)
        self.setObjectName("DjangoPage")

        self.translationsPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE)
        self.translationsPicker.setFilters(self.tr("All Files (*)"))

        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 --workdir . -e")
            # KDE 5 konsole spawns
            consoleList.append("gnome-terminal -e")
            consoleList.append("mate-terminal -e")
            consoleList.append("xfce4-terminal -e")
            consoleList.append("xterm -e")

        consoleNoCloseList = []
        if isWindowsPlatform():
            consoleNoCloseList.append("cmd.exe /k")
        elif isMacPlatform():
            consoleNoCloseList.append("xterm -hold -e")
            consoleNoCloseList.append("/opt/X11/bin/xterm -hold -e")
        else:
            consoleNoCloseList.append("@konsole --noclose --workdir . -e")
            # KDE 5 konsole spawns
            consoleNoCloseList.append("gnome-terminal --profile=<noclose> -e")
            consoleNoCloseList.append("mate-terminal --profile=<noclose> -e")
            consoleNoCloseList.append("xfce4-terminal --hold -e")
            consoleNoCloseList.append("xterm -hold -e")

        self.consoleCommandCombo.addItems(consoleList)
        self.consoleCommandNoCloseCombo.addItems(consoleNoCloseList)

        self.py3ShellCombo.addItem(self.tr("Plain Python"), "python")
        self.py3ShellCombo.addItem(self.tr("IPython"), "ipython")
        self.py3ShellCombo.addItem(self.tr("bpython"), "bpython")

        venvManager = ericApp().getObject("VirtualEnvManager")

        self.py3VenvNameComboBox.addItems(
            [""] + sorted(venvManager.getVirtualenvNames())
        )

        # set initial values
        self.consoleCommandCombo.setEditText(
            self.__plugin.getPreferences("ConsoleCommand")
        )
        self.consoleCommandNoCloseCombo.setEditText(
            self.__plugin.getPreferences("ConsoleCommandNoClose")
        )

        self.serverAddressEdit.setText(self.__plugin.getPreferences("ServerAddress"))
        self.ipv6CheckBox.setChecked(self.__plugin.getPreferences("UseIPv6"))
        self.threadingCheckBox.setChecked(self.__plugin.getPreferences("UseThreading"))

        self.externalBrowserCheckBox.setChecked(
            self.__plugin.getPreferences("UseExternalBrowser")
        )

        self.appsRecentSpinBox.setValue(
            self.__plugin.getPreferences("RecentNumberApps")
        )

        venvName = self.__plugin.getPreferences("VirtualEnvironmentNamePy3")
        if venvName:
            index = self.py3VenvNameComboBox.findText(venvName)
            if index < 0:
                index = 0
            self.py3VenvNameComboBox.setCurrentIndex(index)

        self.py3ShellCombo.setCurrentIndex(
            self.py3ShellCombo.findData(
                self.__plugin.getPreferences("Python3ConsoleType")
            )
        )

        self.translationsPicker.setText(
            self.__plugin.getPreferences("TranslationsEditor")
        )
        self.fuzzyTranslationsCheckBox.setChecked(
            self.__plugin.getPreferences("FuzzyTranslations")
        )

    def save(self):
        """
        Public slot to save the Django configuration.
        """
        self.__plugin.setPreferences(
            "ConsoleCommand", self.consoleCommandCombo.currentText()
        )
        self.__plugin.setPreferences(
            "ConsoleCommandNoClose", self.consoleCommandNoCloseCombo.currentText()
        )

        self.__plugin.setPreferences("ServerAddress", self.serverAddressEdit.text())
        self.__plugin.setPreferences("UseIPv6", self.ipv6CheckBox.isChecked())
        self.__plugin.setPreferences("UseThreading", self.threadingCheckBox.isChecked())

        self.__plugin.setPreferences(
            "UseExternalBrowser", self.externalBrowserCheckBox.isChecked()
        )

        self.__plugin.setPreferences("RecentNumberApps", self.appsRecentSpinBox.value())

        self.__plugin.setPreferences(
            "VirtualEnvironmentNamePy3", self.py3VenvNameComboBox.currentText()
        )
        self.__plugin.setPreferences(
            "Python3ConsoleType",
            self.py3ShellCombo.itemData(self.py3ShellCombo.currentIndex()),
        )

        self.__plugin.setPreferences(
            "TranslationsEditor", self.translationsPicker.text()
        )
        self.__plugin.setPreferences(
            "FuzzyTranslations", self.fuzzyTranslationsCheckBox.isChecked()
        )

eric ide

mercurial