diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index de0f5c8acd..60f5a42094 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -31,337 +31,220 @@ UM.Dialog } } - Item + Flickable { - id: dialogSummaryItem + clip: true width: parent.width - height: childrenRect.height - anchors.margins: 10 * screenScaleFactor + height: parent.height + contentHeight: dialogSummaryItem.height + ScrollBar.vertical: UM.ScrollBar { id: verticalScrollBar } - UM.I18nCatalog + Item { - id: catalog - name: "cura" - } - - ListModel - { - id: resolveStrategiesModel - // Instead of directly adding the list elements, we add them afterwards. - // This is because it's impossible to use setting function results to be bound to listElement properties directly. - // See http://stackoverflow.com/questions/7659442/listelement-fields-as-properties - Component.onCompleted: - { - append({"key": "override", "label": catalog.i18nc("@action:ComboBox Update/override existing profile", "Update existing")}); - append({"key": "new", "label": catalog.i18nc("@action:ComboBox Save settings in a new profile", "Create new")}); - } - } - - Column - { - width: parent.width + id: dialogSummaryItem + width: verticalScrollBar.visible ? parent.width - verticalScrollBar.width - UM.Theme.getSize("default_margin").width : parent.width height: childrenRect.height - spacing: UM.Theme.getSize("default_margin").height + anchors.margins: 10 * screenScaleFactor + + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + ListModel + { + id: resolveStrategiesModel + // Instead of directly adding the list elements, we add them afterwards. + // This is because it's impossible to use setting function results to be bound to listElement properties directly. + // See http://stackoverflow.com/questions/7659442/listelement-fields-as-properties + Component.onCompleted: + { + append({"key": "override", "label": catalog.i18nc("@action:ComboBox Update/override existing profile", "Update existing")}); + append({"key": "new", "label": catalog.i18nc("@action:ComboBox Save settings in a new profile", "Create new")}); + } + } Column { width: parent.width height: childrenRect.height + spacing: UM.Theme.getSize("default_margin").height - UM.Label + Column { - id: titleLabel - text: catalog.i18nc("@action:title", "Summary - Cura Project") - font: UM.Theme.getFont("large") - } - - Rectangle - { - id: separator - color: UM.Theme.getColor("text") width: parent.width - height: UM.Theme.getSize("default_lining").height - } - } + height: childrenRect.height - Item - { - width: parent.width - height: childrenRect.height - - UM.TooltipArea - { - id: machineResolveStrategyTooltip - anchors.top: parent.top - anchors.right: parent.right - width: (parent.width / 3) | 0 - height: visible ? comboboxHeight : 0 - visible: base.visible && machineResolveComboBox.model.count > 1 - text: catalog.i18nc("@info:tooltip", "How should the conflict in the machine be resolved?") - Cura.ComboBox + UM.Label { - id: machineResolveComboBox - model: manager.updatableMachinesModel - visible: machineResolveStrategyTooltip.visible - textRole: "displayName" + id: titleLabel + text: catalog.i18nc("@action:title", "Summary - Cura Project") + font: UM.Theme.getFont("large") + } + + Rectangle + { + id: separator + color: UM.Theme.getColor("text") width: parent.width - height: UM.Theme.getSize("button").height - onCurrentIndexChanged: - { - if (model.getItem(currentIndex).id == "new" - && model.getItem(currentIndex).type == "default_option") - { - manager.setResolveStrategy("machine", "new") - } - else - { - manager.setResolveStrategy("machine", "override") - manager.setMachineToOverride(model.getItem(currentIndex).id) - } - } + height: UM.Theme.getSize("default_lining").height + } + } - onVisibleChanged: - { - if (!visible) {return} + Item + { + width: parent.width + height: childrenRect.height - currentIndex = 0 - // If the project printer exists in Cura, set it as the default dropdown menu option. - // No need to check object 0, which is the "Create new" option - for (var i = 1; i < model.count; i++) + UM.TooltipArea + { + id: machineResolveStrategyTooltip + anchors.top: parent.top + anchors.right: parent.right + width: (parent.width / 3) | 0 + height: visible ? comboboxHeight : 0 + visible: base.visible && machineResolveComboBox.model.count > 1 + text: catalog.i18nc("@info:tooltip", "How should the conflict in the machine be resolved?") + Cura.ComboBox + { + id: machineResolveComboBox + model: manager.updatableMachinesModel + visible: machineResolveStrategyTooltip.visible + textRole: "displayName" + width: parent.width + height: UM.Theme.getSize("button").height + onCurrentIndexChanged: { - if (model.getItem(i).name == manager.machineName) + if (model.getItem(currentIndex).id == "new" + && model.getItem(currentIndex).type == "default_option") { - currentIndex = i - break + manager.setResolveStrategy("machine", "new") + } + else + { + manager.setResolveStrategy("machine", "override") + manager.setMachineToOverride(model.getItem(currentIndex).id) } } - // The project printer does not exist in Cura. If there is at least one printer of the same - // type, select the first one, else set the index to "Create new" - if (currentIndex == 0 && model.count > 1) + + onVisibleChanged: { - currentIndex = 1 + if (!visible) {return} + + currentIndex = 0 + // If the project printer exists in Cura, set it as the default dropdown menu option. + // No need to check object 0, which is the "Create new" option + for (var i = 1; i < model.count; i++) + { + if (model.getItem(i).name == manager.machineName) + { + currentIndex = i + break + } + } + // The project printer does not exist in Cura. If there is at least one printer of the same + // type, select the first one, else set the index to "Create new" + if (currentIndex == 0 && model.count > 1) + { + currentIndex = 1 + } } } } - } - Column - { - width: parent.width - height: childrenRect.height - - UM.Label - { - id: printer_settings_label - text: catalog.i18nc("@action:label", "Printer settings") - font: UM.Theme.getFont("default_bold") - } - - Row + Column { width: parent.width height: childrenRect.height UM.Label { - text: catalog.i18nc("@action:label", "Type") - width: (parent.width / 3) | 0 - } - UM.Label - { - text: manager.machineType - width: (parent.width / 3) | 0 - } - } - - Row - { - width: parent.width - height: childrenRect.height - - UM.Label - { - text: catalog.i18nc("@action:label", manager.isPrinterGroup ? "Printer Group" : "Printer Name") - width: (parent.width / 3) | 0 - } - UM.Label - { - text: manager.machineName - width: (parent.width / 3) | 0 - wrapMode: Text.WordWrap - } - } - } - } - - Item - { - width: parent.width - height: childrenRect.height - - UM.TooltipArea - { - anchors.right: parent.right - anchors.top: parent.top - width: (parent.width / 3) | 0 - height: visible ? comboboxHeight : 0 - visible: manager.qualityChangesConflict - text: catalog.i18nc("@info:tooltip", "How should the conflict in the profile be resolved?") - Cura.ComboBox - { - model: resolveStrategiesModel - textRole: "label" - id: qualityChangesResolveComboBox - width: parent.width - height: UM.Theme.getSize("button").height - onActivated: - { - manager.setResolveStrategy("quality_changes", resolveStrategiesModel.get(index).key) - } - } - } - - Column - { - width: parent.width - height: childrenRect.height - - UM.Label - { - text: catalog.i18nc("@action:label", "Profile settings") - font: UM.Theme.getFont("default_bold") - } - - Row - { - width: parent.width - height: childrenRect.height - - UM.Label - { - text: catalog.i18nc("@action:label", "Name") - width: (parent.width / 3) | 0 - } - UM.Label - { - text: manager.qualityName - width: (parent.width / 3) | 0 - wrapMode: Text.WordWrap - } - } - - Row - { - width: parent.width - height: childrenRect.height - - UM.Label - { - text: catalog.i18nc("@action:label", "Intent") - width: (parent.width / 3) | 0 - } - UM.Label - { - text: manager.intentName - width: (parent.width / 3) | 0 - wrapMode: Text.WordWrap - } - } - - Row - { - width: parent.width - height: childrenRect.height - - UM.Label - { - text: catalog.i18nc("@action:label", "Not in profile") - visible: manager.numUserSettings != 0 - width: (parent.width / 3) | 0 - } - UM.Label - { - text: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", manager.numUserSettings).arg(manager.numUserSettings) - visible: manager.numUserSettings != 0 - width: (parent.width / 3) | 0 - } - } - - Row - { - width: parent.width - height: childrenRect.height - - UM.Label - { - text: catalog.i18nc("@action:label", "Derivative from") - visible: manager.numSettingsOverridenByQualityChanges != 0 - width: (parent.width / 3) | 0 - } - UM.Label - { - text: catalog.i18ncp("@action:label", "%1, %2 override", "%1, %2 overrides", manager.numSettingsOverridenByQualityChanges).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges) - width: (parent.width / 3) | 0 - visible: manager.numSettingsOverridenByQualityChanges != 0 - wrapMode: Text.WordWrap - } - } - } - } - - Item - { - width: parent.width - height: childrenRect.height - - UM.TooltipArea - { - id: materialResolveTooltip - anchors.right: parent.right - anchors.top: parent.top - width: (parent.width / 3) | 0 - height: visible ? comboboxHeight : 0 - visible: manager.materialConflict - text: catalog.i18nc("@info:tooltip", "How should the conflict in the material be resolved?") - Cura.ComboBox - { - model: resolveStrategiesModel - textRole: "label" - id: materialResolveComboBox - width: parent.width - height: UM.Theme.getSize("button").height - onActivated: - { - manager.setResolveStrategy("material", resolveStrategiesModel.get(index).key) - } - } - } - - Column - { - width: parent.width - height: childrenRect.height - Row - { - height: childrenRect.height - width: parent.width - spacing: UM.Theme.getSize("narrow_margin").width - - UM.Label - { - text: catalog.i18nc("@action:label", "Material settings") + id: printer_settings_label + text: catalog.i18nc("@action:label", "Printer settings") font: UM.Theme.getFont("default_bold") - width: (parent.width / 3) | 0 } - } - Repeater - { - model: manager.materialLabels - delegate: Row + Row { width: parent.width height: childrenRect.height + + UM.Label + { + text: catalog.i18nc("@action:label", "Type") + width: (parent.width / 3) | 0 + } + UM.Label + { + text: manager.machineType + width: (parent.width / 3) | 0 + } + } + + Row + { + width: parent.width + height: childrenRect.height + + UM.Label + { + text: catalog.i18nc("@action:label", manager.isPrinterGroup ? "Printer Group" : "Printer Name") + width: (parent.width / 3) | 0 + } + UM.Label + { + text: manager.machineName + width: (parent.width / 3) | 0 + wrapMode: Text.WordWrap + } + } + } + } + + Item + { + width: parent.width + height: childrenRect.height + + UM.TooltipArea + { + anchors.right: parent.right + anchors.top: parent.top + width: (parent.width / 3) | 0 + height: visible ? comboboxHeight : 0 + visible: manager.qualityChangesConflict + text: catalog.i18nc("@info:tooltip", "How should the conflict in the profile be resolved?") + Cura.ComboBox + { + model: resolveStrategiesModel + textRole: "label" + id: qualityChangesResolveComboBox + width: parent.width + height: UM.Theme.getSize("button").height + onActivated: + { + manager.setResolveStrategy("quality_changes", resolveStrategiesModel.get(index).key) + } + } + } + + Column + { + width: parent.width + height: childrenRect.height + + UM.Label + { + text: catalog.i18nc("@action:label", "Profile settings") + font: UM.Theme.getFont("default_bold") + } + + Row + { + width: parent.width + height: childrenRect.height + UM.Label { text: catalog.i18nc("@action:label", "Name") @@ -369,75 +252,201 @@ UM.Dialog } UM.Label { - text: modelData + text: manager.qualityName width: (parent.width / 3) | 0 wrapMode: Text.WordWrap } } + + Row + { + width: parent.width + height: childrenRect.height + + UM.Label + { + text: catalog.i18nc("@action:label", "Intent") + width: (parent.width / 3) | 0 + } + UM.Label + { + text: manager.intentName + width: (parent.width / 3) | 0 + wrapMode: Text.WordWrap + } + } + + Row + { + width: parent.width + height: childrenRect.height + + UM.Label + { + text: catalog.i18nc("@action:label", "Not in profile") + visible: manager.numUserSettings != 0 + width: (parent.width / 3) | 0 + } + UM.Label + { + text: catalog.i18ncp("@action:label", "%1 override", "%1 overrides", manager.numUserSettings).arg(manager.numUserSettings) + visible: manager.numUserSettings != 0 + width: (parent.width / 3) | 0 + } + } + + Row + { + width: parent.width + height: childrenRect.height + + UM.Label + { + text: catalog.i18nc("@action:label", "Derivative from") + visible: manager.numSettingsOverridenByQualityChanges != 0 + width: (parent.width / 3) | 0 + } + UM.Label + { + text: catalog.i18ncp("@action:label", "%1, %2 override", "%1, %2 overrides", manager.numSettingsOverridenByQualityChanges).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges) + width: (parent.width / 3) | 0 + visible: manager.numSettingsOverridenByQualityChanges != 0 + wrapMode: Text.WordWrap + } + } } } - } - Column - { - width: parent.width - height: childrenRect.height - - UM.Label + Item { - text: catalog.i18nc("@action:label", "Setting visibility") - font: UM.Theme.getFont("default_bold") + width: parent.width + height: childrenRect.height + + UM.TooltipArea + { + id: materialResolveTooltip + anchors.right: parent.right + anchors.top: parent.top + width: (parent.width / 3) | 0 + height: visible ? comboboxHeight : 0 + visible: manager.materialConflict + text: catalog.i18nc("@info:tooltip", "How should the conflict in the material be resolved?") + Cura.ComboBox + { + model: resolveStrategiesModel + textRole: "label" + id: materialResolveComboBox + width: parent.width + height: UM.Theme.getSize("button").height + onActivated: + { + manager.setResolveStrategy("material", resolveStrategiesModel.get(index).key) + } + } + } + + Column + { + width: parent.width + height: childrenRect.height + Row + { + height: childrenRect.height + width: parent.width + spacing: UM.Theme.getSize("narrow_margin").width + + UM.Label + { + text: catalog.i18nc("@action:label", "Material settings") + font: UM.Theme.getFont("default_bold") + width: (parent.width / 3) | 0 + } + } + + Repeater + { + model: manager.materialLabels + delegate: Row + { + width: parent.width + height: childrenRect.height + UM.Label + { + text: catalog.i18nc("@action:label", "Name") + width: (parent.width / 3) | 0 + } + UM.Label + { + text: modelData + width: (parent.width / 3) | 0 + wrapMode: Text.WordWrap + } + } + } + } } + + Column + { + width: parent.width + height: childrenRect.height + + UM.Label + { + text: catalog.i18nc("@action:label", "Setting visibility") + font: UM.Theme.getFont("default_bold") + } + Row + { + width: parent.width + height: childrenRect.height + UM.Label + { + text: catalog.i18nc("@action:label", "Mode") + width: (parent.width / 3) | 0 + } + UM.Label + { + text: manager.activeMode + width: (parent.width / 3) | 0 + } + } + Row + { + width: parent.width + height: childrenRect.height + visible: manager.hasVisibleSettingsField + UM.Label + { + text: catalog.i18nc("@action:label", "Visible settings:") + width: (parent.width / 3) | 0 + } + UM.Label + { + text: catalog.i18nc("@action:label", "%1 out of %2" ).arg(manager.numVisibleSettings).arg(manager.totalNumberOfSettings) + width: (parent.width / 3) | 0 + } + } + } + Row { width: parent.width height: childrenRect.height - UM.Label + visible: manager.hasObjectsOnPlate + UM.ColorImage { - text: catalog.i18nc("@action:label", "Mode") - width: (parent.width / 3) | 0 + width: warningLabel.height + height: width + source: UM.Theme.getIcon("Information") + color: UM.Theme.getColor("text") } UM.Label { - text: manager.activeMode - width: (parent.width / 3) | 0 + id: warningLabel + text: catalog.i18nc("@action:warning", "Loading a project will clear all models on the build plate.") } } - Row - { - width: parent.width - height: childrenRect.height - visible: manager.hasVisibleSettingsField - UM.Label - { - text: catalog.i18nc("@action:label", "Visible settings:") - width: (parent.width / 3) | 0 - } - UM.Label - { - text: catalog.i18nc("@action:label", "%1 out of %2" ).arg(manager.numVisibleSettings).arg(manager.totalNumberOfSettings) - width: (parent.width / 3) | 0 - } - } - } - - Row - { - width: parent.width - height: childrenRect.height - visible: manager.hasObjectsOnPlate - UM.ColorImage - { - width: warningLabel.height - height: width - source: UM.Theme.getIcon("Information") - color: UM.Theme.getColor("text") - } - UM.Label - { - id: warningLabel - text: catalog.i18nc("@action:warning", "Loading a project will clear all models on the build plate.") - } } } }