diff --git a/CHANGELOG.md b/CHANGELOG.md index 45042a159..43b8fb62c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ *note*: not all are exposed via ui purely for simplicity, but all are available via api and scripts - allow weights for wildcards, thanks @Tillerz - **UI** + - kanvas add send-to functionality - improve extensions tab layout and behavior, thanks @awsr - indicate collapsed/hidden sections - **Internal** diff --git a/extensions-builtin/sdnext-kanvas b/extensions-builtin/sdnext-kanvas index 989a54a5b..325a7eedb 160000 --- a/extensions-builtin/sdnext-kanvas +++ b/extensions-builtin/sdnext-kanvas @@ -1 +1 @@ -Subproject commit 989a54a5b2ae4ba12fefbf48c9ed61c3663c4c0c +Subproject commit 325a7eedb6ab0c197ecdfbad55c2d73ed4ce174b diff --git a/extensions-builtin/sdnext-modernui b/extensions-builtin/sdnext-modernui index 2fc3af453..a74798532 160000 --- a/extensions-builtin/sdnext-modernui +++ b/extensions-builtin/sdnext-modernui @@ -1 +1 @@ -Subproject commit 2fc3af45330876bb058c3579bffaa1b86b5700fc +Subproject commit a74798532f01099c1eb8639e4abf23e1261621e5 diff --git a/javascript/ui.js b/javascript/ui.js index a65498bcb..caab2b371 100644 --- a/javascript/ui.js +++ b/javascript/ui.js @@ -86,6 +86,12 @@ function extract_image_from_gallery(gallery) { return [gallery[index]]; } +function send_to_kanvas(gallery) { + const [image] = extract_image_from_gallery(gallery); + log('sendToKanvas', image); + if (window.loadFromURL && image.data) window.loadFromURL(image.data); +} + async function setTheme(val, old) { if (!old || val === old) return; old = old.replace('modern/', ''); @@ -99,7 +105,7 @@ async function setTheme(val, old) { const href = link.href.replace(old, val); const res = await fetch(href); if (res.ok) { - log('setTheme:', old, val); + log('setTheme', old, val); link.href = link.href.replace(old, val); } else { log('setTheme: CSS not found', val); diff --git a/modules/generation_parameters_copypaste.py b/modules/generation_parameters_copypaste.py index 9ccf44ee7..584305942 100644 --- a/modules/generation_parameters_copypaste.py +++ b/modules/generation_parameters_copypaste.py @@ -152,15 +152,23 @@ def connect_paste_params_buttons(): fields = paste_fields[binding.tabname]["fields"] destination_image_component = paste_fields[binding.tabname]["init_img"] - if binding.source_image_component and destination_image_component: - binding.paste_button.click( - _js="extract_image_from_gallery" if isinstance(binding.source_image_component, gr.Gallery) else None, - fn=send_image, - inputs=[binding.source_image_component], - outputs=[destination_image_component], - show_progress='hidden', - ) - + if binding.source_image_component: + if isinstance(destination_image_component, gr.Image): + binding.paste_button.click( + _js="extract_image_from_gallery" if isinstance(binding.source_image_component, gr.Gallery) else None, + fn=send_image, + inputs=[binding.source_image_component], + outputs=[destination_image_component], + show_progress='hidden', + ) + elif isinstance(destination_image_component, gr.HTML): # kanvas + binding.paste_button.click( + _js="loadFromURL", + fn=None, + inputs=[binding.source_image_component], + outputs=[], + show_progress='hidden', + ) override_settings_component = binding.override_settings_component or paste_fields[binding.tabname]["override_settings_component"] if binding.source_text_component is not None and fields is not None: connect_paste(binding.paste_button, fields, binding.source_text_component, override_settings_component, binding.tabname) diff --git a/modules/ui_common.py b/modules/ui_common.py index 98cda43d8..153074aa7 100644 --- a/modules/ui_common.py +++ b/modules/ui_common.py @@ -277,7 +277,7 @@ def create_output_panel(tabname, preview=True, prompt=None, height=None, transfe save = gr.Button('Save', elem_id=f'save_{tabname}') delete = gr.Button('Delete', elem_id=f'delete_{tabname}') if transfer: - buttons = generation_parameters_copypaste.create_buttons(["txt2img", "img2img", "control", "extras", "caption"]) + buttons = generation_parameters_copypaste.create_buttons(["control", "txt2img", "img2img", "extras", "caption"]) else: buttons = None