Update preset.
[bertos.git] / wizard / BProjectPresets.py
index 0ae1d8a3df721fa577d9319130d0da45372f4d35..40e7cbd8f7aa474de6a0e6dff76b4ff9d3554f96 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 # encoding: utf-8
 #
-# This file is part of slimqc.
+# This file is part of BeRTOS.
 #
 # Bertos is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -28,7 +28,6 @@
 #
 # Copyright 2010 Develer S.r.l. (http://www.develer.com/)
 #
-# $Id$
 #
 # Author: Lorenzo Berni <duplo@develer.com>
 #
@@ -42,9 +41,11 @@ from PyQt4.QtGui import *
 
 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
 
@@ -80,8 +81,8 @@ class BProjectPresetsPage(QWidget):
         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:
@@ -121,7 +122,11 @@ class BProjectPresets(BWizardPage):
         preset_path = self.selected_path
         try:
             QApplication.instance().setOverrideCursor(Qt.WaitCursor)
-            self.project.loadProjectFromPreset(preset_path)
+            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.
@@ -147,7 +152,7 @@ class BProjectPresets(BWizardPage):
                     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:
@@ -162,13 +167,14 @@ class BProjectPresets(BWizardPage):
     
     ## 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 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 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()"))