diff --git a/javascript/image_browser.js b/javascript/image_browser.js
index a220f39..4e38269 100644
--- a/javascript/image_browser.js
+++ b/javascript/image_browser.js
@@ -281,6 +281,15 @@ gradioApp().addEventListener("keydown", function(event) {
deleteBtn.dispatchEvent(new Event("click"));
}
+ // prevent left arrow following delete, instead refresh page
+ if (event.code == "ArrowLeft" && !event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey) {
+ let deleteState = gradioApp().getElementById(tabname + "_image_browser_delete_state").getElementsByClassName('gr-check-radio gr-checkbox')[0];
+ if (deleteState.checked) {
+ let refreshBtn = gradioApp().getElementById(tabname + "_image_browser_renew_page");
+ refreshBtn.dispatchEvent(new Event("click"));
+ }
+ }
+
if (event.code == "ArrowLeft" && modifiers_pressed) {
let prevBtn = gradioApp().getElementById(tabname + "_image_browser_prev_page");
prevBtn.dispatchEvent(new Event("click"));
diff --git a/scripts/image_browser.py b/scripts/image_browser.py
index 100a6b8..2c4766a 100644
--- a/scripts/image_browser.py
+++ b/scripts/image_browser.py
@@ -227,6 +227,7 @@ def delete_image(delete_num, name, filenames, image_index, visible_num):
continue
if opts.image_browser_delete_message:
print(f"Deleting file {name}")
+ delete_state = True
delete_recycle(name)
visible_num -= 1
if opts.image_browser_txt_files:
@@ -238,7 +239,7 @@ def delete_image(delete_num, name, filenames, image_index, visible_num):
else:
new_file_list.append(name)
i += 1
- return new_file_list, 1, visible_num
+ return new_file_list, 1, visible_num, delete_state
def traverse_all_files(curr_path, image_list, tabname_box, img_path_depth) -> List[Tuple[str, os.stat_result, str, int]]:
global current_depth
@@ -469,9 +470,9 @@ def get_all_images(dir_name, sort_by, sort_order, keyword, tabname_box, img_path
filenames = [finfo for finfo in fileinfos]
return filenames
-def get_image_page(img_path, page_index, filenames, keyword, sort_by, sort_order, tabname_box, img_path_depth, ranking_filter, aes_filter, exif_keyword, negative_prompt_search):
+def get_image_page(img_path, page_index, filenames, keyword, sort_by, sort_order, tabname_box, img_path_depth, ranking_filter, aes_filter, exif_keyword, negative_prompt_search, delete_state):
if img_path == "":
- return [], page_index, [], "", "", "", 0, ""
+ return [], page_index, [], "", "", "", 0, "", delete_state
img_path, _ = pure_path(img_path)
if page_index == 1 or page_index == 0 or len(filenames) == 0:
@@ -491,7 +492,9 @@ def get_image_page(img_path, page_index, filenames, keyword, sort_by, sort_order
load_info = "
"
load_info += f"{length} images in this directory, divided into {int((length + 1) // num_of_imgs_per_page + 1)} pages"
load_info += "
"
- return filenames, gr.update(value=page_index, label=f"Page Index ({page_index}/{max_page_index})"), image_list, "", "", "", visible_num, load_info
+
+ delete_state = False
+ return filenames, gr.update(value=page_index, label=f"Page Index ({page_index}/{max_page_index})"), image_list, "", "", "", visible_num, load_info, delete_state
def get_current_file(tabname_box, num, page_index, filenames):
file = filenames[int(num) + int((page_index - 1) * num_of_imgs_per_page)]
@@ -673,6 +676,7 @@ def create_tab(tabname):
turn_page_switch = gr.Number(value=1, label="turn_page_switch")
img_path_add = gr.Textbox(value="add")
img_path_remove = gr.Textbox(value="remove")
+ delete_state = gr.Checkbox(value=False, elem_id=f"{tabname}_image_browser_delete_state")
mod_keys = ""
if opts.image_browser_mod_ctrl_shift:
mod_keys = f"{mod_keys}CS"
@@ -686,7 +690,7 @@ def create_tab(tabname):
# img_path_browser.change(browser2path, inputs=[img_path_browser], outputs=[img_path])
#delete
- delete.click(delete_image, inputs=[delete_num, img_file_name, filenames, image_index, visible_img_num], outputs=[filenames, delete_num, visible_img_num])
+ delete.click(delete_image, inputs=[delete_num, img_file_name, filenames, image_index, visible_img_num], outputs=[filenames, delete_num, visible_img_num, delete_state])
delete.click(fn=None, _js="image_browser_delete", inputs=[delete_num, tabname_box, image_index], outputs=None)
if tabname != favorite_tab_name:
favorites_btn.click(save_image, inputs=[img_file_name, filenames, page_index, turn_page_switch], outputs=[collected_warning, filenames, page_index, turn_page_switch])
@@ -710,8 +714,8 @@ def create_tab(tabname):
turn_page_switch.change(
fn=get_image_page,
- inputs=[img_path, page_index, filenames, keyword, sort_by, sort_order, tabname_box, img_path_depth, ranking_filter, aes_filter, exif_keyword, negative_prompt_search],
- outputs=[filenames, page_index, image_gallery, img_file_name, img_file_time, img_file_info, visible_img_num, warning_box]
+ inputs=[img_path, page_index, filenames, keyword, sort_by, sort_order, tabname_box, img_path_depth, ranking_filter, aes_filter, exif_keyword, negative_prompt_search, delete_state],
+ outputs=[filenames, page_index, image_gallery, img_file_name, img_file_time, img_file_info, visible_img_num, warning_box, delete_state]
)
turn_page_switch.change(fn=None, inputs=[tabname_box], outputs=None, _js="image_browser_turnpage")
turn_page_switch.change(fn=lambda:(gr.update(visible=False), gr.update(visible=False), gr.update(visible=False)), inputs=None, outputs=[delete_panel, button_panel, ranking])