Attempt to make usable the wizard for the pyqt<4.4.4 users
[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 from PyQt4.QtGui import *
13 from BWizardPage import *
14 import bertos_utils
15 if PYQT_VERSION_STR > "4.4.3":
16     import qvariant_converter_new as qvariant_converter
17 else:
18     import qvariant_converter_old as qvariant_converter
19
20 class BVersionPage(BWizardPage):
21     
22     def __init__(self):
23         BWizardPage.__init__(self, "bertos_versions.ui")
24         self._connectSignals()
25         self._fillVersionList()
26         self._setupUi()
27         self.setTitle(self.tr("Select the BeRTOS version needed"))
28     
29     def _connectSignals(self):
30         self.connect(self.pageContent.versionList, SIGNAL("itemSelectionChanged()"), self.rowChanged)
31         self.connect(self.pageContent.addButton, SIGNAL("clicked()"), self.addVersion)
32         self.connect(self.pageContent.removeButton, SIGNAL("clicked()"), self.removeVersion)
33         # Fake signal connection for the update button
34         self.connect(self.pageContent.updateButton, SIGNAL("clicked()"), self.updateClicked)
35     
36     def _setupUi(self):
37         self.pageContent.versionList.setCurrentRow(-1)
38     
39     def _storeVersion(self, directory):
40         versions = self.versions()
41         versions = set(versions + [directory])
42         self.setVersions(list(versions))
43     
44     def _deleteVersion(self, directory):
45         versions = self.versions()
46         versions.remove(directory)
47         self.setVersions(versions)
48         
49     def _insertListElement(self, directory):
50         if bertos_utils.isBertosDir(directory):
51             item = QListWidgetItem(QIcon(":/images/ok.png"), bertos_utils.bertosVersion(directory) + " (\"" + directory + "\")")
52             item.setData(Qt.UserRole, qvariant_converter.convertString(directory))
53             self.pageContent.versionList.addItem(item)
54         elif len(directory) > 0:
55             item = QListWidgetItem(QIcon(":/images/warning.png"), "UNKNOWN" + " (\"" + directory + "\")")
56             item.setData(Qt.UserRole, qvariant_converter.convertString(directory))
57             self.pageContent.versionList.addItem(item)
58     
59     def _fillVersionList(self):
60         versions = self.versions()
61         for directory in versions:
62             self._insertListElement(directory)
63
64     def isComplete(self):
65         if self.pageContent.versionList.currentRow() != -1:
66             self._projectInfoStore("SOURCES_PATH", qvariant_converter.getString(self.pageContent.versionList.currentItem().data(Qt.UserRole)))
67             return True
68         else:
69             return False
70     
71     def addVersion(self):
72         directory = QFileDialog.getExistingDirectory(self, self.tr("Choose a directory"), "", QFileDialog.ShowDirsOnly | QFileDialog.DontResolveSymlinks)
73         if not directory.isEmpty():
74             self._storeVersion(unicode(directory))
75             self.pageContent.versionList.clear()
76             self._fillVersionList()
77             self.emit(SIGNAL("completeChanged()"))
78     
79     def removeVersion(self):
80         item = self.pageContent.versionList.takeItem(self.pageContent.versionList.currentRow())
81         self._deleteVersion(qvariant_converter.getString(item.data(Qt.UserRole)))
82         self.emit(SIGNAL("completeChanged()"))
83     
84     def updateClicked(self):
85         print "fake update checking"
86     
87     def rowChanged(self):
88         self.emit(SIGNAL("completeChanged()"))
89