57 lines
1.2 KiB
Python
57 lines
1.2 KiB
Python
import os
|
|
from mikazuki.log import log
|
|
try:
|
|
import tkinter
|
|
from tkinter.filedialog import askdirectory, askopenfilename
|
|
except ImportError:
|
|
tkinter = None
|
|
askdirectory = None
|
|
askopenfilename = None
|
|
log.warning("tkinter not found, file selector will not work.")
|
|
|
|
last_dir = ""
|
|
|
|
|
|
def tk_window():
|
|
window = tkinter.Tk()
|
|
window.wm_attributes('-topmost', 1)
|
|
window.withdraw()
|
|
|
|
|
|
def open_file_selector(
|
|
initialdir="",
|
|
title="Select a file",
|
|
filetypes="*") -> str:
|
|
global last_dir
|
|
if last_dir != "":
|
|
initialdir = last_dir
|
|
elif initialdir == "":
|
|
initialdir = os.getcwd()
|
|
try:
|
|
tk_window()
|
|
filename = askopenfilename(
|
|
initialdir=initialdir, title=title,
|
|
filetypes=filetypes
|
|
)
|
|
last_dir = os.path.dirname(filename)
|
|
return filename
|
|
except:
|
|
return ""
|
|
|
|
|
|
def open_directory_selector(initialdir) -> str:
|
|
global last_dir
|
|
if last_dir != "":
|
|
initialdir = last_dir
|
|
elif initialdir == "":
|
|
initialdir = os.getcwd()
|
|
try:
|
|
tk_window()
|
|
directory = askdirectory(
|
|
initialdir=initialdir
|
|
)
|
|
last_dir = directory
|
|
return directory
|
|
except:
|
|
return ""
|