X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2FBBoardPage.py;h=9e70a68a276e017a28fc4186f32dd0a994da3a31;hb=452d25b78e551f18eb70bff8c9b764630cbc5161;hp=2bf90ff38843d975dc3263722b01a9387ba9dc52;hpb=1b91fae6ef2c8d756d1f3a1ab812ddb92e650c01;p=bertos.git diff --git a/wizard/BBoardPage.py b/wizard/BBoardPage.py index 2bf90ff3..9e70a68a 100644 --- a/wizard/BBoardPage.py +++ b/wizard/BBoardPage.py @@ -33,6 +33,8 @@ # Author: Lorenzo Berni # +import os + from PyQt4.QtCore import * from PyQt4.QtGui import * @@ -63,7 +65,17 @@ class BBoardPage(BWizardPage): """ Overload of the QWizardPage isComplete method. """ - return False + if self.selected: + _info_dict = qvariant_converter.getDict(self.selected.data(0, Qt.UserRole)) + _type = _info_dict["type"] + type = qvariant_converter.getString(_type) + if type == "project": + self.setProjectInfo("PROJECT_PRESET", qvariant_converter.getString(_info_dict["path"])) + return True + else: + return False + else: + return False def nextId(self): """ @@ -85,7 +97,7 @@ class BBoardPage(BWizardPage): """ Overload of the BWizardPage connectSignals method. """ - pass + self.connect(self.pageContent.boardTree, SIGNAL("itemSelectionChanged()"), self, SIGNAL("completeChanged()")) def reloadData(self): """ @@ -100,15 +112,39 @@ class BBoardPage(BWizardPage): #### + @property + def selected(self): + # We can only take the selected item list (not the single item) + _selected_items = self.pageContent.boardTree.selectedItems() + if _selected_items: + return _selected_items[0] + else: + return None + def _fillPresetTree(self): + self.pageContent.boardTree.clear() self.project.loadProjectPresets() preset_tree = self.project.info("PRESET_TREE") - for obj in preset_tree['children']: + for obj in preset_tree["children"]: self._createPresetNode(self.pageContent.boardTree, obj) def _createPresetNode(self, parent, obj): - item_name = obj['info'].get('name', obj['info']['filename']) + selected_item_name = self.projectInfo("PROJECT_PRESET") + item_name = obj["info"].get("name", obj["info"]["filename"]) item = QTreeWidgetItem(parent, [item_name]) - children_dict = obj['children'] + item.setIcon(0, QIcon(self._getNodeIcon(obj))) + children_dict = obj["children"] + item.setData(0, Qt.UserRole, qvariant_converter.convertDict(obj["info"])) + if obj["info"]["path"] == selected_item_name: + self.pageContent.boardTree.setCurrentItem(item) for child in children_dict: self._createPresetNode(item, child) + + def _getNodeIcon(self, obj): + icon_file = os.path.join(obj["info"]["path"], const.PREDEFINED_BOARD_ICON_FILE) + if os.path.exists(icon_file): + return icon_file + elif obj["info"]["type"] == "dir": + return const.PREDEFINED_BOARD_DEFAULT_DIR_ICON + else: + return const.PREDEFINED_BOARD_DEFAULT_PROJECT_ICON