|
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 |