Preferences/ConfigurationPages/ProjectBrowserPage.py

changeset 0
de9c2efb9d02
child 7
c679fb30c8f3
equal deleted inserted replaced
-1:000000000000 0:de9c2efb9d02
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2006 - 2009 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the Project Browser configuration page.
8 """
9
10 from PyQt4.QtCore import pyqtSlot, QVariant
11
12 from E4Gui.E4Application import e4App
13
14 from ConfigurationPageBase import ConfigurationPageBase
15 from Ui_ProjectBrowserPage import Ui_ProjectBrowserPage
16
17 from Project.ProjectBrowserFlags import SourcesBrowserFlag, FormsBrowserFlag, \
18 ResourcesBrowserFlag, TranslationsBrowserFlag, InterfacesBrowserFlag, \
19 OthersBrowserFlag, AllBrowsersFlag
20
21 import Preferences
22
23 class ProjectBrowserPage(ConfigurationPageBase, Ui_ProjectBrowserPage):
24 """
25 Class implementing the Project Browser configuration page.
26 """
27 def __init__(self):
28 """
29 Constructor
30 """
31 ConfigurationPageBase.__init__(self)
32 self.setupUi(self)
33 self.setObjectName("ProjectBrowserPage")
34
35 self.projectBrowserColours = {}
36 self.__currentProjectTypeIndex = 0
37
38 # set initial values
39 self.projectTypeCombo.addItem('', QVariant(''))
40 self.__projectBrowserFlags = {'' : 0}
41 try:
42 projectTypes = e4App().getObject("Project").getProjectTypes()
43 for projectType in sorted(projectTypes.keys()):
44 self.projectTypeCombo.addItem(projectTypes[projectType],
45 QVariant(projectType))
46 self.__projectBrowserFlags[projectType] = \
47 Preferences.getProjectBrowserFlags(projectType)
48 except KeyError:
49 self.pbGroup.setEnabled(False)
50
51 self.projectBrowserColours["Highlighted"] = \
52 self.initColour("Highlighted", self.pbHighlightedButton,
53 Preferences.getProjectBrowserColour)
54
55 self.followEditorCheckBox.setChecked(\
56 Preferences.getProject("FollowEditor"))
57 self.hideGeneratedCheckBox.setChecked(\
58 Preferences.getProject("HideGeneratedForms"))
59
60 def save(self):
61 """
62 Public slot to save the Project Browser configuration.
63 """
64 for key in self.projectBrowserColours.keys():
65 Preferences.setProjectBrowserColour(key, self.projectBrowserColours[key])
66
67 Preferences.setProject("FollowEditor",
68 int(self.followEditorCheckBox.isChecked()))
69 Preferences.setProject("HideGeneratedForms",
70 int(self.hideGeneratedCheckBox.isChecked()))
71
72 if self.pbGroup.isEnabled():
73 self.__storeProjectBrowserFlags(\
74 self.projectTypeCombo.itemData(self.__currentProjectTypeIndex).toString())
75 for projectType, flags in self.__projectBrowserFlags.items():
76 if projectType != '':
77 Preferences.setProjectBrowserFlags(projectType, flags)
78
79 @pyqtSlot()
80 def on_pbHighlightedButton_clicked(self):
81 """
82 Private slot to set the colour for highlighted entries of the
83 project others browser.
84 """
85 self.projectBrowserColours["Highlighted"] = \
86 self.selectColour(self.pbHighlightedButton,
87 self.projectBrowserColours["Highlighted"])
88
89 def __storeProjectBrowserFlags(self, projectType):
90 """
91 Private method to store the flags for the selected project type.
92
93 @param projectType type of the selected project (string)
94 """
95 flags = 0
96 if self.sourcesBrowserCheckBox.isChecked():
97 flags |= SourcesBrowserFlag
98 if self.formsBrowserCheckBox.isChecked():
99 flags |= FormsBrowserFlag
100 if self.resourcesBrowserCheckBox.isChecked():
101 flags |= ResourcesBrowserFlag
102 if self.translationsBrowserCheckBox.isChecked():
103 flags |= TranslationsBrowserFlag
104 if self.interfacesBrowserCheckBox.isChecked():
105 flags |= InterfacesBrowserFlag
106 if self.othersBrowserCheckBox.isChecked():
107 flags |= OthersBrowserFlag
108
109 self.__projectBrowserFlags[projectType] = flags
110
111 def __setProjectBrowsersCheckBoxes(self, projectType):
112 """
113 Private method to set the checkboxes according to the selected project type.
114
115 @param projectType type of the selected project (string)
116 """
117 flags = self.__projectBrowserFlags[projectType]
118
119 self.sourcesBrowserCheckBox.setChecked(flags & SourcesBrowserFlag)
120 self.formsBrowserCheckBox.setChecked(flags & FormsBrowserFlag)
121 self.resourcesBrowserCheckBox.setChecked(flags & ResourcesBrowserFlag)
122 self.translationsBrowserCheckBox.setChecked(flags & TranslationsBrowserFlag)
123 self.interfacesBrowserCheckBox.setChecked(flags & InterfacesBrowserFlag)
124 self.othersBrowserCheckBox.setChecked(flags & OthersBrowserFlag)
125
126 @pyqtSlot(int)
127 def on_projectTypeCombo_activated(self, index):
128 """
129 Private slot to set the browser checkboxes according to the selected
130 project type.
131
132 @param index index of the selected project type (integer)
133 """
134 if self.__currentProjectTypeIndex == index:
135 return
136
137 self.__storeProjectBrowserFlags(\
138 self.projectTypeCombo.itemData(self.__currentProjectTypeIndex).toString())
139 self.__setProjectBrowsersCheckBoxes(\
140 self.projectTypeCombo.itemData(index).toString())
141 self.__currentProjectTypeIndex = index
142
143 def create(dlg):
144 """
145 Module function to create the configuration page.
146
147 @param dlg reference to the configuration dialog
148 """
149 page = ProjectBrowserPage()
150 return page

eric ide

mercurial