Hide the settings storing api
[bertos.git] / wizard / BVersionPage.py
1 #!/usr/bin/env python
2 # encoding: utf-8
3 #
4 # Copyright 2008 Develer S.r.l. (http://www.develer.com/)
5 # All rights reserved.
6 #
7 # $Id:$
8 #
9 # Author: Lorenzo Berni <duplo@develer.com>
10 #
11
12 from PyQt4.QtGui import *
13 from BWizardPage import *
14 import bertos_utils
15 import qvariant_converter
16
17 class BVersionPage(BWizardPage):
18     
19     def __init__(self):
20         BWizardPage.__init__(self, "bertos_versions.ui")
21         self._connectSignals()
22         self._fillVersionList()
23         self._setupUi()
24         self.setTitle(self.tr("Select the BeRTOS version needed"))
25     
26     def _connectSignals(self):
27         self.connect(self.pageContent.versionList, SIGNAL("itemSelectionChanged()"), self.rowChanged)
28         self.connect(self.pageContent.addButton, SIGNAL("clicked()"), self.addVersion)
29         self.connect(self.pageContent.removeButton, SIGNAL("clicked()"), self.removeVersion)
30         # Fake signal connection for the update button
31         self.connect(self.pageContent.updateButton, SIGNAL("clicked()"), self.updateClicked)
32     
33     def _setupUi(self):
34         self.pageContent.versionList.setCurrentRow(-1)
35     
36     def _storeVersion(self, directory):
37         versions = self.versions()
38         versions = set(versions + [directory])
39         self.setVersions(list(versions))
40     
41     def _deleteVersion(self, directory):
42         versions = self.versions()
43         versions.remove(directory)
44         self.setVersions(versions)
45         
46     def _insertListElement(self, directory):
47         if bertos_utils.isBertosDir(directory):
48             item = QListWidgetItem(QIcon(":/images/ok.png"), bertos_utils.bertosVersion(directory) + " (\"" + directory + "\")")
49             item.setData(Qt.UserRole, QVariant(directory))
50             self.pageContent.versionList.addItem(item)
51         elif len(directory) > 0:
52             item = QListWidgetItem(QIcon(":/images/warning.png"), "UNKNOWN" + " (\"" + directory + "\")")
53             item.setData(Qt.UserRole, QVariant(directory))
54             self.pageContent.versionList.addItem(item)
55     
56     def _fillVersionList(self):
57         versions = self.versions()
58         for directory in versions:
59             self._insertListElement(directory)
60
61     def isComplete(self):
62         if self.pageContent.versionList.currentRow() != -1:
63             self._projectInfoStore("SOURCES_PATH", qvariant_converter.getString(self.pageContent.versionList.currentItem().data(Qt.UserRole)))
64             return True
65         else:
66             return False
67     
68     def addVersion(self):
69         directory = QFileDialog.getExistingDirectory(self, self.tr("Choose a directory"), "", QFileDialog.ShowDirsOnly | QFileDialog.DontResolveSymlinks)
70         if not directory.isEmpty():
71             self._storeVersion(unicode(directory))
72             self.pageContent.versionList.clear()
73             self._fillVersionList()
74             self.emit(SIGNAL("completeChanged()"))
75     
76     def removeVersion(self):
77         item = self.pageContent.versionList.takeItem(self.pageContent.versionList.currentRow())
78         self._deleteVersion(qvariant_converter.getString(item.data(Qt.UserRole)))
79         self.emit(SIGNAL("completeChanged()"))
80     
81     def updateClicked(self):
82         print "fake update checking"
83     
84     def rowChanged(self):
85         self.emit(SIGNAL("completeChanged()"))
86