diff --git a/Projects/Foundations/Icons-SVG-Sources/menu/copy-position.svg b/Projects/Foundations/Icons-SVG-Sources/menu/copy-position.svg new file mode 100644 index 000000000..5c68bcd28 --- /dev/null +++ b/Projects/Foundations/Icons-SVG-Sources/menu/copy-position.svg @@ -0,0 +1,8 @@ + +Created with Fabric.js 1.7.22 + + + + + + \ No newline at end of file diff --git a/Projects/Foundations/Icons-SVG-Sources/menu/snap-position.svg b/Projects/Foundations/Icons-SVG-Sources/menu/snap-position.svg new file mode 100644 index 000000000..a272ad69d --- /dev/null +++ b/Projects/Foundations/Icons-SVG-Sources/menu/snap-position.svg @@ -0,0 +1,10 @@ + +Created with Fabric.js 1.7.22 + + + + + + + + \ No newline at end of file diff --git a/Projects/Foundations/Icons/copy-position.png b/Projects/Foundations/Icons/copy-position.png new file mode 100644 index 000000000..fe9d7f13d Binary files /dev/null and b/Projects/Foundations/Icons/copy-position.png differ diff --git a/Projects/Foundations/Icons/snap-position.png b/Projects/Foundations/Icons/snap-position.png new file mode 100644 index 000000000..267719511 Binary files /dev/null and b/Projects/Foundations/Icons/snap-position.png differ diff --git a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js index b37988487..52103191d 100644 --- a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js @@ -779,6 +779,50 @@ function newFoundationsActionSwitch() { UI.projects.foundations.functionLibraries.socialBotsFunctions.sendSlackTestMessage(action.node, action.callBackFunction) } break + case 'Copy Position': + { + UI.projects.foundations.utilities.clipboard.copyTextToClipboard( action.node.payload.position.x + ';' + action.node.payload.position.y) + action.node.payload.uiObject.setInfoMessage('Position copied') + } + break + case 'Snap to Position': + { + navigator.clipboard.readText() + .then(text => { + //console.log('Pasted content: ', text); + let newPosition = { + x: 0, + y: 0 + } + let newVector = { + x: 0, + y: 0 + } + let positionArray = text.split(";",2) + + newPosition.x = positionArray[0] + newPosition.y = positionArray[1] + + if (newPosition.x >= 0 && newPosition.x <= UI.projects.foundations.spaces.floatingSpace.container.frame.width) { + newVector.x = newPosition.x - action.node.payload.position.x + + if (newPosition.y >= 0 && newPosition.y <= UI.projects.foundations.spaces.floatingSpace.container.frame.height) { + + newVector.y = newPosition.y - action.node.payload.position.y + action.node.payload.floatingObject.container.displace(newVector) + action.node.payload.uiObject.setInfoMessage('Snapped to new position') + } + } + else { + action.node.payload.uiObject.setErrorMessage('[Error]:Failed to read clipboard contents') + } + }) + .catch(err => { + console.error('[Error]:Failed to read clipboard contents: ', err); + action.node.payload.uiObject.setErrorMessage('[Error]:Failed to read clipboard contents') + }); + } + break } } } diff --git a/Projects/Foundations/UI/Spaces/Floating-Space/UiObjectConstructor.js b/Projects/Foundations/UI/Spaces/Floating-Space/UiObjectConstructor.js index 1a5c0c8bd..32cbf727d 100644 --- a/Projects/Foundations/UI/Spaces/Floating-Space/UiObjectConstructor.js +++ b/Projects/Foundations/UI/Spaces/Floating-Space/UiObjectConstructor.js @@ -365,6 +365,38 @@ function newUiObjectConstructor() { } ) } + menuItemsInitialValues.push( + { + action: 'Copy Position', + actionFunction: floatingObject.payload.executeAction, + actionProject: 'Foundations', + label: undefined, + visible: true, + //placeholder icon : https://www.iconpacks.net/free-icon/pin-48.html + iconPathOn: 'copy-position', + iconPathOff: 'copy-position', + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 2 + } + ) + menuItemsInitialValues.push( + { + action: 'Snap to Position', + actionFunction: floatingObject.payload.executeAction, + actionProject: 'Foundations', + label: undefined, + visible: true, + //placeholder icon: https://www.iconpacks.net/free-icon/pins-53.html + iconPathOn: 'snap-position', + iconPathOff: 'snap-position', + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 2 + } + ) menuItemsInitialValues.push( { action: 'Parent Detach',