Add test dependences in run_tests.sh; add test parsing; remove cpp support.
[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
16 class BVersionPage(BWizardPage):
17     
18     def __init__(self):
19         BWizardPage.__init__(self, "bertos_versions.ui")
20         self._connectSignals()
21         self._fillVersionList()
22         self._setupUi()
23         self.setTitle(self.tr("Select the BeRTOS version needed"))
24     
25     def _connectSignals(self):
26         self.connect(self.pageContent.versionList, SIGNAL("itemClicked(QListWidgetItem *)"), self.itemClicked)
27         self.connect(self.pageContent.addButton, SIGNAL("clicked()"), self.addVersion)
28         self.connect(self.pageContent.removeButton, SIGNAL("clicked()"), self.removeVersion)
29         # Fake signal connection for the update button
30         self.connect(self.pageContent.updateButton, SIGNAL("clicked()"), self.updateClicked)
31     
32     def _setupUi(self):
33         pass
34     
35     def _storeVersion(self, directory):
36         versions = self._settingsRetrieve("versions").toList()
37         versions = set([x.toString() for x in versions] + [directory])
38         self._settingsStore("versions", list(versions))
39     
40     def _deleteVersion(self, directory):
41         versions = self._settingsRetrieve(QString("versions")).toList()
42         versions = [x.toString() for x in versions]
43         versions.remove(directory)
44         self._settingsStore("versions", 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 not directory.isEmpty():
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._settingsRetrieve("versions").toList()
58         for directory in versions:
59             self._insertListElement(directory.toString())
60
61     def isComplete(self):
62         return self.pageContent.versionList.currentRow() != -1
63     
64     def addVersion(self):
65         directory = QFileDialog.getExistingDirectory(self, self.tr("Choose a directory"), "", QFileDialog.ShowDirsOnly | QFileDialog.DontResolveSymlinks)
66         if not directory.isEmpty():
67             self._storeVersion(directory)
68             self.pageContent.versionList.clear()
69             self._fillVersionList()
70             self.emit(SIGNAL("completeChanged()"))
71     
72     def removeVersion(self):
73         item = self.pageContent.versionList.takeItem(self.pageContent.versionList.currentRow())
74         self._deleteVersion(item.data(Qt.UserRole).toString())
75         self.emit(SIGNAL("completeChanged()"))
76     
77     def updateClicked(self):
78         print "fake update checking"
79     
80     def itemClicked(self, item):
81         self.emit(SIGNAL("completeChanged()"))
82