Changes from #84 split into src.qt.helpers.open_file from ts_qt.py

This commit is contained in:
Andrew Arneson
2024-04-28 13:37:28 -06:00
parent 89b159cfa1
commit eb2a175b75

View File

@@ -11,21 +11,39 @@ import shutil
import subprocess
def open_file(path: str):
def open_file(path: str, file_manager: bool = False):
try:
if sys.platform == "win32":
# Windows needs special attention to handle spaces in the file
# first parameter is for title, NOT filepath
subprocess.Popen(["start", "", os.path.normpath(path)], shell=True, close_fds=True, creationflags=subprocess.DETACHED_PROCESS)
normpath = os.path.normpath(path)
if file_manager:
command_name = "explorer"
command_args = [f"/select,{normpath}"]
else:
command_name = "start"
# first parameter is for title, NOT filepath
command_args = ["", normpath]
subprocess.Popen([command_name] + command_args, shell=True, close_fds=True, creationflags=subprocess.CREATE_NEW_PROCESS_GROUP | subprocess.CREATE_BREAKAWAY_FROM_JOB)
else:
if sys.platform == "darwin":
command_name = "open"
command_args = [path]
if file_manager:
# will reveal in Finder
command_args.append("-R")
else:
command_name = "xdg-open"
if file_manager:
command_name = "dbus-send"
# might not be guaranteed to launch default?
command_args = ["--session", "--dest=org.freedesktop.FileManager1", "--type=method_call",
"/org/freedesktop/FileManager1", "org.freedesktop.FileManager1.ShowItems",
f"array:string:file://{path}", "string:"]
else:
command_name = "xdg-open"
command_args = [path]
command = shutil.which(command_name)
if command is not None:
subprocess.Popen([command, path], close_fds=True)
subprocess.Popen([command] + command_args, close_fds=True)
else:
logging.info(f"Could not find {command_name} on system PATH")
except:
traceback.print_exc()
traceback.print_exc()