diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index d8e73a7e14..3b246ba682 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -8,6 +8,7 @@ "author": "Ultimaker", "manufacturer": "Ultimaker", "category": "Ultimaker", + "weight": 3, "file_formats": "text/x-gcode", "icon": "icon_ultimaker2.png", "platform": "ultimaker2_platform.obj", diff --git a/resources/definitions/ultimaker2_extended.def.json b/resources/definitions/ultimaker2_extended.def.json index fb443365f2..889046694c 100644 --- a/resources/definitions/ultimaker2_extended.def.json +++ b/resources/definitions/ultimaker2_extended.def.json @@ -7,6 +7,7 @@ "author": "Ultimaker", "manufacturer": "Ultimaker", "category": "Ultimaker", + "weight": 3, "file_formats": "text/x-gcode", "icon": "icon_ultimaker2.png", "platform": "ultimaker2_platform.obj", diff --git a/resources/definitions/ultimaker2_extended_plus.def.json b/resources/definitions/ultimaker2_extended_plus.def.json index f4190be83d..ea97033878 100644 --- a/resources/definitions/ultimaker2_extended_plus.def.json +++ b/resources/definitions/ultimaker2_extended_plus.def.json @@ -7,6 +7,7 @@ "author": "Ultimaker", "manufacturer": "Ultimaker", "category": "Ultimaker", + "weight": 2, "file_formats": "text/x-gcode", "platform": "ultimaker2_platform.obj", "platform_texture": "Ultimaker2ExtendedPlusbackplate.png", diff --git a/resources/definitions/ultimaker2_go.def.json b/resources/definitions/ultimaker2_go.def.json index 27b179eef9..107d413296 100644 --- a/resources/definitions/ultimaker2_go.def.json +++ b/resources/definitions/ultimaker2_go.def.json @@ -7,6 +7,7 @@ "author": "Ultimaker", "manufacturer": "Ultimaker", "category": "Ultimaker", + "weight": 3, "file_formats": "text/x-gcode", "icon": "icon_ultimaker2.png", "platform": "ultimaker2go_platform.obj", diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json index d5a7c9f4f1..4c7279b178 100644 --- a/resources/definitions/ultimaker2_plus.def.json +++ b/resources/definitions/ultimaker2_plus.def.json @@ -7,6 +7,7 @@ "author": "Ultimaker", "manufacturer": "Ultimaker", "category": "Ultimaker", + "weight": 1, "file_formats": "text/x-gcode", "platform": "ultimaker2_platform.obj", "platform_texture": "Ultimaker2Plusbackplate.png", diff --git a/resources/definitions/ultimaker_original.def.json b/resources/definitions/ultimaker_original.def.json index 0815aeee02..3dd4766afa 100644 --- a/resources/definitions/ultimaker_original.def.json +++ b/resources/definitions/ultimaker_original.def.json @@ -8,6 +8,7 @@ "author": "Ultimaker", "manufacturer": "Ultimaker", "category": "Ultimaker", + "weight": 4, "file_formats": "text/x-gcode", "icon": "icon_ultimaker.png", "platform": "ultimaker_platform.stl", diff --git a/resources/definitions/ultimaker_original_plus.def.json b/resources/definitions/ultimaker_original_plus.def.json index 4d39a39a78..4f787896d0 100644 --- a/resources/definitions/ultimaker_original_plus.def.json +++ b/resources/definitions/ultimaker_original_plus.def.json @@ -7,6 +7,7 @@ "author": "Ultimaker", "manufacturer": "Ultimaker", "category": "Ultimaker", + "weight": 4, "file_formats": "text/x-gcode", "icon": "icon_ultimaker.png", "platform": "ultimaker2_platform.obj", diff --git a/resources/qml/AddMachineDialog.qml b/resources/qml/AddMachineDialog.qml index 8d0ff9af02..a2b7c1586f 100644 --- a/resources/qml/AddMachineDialog.qml +++ b/resources/qml/AddMachineDialog.qml @@ -33,7 +33,7 @@ UM.Dialog signal machineAdded(string id) function getMachineName() { - var name = machineList.model.get(machineList.currentIndex) != undefined ? machineList.model.get(machineList.currentIndex).name : "" + var name = machineList.model.getItem(machineList.currentIndex) != undefined ? machineList.model.getItem(machineList.currentIndex).name : "" return name } @@ -53,27 +53,15 @@ UM.Dialog { id: machineList - model: ListModel + model: UM.DefinitionContainersModel { - id: sortedMachineDefinitionsModel - Component.onCompleted: { - // DefinitionContainersModel is sorted alphabetically, but we want the preferred - // category on top so we create a custom-sorted ListModel from it. - var items = []; - for(var i in machineDefinitionsModel.items) { - var item = machineDefinitionsModel.getItem(i); - if (item["category"] == preferredCategory) - sortedMachineDefinitionsModel.append(item); - else - items.push(item); - } - for(var i in items) { - sortedMachineDefinitionsModel.append(items[i]); - } - } + id: machineDefinitionsModel + filter: { "visible": true } + sectionProperty: "category" + preferredSectionValue: preferredCategory } - section.property: "category" + section.property: "section" section.delegate: Button { text: section @@ -112,11 +100,11 @@ UM.Dialog onClicked: { base.activeCategory = section; - if (machineList.model.get(machineList.currentIndex).category != section) { - // Find the first machine from this category + if (machineList.model.getItem(machineList.currentIndex).section != section) { + // Find the first machine from this section for(var i = 0; i < sortedMachineDefinitionsModel.count; i++) { - var item = sortedMachineDefinitionsModel.get(i); - if (item.category == section) { + var item = sortedMachineDefinitionsModel.getItem(i); + if (item.section == section) { machineList.currentIndex = i; break; } @@ -151,7 +139,7 @@ UM.Dialog states: State { name: "collapsed"; - when: base.activeCategory != model.category; + when: base.activeCategory != model.section; PropertyChanges { target: machineButton; opacity: 0; height: 0; } } @@ -198,7 +186,7 @@ UM.Dialog onClicked: { base.visible = false - var item = machineList.model.get(machineList.currentIndex); + var item = machineList.model.getItem(machineList.currentIndex); Cura.MachineManager.addMachine(machineName.text, item.id) base.machineAdded(item.id) // Emit signal that the user added a machine. } @@ -211,11 +199,6 @@ UM.Dialog id: catalog; name: "cura"; } - UM.DefinitionContainersModel - { - id: machineDefinitionsModel - filter: { "visible": true } - } SystemPalette { id: palette } ExclusiveGroup { id: printerGroup; } }