X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2FBCpuPage.py;h=abf0251f6c1de911e4887fb5cd7a81aecc0ff666;hb=8899100e4654853ec4fb64d02ab165f2650a4535;hp=8547f42a23e0a5bb25c5f2dbf6130ed72916bf53;hpb=0dc6365f51734b17c163970c644fca489b7f1efa;p=bertos.git diff --git a/wizard/BCpuPage.py b/wizard/BCpuPage.py index 8547f42a..abf0251f 100644 --- a/wizard/BCpuPage.py +++ b/wizard/BCpuPage.py @@ -9,11 +9,71 @@ # Author: Lorenzo Berni # + from BWizardPage import * +import bertos_utils +import qvariant_converter + +from const import * class BCpuPage(BWizardPage): def __init__(self): - BWizardPage.__init__(self, "cpu_select.ui") + BWizardPage.__init__(self, UI_LOCATION + "/cpu_select.ui") self.setTitle(self.tr("Select the CPU")) - \ No newline at end of file + self._connectSignals() + self._setupUi() + + def _populateCpuList(self): + self.pageContent.cpuList.clear() + self.pageContent.cpuList.setCurrentItem(None) + infos = bertos_utils.loadCpuInfos(self._project()) + for cpu in infos: + item = QListWidgetItem(cpu["CPU_NAME"]) + item.setData(Qt.UserRole, qvariant_converter.convertDict(cpu)) + self.pageContent.cpuList.addItem(item) + + def _connectSignals(self): + self.connect(self.pageContent.cpuList, SIGNAL("itemSelectionChanged()"), self.rowChanged) + + def _selectItem(self, cpu): + elements = self.pageContent.cpuList.findItems(cpu, Qt.MatchCaseSensitive) + if len(elements) == 1: + self.pageContent.cpuList.setCurrentItem(elements[0]) + + def _setupUi(self): + self.pageContent.cpuList.setSortingEnabled(True) + self.pageContent.descriptionLabel.setVisible(False) + self.pageContent.descriptionLabel.setText("") + + def reloadData(self): + QApplication.instance().setOverrideCursor(Qt.WaitCursor) + bertos_utils.loadSourceTree(self._project()) + self._populateCpuList() + cpu_name = self._projectInfoRetrieve("CPU_NAME") + self._setupUi() + if not cpu_name is None: + self._selectItem(cpu_name) + QApplication.instance().restoreOverrideCursor() + self.emit(SIGNAL("completeChanged()")) + + def isComplete(self): + if self.pageContent.cpuList.currentRow() != -1: + infos = qvariant_converter.getDict(self.pageContent.cpuList.currentItem().data(Qt.UserRole)) + for key, value in infos.items(): + if type(CPU_DEF[key]) == list: + infos[key] = qvariant_converter.getStringList(value) + if type(CPU_DEF[key]) == str or type(CPU_DEF) == unicode: + infos[key] = qvariant_converter.getString(value) + self._projectInfoStore("CPU_INFOS", infos) + self._projectInfoStore("CPU_NAME", unicode(self.pageContent.cpuList.currentItem().text())) + return True + else: + return False + + def rowChanged(self): + description = qvariant_converter.getDict(self.pageContent.cpuList.currentItem().data(Qt.UserRole))["CPU_DESC"] + description = qvariant_converter.getStringList(description) + self.pageContent.descriptionLabel.setText("
".join(description)) + self.pageContent.descriptionLabel.setVisible(True) + self.emit(SIGNAL("completeChanged()"))