#
# Copyright 2010 Develer S.r.l. (http://www.develer.com/)
#
-# $Id$
#
# Author: Lorenzo Berni <duplo@develer.com>
#
from BWizardPage import BWizardPage
-from BOutputPage import BOutputPage
+from BCreationPage import BCreationPage
from BToolchainPage import BToolchainPage
+from DefineException import ModuleDefineException
+
from bertos_utils import _cmp
from toolchain_manager import ToolchainManager
self.updateUi()
def connectSignals(self):
- self.connect(self.pageContent.presetList, SIGNAL("itemSelectionChanged()"), self.updateUi)
- self.connect(self.pageContent.presetList, SIGNAL("itemSelectionChanged()"), self, SIGNAL("completeChanged()"))
+ self.connect(self.pageContent.presetList, SIGNAL("currentItemChanged(QListWidgetItem *, QListWidgetItem*)"), self.updateUi)
+ self.connect(self.pageContent.presetList, SIGNAL("currentItemChanged(QListWidgetItem *, QListWidgetItem*)"), self, SIGNAL("completeChanged()"))
def updateUi(self):
if self.selected:
if preset_path:
self.setProjectInfo("PROJECT_PRESET", preset_path)
self.setProjectInfo("BASE_MODE", not self.advanced)
- # TODO: find a better place for preset loading...
- try:
- QApplication.instance().setOverrideCursor(Qt.WaitCursor)
- self.project.loadProjectFromPreset(preset_path)
- finally:
- QApplication.instance().restoreOverrideCursor()
return True
else:
self.setProjectInfo("PROJECT_PRESET", None)
return False
+ 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.
toolchain_info = tm._validateToolchain(toolchain)
toolchain_info["path"] = toolchain
self.setProjectInfo("TOOLCHAIN", toolchain_info)
- return self.wizard().pageIndex(BOutputPage)
+ return self.wizard().pageIndex(BCreationPage)
else:
return self.wizard().pageIndex(BToolchainPage)
else:
## Overloaded BWizardPage methods ##
- def reloadData(self):
- preset_path = self.projectInfo("PROJECT_BOARD")
- preset_tree = self.projectInfo("PRESET_TREE")
- preset_list = preset_tree["children"][preset_path]["children"]
- preset_list = sorted(preset_list.values(), _cmp)
- self.setTitle(self.tr("Select the template/demo for %1").arg(preset_tree["children"][preset_path]["info"].get("name", preset_tree["children"][preset_path]["info"]["filename"])))
- self.setupTabs(preset_list)
+ def reloadData(self, previous_id=None):
+ if not self.projectInfo("PRESET_LOADED"):
+ preset_path = self.projectInfo("PROJECT_BOARD")
+ preset_tree = self.projectInfo("PRESET_TREE")
+ preset_list = preset_tree["children"][preset_path]["children"]
+ preset_list = sorted(preset_list.values(), _cmp)
+ self.setTitle(self.tr("Select the project template for %1").arg(preset_tree["children"][preset_path]["info"].get("name", preset_tree["children"][preset_path]["info"]["filename"])))
+ self.setupTabs(preset_list)
def connectSignals(self):
self.connect(self.pageContent.boardTabWidget, SIGNAL("currentChanged(int)"), self, SIGNAL("completeChanged()"))
current_widget = self.pageContent.boardTabWidget.currentWidget()
return current_widget.preset_data["children"][self.selected_path]
else:
- return None
\ No newline at end of file
+ return None