4 # Copyright 2008 Develer S.r.l. (http://www.develer.com/)
9 # Author: Lorenzo Berni <duplo@develer.com>
12 from BWizardPage import *
15 class BToolchainPage(BWizardPage):
18 BWizardPage.__init__(self, "toolchain_select.ui")
19 self.setTitle(self.tr("Select toolchain"))
21 self._populateDirList()
22 self._connectSignals()
25 path = self._settingsRetrieve("path_search").toBool()
27 self.pageContent.pathBox.setChecked(path)
29 self.pageContent.pathBox.setChecked(False)
30 customPath = self._settingsRetrieve("custom_dir").toBool()
31 if not customPath is None:
32 self.pageContent.customDirBox.setChecked(customPath)
34 self.pageContent.customDirBox.setChecked(False)
38 if self.pageContent.customDirBox.isChecked():
39 self._enableCustomDir()
41 self._disableCustomDir()
42 if self.pageContent.pathBox.isChecked() or (self.pageContent.customDirBox.isChecked() and self.pageContent.customDirList.count() != 0):
43 self.pageContent.doSearchButton.setEnabled(True)
45 self.pageContent.doSearchButton.setEnabled(False)
47 def _populateDirList(self):
48 search_dir_list = self._settingsRetrieve("search_dir_list").toList()
49 for element in search_dir_list:
50 item = QListWidgetItem(element.toString())
51 item.setData(Qt.UserRole, element)
52 self.pageContent.customDirList.addItem(item)
54 def _disableCustomDir(self):
55 self.pageContent.customDirList.setEnabled(False)
56 self.pageContent.addDirButton.setEnabled(False)
57 self.pageContent.removeDirButton.setEnabled(False)
59 def _enableCustomDir(self):
60 self.pageContent.customDirList.setEnabled(True)
61 self.pageContent.addDirButton.setEnabled(True)
62 self.pageContent.removeDirButton.setEnabled(True)
65 self.pageContent.toolchainList.clear()
67 def _connectSignals(self):
68 self.connect(self.pageContent.pathBox, SIGNAL("clicked()"), self._updateUi)
69 self.connect(self.pageContent.customDirBox, SIGNAL("clicked()"), self._updateUi)
70 self.connect(self.pageContent.searchButton, SIGNAL("clicked()"), self.toSearchSubpage)
71 self.connect(self.pageContent.cancelButton, SIGNAL("clicked()"), self.toSelectionSubpage)
72 self.connect(self.pageContent.doSearchButton, SIGNAL("clicked()"), self.doSearch)
73 self.connect(self.pageContent.addDirButton, SIGNAL("clicked()"), self.addDir)
74 self.connect(self.pageContent.removeDirButton, SIGNAL("clicked()"), self.removeDir)
76 def toSearchSubpage(self):
77 self.pageContent.pageSelector.setCurrentIndex(1)
79 def toSelectionSubpage(self):
80 self.pageContent.pageSelector.setCurrentIndex(0)
84 if self.pageContent.pathBox.isChecked():
85 path += bertos_utils.getSystemPath()
86 if self.pageContent.customDirBox.isChecked():
87 for element in range(self.pageContent.customDirList.count()):
88 path += [unicode(self.pageContent.customDirList.item(element).data(Qt.UserRole).toString())]
89 toolchains = bertos_utils.findToolchains(path)
91 for toolchain in toolchains:
92 self.pageContent.toolchainList.addItem(QListWidgetItem(toolchain))
93 self.toSelectionSubpage()
96 directory = QFileDialog.getExistingDirectory(self, self.tr("Open Directory"), "", QFileDialog.ShowDirsOnly)
97 if not directory.isEmpty():
98 item = QListWidgetItem(directory)
99 item.setData(Qt.UserRole, QVariant(directory))
100 self.pageContent.customDirList.addItem(item)
101 search_dir_list = self._settingsRetrieve("search_dir_list").toList()
102 search_dir_list = set([d.toString() for d in search_dir_list] + [directory])
103 self._settingsStore("search_dir_list", list(search_dir_list))
106 item = self.pageContent.customDirList.takeItem(self.pageContent.customDirList.currentRow())
107 search_dir_list = self._settingsRetrieve("search_dir_list").toList()
108 search_dir_list = set([d.toString() for d in search_dir_list])
109 search_dir_list.remove(item.data(Qt.UserRole).toString())
110 self._settingsStore("search_dir_list", list(search_dir_list))