This commit is contained in:
Jaime van Kessel 2016-05-26 15:35:51 +02:00
commit c2a25b131e
16 changed files with 228 additions and 158 deletions

View file

@ -69,13 +69,15 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
self.addMetaDataEntry("properties", property_values)
self.setDefinition(UM.Settings.ContainerRegistry.getInstance().findDefinitionContainers(id = "fdmprinter")[0])
global_setting_values = {}
settings = data.iterfind("./um:settings/um:setting", self.__namespaces)
for entry in settings:
key = entry.get("key")
if key in self.__material_property_setting_map:
self.setProperty(self.__material_property_setting_map[key], "value", entry.text, self._definition)
global_setting_values[key] = entry.text
global_setting_values[self.__material_property_setting_map[key]] = entry.text
machines = data.iterfind("./um:settings/um:machine", self.__namespaces)
for machine in machines:

View file

@ -582,7 +582,7 @@ UM.MainWindow
onTriggered:
{
UM.MachineManager.createProfile();
preferences.setPage(4);
preferences.setPage(5);
preferences.show();
// Show the renameDialog after a very short delay so the preference page has time to initiate
@ -606,7 +606,7 @@ UM.MainWindow
onTriggered:
{
preferences.visible = true;
preferences.setPage(4);
preferences.setPage(5);
}
}

View file

@ -89,7 +89,7 @@ Item {
{
id: revertButton;
visible: propertyProvider.properties.state == "InstanceState.User"
visible: propertyProvider.stackLevel == 0
height: parent.height;
width: height;
@ -102,8 +102,8 @@ Item {
iconSource: UM.Theme.getIcon("reset")
onClicked: {
base.resetRequested()
controlContainer.notifyReset();
revertButton.focus = true
propertyProvider.removeFromContainer(0)
}
onEntered: base.showTooltip(catalog.i18nc("@label", "This setting has a value that is different from the profile.\n\nClick to restore the value of the profile."))
@ -116,14 +116,14 @@ Item {
id: inheritButton;
//visible: has_profile_value && base.has_inherit_function && base.is_enabled
visible: propertyProvider.properties.state == "InstanceState.User"
visible: propertyProvider.properties.state == "InstanceState.User" && propertyProvider.stackLevel > 0
height: parent.height;
width: height;
onClicked: {
base.resetToDefaultRequested();
controlContainer.notifyReset();
focus = true;
propertyProvider.removeFromContainer(propertyProvider.stackLevel)
}
backgroundColor: UM.Theme.getColor("setting_control");

View file

@ -38,18 +38,20 @@ ScrollView
id: delegate
width: UM.Theme.getSize("sidebar").width;
height: provider.properties.enabled ? UM.Theme.getSize("section").height : 0
height: provider.properties.enabled == "True" ? UM.Theme.getSize("section").height : 0
Behavior on height { NumberAnimation { duration: 100 } }
opacity: provider.properties.enabled ? 1 : 0
opacity: provider.properties.enabled == "True" ? 1 : 0
Behavior on opacity { NumberAnimation { duration: 100 } }
enabled: provider.properties.enabled
enabled: provider.properties.enabled == "True"
property var definition: model
property var settingDefinitionsModel: definitionsModel
property var propertyProvider: provider
//Qt5.4.2 and earlier has a bug where this causes a crash: https://bugreports.qt.io/browse/QTBUG-35989
asynchronous: QT_VERSION_STR.split(".")[1] >= 5
//In addition, while it works for 5.5 and higher, the ordering of the actual combo box drop down changes,
//causing nasty issues when selecting differnt options. So disable asynchronous loading of enum type completely.
asynchronous: model.type != "enum"
source:
{

View file

@ -56,22 +56,13 @@ Rectangle
configureMachinesAction: base.configureMachinesAction;
}
Rectangle {
id: headerSeparator
width: parent.width
height: UM.Theme.getSize("sidebar_lining").height
color: UM.Theme.getColor("sidebar_lining")
anchors.top: header.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
}
ProfileSetup {
id: profileItem
addProfileAction: base.addProfileAction
updateProfileAction: base.updateProfileAction
resetProfileAction: base.resetProfileAction
manageProfilesAction: base.manageProfilesAction
anchors.top: settingsModeSelection.bottom
anchors.top: header.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
width: parent.width
height: totalHeightProfileSetup
@ -80,6 +71,15 @@ Rectangle
onHideTooltip: base.hideTooltip()
}
Rectangle {
id: headerSeparator
width: parent.width
height: UM.Theme.getSize("sidebar_lining").height
color: UM.Theme.getColor("sidebar_lining")
anchors.top: profileItem.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
}
currentModeIndex:
{
var index = parseInt(UM.Preferences.getValue("cura/active_mode"))
@ -172,7 +172,7 @@ Rectangle
id: sidebarContents
anchors.bottom: footerSeparator.top
anchors.top: profileItem.bottom
anchors.top: settingsModeSelection.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.left: base.left
anchors.right: base.right

View file

@ -16,6 +16,7 @@ Item
property Action configureMachinesAction;
UM.I18nCatalog { id: catalog; name:"cura"}
property int totalHeightHeader: childrenRect.height
property int currentExtruderIndex;
Rectangle {
id: sidebarTabRow
@ -25,23 +26,11 @@ Item
color: UM.Theme.getColor("sidebar_header_bar")
}
Label{
id: printjobTabLabel
text: catalog.i18nc("@label:listbox","Print Job");
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width;
anchors.top: sidebarTabRow.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
width: parent.width/100*45
font: UM.Theme.getFont("large");
color: UM.Theme.getColor("text")
}
Rectangle {
id: machineSelectionRow
width: base.width
height: UM.Theme.getSize("sidebar_setup").height
anchors.top: printjobTabLabel.bottom
anchors.top: sidebarTabRow.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.horizontalCenter: parent.horizontalCenter
@ -99,9 +88,89 @@ Item
}
Rectangle {
id: variantRow
id: extruderSelection
width: parent.width/100*55
visible: machineExtruderCount.properties.value > 1
height: visible ? UM.Theme.getSize("sidebar_header_mode_toggle").height : 0
anchors.right: parent.right
anchors.rightMargin: UM.Theme.getSize("default_margin").width
anchors.top: machineSelectionRow.bottom
anchors.topMargin: visible ? UM.Theme.getSize("default_margin").height : 0
Component{
id: wizardDelegate
Button {
height: extruderSelection.height
anchors.left: parent.left
anchors.leftMargin: model.index * (extruderSelection.width / machineExtruderCount.properties.value)
anchors.verticalCenter: parent.verticalCenter
width: parent.width / machineExtruderCount.properties.value
text: model.text
exclusiveGroup: extruderMenuGroup;
checkable: true;
checked: base.currentExtruderIndex == index
onClicked: base.currentExtruderIndex = index
style: ButtonStyle {
background: Rectangle {
border.width: UM.Theme.getSize("default_lining").width
border.color: control.checked ? UM.Theme.getColor("toggle_checked_border") :
control.pressed ? UM.Theme.getColor("toggle_active_border") :
control.hovered ? UM.Theme.getColor("toggle_hovered_border") : UM.Theme.getColor("toggle_unchecked_border")
color: control.checked ? UM.Theme.getColor("toggle_checked") :
control.pressed ? UM.Theme.getColor("toggle_active") :
control.hovered ? UM.Theme.getColor("toggle_hovered") : UM.Theme.getColor("toggle_unchecked")
Behavior on color { ColorAnimation { duration: 50; } }
Label {
anchors.centerIn: parent
color: control.checked ? UM.Theme.getColor("toggle_checked_text") :
control.pressed ? UM.Theme.getColor("toggle_active_text") :
control.hovered ? UM.Theme.getColor("toggle_hovered_text") : UM.Theme.getColor("toggle_unchecked_text")
font: UM.Theme.getFont("default")
text: control.text;
}
}
label: Item { }
}
}
}
ExclusiveGroup { id: extruderMenuGroup; }
ListView{
id: extrudersList
property var index: 0
model: extrudersListModel
delegate: wizardDelegate
anchors.top: parent.top
anchors.left: parent.left
width: parent.width
}
}
ListModel
{
id: extrudersListModel
Component.onCompleted: populateExtruderModel()
}
Connections
{
id: machineChange
target: Cura.MachineManager
onGlobalContainerChanged: populateExtruderModel()
}
function populateExtruderModel()
{
extrudersListModel.clear();
for(var extruder = 0; extruder < machineExtruderCount.properties.value ; extruder++) {
extrudersListModel.append({
text: catalog.i18nc("@label", "Extruder %1").arg(extruder + 1)
})
}
}
Rectangle {
id: variantRow
anchors.top: extruderSelection.visible ? extruderSelection.bottom : machineSelectionRow.bottom
anchors.topMargin: visible ? UM.Theme.getSize("default_margin").height : 0
width: base.width
height: visible ? UM.Theme.getSize("sidebar_setup").height : 0
visible: Cura.MachineManager.hasVariants || Cura.MachineManager.hasMaterials
@ -226,4 +295,14 @@ Item
}
}
}
UM.SettingPropertyProvider
{
id: machineExtruderCount
containerStackId: Cura.MachineManager.activeMachineId
key: "machine_extruder_count"
watchedProperties: [ "value" ]
storeIndex: 0
}
}

View file

@ -175,38 +175,35 @@ Item
}
Rectangle {
id: helpersCellLeft
id: helpersCell
anchors.top: infillCellRight.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.left: parent.left
width: parent.width/100*35 - UM.Theme.getSize("default_margin").width
anchors.right: parent.right
height: childrenRect.height
Label{
id: adhesionHelperLabel
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width
//: Helpers selection label
text: catalog.i18nc("@label:listbox","Helpers:");
anchors.verticalCenter: brimCheckBox.verticalCenter
width: parent.width/100*35 - 3 * UM.Theme.getSize("default_margin").width
//: Bed adhesion label
text: catalog.i18nc("@label:listbox","Bed Adhesion:");
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("text");
}
}
Rectangle {
id: helpersCellRight
anchors.top: helpersCellLeft.top
anchors.left: helpersCellLeft.right
width: parent.width/100*65 - UM.Theme.getSize("default_margin").width
height: childrenRect.height
CheckBox{
id: brimCheckBox
property bool hovered_ex: false
anchors.top: parent.top
anchors.left: parent.left
anchors.left: adhesionHelperLabel.right
anchors.leftMargin: UM.Theme.getSize("default_margin").width
//: Setting enable skirt adhesion checkbox
text: catalog.i18nc("@option:check","Generate Brim");
text: catalog.i18nc("@option:check","Print Brim");
style: UM.Theme.styles.checkbox;
checked: platformAdhesionType.properties.value == "brim"
@ -221,7 +218,7 @@ Item
onEntered:
{
parent.hovered_ex = true
base.showTooltip(brimCheckBox, Qt.point(-helpersCellRight.x, 0),
base.showTooltip(brimCheckBox, Qt.point(-brimCheckBox.x, 0),
catalog.i18nc("@label", "Enable printing a brim. This will add a single-layer-thick flat area around your object which is easy to cut off afterwards."));
}
onExited:
@ -231,16 +228,31 @@ Item
}
}
}
Label{
id: supportHelperLabel
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width
anchors.verticalCenter: supportCheckBox.verticalCenter
width: parent.width/100*35 - 3 * UM.Theme.getSize("default_margin").width
//: Support label
text: catalog.i18nc("@label:listbox","Support:");
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("text");
}
CheckBox{
id: supportCheckBox
visible: machineExtruderCount.properties.value <= 1
property bool hovered_ex: false
anchors.top: brimCheckBox.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.left: parent.left
anchors.left: supportHelperLabel.right
anchors.leftMargin: UM.Theme.getSize("default_margin").width
//: Setting enable support checkbox
text: catalog.i18nc("@option:check","Generate Support Structure");
text: catalog.i18nc("@option:check","Print Support Structure");
style: UM.Theme.styles.checkbox;
checked: supportEnabled.properties.value == "True"
@ -254,7 +266,7 @@ Item
onEntered:
{
parent.hovered_ex = true
base.showTooltip(supportCheckBox, Qt.point(-helpersCellRight.x, 0),
base.showTooltip(supportCheckBox, Qt.point(-supportCheckBox.x, 0),
catalog.i18nc("@label", "Enable printing support structures. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air."));
}
onExited:
@ -264,74 +276,45 @@ Item
}
}
}
}
function populateExtruderModel()
{
extruderModel.clear();
for(var extruder = 0; extruder < machineExtruderCount.properties.value ; extruder++) {
print(catalog.i18nc("@label", "Extruder %1").arg(extruder));
extruderModel.append({
text: catalog.i18nc("@label", "Extruder %1").arg(extruder)
})
}
}
Rectangle {
id: multiExtrusionCell
anchors.top: helpersCellRight.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.left: parent.left
width: parent.width
height: childrenRect.height
visible: machineExtruderCount.properties.value > 1
Label {
id: mainExtruderLabel
text: catalog.i18nc("@label:listbox","Print object with:")
font: UM.Theme.getFont("default")
color: UM.Theme.getColor("text")
width: base.width/100* 35 - 2*UM.Theme.getSize("default_margin").width
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width
anchors.verticalCenter: mainExtruderCombobox.verticalCenter
}
ComboBox {
id: mainExtruderCombobox
model: extruderModel
anchors.top: parent.top
anchors.left: supportExtruderLabel.right
style: UM.Theme.styles.combobox
currentIndex: mainExtruderNr.properties.value
onActivated: {
mainExtruderNr.setPropertyValue("value", index)
}
}
Label {
id: supportExtruderLabel
visible: supportCheckBox.checked
text: catalog.i18nc("@label:listbox","Print support with:")
font: UM.Theme.getFont("default")
color: UM.Theme.getColor("text")
width: base.width/100* 35 - 2*UM.Theme.getSize("default_margin").width
height: visible ? mainExtruderLabel.height : 0
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width
anchors.verticalCenter: supportExtruderCombobox.verticalCenter
}
ComboBox {
id: supportExtruderCombobox
visible: supportCheckBox.checked
visible: machineExtruderCount.properties.value > 1
model: extruderModel
height: visible ? mainExtruderCombobox.height : 0
anchors.top: mainExtruderCombobox.bottom
anchors.top: brimCheckBox.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.left: supportExtruderLabel.right
anchors.left: supportHelperLabel.right
anchors.leftMargin: UM.Theme.getSize("default_margin").width
width: parent.width/100*45
style: UM.Theme.styles.combobox
currentIndex: supportExtruderNr.properties.value
property bool hovered_ex: false
currentIndex: supportEnabled.properties.value == "True" ? parseFloat(supportExtruderNr.properties.value) + 1 : 0
onActivated: {
supportExtruderNr.setPropertyValue("value", index)
if(index==0) {
supportEnabled.setPropertyValue("value", false);
} else {
supportEnabled.setPropertyValue("value", true);
supportExtruderNr.setPropertyValue("value", index - 1);
}
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
acceptedButtons: Qt.NoButton
onEntered:
{
parent.hovered_ex = true
base.showTooltip(supportExtruderCombobox, Qt.point(-supportExtruderCombobox.x, 0),
catalog.i18nc("@label", "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air."));
}
onExited:
{
parent.hovered_ex = false
base.hideTooltip();
}
}
}
@ -339,17 +322,30 @@ Item
id: extruderModel
Component.onCompleted: populateExtruderModel()
}
Connections
{
id: machineChange
target: Cura.MachineManager
onGlobalContainerChanged: populateExtruderModel()
}
Connections
{
id: machineChange
target: Cura.MachineManager
onGlobalContainerChanged: populateExtruderModel()
}
}
function populateExtruderModel()
{
extruderModel.clear();
extruderModel.append({
text: catalog.i18nc("@label", "Don't print support")
})
for(var extruder = 0; extruder < machineExtruderCount.properties.value ; extruder++) {
extruderModel.append({
text: catalog.i18nc("@label", "Print using Extruder %1").arg(extruder + 1)
})
}
}
Rectangle {
id: tipsCell
anchors.top: multiExtrusionCell.visible? multiExtrusionCell.bottom : helpersCellRight.bottom
anchors.top: helpersCell.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.left: parent.left
width: parent.width
@ -420,13 +416,4 @@ Item
watchedProperties: [ "value" ]
storeIndex: 0
}
UM.SettingPropertyProvider
{
id: mainExtruderNr
containerStackId: Cura.MachineManager.activeMachineId
key: "extruder_nr"
watchedProperties: [ "value" ]
storeIndex: 0
}
}

View file

@ -286,11 +286,11 @@ QtObject {
implicitHeight: UM.Theme.getSize("setting_control").height;
implicitWidth: UM.Theme.getSize("setting_control").width;
color: control.hovered ? Theme.getColor("setting_control_highlight") : Theme.getColor("setting_control");
color: (control.hovered || control.hovered_ex) ? Theme.getColor("setting_control_highlight") : Theme.getColor("setting_control");
Behavior on color { ColorAnimation { duration: 50; } }
border.width: Theme.getSize("default_lining").width;
border.color: control.hovered ? Theme.getColor("setting_control_border_highlight") : Theme.getColor("setting_control_border");
border.color: (control.hovered || control.hovered_ex) ? Theme.getColor("setting_control_border_highlight") : Theme.getColor("setting_control_border");
}
label: Item {
Label {

View file

@ -12,6 +12,6 @@ machine_nozzle_size = 0.25
machine_nozzle_tip_outer_diameter = 0.8
coasting_volume = 0.1
coasting_min_volume = 0.17
speed_wall = round(speed_print / 1.2, 1)
speed_wall_0 = 1 if speed_wall < 5 else (speed_wall - 5)
speed_topbottom = round(speed_print / 1.5, 1)
speed_wall = =round(speed_print / 1.2, 1)
speed_wall_0 = =1 if speed_wall < 5 else (speed_wall - 5)
speed_topbottom = =round(speed_print / 1.5, 1)

View file

@ -10,6 +10,6 @@ type = variant
[values]
machine_nozzle_size = 0.4
machine_nozzle_tip_outer_diameter = 1.05
speed_wall = round(speed_print / 1.25, 1)
speed_wall_0 = 1 if speed_wall < 10 else (speed_wall - 10)
speed_topbottom = round(speed_print / 2.25, 1)
speed_wall = =round(speed_print / 1.25, 1)
speed_wall_0 = =1 if speed_wall < 10 else (speed_wall - 10)
speed_topbottom = =round(speed_print / 2.25, 1)

View file

@ -11,6 +11,6 @@ type = variant
machine_nozzle_size = 0.6
machine_nozzle_tip_outer_diameter = 1.25
coasting_volume = 1.36
speed_wall = round(speed_print * 4 / 3, 1)
speed_wall_0 = 1 if speed_wall < 10 else (speed_wall - 10)
speed_topbottom = round(speed_print / 2, 1)
speed_wall = =round(speed_print * 4 / 3, 1)
speed_wall_0 = =1 if speed_wall < 10 else (speed_wall - 10)
speed_topbottom = =round(speed_print / 2, 1)

View file

@ -11,6 +11,6 @@ type = variant
machine_nozzle_size = 0.8
machine_nozzle_tip_outer_diameter = 1.35
coasting_volume = 3.22
speed_wall = round(speed_print * 4 / 3, 1)
speed_wall_0 = 1 if speed_wall < 10 else (speed_wall - 10)
speed_topbottom = round(speed_print / 2, 1)
speed_wall = =round(speed_print * 4 / 3, 1)
speed_wall_0 = =1 if speed_wall < 10 else (speed_wall - 10)
speed_topbottom = =round(speed_print / 2, 1)

View file

@ -12,6 +12,6 @@ machine_nozzle_size = 0.25
machine_nozzle_tip_outer_diameter = 0.8
coasting_volume = 0.1
coasting_min_volume = 0.17
speed_wall = round(speed_print / 1.2, 1)
speed_wall_0 = 1 if speed_wall < 5 else (speed_wall - 5)
speed_topbottom = round(speed_print / 1.5, 1)
speed_wall = =round(speed_print / 1.2, 1)
speed_wall_0 = =1 if speed_wall < 5 else (speed_wall - 5)
speed_topbottom = =round(speed_print / 1.5, 1)

View file

@ -10,6 +10,6 @@ type = variant
[values]
machine_nozzle_size = 0.4
machine_nozzle_tip_outer_diameter = 1.05
speed_wall = round(speed_print / 1.25, 1)
speed_wall_0 = 1 if speed_wall < 10 else (speed_wall - 10)
speed_topbottom = round(speed_print / 2.25, 1)
speed_wall = =round(speed_print / 1.25, 1)
speed_wall_0 = =1 if speed_wall < 10 else (speed_wall - 10)
speed_topbottom = =round(speed_print / 2.25, 1)

View file

@ -11,6 +11,6 @@ type = variant
machine_nozzle_size = 0.6
machine_nozzle_tip_outer_diameter = 1.25
coasting_volume = 1.36
speed_wall = round(speed_print * 4 / 3, 1)
speed_wall_0 = 1 if speed_wall < 10 else (speed_wall - 10)
speed_topbottom = round(speed_print / 2, 1)
speed_wall = =round(speed_print * 4 / 3, 1)
speed_wall_0 = =1 if speed_wall < 10 else (speed_wall - 10)
speed_topbottom = =round(speed_print / 2, 1)

View file

@ -11,6 +11,6 @@ type = variant
machine_nozzle_size = 0.8
machine_nozzle_tip_outer_diameter = 1.35
coasting_volume = 3.22
speed_wall = round(speed_print * 4 / 3, 1)
speed_wall_0 = 1 if speed_wall < 10 else (speed_wall - 10)
speed_topbottom = round(speed_print / 2, 1)
speed_wall = =round(speed_print * 4 / 3, 1)
speed_wall_0 = =1 if speed_wall < 10 else (speed_wall - 10)
speed_topbottom = =round(speed_print / 2, 1)