Separate toolchain search from toolchain selection
[bertos.git] / wizard / BToolchainSearch.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.QtCore import *
13 from PyQt4.QtGui import *
14 import PyQt4.uic as uic
15
16 class BToolchainSearch(QDialog):
17     
18     def __init__(self):
19         QDialog.__init__(self)
20         self._setupUi()
21         self._connectSignals()
22         self.setWindowTitle(self.tr("Toolchain search page"))
23     
24     def _setupUi(self):
25         self.content = uic.loadUi("toolchain_search.ui", None)
26         layout = QVBoxLayout()
27         layout.addWidget(self.content)
28         self.setLayout(layout)
29         self._populateDirList()
30         self._setPathSearch()
31         self._setSearchButton()
32     
33     def _connectSignals(self):
34         self.connect(self.content.pathBox, SIGNAL("stateChanged(int)"), self._stateChanged)
35         self.connect(self.content.addButton, SIGNAL("clicked()"), self._addDir)
36         self.connect(self.content.removeButton, SIGNAL("clicked()"), self._removeDir)
37         self.connect(self.content.cancelButton, SIGNAL("clicked()"), self.reject)
38         self.connect(self.content.searchButton, SIGNAL("clicked()"), self.accept)
39         
40     def _setSearchButton(self):
41         self.content.searchButton.setDefault(True)
42         self.content.searchButton.setEnabled(self.content.pathBox.isChecked() or self.content.customDirList.count() != 0)
43     
44     def _populateDirList(self):
45         search_dir_list = QApplication.instance().settings.value(QString("search_dir_list")).toList()
46         for element in search_dir_list:
47             item = QListWidgetItem(unicode(element.toString()))
48             self.content.customDirList.addItem(item)
49     
50     def _setPathSearch(self):
51         pathSearch = QApplication.instance().settings.value(QString("path_search")).toBool()
52         self.content.pathBox.setChecked(pathSearch)
53     
54     def _stateChanged(self, state):
55         QApplication.instance().settings.setValue(QString("path_search"), QVariant(state != 0))
56         self._setSearchButton()
57     
58     def _addDir(self):
59         directory = QFileDialog.getExistingDirectory(self, self.tr("Open Directory"), "", QFileDialog.ShowDirsOnly)
60         if not directory.isEmpty():
61             item = QListWidgetItem(directory)
62             self.content.customDirList.addItem(item)
63             search_dir_list = QApplication.instance().settings.value(QString("search_dir_list")).toList()
64             search_dir_list = set([d.toString() for d in search_dir_list] + [directory])
65             QApplication.instance().settings.setValue(QString("search_dir_list"), QVariant(list(search_dir_list)))
66             self._setSearchButton()
67     
68     def _removeDir(self):
69         if self.content.customDirList.currentRow() != -1:
70             item = self.content.customDirList.takeItem(self.content.customDirList.currentRow())
71             search_dir_list = QApplication.instance().settings.value(QString("search_dir_list")).toList()
72             search_dir_list = set([d.toString() for d in search_dir_list])
73             search_dir_list.remove(item.text())
74             QApplication.instance().settings.setValue(QString("search_dir_list"), QVariant(list(search_dir_list)))
75             self._setSearchButton()
76