X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2FBOutputPage.py;h=72c32f5c5e634e2422826a13fe8a08d6f67add07;hb=f4d6115ee9868297dfa5be71a2de3eba3d44edc2;hp=fb7eaade90347573df45ae343febdad126cb6e15;hpb=ca1a17d62748010cd95a0012f67a9e80c6565d73;p=bertos.git diff --git a/wizard/BOutputPage.py b/wizard/BOutputPage.py index fb7eaade..72c32f5c 100644 --- a/wizard/BOutputPage.py +++ b/wizard/BOutputPage.py @@ -4,7 +4,7 @@ # Copyright 2009 Develer S.r.l. (http://www.develer.com/) # All rights reserved. # -# $Id:$ +# $Id$ # # Author: Lorenzo Berni # @@ -15,6 +15,8 @@ from PyQt4.QtGui import * from BWizardPage import * import bertos_utils +import plugins + from const import * class BOutputPage(BWizardPage): @@ -25,25 +27,80 @@ class BOutputPage(BWizardPage): def __init__(self): BWizardPage.__init__(self, UI_LOCATION + "/output_select.ui") self.setTitle(self.tr("Choose the project output")) - self._connectSignals() - self._projectInfoStore("OUTPUT", []) - def _connectSignals(self): + ## Overloaded BWizardPage methods. ## + + def connectSignals(self): + """ + Overload of the BWizardPage connectSignals method. + """ + for plugin in self._plugin_dict: + self.connect(plugin, SIGNAL("stateChanged(int)"), self.modeChecked) + + def setupUi(self): + """ + Overload of the BWizardPage setupUi method. + """ + self._plugin_dict = {} + scrollLayout = QVBoxLayout() + group, check = self.createNewOutput("BeRTOS Build System", + "Classic BeRTOS makefile based project", + True, False) + scrollLayout.addWidget(group) + for plugin in self.availablePlugins(): + module = bertos_utils.loadPlugin(plugin) + group, check = self.createNewOutput(module.PLUGIN_NAME, + module.PLUGIN_DESCRIPTION, + True, True) + scrollLayout.addWidget(group) + self._plugin_dict[check] = plugin + scrollLayout.addStretch() + widget = QWidget() + widget.setLayout(scrollLayout) + self.pageContent.scrollArea.setWidget(widget) + + def reloadData(self): """ - Connects the signals with the related slots. + Overload of the BWizardPage reloadData method. """ - self.connect(self.pageContent.eclipseCheckBox, SIGNAL("stateChanged(int)"), lambda checked: self._modeChecked(checked, "eclipse")) - self.connect(self.pageContent.xcodeCheckBox, SIGNAL("stateChanged(int)"), lambda checked: self._modeChecked(checked, "xcode")) - self.connect(self.pageContent.codeliteCheckBox, SIGNAL("stateChanged(int)"), lambda checked: self._modeChecked(checked, "codelite")) + self.modeChecked() + + #### - def _modeChecked(self, checked, value): + ## Slots ## + + def modeChecked(self): """ Slot called when one of the mode checkbox is checked. It stores it. """ - output_list = self._projectInfoRetrieve("OUTPUT") - if checked == Qt.Checked: - output_list.append(value) + plugins = [] + for checkBox, plugin in self._plugin_dict.items(): + if checkBox.checkState() == Qt.Checked: + plugins.append(plugin) + self.setProjectInfo("OUTPUT", plugins) + + #### + + def availablePlugins(self): + """ + Returns the list of the available plugins. + """ + return plugins.__all__ + + def createNewOutput(self, name, description, checked=True, enabled=True): + """ + Create a groupBox for the given pieces of information. Returns the + groupBox and the checkBox + """ + check = QCheckBox(description) + if checked: + check.setCheckState(Qt.Checked) else: - output_list.remove(value) - self._projectInfoStore("OUTPUT", output_list) - \ No newline at end of file + check.setCheckState(Qt.Unchecked) + groupLayout = QVBoxLayout() + groupLayout.addWidget(check) + group = QGroupBox(name) + group.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum) + group.setLayout(groupLayout) + group.setEnabled(enabled) + return group, check \ No newline at end of file