Preferences/ConfigurationPages/ProjectBrowserPage.py

changeset 0
de9c2efb9d02
child 7
c679fb30c8f3
diff -r 000000000000 -r de9c2efb9d02 Preferences/ConfigurationPages/ProjectBrowserPage.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Preferences/ConfigurationPages/ProjectBrowserPage.py	Mon Dec 28 16:03:33 2009 +0000
@@ -0,0 +1,150 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2006 - 2009 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Project Browser configuration page.
+"""
+
+from PyQt4.QtCore import pyqtSlot, QVariant
+
+from E4Gui.E4Application import e4App
+
+from ConfigurationPageBase import ConfigurationPageBase
+from Ui_ProjectBrowserPage import Ui_ProjectBrowserPage
+
+from Project.ProjectBrowserFlags import SourcesBrowserFlag, FormsBrowserFlag, \
+    ResourcesBrowserFlag, TranslationsBrowserFlag, InterfacesBrowserFlag, \
+    OthersBrowserFlag, AllBrowsersFlag
+
+import Preferences
+
+class ProjectBrowserPage(ConfigurationPageBase, Ui_ProjectBrowserPage):
+    """
+    Class implementing the Project Browser configuration page.
+    """
+    def __init__(self):
+        """
+        Constructor
+        """
+        ConfigurationPageBase.__init__(self)
+        self.setupUi(self)
+        self.setObjectName("ProjectBrowserPage")
+        
+        self.projectBrowserColours = {}
+        self.__currentProjectTypeIndex = 0
+        
+        # set initial values
+        self.projectTypeCombo.addItem('', QVariant(''))
+        self.__projectBrowserFlags = {'' : 0}
+        try:
+            projectTypes = e4App().getObject("Project").getProjectTypes()
+            for projectType in sorted(projectTypes.keys()):
+                self.projectTypeCombo.addItem(projectTypes[projectType], 
+                                              QVariant(projectType))
+                self.__projectBrowserFlags[projectType] = \
+                    Preferences.getProjectBrowserFlags(projectType)
+        except KeyError:
+            self.pbGroup.setEnabled(False)
+        
+        self.projectBrowserColours["Highlighted"] = \
+            self.initColour("Highlighted", self.pbHighlightedButton, 
+                Preferences.getProjectBrowserColour)
+        
+        self.followEditorCheckBox.setChecked(\
+            Preferences.getProject("FollowEditor"))
+        self.hideGeneratedCheckBox.setChecked(\
+            Preferences.getProject("HideGeneratedForms"))
+        
+    def save(self):
+        """
+        Public slot to save the Project Browser configuration.
+        """
+        for key in self.projectBrowserColours.keys():
+            Preferences.setProjectBrowserColour(key, self.projectBrowserColours[key])
+        
+        Preferences.setProject("FollowEditor", 
+            int(self.followEditorCheckBox.isChecked()))
+        Preferences.setProject("HideGeneratedForms", 
+            int(self.hideGeneratedCheckBox.isChecked()))
+        
+        if self.pbGroup.isEnabled():
+            self.__storeProjectBrowserFlags(\
+                self.projectTypeCombo.itemData(self.__currentProjectTypeIndex).toString())
+            for projectType, flags in self.__projectBrowserFlags.items():
+                if projectType != '':
+                    Preferences.setProjectBrowserFlags(projectType, flags)
+        
+    @pyqtSlot()
+    def on_pbHighlightedButton_clicked(self):
+        """
+        Private slot to set the colour for highlighted entries of the 
+        project others browser.
+        """
+        self.projectBrowserColours["Highlighted"] = \
+            self.selectColour(self.pbHighlightedButton, 
+                self.projectBrowserColours["Highlighted"])
+    
+    def __storeProjectBrowserFlags(self, projectType):
+        """
+        Private method to store the flags for the selected project type.
+        
+        @param projectType type of the selected project (string)
+        """
+        flags = 0
+        if self.sourcesBrowserCheckBox.isChecked():
+            flags |= SourcesBrowserFlag
+        if self.formsBrowserCheckBox.isChecked():
+            flags |= FormsBrowserFlag
+        if self.resourcesBrowserCheckBox.isChecked():
+            flags |= ResourcesBrowserFlag
+        if self.translationsBrowserCheckBox.isChecked():
+            flags |= TranslationsBrowserFlag
+        if self.interfacesBrowserCheckBox.isChecked():
+            flags |= InterfacesBrowserFlag
+        if self.othersBrowserCheckBox.isChecked():
+            flags |= OthersBrowserFlag
+        
+        self.__projectBrowserFlags[projectType] = flags
+    
+    def __setProjectBrowsersCheckBoxes(self, projectType):
+        """
+        Private method to set the checkboxes according to the selected project type.
+        
+        @param projectType type of the selected project (string)
+        """
+        flags = self.__projectBrowserFlags[projectType]
+        
+        self.sourcesBrowserCheckBox.setChecked(flags & SourcesBrowserFlag)
+        self.formsBrowserCheckBox.setChecked(flags & FormsBrowserFlag)
+        self.resourcesBrowserCheckBox.setChecked(flags & ResourcesBrowserFlag)
+        self.translationsBrowserCheckBox.setChecked(flags & TranslationsBrowserFlag)
+        self.interfacesBrowserCheckBox.setChecked(flags & InterfacesBrowserFlag)
+        self.othersBrowserCheckBox.setChecked(flags & OthersBrowserFlag)
+    
+    @pyqtSlot(int)
+    def on_projectTypeCombo_activated(self, index):
+        """
+        Private slot to set the browser checkboxes according to the selected
+        project type.
+        
+        @param index index of the selected project type (integer)
+        """
+        if self.__currentProjectTypeIndex == index:
+           return
+        
+        self.__storeProjectBrowserFlags(\
+            self.projectTypeCombo.itemData(self.__currentProjectTypeIndex).toString())
+        self.__setProjectBrowsersCheckBoxes(\
+            self.projectTypeCombo.itemData(index).toString())
+        self.__currentProjectTypeIndex = index
+    
+def create(dlg):
+    """
+    Module function to create the configuration page.
+    
+    @param dlg reference to the configuration dialog
+    """
+    page = ProjectBrowserPage()
+    return page

eric ide

mercurial