368d6fafea
Code backup
88 lines
3.3 KiB
Python
88 lines
3.3 KiB
Python
import os
|
|
import tkinter as tk
|
|
from tkinter import filedialog
|
|
from tkinter import scrolledtext
|
|
from tkinter import ttk # ttk for modern themed widgets
|
|
from converter import convert_heic_to_jpeg, convert_heic_file
|
|
from ctypes import windll
|
|
|
|
windll.shcore.SetProcessDpiAwareness(1)
|
|
|
|
class HEICConverterGUI:
|
|
def __init__(self, master):
|
|
self.master = master
|
|
master.title("HEIC to JPEG Converter")
|
|
master.geometry("600x500") # Set a default size for the window
|
|
|
|
# Style configuration
|
|
style = ttk.Style()
|
|
style.configure("TButton", font=("Helvetica", 12), padding=10)
|
|
style.configure("TLabel", font=("Helvetica", 12), padding=5)
|
|
style.configure("TCheckbutton", font=("Helvetica", 12), padding=5)
|
|
style.configure("TEntry", font=("Helvetica", 12), padding=5)
|
|
|
|
self.path_label = ttk.Label(master, text="File or Directory Path:")
|
|
self.path_label.pack(anchor='w', padx=10, pady=5)
|
|
|
|
self.path_entry = ttk.Entry(master, width=50)
|
|
self.path_entry.pack(anchor='w', padx=10, pady=5)
|
|
|
|
self.browse_button = ttk.Button(master, text="Browse", command=self.browse)
|
|
self.browse_button.pack(anchor='w', padx=10, pady=5)
|
|
|
|
self.remove_var = tk.BooleanVar()
|
|
self.remove_check = ttk.Checkbutton(master, text="Remove converted HEIC Files", variable=self.remove_var)
|
|
self.remove_check.pack(anchor='w', padx=10, pady=5)
|
|
|
|
self.overwrite_var = tk.BooleanVar()
|
|
self.overwrite_check = ttk.Checkbutton(master, text="Overwrite existing JPEG files", variable=self.overwrite_var)
|
|
self.overwrite_check.pack(anchor='w', padx=10, pady=5)
|
|
|
|
self.recursive_var = tk.BooleanVar(value=True)
|
|
self.recursive_check = ttk.Checkbutton(master, text="Search subdirectories", variable=self.recursive_var)
|
|
self.recursive_check.pack(anchor='w', padx=10, pady=5)
|
|
|
|
self.convert_button = ttk.Button(master, text="Convert", command=self.convert)
|
|
self.convert_button.pack(anchor='w', padx=10, pady=5)
|
|
|
|
# Console Output
|
|
self.console_output = scrolledtext.ScrolledText(master, width=80, height=20, wrap=tk.WORD)
|
|
self.console_output.pack(anchor='w', padx=10, pady=10)
|
|
|
|
def browse(self):
|
|
file_path = filedialog.askdirectory()
|
|
self.path_entry.delete(0, tk.END)
|
|
self.path_entry.insert(0, file_path)
|
|
|
|
def convert(self):
|
|
path = self.path_entry.get()
|
|
remove = self.remove_var.get()
|
|
overwrite = self.overwrite_var.get()
|
|
recursive = self.recursive_var.get()
|
|
|
|
output_text = ""
|
|
|
|
if os.path.isdir(path):
|
|
output_text += f'Converting HEIC files in directory {path}\n'
|
|
converted = convert_heic_to_jpeg(path, recursive, overwrite, remove)
|
|
output_text += f'Successfully converted {len(converted)} files\n'
|
|
|
|
elif os.path.isfile(path):
|
|
output_text += f'Converting HEIC file {path}\n'
|
|
convert_heic_file(path, os.path.splitext(path)[0] + ".jpg", overwrite, remove)
|
|
output_text += 'Successfully converted file\n'
|
|
|
|
else:
|
|
output_text += f'Don\'t know what to do with {path}\n'
|
|
|
|
self.console_output.insert(tk.END, output_text)
|
|
self.console_output.see(tk.END)
|
|
|
|
def main():
|
|
root = tk.Tk()
|
|
gui = HEICConverterGUI(root)
|
|
root.mainloop()
|
|
|
|
if __name__ == '__main__':
|
|
main()
|