4 # Copyright 2008 Develer S.r.l. (http://www.develer.com/)
9 # Author: Lorenzo Berni <duplo@develer.com>
14 from PyQt4.QtGui import *
15 from BWizardPage import *
17 import qvariant_converter
21 class BVersionPage(BWizardPage):
24 BWizardPage.__init__(self, UI_LOCATION + "/bertos_versions.ui")
25 self._connectSignals()
26 self._fillVersionList()
28 self.setTitle(self.tr("Select the BeRTOS version needed"))
30 def _connectSignals(self):
31 self.connect(self.pageContent.versionList, SIGNAL("itemSelectionChanged()"), self.rowChanged)
32 self.connect(self.pageContent.addButton, SIGNAL("clicked()"), self.addVersion)
33 self.connect(self.pageContent.removeButton, SIGNAL("clicked()"), self.removeVersion)
34 # Fake signal connection for the update button
35 self.connect(self.pageContent.updateButton, SIGNAL("clicked()"), self.updateClicked)
38 self.pageContent.versionList.setCurrentRow(-1)
40 def _storeVersion(self, directory):
41 versions = self.versions()
42 versions = set(versions + [directory])
43 self.setVersions(list(versions))
45 def _deleteVersion(self, directory):
46 versions = self.versions()
47 versions.remove(directory)
48 self.setVersions(versions)
50 def _insertListElement(self, directory):
51 if bertos_utils.isBertosDir(directory):
52 item = QListWidgetItem(QIcon(":/images/ok.png"), bertos_utils.bertosVersion(directory) + " (\"" + os.path.normpath(directory) + "\")")
53 item.setData(Qt.UserRole, qvariant_converter.convertString(directory))
54 self.pageContent.versionList.addItem(item)
55 elif len(directory) > 0:
56 item = QListWidgetItem(QIcon(":/images/warning.png"), "UNKNOWN" + " (\"" + os.path.normpath(directory) + "\")")
57 item.setData(Qt.UserRole, qvariant_converter.convertString(directory))
58 self.pageContent.versionList.addItem(item)
60 def _fillVersionList(self):
61 versions = self.versions()
62 for directory in versions:
63 self._insertListElement(directory)
66 if self.pageContent.versionList.currentRow() != -1:
67 # Remove trailing slash
68 sources_path = qvariant_converter.getString(self.pageContent.versionList.currentItem().data(Qt.UserRole))
69 if sources_path.endswith(os.sep):
70 sources_path = sources_path[:-1]
71 self._projectInfoStore("SOURCES_PATH", sources_path)
77 directory = QFileDialog.getExistingDirectory(self, self.tr("Choose a directory"), "", QFileDialog.ShowDirsOnly | QFileDialog.DontResolveSymlinks)
78 if not directory.isEmpty():
79 self._storeVersion(unicode(directory))
80 self.pageContent.versionList.clear()
81 self._fillVersionList()
82 self.emit(SIGNAL("completeChanged()"))
84 def removeVersion(self):
85 item = self.pageContent.versionList.takeItem(self.pageContent.versionList.currentRow())
86 self._deleteVersion(qvariant_converter.getString(item.data(Qt.UserRole)))
87 self.emit(SIGNAL("completeChanged()"))
89 def updateClicked(self):
90 print "fake update checking"
93 self.emit(SIGNAL("completeChanged()"))