diff --git a/sdppp_python/comfy/nodes.py b/sdppp_python/comfy/nodes.py index f497b99..6b090ef 100644 --- a/sdppp_python/comfy/nodes.py +++ b/sdppp_python/comfy/nodes.py @@ -508,12 +508,11 @@ def define_comfyui_nodes(sdpppServer): def action(self, layer_or_group, unique_id, prompt, document = None, **kwargs): sdpppServer.has_ps_instance(throw_error=True) - document = json.loads(document) + document = layer_or_group[0]['document'] res_text = [] for i, item_layer in enumerate(layer_or_group): - if linked_style: - item_layer = item_layer['layer_identify'] + item_layer = item_layer['layer_identify'] text = call_async_func_in_server_thread( ProtocolPhotoshop.get_text( diff --git a/sdppp_python/comfy/nodes_legacy.py b/sdppp_python/comfy/nodes_legacy.py index 9848de9..35233a1 100644 --- a/sdppp_python/comfy/nodes_legacy.py +++ b/sdppp_python/comfy/nodes_legacy.py @@ -170,6 +170,8 @@ def define_comfyui_nodes_legacy(sdppp): sdppp.has_ps_instance(throw_error=True) linked_style, document = parse_params(unique_id, prompt, layer_or_group, document) + sdppp_arg = kwargs['sdppp'] + sdppp_arg_item = json.loads(sdppp_get_prompt_item_from_list(sdppp_arg, 0)) # dont check here, some python cannot read the data in this thread. # if document['instance_id'] not in sdppp.ppp_instances: @@ -211,7 +213,8 @@ def define_comfyui_nodes_legacy(sdppp): document_identify=document['identify'], image_blobs=[p['image_blob'] for p in params], layer_identifies=[p['layer_identify'] for p in params], - boundaries=[p['boundary'] for p in params] + boundaries=[p['boundary'] for p in params], + new_layer_name=sdppp_arg_item['lastOpenedWorkflow'] ), True) return (document,) diff --git a/sdppp_python/protocols/photoshop.py b/sdppp_python/protocols/photoshop.py index eb1ef67..a0c5b45 100644 --- a/sdppp_python/protocols/photoshop.py +++ b/sdppp_python/protocols/photoshop.py @@ -31,7 +31,7 @@ class ProtocolPhotoshop: return result @classmethod - async def send_images(cls, instance_id, document_identify, layer_identifies, boundaries, image_urls=[], image_blobs=[]): + async def send_images(cls, instance_id, document_identify, layer_identifies, boundaries, image_urls=[], image_blobs=[], new_layer_name=""): ppp_instance = cls.sdpppServer.ppp_instances[instance_id] result = await protocol_call(ppp_instance, 'B_photoshop', data={ 'action': 'sendImages', @@ -40,7 +40,8 @@ class ProtocolPhotoshop: 'layer_identifies': layer_identifies, 'boundaries': boundaries, 'image_urls': image_urls, - 'image_blobs': image_blobs + 'image_blobs': image_blobs, + 'new_layer_name': new_layer_name } }) return result diff --git a/typescripts/src/sdsystem/comfy/comfy-entry.mts b/typescripts/src/sdsystem/comfy/comfy-entry.mts index 9348583..06f5786 100644 --- a/typescripts/src/sdsystem/comfy/comfy-entry.mts +++ b/typescripts/src/sdsystem/comfy/comfy-entry.mts @@ -77,6 +77,7 @@ async function _init(app: any, api: any, $el: any) { image_urls: ev.detail.output.images.map((image: any) => { return location.origin + '/api/view?type=' + image.type + '&filename=' + image.filename }), + new_layer_name: pageStore.data.lastOpenedWorkflow }) } } diff --git a/typescripts/src/sdsystem/comfy/litegraph/fe-widgets.mts b/typescripts/src/sdsystem/comfy/litegraph/fe-widgets.mts index 5d603ef..4907cad 100644 --- a/typescripts/src/sdsystem/comfy/litegraph/fe-widgets.mts +++ b/typescripts/src/sdsystem/comfy/litegraph/fe-widgets.mts @@ -58,7 +58,10 @@ export class DocumentWidget extends SDPPPComboWidget { const documentWidget = node.addWidget('combo', name, options[0] || '', () => { }, { forceInput: true, values: makeDocumentDataOptions }) documentWidget.serializeValue = async () => { const data = parseDocumentOption(documentWidget.value); - if (!data) return ''; + if (!data) return JSON.stringify({ + instance_id: i18n('document {0} not found', documentWidget.value), + identify: '' + }); return JSON.stringify({ instance_id: data.instance_id, identify: data.identify @@ -226,7 +229,8 @@ export class DownloadWidget extends SDPPPWidget { ]; widget.serializeValue = async () => { const ret: any = { - ps_maxGetImageWH: pageStore.data.maxImageWH + ps_maxGetImageWH: pageStore.data.maxImageWH, + lastOpenedWorkflow: pageStore.data.lastOpenedWorkflow } const documentNode = findDocumentNodeRecursive(node); if (documentNode?.widgets[0]) { diff --git a/typescripts/src/sdsystem/comfy/socket/WorkflowCallee.mts b/typescripts/src/sdsystem/comfy/socket/WorkflowCallee.mts index c1d79a9..b6f6ce4 100644 --- a/typescripts/src/sdsystem/comfy/socket/WorkflowCallee.mts +++ b/typescripts/src/sdsystem/comfy/socket/WorkflowCallee.mts @@ -216,10 +216,16 @@ export function WorkflowCalleeSocket(SocketClass: SocketConstructor) { } private async open(params: WorkflowCalleeActions['open']['params']) { const { workflow_path } = params; - if (workflow_path.startsWith('sdppp://')) { - this.openSDPPPWorkflow(params) - } else { - this.openComfyWorkflow(params) + try { + if (workflow_path.startsWith('sdppp://')) { + this.openSDPPPWorkflow(params) + } else { + this.openComfyWorkflow(params) + } + pageStore.setLastOpenedWorkflow(workflow_path) + } catch (error) { + pageStore.setLastOpenedWorkflow('') + throw error } } private async openSDPPPWorkflow(params: WorkflowCalleeActions['open']['params']) { diff --git a/typescripts/src/sdsystem/common/store/page.mts b/typescripts/src/sdsystem/common/store/page.mts index 7cbe05d..4ade63f 100644 --- a/typescripts/src/sdsystem/common/store/page.mts +++ b/typescripts/src/sdsystem/common/store/page.mts @@ -12,6 +12,7 @@ export interface PageStoreData { executingNodeTitle: string currentForm: SDPPPGraphForm[] + lastOpenedWorkflow: string hasPSDNodes: boolean maxImageWH: number @@ -23,6 +24,7 @@ export class PageStore extends MainStore { constructor(data?: PageStoreData, version?: number) { super(data || { title: '', + webviewFromSid: location.search.match(/webview_fromsid=([^&]+)/)?.[1] || '', progress: 0, lastError: '', @@ -30,9 +32,9 @@ export class PageStore extends MainStore { queueSize: 0, executingNodeTitle: "", - webviewFromSid: location.search.match(/webview_fromsid=([^&]+)/)?.[1] || '', - currentForm: [], + lastOpenedWorkflow: '', + hasPSDNodes: false, maxImageWH: 60606, comfyUserToken: '' @@ -83,4 +85,9 @@ export class PageStore extends MainStore { setComfyUserToken(comfyUserToken: string) { this._data.comfyUserToken = comfyUserToken; } + + @StoreMutation + setLastOpenedWorkflow(lastOpenedWorkflow: string) { + this._data.lastOpenedWorkflow = lastOpenedWorkflow; + } }