Change the signal connected to the completeChanged signal
[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("itemSelectionChanged()"), self.rowChanged)
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         self.pageContent.versionList.setCurrentRow(-1)
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         if self.pageContent.versionList.currentRow() != -1:
63             self._projectInfoStore("SOURCES_PATH", unicode(self.pageContent.versionList.currentItem().data(Qt.UserRole).toString()))
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(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(item.data(Qt.UserRole).toString())
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