X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2FBOutputPage.py;h=77ef748cdb9132dd82fbbc2a7ee799344d95dbcb;hb=262909fe371512dfae6f07158c242d17ee9ee636;hp=aea68aaf9fa789ae79a0e5023f25fe4a93cccb4e;hpb=97903dc626136396587334b1d78f7623c91e9934;p=bertos.git diff --git a/wizard/BOutputPage.py b/wizard/BOutputPage.py index aea68aaf..77ef748c 100644 --- a/wizard/BOutputPage.py +++ b/wizard/BOutputPage.py @@ -1,10 +1,34 @@ #!/usr/bin/env python # encoding: utf-8 # -# Copyright 2009 Develer S.r.l. (http://www.develer.com/) -# All rights reserved. +# This file is part of BeRTOS. # -# $Id:$ +# Bertos is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software +# library without restriction. Specifically, if other files instantiate +# templates or use macros or inline functions from this file, or you compile +# this file and link it with other files to produce an executable, this +# file does not by itself cause the resulting executable to be covered by +# the GNU General Public License. This exception does not however +# invalidate any other reasons why the executable file might be covered by +# the GNU General Public License. +# +# Copyright 2008 Develer S.r.l. (http://www.develer.com/) +# +# $Id$ # # Author: Lorenzo Berni # @@ -15,6 +39,8 @@ from PyQt4.QtGui import * from BWizardPage import * import bertos_utils +import plugins + from const import * class BOutputPage(BWizardPage): @@ -25,32 +51,84 @@ 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.setProjectInfo("OUTPUT", []) - ## Overloaded BWizardPage connectSignals method. ## + ## Overloaded BWizardPage methods. ## def connectSignals(self): """ - Connects the signals with the related slots. + Overload of the BWizardPage connectSignals 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")) + 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) + plugin_list = self.plugins() + for plugin in self.availablePlugins(): + module = bertos_utils.loadPlugin(plugin) + selected = False + if plugin in plugin_list: selected = True + group, check = self.createNewOutput(module.PLUGIN_NAME, + module.PLUGIN_DESCRIPTION, + selected, True) + scrollLayout.addWidget(group) + self._plugin_dict[check] = plugin + scrollLayout.addStretch() + widget = QWidget() + widget.setLayout(scrollLayout) + self.pageContent.scrollArea.setWidget(widget) + + def reloadData(self): + """ + Overload of the BWizardPage reloadData method. + """ + self.modeChecked() + #### ## Slots ## - def modeChecked(self, checked, value): + def modeChecked(self): """ Slot called when one of the mode checkbox is checked. It stores it. """ - output_list = self.projectInfo("OUTPUT") - if checked == Qt.Checked: - output_list.append(value) - else: - output_list.remove(value) - self.setProjectInfo("OUTPUT", output_list) + plugins = [] + for checkBox, plugin in self._plugin_dict.items(): + if checkBox.checkState() == Qt.Checked: + plugins.append(plugin) + self.setPlugins(plugins) + self.setProjectInfo("OUTPUT", plugins) - #### \ No newline at end of file + #### + + def availablePlugins(self): + """ + Returns the list of the available plugins. + """ + return plugins.plugin_list + + 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: + 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