X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2FBToolchainPage.py;h=d5339c40477b5328e74caae7f959f6e65771a068;hb=fdf9de0d15d7189f399b68ddb44edf03123e1ca1;hp=791a2f339d838f23871e527cf781f81bfc0b3751;hpb=4d907fd14c2fe774243ea65dce68f0592f881557;p=bertos.git diff --git a/wizard/BToolchainPage.py b/wizard/BToolchainPage.py index 791a2f33..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 # @@ -103,15 +102,16 @@ class BToolchainPage(BWizardPage): 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): """