If no BeRTOS version is selected the Wizard automatically select the latest
[bertos.git] / wizard / BVersionPage.py
index e4cb8d2ca90a2b52779ba56f3c0ebca2d04bc10f..ed44d48bd242c6bff9c6b3bbeafed12e77a0fb15 100644 (file)
@@ -4,7 +4,7 @@
 # Copyright 2008 Develer S.r.l. (http://www.develer.com/)
 # All rights reserved.
 #
-# $Id:$
+# $Id$
 #
 # Author: Lorenzo Berni <duplo@develer.com>
 #
@@ -26,7 +26,8 @@ class BVersionPage(BWizardPage):
     
     def __init__(self):
         BWizardPage.__init__(self, UI_LOCATION + "/bertos_versions.ui")
-        self.setTitle(self.tr("Select the BeRTOS version needed"))
+        self.setTitle(self.tr("Select the BeRTOS directory"))
+        self.setSubTitle(self.tr("The project created will be based on the BeRTOS version found"))
 
     ## Overloaded QWizardPage methods ##
     
@@ -36,7 +37,7 @@ class BVersionPage(BWizardPage):
         """
         if self.pageContent.versionList.currentRow() != -1:
             sources_path = qvariant_converter.getString(self.pageContent.versionList.currentItem().data(Qt.UserRole))
-            ## Remove the trailing slash
+            # Remove the trailing slash
             if sources_path.endswith(os.sep):
                 sources_path = sources_path[:-1]
             self.setProjectInfo("SOURCES_PATH", sources_path)
@@ -62,9 +63,16 @@ class BVersionPage(BWizardPage):
         """
         Overload of the BWizardPage reloadData method.
         """
+        self.resetVersionList()
         self.pageContent.versionList.setCurrentRow(-1)
         self.fillVersionList()
     
+    def setupUi(self):
+        """
+        Overload of the BWizardPage setupUi method.
+        """
+        self.pageContent.updateButton.setVisible(False)
+    
     ####
     
     ## Slots ##
@@ -118,7 +126,13 @@ class BVersionPage(BWizardPage):
         versions = self.versions()
         versions.remove(directory)
         self.setVersions(versions)
-        
+    
+    def resetVersionList(self):
+        """
+        Remove all the version entries from the list.
+        """
+        self.pageContent.versionList.clear()
+    
     def insertListElement(self, directory):
         """
         Inserts the given directory in the version list and returns the
@@ -139,12 +153,31 @@ class BVersionPage(BWizardPage):
         """
         Fills the version list with all the BeRTOS versions founded in the QSettings.
         """
-        versions = self.versions()
+        versions = set([])
+        if os.name == "nt":
+            import winreg_importer
+            versions |= set(winreg_importer.getBertosDirs())
+        versions |= set(self.versions())
         selected = self.projectInfo("SOURCES_PATH")
         for directory in versions:
             item = self.insertListElement(directory)
-            if not selected is None and selected == directory:
+            if selected and selected == directory:
                 self.setCurrentItem(item)
+        if not selected:
+            self.setCurrentItem(self.latestVersionItem())
+    
+    def latestVersionItem(self):
+        """
+        Returns the latest BeRTOS version founded.
+        """
+        latest_version_item = QTableWidgetItem("")
+        for index in range(self.pageContent.versionList.count()):
+            item = self.pageContent.versionList.item(index)
+            version = item.text().split(" (")[0]
+            latest = latest_version_item.text().split(" (")[0]
+            if version != "UNKNOWN" and version > latest:
+                latest_version_item = item
+        return latest_version_item
     
     def setCurrentItem(self, item):
         """