ProjectPyramid/ConfigurationPage/PyramidPage.py

Fri, 31 Aug 2012 17:44:10 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 31 Aug 2012 17:44:10 +0200
changeset 21
e58828e9a847
parent 19
f4adfe6e51b0
child 34
d20f7218d53c
permissions
-rw-r--r--

Some streamlining and fixes.

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

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

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

from PyQt4.QtCore import pyqtSlot

from E5Gui.E5Completers import E5DirCompleter
from E5Gui import E5FileDialog

from Preferences.ConfigurationPages.ConfigurationPageBase import ConfigurationPageBase
from .Ui_PyramidPage import Ui_PyramidPage

import Utilities

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
        """
        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 -e")
            consoleList.append("@konsole --workdir . -e")
            # KDE4 konsole spawns
            consoleList.append("gnome-terminal -x")
            consoleList.append("xterm -e")
        self.consoleCommandCombo.addItems(consoleList)
        
        self.virtualEnvPy2Completer = E5DirCompleter(self.virtualEnvPy2Edit)
        self.virtualEnvPy3Completer = E5DirCompleter(self.virtualEnvPy3Edit)
        
        self.py2ShellCombo.addItem(self.trUtf8("Plain Python"), "python")
        self.py2ShellCombo.addItem(self.trUtf8("IPython"), "ipython")
        self.py2ShellCombo.addItem(self.trUtf8("bpython"), "bpython")
        
        self.py3ShellCombo.addItem(self.trUtf8("Plain Python"), "python")
        self.py3ShellCombo.addItem(self.trUtf8("IPython"), "ipython")
        self.py3ShellCombo.addItem(self.trUtf8("bpython"), "bpython")
        
        # set initial values
        self.consoleCommandCombo.setEditText(
            self.__plugin.getPreferences("ConsoleCommand"))
        
        self.virtualEnvPy2Edit.setText(
            self.__plugin.getPreferences("VirtualEnvironmentPy2"))
        self.virtualEnvPy3Edit.setText(
            self.__plugin.getPreferences("VirtualEnvironmentPy3"))
        
        self.py2ShellCombo.setCurrentIndex(self.py2ShellCombo.findData(
            self.__plugin.getPreferences("Python2ConsoleType")))
        self.py3ShellCombo.setCurrentIndex(self.py3ShellCombo.findData(
            self.__plugin.getPreferences("Python3ConsoleType")))
        
        self.urlEdit.setText(
            self.__plugin.getPreferences("PyramidDocUrl"))
    
    def save(self):
        """
        Public slot to save the Pyramid configuration.
        """
        self.__plugin.setPreferences("ConsoleCommand",
            self.consoleCommandCombo.currentText())
        
        self.__plugin.setPreferences("VirtualEnvironmentPy2",
            self.virtualEnvPy2Edit.text())
        self.__plugin.setPreferences("VirtualEnvironmentPy3",
            self.virtualEnvPy3Edit.text())
        
        self.__plugin.setPreferences("Python2ConsoleType",
            self.py2ShellCombo.itemData(self.py2ShellCombo.currentIndex()))
        self.__plugin.setPreferences("Python3ConsoleType",
            self.py3ShellCombo.itemData(self.py3ShellCombo.currentIndex()))
        
        self.__plugin.setPreferences("PyramidDocUrl",
            self.urlEdit.text())
    
    @pyqtSlot()
    def on_virtualEnvPy3Button_clicked(self):
        """
        Private slot to select the virtual environment for Python 3 via a
        directory selection dialog.
        """
        vDir = self.virtualEnvPy3Edit.text()
        if not vDir:
            vDir = Utilities.getHomeDir()
        virtualEnv = E5FileDialog.getExistingDirectory(
            self,
            self.trUtf8("Select Virtual Environment for Python 3"),
            vDir,
            E5FileDialog.Options(E5FileDialog.Option(0)))
        
        if virtualEnv:
            self.virtualEnvPy3Edit.setText(Utilities.toNativeSeparators(virtualEnv))
    
    @pyqtSlot()
    def on_virtualEnvPy2Button_clicked(self):
        """
        Private slot to select the virtual environment for Python 2 via a
        directory selection dialog.
        """
        vDir = self.virtualEnvPy2Edit.text()
        if not vDir:
            vDir = Utilities.getHomeDir()
        virtualEnv = E5FileDialog.getExistingDirectory(
            self,
            self.trUtf8("Select Virtual Environment for Python 2"),
            vDir,
            E5FileDialog.Options(E5FileDialog.Option(0)))
        
        if virtualEnv:
            self.virtualEnvPy2Edit.setText(Utilities.toNativeSeparators(virtualEnv))

eric ide

mercurial