Release version 2.1.0.
[bertos.git] / wizard / BVersionPage.py
index fc989a739b5a978bfe472dff402a42cc526c1355..98c73885dfc43230e068599506cbd4139f8bb3da 100644 (file)
@@ -1,10 +1,34 @@
 #!/usr/bin/env python
 # encoding: utf-8
 #
+# 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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+# As a special exception, you may use this file as part of a free software
+# library without restriction.  Specifically, if other files instantiate
+# templates or use macros or inline functions from this file, or you compile
+# this file and link it with other files to produce an executable, this
+# file does not by itself cause the resulting executable to be covered by
+# the GNU General Public License.  This exception does not however
+# invalidate any other reasons why the executable file might be covered by
+# the GNU General Public License.
+#
 # Copyright 2008 Develer S.r.l. (http://www.develer.com/)
-# All rights reserved.
 #
-# $Id:$
+# $Id$
 #
 # Author: Lorenzo Berni <duplo@develer.com>
 #
@@ -26,7 +50,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 ##
     
@@ -66,6 +91,12 @@ class BVersionPage(BWizardPage):
         self.pageContent.versionList.setCurrentRow(-1)
         self.fillVersionList()
     
+    def setupUi(self):
+        """
+        Overload of the BWizardPage setupUi method.
+        """
+        self.pageContent.updateButton.setVisible(False)
+    
     ####
     
     ## Slots ##
@@ -93,6 +124,10 @@ class BVersionPage(BWizardPage):
         """
         Slot called when the user select an entry from the version list.
         """
+        if self.isDefaultVersion(self.currentVersion()):
+            self.disableRemoveButton()
+        else:
+            self.enableRemoveButton()
         self.emit(SIGNAL("completeChanged()"))
 
     def updateClicked(self):
@@ -146,15 +181,69 @@ 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 disableRemoveButton(self):
+        """
+        Disable the Remove button.
+        """
+        self.pageContent.removeButton.setEnabled(False)
+
+    def enableRemoveButton(self):
+        """
+        Enable the Remove button.
+        """
+        self.pageContent.removeButton.setEnabled(True)
+    
+    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):
         """
         Select the given item in the version list.
         """
-        self.pageContent.versionList.setCurrentItem(item)
\ No newline at end of file
+        self.pageContent.versionList.setCurrentItem(item)
+    
+    def currentItem(self):
+        """
+        Returns the current selected item.
+        """
+        return self.pageContent.versionList.currentItem()
+    
+    def currentVersion(self):
+        """
+        Return the path of the selected version.
+        """
+        current = self.currentItem()
+        return qvariant_converter.getString(current.data(Qt.UserRole))
+    
+    def isDefaultVersion(self, version):
+        """
+        Returns True if the given version is one of the default versions.
+        """
+        if os.name == "nt":
+            import winreg_importer
+            if version in winreg_importer.getBertosDirs():
+                return True
+        return False
\ No newline at end of file