fix delete file from main gallery view

Signed-off-by: Vladimir Mandic <mandic00@live.com>
This commit is contained in:
Vladimir Mandic
2025-06-25 10:30:59 -04:00
parent 82e5848259
commit a5d784f073
5 changed files with 47 additions and 25 deletions
+2
View File
@@ -21,6 +21,8 @@
- Do not save empty `params.txt` file
- Override `params.txt` using `SD_PATH_PARAMS` env variable
- Add `wheel` to requirements due to `pip` change
- Case-insensitive sampler name matching
- Fix delete file with gallery views
## Update for 2025-06-16
+11
View File
@@ -60,6 +60,17 @@ function selected_gallery_index() {
return result;
}
function selected_gallery_files() {
let allImages = [];
try {
let allCurrentButtons = gradioApp().querySelectorAll('[style="display: block;"].tabitem div[id$=_gallery].gradio-gallery .thumbnail-item.thumbnail-small');
if (allCurrentButtons.length === 0) allCurrentButtons = gradioApp().querySelectorAll('.gradio-gallery .thumbnails > .thumbnail-item.thumbnail-small');
allImages = Array.from(allCurrentButtons).map((v) => v.querySelector('img')?.src);
} catch { /**/ }
const selectedIndex = selected_gallery_index();
return [allImages, selectedIndex];
}
function extract_image_from_gallery(gallery) {
if (gallery.length === 0) return [null];
if (gallery.length === 1) return [gallery[0]];
+1 -4
View File
@@ -572,10 +572,7 @@ def update_sampler(p, sd_model, second_pass=False):
if hasattr(sd_model, 'scheduler'):
if sampler_selection == 'None':
return
if sampler_selection is None:
sampler = sd_samplers.all_samplers_map.get("UniPC")
else:
sampler = sd_samplers.all_samplers_map.get(sampler_selection, None)
sampler = sd_samplers.find_sampler(sampler_selection)
if sampler is None:
shared.log.warning(f'Sampler: sampler="{sampler_selection}" not found')
sampler = sd_samplers.all_samplers_map.get("UniPC")
+11
View File
@@ -16,6 +16,17 @@ flow_models = ['Flux', 'StableDiffusion3', 'Lumina', 'AuraFlow', 'Sana', 'CogVi
flow_models += ['Hunyuan', 'LTX', 'Mochi']
def find_sampler(name:str):
if name is None or name == 'None':
return all_samplers_map.get("UniPC", None)
for sampler in all_samplers:
if sampler.name.lower() == name.lower() or name in sampler.aliases:
debug(f'Find sampler: name="{name}" found={sampler.name}')
return sampler
debug(f'Find sampler: name="{name}" found=None')
return None
def list_samplers():
global all_samplers # pylint: disable=global-statement
global all_samplers_map # pylint: disable=global-statement
+22 -21
View File
@@ -54,7 +54,7 @@ def infotext_to_html(text):
return code
def delete_files(js_data, files, _html_info, index):
def delete_files(js_data, files, all_files, index):
try:
data = json.loads(js_data)
except Exception:
@@ -63,25 +63,26 @@ def delete_files(js_data, files, _html_info, index):
if index > -1 and shared.opts.save_selected_only and (index >= data['index_of_first_image']):
files = [files[index]]
start_index = index
filenames = []
filenames = []
fullfns = []
deleted = []
all_files = [f.split('/file=')[1] if 'file=' in f else f for f in all_files] if isinstance(all_files, list) else []
for _image_index, filedata in enumerate(files, start_index):
if 'name' in filedata and os.path.isfile(filedata['name']):
fullfn = filedata['name']
filenames.append(os.path.basename(fullfn))
try:
os.remove(fullfn)
base, _ext = os.path.splitext(fullfn)
desc = f'{base}.txt'
if os.path.exists(desc):
os.remove(desc)
fullfns.append(fullfn)
shared.log.info(f"Deleting image: {fullfn}")
except Exception as e:
shared.log.error(f'Error deleting file: {fullfn} {e}')
files = [image for image in files if image['name'] not in fullfns]
return files, plaintext_to_html(f"Deleted: {filenames[0] if len(filenames) > 0 else 'none'}")
try:
fn = filedata['name']
if os.path.isfile(fn):
deleted.append(fn)
os.remove(fn)
if fn in all_files:
all_files.remove(fn)
shared.log.info(f'Delete: image="{fn}"')
base, _ext = os.path.splitext(fn)
desc = f'{base}.txt'
if os.path.exists(desc):
os.remove(desc)
shared.log.info(f'Delete: text="{fn}"')
except Exception as e:
shared.log.error(f'Delete: image="{fn}" {e}')
deleted = ', '.join(deleted) if len(deleted) > 0 else 'none'
return all_files, plaintext_to_html(f"Deleted: {deleted}")
def save_files(js_data, files, html_info, index):
@@ -296,8 +297,8 @@ def create_output_panel(tabname, preview=True, prompt=None, height=None, transfe
inputs=[generation_info, result_gallery, html_info, html_info],
outputs=[download_files, html_log],
)
delete.click(fn=call_queue.wrap_gradio_call(delete_files),show_progress=False,
_js="(x, y, z, i) => [x, y, z, selected_gallery_index()]",
delete.click(fn=call_queue.wrap_gradio_call(delete_files), show_progress=False,
_js="(x, y, i, j) => [x, y, ...selected_gallery_files()]",
inputs=[generation_info, result_gallery, html_info, html_info],
outputs=[result_gallery, html_log],
)