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