From 433de12f666a743dd7569a164456c015bc539d7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1sztor=20D=C3=A1niel?= Date: Mon, 2 Dec 2024 10:36:19 +0100 Subject: [PATCH] Add dynamic suggestion to inputs --- components/package-lock.json | 8 +- components/package.json | 2 +- components/src/Preferences.svelte | 2 +- components/src/SingleEventAction.svelte | 105 ------------------ .../src/SingleEventDynamicAction.svelte | 81 ++++++++++++++ components/src/SingleEventStaticAction.svelte | 67 +++++++++++ components/src/main.js | 3 +- components/src/single_event_static_data.js | 23 ++++ components/src/single_parameter_set_data.js | 28 +++++ index.js | 52 +++++---- .../src/commands/command-handler.ts | 4 +- photoshop-plugin/src/main.svelte | 79 ++++++++++++- 12 files changed, 319 insertions(+), 135 deletions(-) delete mode 100644 components/src/SingleEventAction.svelte create mode 100644 components/src/SingleEventDynamicAction.svelte create mode 100644 components/src/SingleEventStaticAction.svelte create mode 100644 components/src/single_event_static_data.js create mode 100644 components/src/single_parameter_set_data.js diff --git a/components/package-lock.json b/components/package-lock.json index 6bf2ff6..b757ece 100644 --- a/components/package-lock.json +++ b/components/package-lock.json @@ -8,7 +8,7 @@ "name": "svelte-component", "version": "0.0.0", "dependencies": { - "@intechstudio/grid-uikit": "^1.20240813.1834", + "@intechstudio/grid-uikit": "^1.20241115.1558", "typescript": "^5.5.4", "ws": "^8.18.0" }, @@ -422,9 +422,9 @@ "integrity": "sha512-XGndio0l5/Gvd6CLIABvsav9HHezgDFFhDfHk1bvLfr9ni8dojqLSvBbotJEjmIwNHL7vK4QzBJTdBRoB+c1ww==" }, "node_modules/@intechstudio/grid-uikit": { - "version": "1.20240813.1834", - "resolved": "https://registry.npmjs.org/@intechstudio/grid-uikit/-/grid-uikit-1.20240813.1834.tgz", - "integrity": "sha512-WBrLRwKJAGArmNE4hspdpWjnbHu+oluAVtDSuoxN0WlR0dQ4GvwknMbGW7KWTLm3HCpe0LzsMQ5mgluhx6umiQ==", + "version": "1.20241115.1558", + "resolved": "https://registry.npmjs.org/@intechstudio/grid-uikit/-/grid-uikit-1.20241115.1558.tgz", + "integrity": "sha512-ul3GUtMcrkgYqny1sJUhPch8PlBrakQXlTm4ZoaN4Oz1m6VhDet4QUPkWgvp3fSbM54cZrz5Z9ONKw0JtpT2ag==", "dependencies": { "@melt-ui/svelte": "^0.42.0", "svelte": "^4.2.12", diff --git a/components/package.json b/components/package.json index 42dec95..889a597 100644 --- a/components/package.json +++ b/components/package.json @@ -18,7 +18,7 @@ "preference": "dist/components.js" }, "dependencies": { - "@intechstudio/grid-uikit": "^1.20240813.1834", + "@intechstudio/grid-uikit": "^1.20241115.1558", "typescript": "^5.5.4", "ws": "^8.18.0" } diff --git a/components/src/Preferences.svelte b/components/src/Preferences.svelte index ac99ea2..b513e31 100644 --- a/components/src/Preferences.svelte +++ b/components/src/Preferences.svelte @@ -6,7 +6,7 @@ let currentlyConnected = false; // @ts-ignore - const messagePort = createPackageMessagePort("package-photoshop"); + const messagePort = createPackageMessagePort("package-photoshop", "preferences"); onMount(() => { diff --git a/components/src/SingleEventAction.svelte b/components/src/SingleEventAction.svelte deleted file mode 100644 index 3ff5e5d..0000000 --- a/components/src/SingleEventAction.svelte +++ /dev/null @@ -1,105 +0,0 @@ - - - - -
-
-
Parameter ID
- { - eventId = e.detail; - }}/> -
-
- - -
\ No newline at end of file diff --git a/components/src/SingleEventDynamicAction.svelte b/components/src/SingleEventDynamicAction.svelte new file mode 100644 index 0000000..b9fac49 --- /dev/null +++ b/components/src/SingleEventDynamicAction.svelte @@ -0,0 +1,81 @@ + + + + +
+
+
Parameter ID
+ { + eventId = e.detail; + }}/> +
+
+ + +
\ No newline at end of file diff --git a/components/src/SingleEventStaticAction.svelte b/components/src/SingleEventStaticAction.svelte new file mode 100644 index 0000000..4e1e17d --- /dev/null +++ b/components/src/SingleEventStaticAction.svelte @@ -0,0 +1,67 @@ + + + + +
+
+
Parameter ID
+ { + eventId = e.detail; + }}/> +
+
+ + +
\ No newline at end of file diff --git a/components/src/main.js b/components/src/main.js index 693081c..fdc2ce6 100644 --- a/components/src/main.js +++ b/components/src/main.js @@ -1,3 +1,4 @@ import Preferences from "./Preferences.svelte"; -import SingleEventAction from "./SingleEventAction.svelte"; +import SingleEventStaticAction from "./SingleEventStaticAction.svelte"; import SingleParameterSetAction from "./SingleParameterSetAction.svelte"; +import SingleEventDynamicAction from "./SingleEventDynamicAction.svelte"; diff --git a/components/src/single_event_static_data.js b/components/src/single_event_static_data.js new file mode 100644 index 0000000..1c327bb --- /dev/null +++ b/components/src/single_event_static_data.js @@ -0,0 +1,23 @@ +export default { + "create-adjustment": [ + { info: "Solid Color", value: "solidColorLayer" }, + { info: "Gradient", value: "gradientLayer" }, + { info: "Pattern", value: "patternLayer" }, + { info: "Brightness", value: "brightnessEvent" }, + { info: "Levels", value: "levels" }, + { info: "Curves", value: "curves" }, + { info: "Exposure", value: "exposure" }, + { info: "Vibrance", value: "vibrance" }, + { info: "Hue/Saturation", value: "hueSaturation" }, + { info: "Color Balance", value: "colorBalance" }, + { info: "Black and White", value: "blackAndWhite" }, + { info: "Photo Filter", value: "photoFilter" }, + { info: "Channel Mixer", value: "channelMixer" }, + { info: "Color Lookup", value: "colorLookup" }, + { info: "Invert", value: "invert" }, + { info: "Posterize", value: "posterization" }, + { info: "Threshold", value: "thresholdClassEvent" }, + { info: "Gradient Map", value: "gradientMapClass" }, + { info: "Selective Color", value: "selectiveColor" }, + ], +}; diff --git a/components/src/single_parameter_set_data.js b/components/src/single_parameter_set_data.js new file mode 100644 index 0000000..ca71b74 --- /dev/null +++ b/components/src/single_parameter_set_data.js @@ -0,0 +1,28 @@ +export default { + "tool-parameter": [ + { info: "Angle", value: "angle" }, + { info: "Flow", value: "flow" }, + { info: "Hardness", value: "hardness" }, + //{info: "Mode", value : "mode"}, + { info: "Opacity", value: "opacity" }, + { info: "Pressure", value: "pressure" }, + { info: "Roundness", value: "roundness" }, + { info: "Size", value: "size" }, + { info: "Smoothing", value: "smoothing" }, + { info: "Spacing", value: "spacing" }, + ], + "image-adjustment": [ + { info: "Brightness", value: "brigthness" }, + { info: "Contrast", value: "contrast" }, + { info: "Hue", value: "hue" }, + { info: "Lightness", value: "lightness" }, + { info: "Saturation", value: "saturation" }, + ], + "adjust-adjustment": [ + { info: "Brightness", value: "brightness" }, + { info: "Contrast", value: "contrast" }, + { info: "Exposure", value: "exposure" }, + { info: "Offset", value: "offset" }, + { info: "Gamma", value: "gamma" }, + ], +}; diff --git a/index.js b/index.js index c5ab266..c3886ea 100644 --- a/index.js +++ b/index.js @@ -8,6 +8,7 @@ let photoshopWs = undefined; let controller; let preferenceMessagePort = undefined; let clientConnected = false; +let dynamicSuggestionData = {}; exports.loadPackage = async function (gridController, persistedData) { controller = gridController; @@ -41,7 +42,7 @@ exports.loadPackage = async function (gridController, persistedData) { short: "xpsms", displayName: "Menu Shortcut", defaultLua: 'gps("package-photoshop", "menu", "32")', - actionComponent: "single-event-action", + actionComponent: "single-event-dynamic-action", }); createPhotoshopAction({ @@ -60,7 +61,7 @@ exports.loadPackage = async function (gridController, persistedData) { short: "xpsst", displayName: "Select Tool", defaultLua: 'gps("package-photoshop", "select-tool", "paintbrushTool")', - actionComponent: "single-event-action", + actionComponent: "single-event-dynamic-action", }); createPhotoshopAction({ short: "xpstp", @@ -80,7 +81,7 @@ exports.loadPackage = async function (gridController, persistedData) { displayName: "Create Adjustment Layer", defaultLua: 'gps("package-photoshop", "create-adjustment", "brightnessEvent")', - actionComponent: "single-event-action", + actionComponent: "single-event-static-action", }); createPhotoshopAction({ short: "xpsaal", @@ -114,19 +115,28 @@ exports.unloadPackage = async function () { preferenceMessagePort?.close(); }; -exports.addMessagePort = async function (port) { - preferenceMessagePort = port; - port.on("close", () => { - preferenceMessagePort = undefined; - }); - port.on("message", (e) => { - console.log({ e }); - if (e.data.type === "open-plugin-folder") { - openExplorer(__dirname); - } - }); - port.start(); - notifyStatusChange(); +exports.addMessagePort = async function (port, senderId) { + if (senderId == "preferences") { + preferenceMessagePort = port; + port.on("close", () => { + preferenceMessagePort = undefined; + }); + port.on("message", (e) => { + console.log({ e }); + if (e.data.type === "open-plugin-folder") { + openExplorer(__dirname); + } + }); + port.start(); + notifyStatusChange(); + } else if (senderId == "dynamic-action") { + port.start(); + port.postMessage({ + type: "init-suggestions", + suggestions: dynamicSuggestionData, + }); + port.close(); + } }; exports.sendMessage = async function (args) { @@ -141,12 +151,16 @@ exports.sendMessage = async function (args) { function handlePhotoshopMessage(message) { let data = JSON.parse(message); - console.log({ data }); - controller.sendMessageToEditor(data); + console.log(data.type); + if (data.type === "set-dynamic-suggestions") { + dynamicSuggestionData = data.suggestions; + } else { + controller.sendMessageToEditor(data); + } } function notifyStatusChange() { - preferenceMessagePort.postMessage({ + preferenceMessagePort?.postMessage({ type: "clientStatus", clientConnected, }); diff --git a/photoshop-plugin/src/commands/command-handler.ts b/photoshop-plugin/src/commands/command-handler.ts index 2331aeb..c0293c4 100644 --- a/photoshop-plugin/src/commands/command-handler.ts +++ b/photoshop-plugin/src/commands/command-handler.ts @@ -26,7 +26,7 @@ class PhotoshopCommandHandler { imageAdjustment.initImageAdjustments(photoshopService); adjustmentLayer.initeAdjustmentLayer(photoshopService); - photoshopService.addActionNotificationListener( + /*photoshopService.addActionNotificationListener( ["set"], (name: any, descriptor: any) => { if (descriptor.to?.masterDiameter && descriptor.to._obj === "brush") { @@ -38,7 +38,7 @@ class PhotoshopCommandHandler { ); } }, - ); + );*/ } private static _instance: PhotoshopCommandHandler; diff --git a/photoshop-plugin/src/main.svelte b/photoshop-plugin/src/main.svelte index 3827ed9..333f352 100644 --- a/photoshop-plugin/src/main.svelte +++ b/photoshop-plugin/src/main.svelte @@ -1,14 +1,75 @@