# Author: Lorenzo Berni <duplo@develer.com>
#
+from PyQt4.QtCore import *
+from PyQt4.QtGui import *
+
from BWizardPage import BWizardPage
-from const import *
+import const
+import qvariant_converter
+from bertos_utils import presetList
class BBoardPage(BWizardPage):
"""
"""
def __init__(self):
- BWizardPage.__init__(self, UI_LOCATION + "/board_select.ui")
+ BWizardPage.__init__(self, const.UI_LOCATION + "/board_select.ui")
self.setTitle(self.tr("Select the board from the predefined ones"))
+ self._last_selected = None
+
+ ## Overloaded QWizardPage methods ##
+
+ def isComplete(self):
+ """
+ Overload of the QWizardPage isComplete method.
+ """
+ return False
+
+ ####
+
+ ## Overloaded BWizardPage methods ##
+
+ def setupUi(self):
+ """
+ Overload of the BWizardPage setupUi method.
+ """
+ pass
+
+ def connectSignals(self):
+ """
+ Overload of the BWizardPage connectSignals method.
+ """
+ self.connect(self.pageContent.boardList, SIGNAL('itemSelectionChanged()'), self.itemSelectionChanged)
+
+ def reloadData(self):
+ """
+ Overload of the BWizardPage reloadData method.
+ """
+ presets = presetList("/Users/duplo/Development/bertos")
+ self.setProjectInfo("PRESETS", presets)
+ self.populatePresetList()
+
+ def populatePresetList(self):
+ presets = self.projectInfo("PRESETS")
+ for preset, info in presets.items():
+ board_list = self.pageContent.boardList
+ item = QListWidgetItem(info["name"], board_list)
+ item.setData(Qt.UserRole, qvariant_converter.convertString(preset))
+ if self._last_selected == preset:
+ self.pageContent.boardList.setCurrentItem(item)
+ if not self._last_selected and self.pageContent.boardList.count():
+ self.pageContent.boardList.setCurrentRow(0)
+
+ ####
+
+ ## Slots ##
+
+ def itemSelectionChanged(self):
+ preset_path = qvariant_converter.getString(self.pageContent.boardList.currentItem().data(Qt.UserRole))
+ presets = self.projectInfo("PRESETS")
+ selected_preset = presets[preset_path]
+ self.pageContent.descriptionLabel.setText(selected_preset['description'])
+ self._last_selected = preset_path
+
+ ####
import const
import plugins
import DefineException
-import BProject
from _wizard_version import WIZARD_VERSION
enabled_modules.append(name)
return enabled_modules
+def presetList(directory):
+ """
+ Return the list of the preset found in the selected BeRTOS Version.
+ """
+ def getPresetInfo(preset_dir):
+ # Find and returns information about the preset
+ # Keys needed for BBoardPage:
+ # - "name": <name of the board/preset>
+ # - "description": <description of the preset>
+
+ # NOTE: this is only a test stub.
+ preset_info = pickle.loads(open(os.path.join(preset_dir, 'info'), "r").read())
+ return preset_info
+ abspath = os.path.join(directory, const.PREDEFINED_BOARDS_DIR)
+ preset_list = dict([
+ (os.path.join(abspath, preset_dir), getPresetInfo(os.path.join(abspath, preset_dir)))
+ for preset_dir in os.listdir(os.path.join(directory, const.PREDEFINED_BOARDS_DIR))
+ ])
+ return preset_list
+
def mergeSources(srcdir, new_sources, old_sources):
# The current mergeSources function provide only a raw copy of the sources in the
# created project.