mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-14 02:07:51 -06:00
Fix setting upper value
This commit is contained in:
parent
694da25bb7
commit
a664ee88b7
1 changed files with 63 additions and 16 deletions
|
@ -345,35 +345,67 @@ Item
|
||||||
property color trackColor: UM.Theme.getColor("slider_groove")
|
property color trackColor: UM.Theme.getColor("slider_groove")
|
||||||
property color trackBorderColor: UM.Theme.getColor("slider_groove_border")
|
property color trackBorderColor: UM.Theme.getColor("slider_groove_border")
|
||||||
|
|
||||||
property real to: UM.LayerView.numLayers
|
property real maximumValue: UM.LayerView.numLayers
|
||||||
property real from: 0
|
property real minimumValue: 0
|
||||||
property real minimumRange: 0
|
property real minimumRange: 0
|
||||||
property bool roundValues: true
|
property bool roundValues: true
|
||||||
|
|
||||||
property real upper:
|
function getUpperValueFromHandle()
|
||||||
{
|
{
|
||||||
var result = upperHandle.y / (height - (2 * handleSize + minimumRangeHandleSize));
|
var result = upperHandle.y / (height - (2 * handleSize + minimumRangeHandleSize));
|
||||||
result = to + result * (from - (to - minimumRange));
|
result = maximumValue + result * (minimumValue - (maximumValue - minimumRange));
|
||||||
result = roundValues ? Math.round(result) | 0 : result;
|
result = roundValues ? Math.round(result) | 0 : result;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
property real lower:
|
function getLowerValueFromHandle()
|
||||||
{
|
{
|
||||||
var result = (lowerHandle.y - (handleSize + minimumRangeHandleSize)) / (height - (2 * handleSize + minimumRangeHandleSize));
|
var result = (lowerHandle.y - (handleSize + minimumRangeHandleSize)) / (height - (2 * handleSize + minimumRangeHandleSize));
|
||||||
result = to - minimumRange + result * (from - (to - minimumRange));
|
result = maximumValue - minimumRange + result * (minimumValue - (maximumValue - minimumRange));
|
||||||
result = roundValues ? Math.round(result) : result;
|
result = roundValues ? Math.round(result) : result;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
property real range: upper - lower
|
|
||||||
property var activeHandle: upperHandle
|
property var activeHandle: upperHandle
|
||||||
|
|
||||||
onLowerChanged:
|
function setLowerValue(value)
|
||||||
{
|
{
|
||||||
UM.LayerView.setMinimumLayer(lower)
|
|
||||||
}
|
}
|
||||||
onUpperChanged:
|
|
||||||
|
function setUpperValue(value)
|
||||||
{
|
{
|
||||||
UM.LayerView.setCurrentLayer(upper);
|
print("!!!!!!", value)
|
||||||
|
|
||||||
|
var value = (value - maximumValue) / (minimumValue - maximumValue);
|
||||||
|
print("a ", value)
|
||||||
|
var new_upper_y = Math.round(value * (height - (2 * handleSize + minimumRangeHandleSize)));
|
||||||
|
print("b ", new_upper_y, upperHandle.y)
|
||||||
|
var new_lower = lowerHandle.value
|
||||||
|
if(UM.LayerView.currentLayer - lowerHandle.value < minimumRange)
|
||||||
|
{
|
||||||
|
new_lower = UM.LayerView.currentLayer - minimumRange
|
||||||
|
} else if(activeHandle == rangeHandle)
|
||||||
|
{
|
||||||
|
new_lower = UM.LayerView.currentLayer - (upperHandle.value - lowerHandle.value)
|
||||||
|
}
|
||||||
|
new_lower = Math.max(minimumValue, new_lower)
|
||||||
|
|
||||||
|
if(new_upper_y != upperHandle.y)
|
||||||
|
{
|
||||||
|
upperHandle.y = new_upper_y
|
||||||
|
}
|
||||||
|
if(new_lower != lowerHandle.value)
|
||||||
|
{
|
||||||
|
value = (new_lower - maximumValue) / (minimumValue - maximumValue)
|
||||||
|
lowerHandle.y = Math.round((handleSize + minimumRangeHandleSize) + value * (height - (2 * handleSize + minimumRangeHandleSize)))
|
||||||
|
}
|
||||||
|
rangeHandle.height = lowerHandle.y - (upperHandle.y + upperHandle.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
Connections
|
||||||
|
{
|
||||||
|
target: UM.LayerView
|
||||||
|
onMinimumLayerChanged: slider.setLowerValue(UM.LayerView.minimumLayer)
|
||||||
|
onCurrentLayerChanged: slider.setUpperValue(UM.LayerView.currentLayer)
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
|
@ -392,7 +424,7 @@ Item
|
||||||
width: parent.handleSize
|
width: parent.handleSize
|
||||||
height: parent.minimumRangeHandleSize
|
height: parent.minimumRangeHandleSize
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
property real value: parent.upper
|
property real value: UM.LayerView.currentLayer
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
|
@ -414,6 +446,9 @@ Item
|
||||||
{
|
{
|
||||||
upperHandle.y = parent.y - upperHandle.height
|
upperHandle.y = parent.y - upperHandle.height
|
||||||
lowerHandle.y = parent.y + parent.height
|
lowerHandle.y = parent.y + parent.height
|
||||||
|
|
||||||
|
UM.LayerView.setCurrentLayer(slider.getUpperValueFromHandle());
|
||||||
|
UM.LayerView.setMinimumLayer(slider.getLowerValueFromHandle());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -426,7 +461,7 @@ Item
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
radius: parent.handleRadius
|
radius: parent.handleRadius
|
||||||
color: parent.upperHandleColor
|
color: parent.upperHandleColor
|
||||||
property real value: parent.upper
|
property real value: UM.LayerView.currentLayer
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
@ -444,8 +479,14 @@ Item
|
||||||
lowerHandle.y = upperHandle.y + upperHandle.height + parent.parent.minimumRangeHandleSize;
|
lowerHandle.y = upperHandle.y + upperHandle.height + parent.parent.minimumRangeHandleSize;
|
||||||
}
|
}
|
||||||
rangeHandle.height = lowerHandle.y - (upperHandle.y + upperHandle.height);
|
rangeHandle.height = lowerHandle.y - (upperHandle.y + upperHandle.height);
|
||||||
|
|
||||||
|
UM.LayerView.setCurrentLayer(slider.getUpperValueFromHandle());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function setValue(value)
|
||||||
|
{
|
||||||
|
UM.LayerView.setCurrentLayer(value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
|
@ -456,7 +497,7 @@ Item
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
radius: parent.handleRadius
|
radius: parent.handleRadius
|
||||||
color: parent.lowerHandleColor
|
color: parent.lowerHandleColor
|
||||||
property real value: parent.lower
|
property real value: UM.LayerView.minimumLayer
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
@ -474,14 +515,20 @@ Item
|
||||||
upperHandle.y = lowerHandle.y - (upperHandle.height + parent.parent.minimumRangeHandleSize);
|
upperHandle.y = lowerHandle.y - (upperHandle.height + parent.parent.minimumRangeHandleSize);
|
||||||
}
|
}
|
||||||
rangeHandle.height = lowerHandle.y - (upperHandle.y + upperHandle.height)
|
rangeHandle.height = lowerHandle.y - (upperHandle.y + upperHandle.height)
|
||||||
|
|
||||||
|
UM.LayerView.setMinimumLayer(slider.getLowerValueFromHandle());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function setValue(value)
|
||||||
|
{
|
||||||
|
UM.LayerView.setMinimumLayer(value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle
|
Rectangle
|
||||||
{
|
{
|
||||||
x: parent.width + UM.Theme.getSize("slider_layerview_background").width / 2;
|
x: parent.width + UM.Theme.getSize("slider_layerview_background").width / 2;
|
||||||
y: slider.activeHandle.y + slider.activeHandle.height / 2 - valueLabel.height / 2;
|
y: Math.floor(slider.activeHandle.y + slider.activeHandle.height / 2 - valueLabel.height / 2);
|
||||||
|
|
||||||
height: UM.Theme.getSize("slider_handle").height + UM.Theme.getSize("default_margin").height
|
height: UM.Theme.getSize("slider_handle").height + UM.Theme.getSize("default_margin").height
|
||||||
width: valueLabel.width + UM.Theme.getSize("default_margin").width
|
width: valueLabel.width + UM.Theme.getSize("default_margin").width
|
||||||
|
@ -507,7 +554,7 @@ Item
|
||||||
cursorPosition = 0;
|
cursorPosition = 0;
|
||||||
if(valueLabel.text != '')
|
if(valueLabel.text != '')
|
||||||
{
|
{
|
||||||
slider.value = valueLabel.text - 1;
|
slider.activeHandle.setValue(valueLabel.text - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
validator: IntValidator { bottom: 1; top: slider.maximumValue + 1; }
|
validator: IntValidator { bottom: 1; top: slider.maximumValue + 1; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue