+
+ def validatePage(self):
+ """
+ This hack permits to load the preset once, when the user go press the
+ Next button.
+ """
+ preset_path = self.selected_path
+ try:
+ QApplication.instance().setOverrideCursor(Qt.WaitCursor)
+ try:
+ self.project.loadProjectFromPreset(preset_path)
+ except ModuleDefineException, e:
+ self.exceptionOccurred(self.tr("Error parsing line '%2' in file %1").arg(e.path).arg(e.line))
+ self.setProjectInfo("PRESET_LOADED", True)
+ finally:
+ QApplication.instance().restoreOverrideCursor()
+ # Return always True, this is a fake validation.
+ return True
+
+ def nextId(self):
+ """
+ Overload of the QWizardPage nextId method.
+ """
+ # Route to Toolchain page if the user select advanced
+ # or to Output page if the user select base
+ if self.advanced:
+ return self.wizard().pageIndex(BToolchainPage)
+ else:
+ cpu_info = self.projectInfo("CPU_INFOS")
+ if cpu_info:
+ target = cpu_info["TOOLCHAIN"]
+ # Try to find a suitable toolchain automatically
+ tm = ToolchainManager()
+ suitable_toolchains = tm.suitableToolchains(target)
+ if len(suitable_toolchains) == 1:
+ toolchain = suitable_toolchains.pop()
+ toolchain_info = tm._validateToolchain(toolchain)
+ toolchain_info["path"] = toolchain
+ self.setProjectInfo("TOOLCHAIN", toolchain_info)
+ return self.wizard().pageIndex(BCreationPage)
+ else:
+ return self.wizard().pageIndex(BToolchainPage)
+ else:
+ # It seems that the nextId method is called before the
+ # reloadData one (that is called after the page changing.
+ #
+ # TODO: fix this awful code lines
+ target = None
+ return self.wizard().pageIndex(BToolchainPage)
+