X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=wizard%2FBToolchainPage.py;h=d5339c40477b5328e74caae7f959f6e65771a068;hb=fdf9de0d15d7189f399b68ddb44edf03123e1ca1;hp=43677e6ca7ed9e91de2fb55b55b656f062e56d4b;hpb=e022e861939d2625fe2a6833977a8b924c3cbf31;p=bertos.git diff --git a/wizard/BToolchainPage.py b/wizard/BToolchainPage.py index 43677e6c..d5339c40 100644 --- a/wizard/BToolchainPage.py +++ b/wizard/BToolchainPage.py @@ -28,7 +28,6 @@ # # Copyright 2008 Develer S.r.l. (http://www.develer.com/) # -# $Id$ # # Author: Lorenzo Berni # @@ -37,7 +36,7 @@ import os import collections from BWizardPage import * -from BOutputPage import BOutputPage +from BCreationPage import BCreationPage import BToolchainSearch import bertos_utils @@ -79,7 +78,7 @@ class BToolchainPage(BWizardPage): """ # Route to Output page if it's a predefined easy project. if self.projectInfo("PROJECT_FROM_PRESET") and self.projectInfo("BASE_MODE"): - return self.wizard().pageIndex(BOutputPage) + return self.wizard().pageIndex(BCreationPage) else: return QWizardPage.nextId(self) @@ -97,21 +96,22 @@ class BToolchainPage(BWizardPage): """ Connects the signals with the related slots. """ - self.connect(self.pageContent.toolchainList, SIGNAL("itemSelectionChanged()"), self.selectionChanged) + self.connect(self.pageContent.toolchainList, SIGNAL("currentItemChanged(QListWidgetItem *, QListWidgetItem*)"), self.selectionChanged) self.connect(self.pageContent.addButton, SIGNAL("clicked()"), self.addToolchain) self.connect(self.pageContent.removeButton, SIGNAL("clicked()"), self.removeToolchain) self.connect(self.pageContent.searchButton, SIGNAL("clicked()"), self.searchToolchain) self.connect(self.pageContent.checkButton, SIGNAL("clicked()"), self.validateAllToolchains) - def reloadData(self): + def reloadData(self, previous_id=None): """ Overload of the BWizard reloadData method. """ - self._clearList() - self.setupUi() - self._populateToolchainList() - if len(self._valid_items) == 1: - self.pageContent.toolchainList.setCurrentItem(self._valid_items[0]) + if previous_id is None or previous_id < self.wizard().currentId(): + self._clearList() + self.setupUi() + self._populateToolchainList() + if len(self._valid_items) >= 1: + self.pageContent.toolchainList.setCurrentItem(self._valid_items[0]) #### @@ -180,6 +180,7 @@ class BToolchainPage(BWizardPage): Fills the toolchain list with the toolchains stored in the QSettings. """ self.pageContent.toolchainList.clear() + self._valid_items = [] toolchains = self._toolchain_manager.predefined_toolchains + self._toolchain_manager.toolchains sel_toolchain = self.projectInfo("TOOLCHAIN") for key, value in toolchains: @@ -228,12 +229,17 @@ class BToolchainPage(BWizardPage): new_data = qvariant_converter.getStringDict(self.pageContent.toolchainList.item(index).data(Qt.UserRole)) new_data.update(infos) item.setData(Qt.UserRole, qvariant_converter.convertStringDict(new_data)) - needed = self.projectInfo("CPU_INFOS") - if "target" in infos and infos["target"].find(needed["TOOLCHAIN"]) != -1: - item.setIcon(QIcon(":/images/ok.png")) - self._valid_items.append(item) - else: - item.setIcon(QIcon(":/images/warning.png")) + item.setIcon(QIcon(":/images/ok.png")) + self._valid_items.append(item) + if "version" in infos and "target" in infos: + item.setText("GCC " + infos["version"] + " - " + infos["target"].strip()) + + def _differentTargetItem(self, index, infos): + item = self.pageContent.toolchainList.item(index) + new_data = qvariant_converter.getStringDict(self.pageContent.toolchainList.item(index).data(Qt.UserRole)) + new_data.update(infos) + item.setData(Qt.UserRole, qvariant_converter.convertStringDict(new_data)) + item.setIcon(QIcon(":/images/warning.png")) if "version" in infos and "target" in infos: item.setText("GCC " + infos["version"] + " - " + infos["target"].strip()) @@ -251,11 +257,26 @@ class BToolchainPage(BWizardPage): filename = qvariant_converter.getStringDict(self.pageContent.toolchainList.item(i).data(Qt.UserRole))["path"] info = self._toolchain_manager.validateToolchain(filename) + valid = [] + different_target = [] + invalid = [] + # Add the item in the list with the appropriate associate data. + needed = self.projectInfo("CPU_INFOS") if info: - self._validItem(i, info) + if "target" in info and info["target"].find(needed["TOOLCHAIN"]) != -1: + valid.append(info) + else: + different_target.append(info) else: - self._invalidItem(i) + invalid.append(info) + + for i, info in enumerate(valid): + self._validItem(i, info) + for i, info in enumerate(different_target): + self._differentTargetItem(i + len(valid), info) + for i, info in enumerate(invalid): + self._invalidItem(i + len(valid) + len(different_target)) def isDefaultToolchain(self, toolchain): """