Finishing position picker for objects having a position.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
391cf61e36
commit
4afe0d4d63
4 changed files with 62 additions and 11 deletions
|
@ -35,7 +35,7 @@ Popup {
|
||||||
height: logo.height
|
height: logo.height
|
||||||
width: logo.width + 10 + welcomeText.width
|
width: logo.width + 10 + welcomeText.width
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.topMargin: 50
|
anchors.topMargin: (parent.width-width)/2
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
Image {
|
Image {
|
||||||
|
|
|
@ -155,6 +155,7 @@ ApplicationWindow {
|
||||||
}
|
}
|
||||||
|
|
||||||
PickLocationOverlay {
|
PickLocationOverlay {
|
||||||
|
id: positionPicker
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
canvas: parent
|
canvas: parent
|
||||||
}
|
}
|
||||||
|
|
|
@ -120,6 +120,32 @@ ListView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
id: pointerButton
|
||||||
|
width: parent.height - 10
|
||||||
|
height: width
|
||||||
|
anchors.right: deleteButton.left
|
||||||
|
anchors.rightMargin: 5
|
||||||
|
anchors.topMargin: 5
|
||||||
|
icon.name: 'position'
|
||||||
|
property bool hasXProp: Objects.types[objType].properties().hasOwnProperty('x')
|
||||||
|
property bool hasYProp: Objects.types[objType].properties().hasOwnProperty('y')
|
||||||
|
visible: hasXProp || hasYProp
|
||||||
|
ToolTip.visible: hovered
|
||||||
|
ToolTip.text: 'Set ' + Objects.types[objType].displayType() + ' position.'
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
positionPicker.objType = objType
|
||||||
|
positionPicker.objName = Objects.currentObjects[objType][index].name
|
||||||
|
positionPicker.pickX = hasXProp
|
||||||
|
positionPicker.pickY = hasYProp
|
||||||
|
positionPicker.propertyX = 'x'
|
||||||
|
positionPicker.propertyY = 'y'
|
||||||
|
positionPicker.visible = true
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
id: deleteButton
|
id: deleteButton
|
||||||
width: parent.height - 10
|
width: parent.height - 10
|
||||||
|
@ -131,7 +157,7 @@ ListView {
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
history.addToHistory(new HistoryLib.DeleteObject(
|
history.addToHistory(new HistoryLib.DeleteObject(
|
||||||
objEditor.obj.name, objEditor.objType, objEditor.obj.export()
|
Objects.currentObjects[objType][index].name, objType, Objects.currentObjects[objType][index].export()
|
||||||
))
|
))
|
||||||
Objects.currentObjects[objType][index].delete()
|
Objects.currentObjects[objType][index].delete()
|
||||||
Objects.currentObjects[objType].splice(index, 1)
|
Objects.currentObjects[objType].splice(index, 1)
|
||||||
|
|
|
@ -33,6 +33,7 @@ Item {
|
||||||
property bool pickX: true
|
property bool pickX: true
|
||||||
property string propertyX: 'x'
|
property string propertyX: 'x'
|
||||||
property string propertyY: 'y'
|
property string propertyY: 'y'
|
||||||
|
property alias precision: precisionSlider.value
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
color: sysPalette.window
|
color: sysPalette.window
|
||||||
|
@ -47,7 +48,7 @@ Item {
|
||||||
cursorShape: Qt.CrossCursor
|
cursorShape: Qt.CrossCursor
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if(parent.pickX) {
|
if(parent.pickX) {
|
||||||
var newValue = canvas.px2x(picker.mouseX).toFixed(2)
|
var newValue = canvas.px2x(picker.mouseX).toFixed(parent.precision)
|
||||||
newValue = {
|
newValue = {
|
||||||
'Expression': () => new MathLib.Expression(newValue),
|
'Expression': () => new MathLib.Expression(newValue),
|
||||||
'number': () => parseFloat(newValue)
|
'number': () => parseFloat(newValue)
|
||||||
|
@ -61,7 +62,7 @@ Item {
|
||||||
objectLists.update()
|
objectLists.update()
|
||||||
}
|
}
|
||||||
if(parent.pickY) {
|
if(parent.pickY) {
|
||||||
var newValue = canvas.px2y(picker.mouseY).toFixed(2)
|
var newValue = canvas.px2y(picker.mouseY).toFixed(parent.precision)
|
||||||
newValue = {
|
newValue = {
|
||||||
'Expression': () => new MathLib.Expression(newValue),
|
'Expression': () => new MathLib.Expression(newValue),
|
||||||
'number': () => parseFloat(newValue)
|
'number': () => parseFloat(newValue)
|
||||||
|
@ -78,11 +79,33 @@ Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
height: precisionSlider.height
|
||||||
|
Text {
|
||||||
|
text: " Pointer precision: "
|
||||||
|
color: 'black'
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
Slider {
|
||||||
|
id: precisionSlider
|
||||||
|
from: 0
|
||||||
|
value: 2
|
||||||
|
to: 10
|
||||||
|
stepSize: 1
|
||||||
|
ToolTip {
|
||||||
|
parent: precisionSlider.handle
|
||||||
|
visible: precisionSlider.pressed
|
||||||
|
text: precisionSlider.value.toFixed(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: xCursor
|
id: xCursor
|
||||||
width: 1
|
width: 1
|
||||||
height: parent.height
|
height: parent.height
|
||||||
color: sysPalette.windowText
|
color: 'black'
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.leftMargin: picker.mouseX
|
anchors.leftMargin: picker.mouseX
|
||||||
|
@ -93,25 +116,26 @@ Item {
|
||||||
id: yCursor
|
id: yCursor
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: 1
|
height: 1
|
||||||
color: sysPalette.windowText
|
color: 'black'
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.topMargin: picker.mouseY
|
anchors.topMargin: picker.mouseY
|
||||||
visible: parent.pickY
|
visible: parent.pickY
|
||||||
}
|
}
|
||||||
|
|
||||||
Label {
|
Text {
|
||||||
x: picker.mouseX - width - 5
|
x: picker.mouseX - width - 5
|
||||||
y: picker.mouseY - height - 5
|
y: picker.mouseY - height - 5
|
||||||
property double mouseX: canvas.px2x(picker.mouseX).toFixed(2)
|
property double mouseX: canvas.px2x(picker.mouseX).toFixed(parent.precision)
|
||||||
property double mouseY: canvas.px2y(picker.mouseY).toFixed(2)
|
property double mouseY: canvas.px2y(picker.mouseY).toFixed(parent.precision)
|
||||||
|
color: 'black'
|
||||||
text: {
|
text: {
|
||||||
if(parent.pickX && parent.pickY)
|
if(parent.pickX && parent.pickY)
|
||||||
return `(${mouseX}, ${mouseY})`
|
return `(${mouseX}, ${mouseY})`
|
||||||
if(parent.pickX)
|
if(parent.pickX)
|
||||||
return mouseX + ''
|
return `X = ${mouseX}`
|
||||||
if(parent.pickY)
|
if(parent.pickY)
|
||||||
return mouseY + ''
|
return `Y = ${mouseY}`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue