Fix extruder number

most important change was changing
```
        currentIndex: function () {
          ...
        }
```
to
        currentIndex: {
          ...
        }
```
This changed the behavior so that the variables inside the code blocked are watched so that `currentIndex` is automatically updated. No longer needed to set the `currentIndex` from any where else anymore.

CURA-10374
This commit is contained in:
c.lamboo 2023-03-15 18:18:31 +01:00
parent dc22a4980c
commit 71a0044bf8
2 changed files with 10 additions and 17 deletions

View file

@ -303,18 +303,17 @@ Item
Component.onCompleted: Component.onCompleted:
{ {
update() updateModel();
} }
function update() function updateModel()
{
clear()
for (var i = 1; i <= Cura.MachineManager.activeMachine.maxExtruderCount; i++)
{ {
clear();
for (var i = 1; i <= Cura.MachineManager.activeMachine.maxExtruderCount; i ++) {
// Use String as value. JavaScript only has Number. PropertyProvider.setPropertyValue() // Use String as value. JavaScript only has Number. PropertyProvider.setPropertyValue()
// takes a QVariant as value, and Number gets translated into a float. This will cause problem // takes a QVariant as value, and Number gets translated into a float. This will cause problem
// for integer settings such as "Number of Extruders". // for integer settings such as "Number of Extruders".
append({ text: String(i), value: String(i) }) append({ text: String(i), value: String(i) });
} }
} }
} }
@ -322,7 +321,9 @@ Item
Connections Connections
{ {
target: Cura.MachineManager target: Cura.MachineManager
function onGlobalContainerChanged() { extruderCountModel.update() } function onGlobalContainerChanged() {
extruderCountModel.updateModel();
}
} }
} }

View file

@ -72,23 +72,16 @@ UM.TooltipArea
return; return;
} }
if (typeof propertyProvider.properties["options"] === "string") { if (typeof(propertyProvider.properties["options"]) === "string") {
return; return;
} }
let currentIndex = -1;
const keys = propertyProvider.properties["options"].keys(); const keys = propertyProvider.properties["options"].keys();
for (let index = 0; index < propertyProvider.properties["options"].keys().length; index ++) { for (let index = 0; index < propertyProvider.properties["options"].keys().length; index ++) {
const key = propertyProvider.properties["options"].keys()[index]; const key = propertyProvider.properties["options"].keys()[index];
const value = propertyProvider.properties["options"][key]; const value = propertyProvider.properties["options"][key];
if (propertyProvider.properties.value === key) {
currentIndex = index;
}
defaultOptionsModel.append({ text: value, value: key }); defaultOptionsModel.append({ text: value, value: key });
} }
comboBox.currentIndex = currentIndex;
} }
Component.onCompleted: updateModel() Component.onCompleted: updateModel()
@ -112,7 +105,7 @@ UM.TooltipArea
model: defaultOptionsModel model: defaultOptionsModel
textRole: "text" textRole: "text"
currentIndex: function () { currentIndex: {
const currentValue = propertyProvider.properties.value const currentValue = propertyProvider.properties.value
for (let i = 0; i < model.count; i ++) { for (let i = 0; i < model.count; i ++) {
if (model.get(i).value === currentValue) { if (model.get(i).value === currentValue) {
@ -123,7 +116,6 @@ UM.TooltipArea
} }
onActivated: function (index) { onActivated: function (index) {
const key = propertyProvider.properties["options"].keys()[index];
const newValue = model.get(index).value; const newValue = model.get(index).value;
if (propertyProvider.properties.value !== newValue && newValue !== undefined) { if (propertyProvider.properties.value !== newValue && newValue !== undefined) {