--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ProjectPyramid/ConfigurationPage/PyramidPage.py Tue Aug 28 17:15:21 2012 +0200 @@ -0,0 +1,157 @@ +# -*- 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") + else: + consoleList.append("konsole -e") + consoleList.append("@konsole --workdir . -e") + # KDE4 konsole spawns + consoleList.append("gnome-terminal -x") + consoleList.append("xterm -e") + + consoleNoCloseList = [] + if isWindowsPlatform(): + consoleNoCloseList.append("cmd.exe /k") + elif isMacPlatform(): + consoleNoCloseList.append("xterm -hold -e") + else: + consoleNoCloseList.append("konsole --noclose -e") + consoleNoCloseList.append("@konsole --noclose --workdir . -e") + # KDE4 konsole spawns + consoleNoCloseList.append("xterm -hold -e") + + self.consoleCommandCombo.addItems(consoleList) + self.consoleCommandNoCloseCombo.addItems(consoleNoCloseList) + + 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.consoleCommandNoCloseCombo.setEditText( + self.__plugin.getPreferences("ConsoleCommandNoClose")) + + self.virtualEnvPy2Edit.setText( + self.__plugin.getPreferences("VirtualEnvironmentPy2")) + self.virtualEnvPy3Edit.setText( + self.__plugin.getPreferences("VirtualEnvironmentPy3")) + + self.portSpinBox.setValue( + self.__plugin.getPreferences("ServerPort")) + + 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("ConsoleCommandNoClose", + self.consoleCommandNoCloseCombo.currentText()) + + self.__plugin.setPreferences("VirtualEnvironmentPy2", + self.virtualEnvPy2Edit.text()) + self.__plugin.setPreferences("VirtualEnvironmentPy3", + self.virtualEnvPy3Edit.text()) + + self.__plugin.setPreferences("ServerPort", + self.portSpinBox.value()) + + 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))