ProjectPyramid/ConfigurationPage/PyramidPage.py

changeset 2
e691c51ab655
child 12
a8d87f7de3e1
diff -r 012c492a9bd6 -r e691c51ab655 ProjectPyramid/ConfigurationPage/PyramidPage.py
--- /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))

eric ide

mercurial