ProjectPyramid/ConfigurationPage/PyramidPage.py

Tue, 01 Jun 2021 19:37:46 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 01 Jun 2021 19:37:46 +0200
branch
eric7
changeset 147
eb28b4b6f7f5
parent 144
5c3684ee818e
child 156
62170c2682a3
permissions
-rw-r--r--

Ported the plug-in to PyQt6 for eric7.
(But it needs rework for recent Pyramid version.)

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

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

"""
Module implementing the Pyramid configuration page.
"""

from PyQt6.QtCore import pyqtSlot

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

from Preferences.ConfigurationPages.ConfigurationPageBase import (
    ConfigurationPageBase
)
from .Ui_PyramidPage import Ui_PyramidPage

import UI.PixmapCache

from Globals import isWindowsPlatform, isMacPlatform


class PyramidPage(ConfigurationPageBase, Ui_PyramidPage):
    """
    Class implementing the Pyramid configuration page.
    """
    def __init__(self, plugin):
        """
        Constructor
        
        @param plugin reference to the plugin object
        @type ProjectPyramidPlugin
        """
        super().__init__()
        self.setupUi(self)
        self.setObjectName("PyramidPage")
        
        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")
        self.consoleCommandCombo.addItems(consoleList)
        
        self.urlResetButton.setIcon(UI.PixmapCache.getIcon("editUndo"))
        
        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()))
        
        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.py3ShellCombo.setCurrentIndex(self.py3ShellCombo.findData(
            self.__plugin.getPreferences("Python3ConsoleType")))
        
        self.urlEdit.setText(
            self.__plugin.getPreferences("PyramidDocUrl"))
        
        self.translationsEditorPicker.setText(
            self.__plugin.getPreferences("TranslationsEditor"))
    
    def save(self):
        """
        Public slot to save the Pyramid 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(
            "Python3ConsoleType",
            self.py3ShellCombo.itemData(self.py3ShellCombo.currentIndex()))
        
        self.__plugin.setPreferences(
            "PyramidDocUrl", self.urlEdit.text())
        
        self.__plugin.setPreferences(
            "TranslationsEditor", self.translationsEditorPicker.text())
    
    @pyqtSlot()
    def on_urlResetButton_clicked(self):
        """
        Private slot to reset the Pyramid documentation URL.
        """
        self.urlEdit.setText(
            self.__plugin.getDefaultPreference("PyramidDocUrl"))

eric ide

mercurial