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):
23 Page of the wizard that permits to choose which BeRTOS version the user wants
24 to use. This page show some pieces of information about the version.
28 BWizardPage.__init__(self, UI_LOCATION + "/bertos_versions.ui")
29 self._connectSignals()
30 self._fillVersionList()
32 self.setTitle(self.tr("Select the BeRTOS version needed"))
34 def _connectSignals(self):
36 Connects the signals to the related slots.
38 self.connect(self.pageContent.versionList, SIGNAL("itemSelectionChanged()"), self.rowChanged)
39 self.connect(self.pageContent.addButton, SIGNAL("clicked()"), self.addVersion)
40 self.connect(self.pageContent.removeButton, SIGNAL("clicked()"), self.removeVersion)
41 # Fake signal connection for the update button
42 self.connect(self.pageContent.updateButton, SIGNAL("clicked()"), self.updateClicked)
46 Sets up the user interface.
48 self.pageContent.versionList.setCurrentRow(-1)
50 def _storeVersion(self, directory):
52 Stores the directory selected by the user in the QSettings.
54 versions = self.versions()
55 versions = set(versions + [directory])
56 self.setVersions(list(versions))
58 def _deleteVersion(self, directory):
60 Removes the given directory from the QSettings.
62 versions = self.versions()
63 versions.remove(directory)
64 self.setVersions(versions)
66 def _insertListElement(self, directory):
68 Inserts the given directory in the version list.
70 if bertos_utils.isBertosDir(directory):
71 item = QListWidgetItem(QIcon(":/images/ok.png"), bertos_utils.bertosVersion(directory) + " (\"" + os.path.normpath(directory) + "\")")
72 item.setData(Qt.UserRole, qvariant_converter.convertString(directory))
73 self.pageContent.versionList.addItem(item)
74 elif len(directory) > 0:
75 item = QListWidgetItem(QIcon(":/images/warning.png"), "UNKNOWN" + " (\"" + os.path.normpath(directory) + "\")")
76 item.setData(Qt.UserRole, qvariant_converter.convertString(directory))
77 self.pageContent.versionList.addItem(item)
79 def _fillVersionList(self):
81 Fills the version list with all the BeRTOS versions founded in the QSettings.
83 versions = self.versions()
84 for directory in versions:
85 self._insertListElement(directory)
89 Overload of the QWizardPage isComplete method.
91 if self.pageContent.versionList.currentRow() != -1:
92 # Remove trailing slash
93 sources_path = qvariant_converter.getString(self.pageContent.versionList.currentItem().data(Qt.UserRole))
94 if sources_path.endswith(os.sep):
95 sources_path = sources_path[:-1]
96 self._projectInfoStore("SOURCES_PATH", sources_path)
101 def addVersion(self):
103 Slot called when the user add a BeRTOS version.
105 directory = QFileDialog.getExistingDirectory(self, self.tr("Choose a directory"), "", QFileDialog.ShowDirsOnly | QFileDialog.DontResolveSymlinks)
106 if not directory.isEmpty():
107 self._storeVersion(unicode(directory))
108 self.pageContent.versionList.clear()
109 self._fillVersionList()
110 self.emit(SIGNAL("completeChanged()"))
112 def removeVersion(self):
114 Slot called when the user remove a BeRTOS version.
116 item = self.pageContent.versionList.takeItem(self.pageContent.versionList.currentRow())
117 self._deleteVersion(qvariant_converter.getString(item.data(Qt.UserRole)))
118 self.emit(SIGNAL("completeChanged()"))
120 def updateClicked(self):
122 Checks for update (TO BE IMPLEMENTED).
126 def rowChanged(self):
128 Slot called when the user select an entry from the version list.
130 self.emit(SIGNAL("completeChanged()"))