diff options
author | Florian Horn <florianins@gmail.com> | 2022-10-27 14:20:01 +0000 |
---|---|---|
committer | Florian Horn <florianins@gmail.com> | 2022-10-27 14:20:01 +0000 |
commit | 0995e879cea8ce871489ea8e393bb0eba6edc09c (patch) | |
tree | aec2c731194ab9be9a402d123418b02418f11bca | |
parent | 737eb28faca8be2bb996ee0930ec77d1f7ebd939 (diff) | |
download | stable-diffusion-webui-gfx803-0995e879cea8ce871489ea8e393bb0eba6edc09c.tar.gz stable-diffusion-webui-gfx803-0995e879cea8ce871489ea8e393bb0eba6edc09c.tar.bz2 stable-diffusion-webui-gfx803-0995e879cea8ce871489ea8e393bb0eba6edc09c.zip |
added save button and shortcut (s) to Modal View
-rw-r--r-- | javascript/imageviewer.js | 29 | ||||
-rw-r--r-- | modules/ui.py | 8 | ||||
-rw-r--r-- | style.css | 18 |
3 files changed, 50 insertions, 5 deletions
diff --git a/javascript/imageviewer.js b/javascript/imageviewer.js index 9e380c65..3aa3b29e 100644 --- a/javascript/imageviewer.js +++ b/javascript/imageviewer.js @@ -81,6 +81,25 @@ function modalImageSwitch(offset) { } } +function saveImage(){ + const tabTxt2Img = gradioApp().getElementById("tab_txt2img") + const tabImg2Img = gradioApp().getElementById("tab_img2img") + const saveTxt2Img = "save_txt2img" + const saveImg2Img = "save_img2img" + if (tabTxt2Img.style["display"] != "none") { + gradioApp().getElementById(saveTxt2Img).click() + } else if (tabImg2Img.style["display"] != "none") { + gradioApp().getElementById(saveImg2Img).click() + } else { + console.error("missing implementation for saving modal of this type") + } +} + +function modalSaveImage(event) { + saveImage() + event.stopPropagation() +} + function modalNextImage(event) { modalImageSwitch(1) event.stopPropagation() @@ -93,6 +112,9 @@ function modalPrevImage(event) { function modalKeyHandler(event) { switch (event.key) { + case "s": + saveImage() + break; case "ArrowLeft": modalPrevImage(event) break; @@ -198,6 +220,13 @@ document.addEventListener("DOMContentLoaded", function() { modalTileImage.title = "Preview tiling"; modalControls.appendChild(modalTileImage) + const modalSave = document.createElement("span") + modalSave.className = "modalSave cursor" + modalSave.innerHTML = "🖫" + modalSave.addEventListener("click", modalSaveImage, true) + modalSave.title = "Save Image(s)" + modalControls.appendChild(modalSave) + const modalClose = document.createElement('span') modalClose.className = 'modalClose cursor'; modalClose.innerHTML = '×' diff --git a/modules/ui.py b/modules/ui.py index 0a63e357..1332e265 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -630,7 +630,7 @@ def create_ui(wrap_gradio_gpu_call): import modules.img2img
import modules.txt2img
-
+
with gr.Blocks(analytics_enabled=False) as txt2img_interface:
txt2img_prompt, roll, txt2img_prompt_style, txt2img_negative_prompt, txt2img_prompt_style2, submit, _, _, txt2img_prompt_style_apply, txt2img_save_style, txt2img_paste, token_counter, token_button = create_toprow(is_img2img=False)
dummy_component = gr.Label(visible=False)
@@ -683,7 +683,8 @@ def create_ui(wrap_gradio_gpu_call): with gr.Column():
with gr.Row():
- save = gr.Button('Save')
+ saveButtonId = 'save_txt2img'
+ save = gr.Button('Save', elem_id=saveButtonId)
send_to_img2img = gr.Button('Send to img2img')
send_to_inpaint = gr.Button('Send to inpaint')
send_to_extras = gr.Button('Send to extras')
@@ -901,7 +902,8 @@ def create_ui(wrap_gradio_gpu_call): with gr.Column():
with gr.Row():
- save = gr.Button('Save')
+ saveButtonId = 'save_img2img'
+ save = gr.Button('Save', elem_id=saveButtonId)
img2img_send_to_img2img = gr.Button('Send to img2img')
img2img_send_to_inpaint = gr.Button('Send to inpaint')
img2img_send_to_extras = gr.Button('Send to extras')
@@ -314,8 +314,8 @@ input[type="range"]{ .modalControls {
display: grid;
- grid-template-columns: 32px auto 1fr 32px;
- grid-template-areas: "zoom tile space close";
+ grid-template-columns: 32px auto 32px 1fr 32px;
+ grid-template-areas: "zoom tile save space close";
position: absolute;
top: 0;
left: 0;
@@ -333,6 +333,10 @@ input[type="range"]{ grid-area: zoom;
}
+.modalSave {
+ grid-area: save;
+}
+
.modalTileImage {
grid-area: tile;
}
@@ -346,8 +350,18 @@ input[type="range"]{ cursor: pointer;
}
+.modalSave {
+ color: white;
+ font-size: 30px;
+ margin-top: 6px;
+ font-weight: bold;
+ cursor: pointer;
+}
+
.modalClose:hover,
.modalClose:focus,
+.modalSave:hover,
+.modalSave:focus,
.modalZoom:hover,
.modalZoom:focus {
color: #999;
|