Add a property that indicates when the layer slider or the path slider

has changed manually.

With this we can differentiate when the layer changed automatically
(during simulation) or manually (by user interaction). In case it was
changed manually, the simulation will stop.

Contributes to CURA-5725.
This commit is contained in:
Diego Prado Gesto 2018-09-17 14:02:04 +02:00
parent 2bf617b53a
commit dfae4a9a86
3 changed files with 55 additions and 16 deletions

View file

@ -623,7 +623,15 @@ Item
{
target: UM.SimulationView
onMaxPathsChanged: pathSlider.setHandleValue(UM.SimulationView.currentPath)
onCurrentPathChanged: pathSlider.setHandleValue(UM.SimulationView.currentPath)
onCurrentPathChanged:
{
// Only pause the simulation when the layer was changed manually, not when the simulation is running
if (pathSlider.manuallyChanged)
{
playButton.pauseSimulation()
}
pathSlider.setHandleValue(UM.SimulationView.currentPath)
}
}
// make sure the slider handlers show the correct value after switching views
@ -667,9 +675,14 @@ Item
{
target: UM.SimulationView
onMaxLayersChanged: layerSlider.setUpperValue(UM.SimulationView.currentLayer)
onMinimumLayerChanged: layerSlider.setLowerValue(UM.SimulationView.minimumLayer)
onCurrentLayerChanged:
{
playButton.pauseSimulation()
// Only pause the simulation when the layer was changed manually, not when the simulation is running
if (layerSlider.manuallyChanged)
{
playButton.pauseSimulation()
}
layerSlider.setUpperValue(UM.SimulationView.currentLayer)
}
}
@ -719,6 +732,8 @@ Item
iconSource = "./resources/simulation_resume.svg"
simulationTimer.stop()
status = 0
layerSlider.manuallyChanged = true
pathSlider.manuallyChanged = true
}
function resumeSimulation()
@ -726,7 +741,8 @@ Item
UM.SimulationView.setSimulationRunning(true)
iconSource = "./resources/simulation_pause.svg"
simulationTimer.start()
status = 1
layerSlider.manuallyChanged = false
pathSlider.manuallyChanged = false
}
}
@ -770,7 +786,6 @@ Item
{
UM.SimulationView.setCurrentLayer(currentLayer+1)
UM.SimulationView.setCurrentPath(0)
playButton.resumeSimulation()
}
}
else
@ -778,6 +793,8 @@ Item
UM.SimulationView.setCurrentPath(currentPath+1)
}
}
// The status must be set here instead of in the resumeSimulation function otherwise it won't work
// correctly, because part of the logic is in this trigger function.
playButton.status = 1
}
}