Merge pull request #15442 from AUTOMATIC1111/open_folder-as-util

open_folder as util
This commit is contained in:
AUTOMATIC1111 2024-04-06 08:54:20 +03:00 committed by GitHub
commit 447198f21b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 37 additions and 29 deletions

View File

@ -3,13 +3,10 @@ import dataclasses
import json import json
import html import html
import os import os
import platform
import sys
import gradio as gr import gradio as gr
import subprocess as sp
from modules import call_queue, shared, ui_tempdir from modules import call_queue, shared, ui_tempdir, util
from modules.infotext_utils import image_from_url_text from modules.infotext_utils import image_from_url_text
import modules.images import modules.images
from modules.ui_components import ToolButton from modules.ui_components import ToolButton
@ -176,31 +173,7 @@ def create_output_panel(tabname, outdir, toprow=None):
except Exception: except Exception:
pass pass
if not os.path.exists(f): util.open_folder(f)
msg = f'Folder "{f}" does not exist. After you create an image, the folder will be created.'
print(msg)
gr.Info(msg)
return
elif not os.path.isdir(f):
msg = f"""
WARNING
An open_folder request was made with an argument that is not a folder.
This could be an error or a malicious attempt to run code on your computer.
Requested path was: {f}
"""
print(msg, file=sys.stderr)
gr.Warning(msg)
return
path = os.path.normpath(f)
if platform.system() == "Windows":
os.startfile(path)
elif platform.system() == "Darwin":
sp.Popen(["open", path])
elif "microsoft-standard-WSL2" in platform.uname().release:
sp.Popen(["wsl-open", path])
else:
sp.Popen(["xdg-open", path])
with gr.Column(elem_id=f"{tabname}_results"): with gr.Column(elem_id=f"{tabname}_results"):
if toprow: if toprow:

View File

@ -171,3 +171,38 @@ def topological_sort(dependencies):
inner(depname) inner(depname)
return result return result
def open_folder(path):
"""Open a folder in the file manager of the respect OS."""
# import at function level to avoid potential issues
import gradio as gr
import platform
import sys
import subprocess
if not os.path.exists(path):
msg = f'Folder "{path}" does not exist. after you save an image, the folder will be created.'
print(msg)
gr.Info(msg)
return
elif not os.path.isdir(path):
msg = f"""
WARNING
An open_folder request was made with an path that is not a folder.
This could be an error or a malicious attempt to run code on your computer.
Requested path was: {path}
"""
print(msg, file=sys.stderr)
gr.Warning(msg)
return
path = os.path.normpath(path)
if platform.system() == "Windows":
os.startfile(path)
elif platform.system() == "Darwin":
subprocess.Popen(["open", path])
elif "microsoft-standard-WSL2" in platform.uname().release:
subprocess.Popen(["wsl-open", path])
else:
subprocess.Popen(["xdg-open", path])