Remove the trailing separator.
[bertos.git] / wizard / BVersionPage.py
1 #!/usr/bin/env python
2 # encoding: utf-8
3 #
4 # Copyright 2008 Develer S.r.l. (http://www.develer.com/)
5 # All rights reserved.
6 #
7 # $Id:$
8 #
9 # Author: Lorenzo Berni <duplo@develer.com>
10 #
11
12 import os
13
14 from PyQt4.QtGui import *
15 from BWizardPage import *
16 import bertos_utils
17 import qvariant_converter
18
19 from const import *
20
21 class BVersionPage(BWizardPage):
22     
23     def __init__(self):
24         BWizardPage.__init__(self, UI_LOCATION + "/bertos_versions.ui")
25         self._connectSignals()
26         self._fillVersionList()
27         self._setupUi()
28         self.setTitle(self.tr("Select the BeRTOS version needed"))
29     
30     def _connectSignals(self):
31         self.connect(self.pageContent.versionList, SIGNAL("itemSelectionChanged()"), self.rowChanged)
32         self.connect(self.pageContent.addButton, SIGNAL("clicked()"), self.addVersion)
33         self.connect(self.pageContent.removeButton, SIGNAL("clicked()"), self.removeVersion)
34         # Fake signal connection for the update button
35         self.connect(self.pageContent.updateButton, SIGNAL("clicked()"), self.updateClicked)
36     
37     def _setupUi(self):
38         self.pageContent.versionList.setCurrentRow(-1)
39     
40     def _storeVersion(self, directory):
41         versions = self.versions()
42         versions = set(versions + [directory])
43         self.setVersions(list(versions))
44     
45     def _deleteVersion(self, directory):
46         versions = self.versions()
47         versions.remove(directory)
48         self.setVersions(versions)
49         
50     def _insertListElement(self, directory):
51         if bertos_utils.isBertosDir(directory):
52             item = QListWidgetItem(QIcon(":/images/ok.png"), bertos_utils.bertosVersion(directory) + " (\"" + os.path.normpath(directory) + "\")")
53             item.setData(Qt.UserRole, qvariant_converter.convertString(directory))
54             self.pageContent.versionList.addItem(item)
55         elif len(directory) > 0:
56             item = QListWidgetItem(QIcon(":/images/warning.png"), "UNKNOWN" + " (\"" + os.path.normpath(directory) + "\")")
57             item.setData(Qt.UserRole, qvariant_converter.convertString(directory))
58             self.pageContent.versionList.addItem(item)
59     
60     def _fillVersionList(self):
61         versions = self.versions()
62         for directory in versions:
63             self._insertListElement(directory)
64
65     def isComplete(self):
66         if self.pageContent.versionList.currentRow() != -1:
67             # Remove trailing slash
68             sources_path = qvariant_converter.getString(self.pageContent.versionList.currentItem().data(Qt.UserRole))
69             if sources_path.endswith(os.sep):
70                  sources_path = sources_path[:-1]
71             self._projectInfoStore("SOURCES_PATH", sources_path)
72             return True
73         else:
74             return False
75     
76     def addVersion(self):
77         directory = QFileDialog.getExistingDirectory(self, self.tr("Choose a directory"), "", QFileDialog.ShowDirsOnly | QFileDialog.DontResolveSymlinks)
78         if not directory.isEmpty():
79             self._storeVersion(unicode(directory))
80             self.pageContent.versionList.clear()
81             self._fillVersionList()
82             self.emit(SIGNAL("completeChanged()"))
83     
84     def removeVersion(self):
85         item = self.pageContent.versionList.takeItem(self.pageContent.versionList.currentRow())
86         self._deleteVersion(qvariant_converter.getString(item.data(Qt.UserRole)))
87         self.emit(SIGNAL("completeChanged()"))
88     
89     def updateClicked(self):
90         print "fake update checking"
91     
92     def rowChanged(self):
93         self.emit(SIGNAL("completeChanged()"))
94