X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2FBCpuPage.py;h=4edda121292106631e83a49f842b852e0448b691;hb=6c79d70ee1d49f136663e5bbdcd3f2e246815203;hp=03ef2cc05242e4ad9437c587a0af7235fd6c1a7b;hpb=d07bfc9a7ed35125525f82b331d8dab25f06fca8;p=bertos.git diff --git a/wizard/BCpuPage.py b/wizard/BCpuPage.py index 03ef2cc0..4edda121 100644 --- a/wizard/BCpuPage.py +++ b/wizard/BCpuPage.py @@ -4,7 +4,7 @@ # Copyright 2008 Develer S.r.l. (http://www.develer.com/) # All rights reserved. # -# $Id:$ +# $Id$ # # Author: Lorenzo Berni # @@ -12,18 +12,130 @@ from BWizardPage import * import bertos_utils +import qvariant_converter + +from const import * class BCpuPage(BWizardPage): + """ + Page of the wizard that permits to choose the cpu from the supported ones. + """ def __init__(self): - BWizardPage.__init__(self, "cpu_select.ui") + BWizardPage.__init__(self, UI_LOCATION + "/cpu_select.ui") self.setTitle(self.tr("Select the CPU")) + self.default_freqs = {} + + ## Overloaded QWizardPage methods ## + + def isComplete(self): + """ + Overload of the QWizardPage isComplete method. + """ + if self.pageContent.cpuList.currentRow() != -1: + self.pageContent.frequencyLabel.setVisible(True) + self.pageContent.frequencySpinBox.setVisible(True) + 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.setProjectInfo("CPU_INFOS", infos) + self.setProjectInfo("CPU_NAME", unicode(self.pageContent.cpuList.currentItem().text())) + self.setProjectInfo("SELECTED_FREQ", unicode(long(self.pageContent.frequencySpinBox.value()))) + return True + else: + return False - def _populateCpuList(self): - cpus = bertos_utils.findDefinitions("cdef", self._projectInfoRetrieve("SOURCES_PATH")) - for cpu in cpus.keys(): - self.pageContent.cpuList.addItem(QListWidgetItem(cpu)) + #### + ## Overloaded BWizardPage methods ## + + def setupUi(self): + """ + Overload of the BWizardPage setupUi method. + """ + self.pageContent.cpuList.setSortingEnabled(True) + self.pageContent.descriptionLabel.setVisible(False) + self.pageContent.descriptionLabel.setText("") + self.pageContent.frequencyLabel.setVisible(False) + self.pageContent.frequencySpinBox.setVisible(False) + + def connectSignals(self): + """ + Overload of the BWizardPage connectSignals method. + """ + self.connect(self.pageContent.cpuList, SIGNAL("itemSelectionChanged()"), self.rowChanged) + self.connect(self.pageContent.frequencySpinBox, SIGNAL("valueChanged(double)"), self.freqChanged) + def reloadData(self): - self._populateCpuList() - \ No newline at end of file + """ + Overload of the BWizardPage reloadData method. + """ + QApplication.instance().setOverrideCursor(Qt.WaitCursor) + bertos_utils.loadSourceTree(self.project()) + self.populateCpuList() + cpu_name = self.projectInfo("CPU_NAME") + self.setupUi() + if not cpu_name is None: + self.selectItem(cpu_name) + if self.default_freqs == {}: + for index in range(self.pageContent.cpuList.count()): + default_freq = qvariant_converter.getStringDict(self.pageContent.cpuList.item(index).data(Qt.UserRole))["CPU_DEFAULT_FREQ"] + default_freq = long(default_freq.replace("U", "").replace("L", "")) + self.default_freqs[default_freq] = default_freq + QApplication.instance().restoreOverrideCursor() + self.emit(SIGNAL("completeChanged()")) + + #### + + ## Slots ## + + def rowChanged(self): + """ + Slot called when the user select an entry from the cpu list. + """ + description = qvariant_converter.getDict(self.pageContent.cpuList.currentItem().data(Qt.UserRole))["CPU_DESC"] + description = qvariant_converter.getStringList(description) + # Retrieve the default cpu frequency + default_freq = qvariant_converter.getDict(self.pageContent.cpuList.currentItem().data(Qt.UserRole))["CPU_DEFAULT_FREQ"] + default_freq = qvariant_converter.getString(default_freq) + default_freq = long(default_freq.replace("U", "").replace("L", "")) + current_freq = self.default_freqs[default_freq] + self.pageContent.descriptionLabel.setText("
".join(description)) + self.pageContent.descriptionLabel.setVisible(True) + self.pageContent.frequencySpinBox.setValue(long(current_freq)) + self.emit(SIGNAL("completeChanged()")) + + def freqChanged(self): + """ + Slot called when the user change the frequency value. + """ + default_freq = qvariant_converter.getDict(self.pageContent.cpuList.currentItem().data(Qt.UserRole))["CPU_DEFAULT_FREQ"] + default_freq = qvariant_converter.getString(default_freq) + default_freq = long(default_freq.replace("U", "").replace("L", "")) + self.default_freqs[default_freq] = long(self.pageContent.frequencySpinBox.value()) + self.emit(SIGNAL("completeChanged()")) + + #### + + def populateCpuList(self): + """ + Fills the cpu list. + """ + 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 selectItem(self, cpu): + """ + Selects the given cpu from the list. + """ + elements = self.pageContent.cpuList.findItems(cpu, Qt.MatchCaseSensitive) + if len(elements) == 1: + self.pageContent.cpuList.setCurrentItem(elements[0]) \ No newline at end of file