Use list widget with boards sorted by the ord parameter (set it into the .spec file)
authorduplo <duplo@38d2e660-2303-0410-9eaa-f027e97ec537>
Mon, 24 May 2010 10:11:05 +0000 (10:11 +0000)
committerduplo <duplo@38d2e660-2303-0410-9eaa-f027e97ec537>
Mon, 24 May 2010 10:11:05 +0000 (10:11 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@3797 38d2e660-2303-0410-9eaa-f027e97ec537

wizard/BBoardPage.py
wizard/ui/board_select.ui

index 9e70a68a276e017a28fc4186f32dd0a994da3a31..5d83fda38ddab5a030171e445baee875e5f2b597 100644 (file)
@@ -57,7 +57,6 @@ class BBoardPage(BWizardPage):
     def __init__(self):
         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 ##
 
@@ -65,23 +64,13 @@ class BBoardPage(BWizardPage):
         """
         Overload of the QWizardPage isComplete method.
         """
-        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):
-        """
-        Overload of the QWizardPage nextId method.
-        """
-        return self.wizard().pageIndex(BRoutePage)
+        return False
+
+    # def nextId(self):
+    #     """
+    #     Overload of the QWizardPage nextId method.
+    #     """
+    #     return self.wizard().pageIndex(BRoutePage)
 
     ####
 
@@ -97,13 +86,17 @@ class BBoardPage(BWizardPage):
         """
         Overload of the BWizardPage connectSignals method.
         """
-        self.connect(self.pageContent.boardTree, SIGNAL("itemSelectionChanged()"), self, SIGNAL("completeChanged()"))
 
     def reloadData(self):
         """
         Overload of the BWizardPage reloadData method.
         """
-        self._fillPresetTree()
+        preset_list = self.projectInfo("PRESET_TREE")
+        preset_list = preset_list["children"]
+        def _cmp(x, y):
+            return cmp(x["info"].get('ord', 0), y["info"].get('ord', 0))
+        preset_list = sorted(preset_list, _cmp)
+        self.setItems(preset_list)
 
     ####
 
@@ -112,39 +105,7 @@ 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"]:
-            self._createPresetNode(self.pageContent.boardTree, obj)
-
-    def _createPresetNode(self, parent, obj):
-        selected_item_name = self.projectInfo("PROJECT_PRESET")
-        item_name = obj["info"].get("name", obj["info"]["filename"])
-        item = QTreeWidgetItem(parent, [item_name]) 
-        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
+    def setItems(self, preset_list):
+        self.pageContent.boardList.clear()
+        for item in preset_list:
+            self.pageContent.boardList.addItem(item["info"].get("name", item["info"]["filename"]))
\ No newline at end of file
index 00dec36b4a607e0fb33813477350e796f38624cc..48da358947b2ecb09c51822e06cb2a1fec6b35b8 100644 (file)
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2">
      <item>
-      <widget class="QTreeWidget" name="boardTree">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <attribute name="headerVisible">
-        <bool>false</bool>
-       </attribute>
-       <column>
-        <property name="text">
-         <string notr="true">1</string>
-        </property>
-       </column>
-      </widget>
+      <widget class="QListWidget" name="boardList"/>
      </item>
     </layout>
    </item>
    <item>
-    <layout class="QVBoxLayout" name="verticalLayout" stretch="0,1">
+    <layout class="QVBoxLayout" name="verticalLayout">
      <item>
       <widget class="QLabel" name="descriptionLabel">
        <property name="text">
-        <string>Click on your board and select which predefined project you want. From this page you can choose example, benchmark or template.</string>
+        <string/>
        </property>
        <property name="wordWrap">
         <bool>true</bool>
        </property>
       </widget>
      </item>
+     <item>
+      <widget class="QLabel" name="imageLabel">
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+     </item>
      <item>
       <spacer name="verticalSpacer">
        <property name="orientation">