From bbda51ed790bad96c184b03ad47da56f1db241db Mon Sep 17 00:00:00 2001 From: Wild Yaboku <499470+wildyaboku@users.noreply.github.com> Date: Wed, 13 Sep 2023 08:21:24 -0700 Subject: [PATCH 1/3] Add drag and drop support --- QualityScaler.py | 28 ++++++++++++++++++++++++---- requirements.txt | 1 + 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/QualityScaler.py b/QualityScaler.py index 036e2cff..17306765 100644 --- a/QualityScaler.py +++ b/QualityScaler.py @@ -7,6 +7,7 @@ import tkinter as tk import webbrowser from timeit import default_timer as timer +from tkinterdnd2 import TkinterDnD, DND_ALL import cv2 import numpy as np @@ -1349,13 +1350,19 @@ def check_supported_selected_files(uploaded_file_list): return supported_files_list +def drop_files_action(event): + paths = window.tk.splitlist(event.data) + push_files(paths) + def open_files_action(): info_message.set("Selecting files...") + push_files(list(filedialog.askopenfilenames())) - uploaded_files_list = list(filedialog.askopenfilenames()) - uploaded_files_counter = len(uploaded_files_list) +def push_files(files): + info_message.set("Checking files...") + uploaded_files_counter = len(files) - supported_files_list = check_supported_selected_files(uploaded_files_list) + supported_files_list = check_supported_selected_files(files) supported_files_counter = len(supported_files_list) print("> Uploaded files: " + str(uploaded_files_counter) + " => Supported files: " + str(supported_files_counter)) @@ -1551,6 +1558,9 @@ def place_up_background(): relwidth = 1.0, relheight = 1.0, anchor = tk.CENTER) + + up_background.drop_target_register(DND_ALL) + up_background.dnd_bind("<>", drop_files_action) def place_github_button(): git_button = CTkButton(master = window, @@ -1614,6 +1624,12 @@ def place_loadFile_section(): input_file_text.place(relx = 0.5, rely = 0.22, anchor = tk.CENTER) input_file_button.place(relx = 0.5, rely = 0.385, anchor = tk.CENTER) + input_file_text.drop_target_register(DND_ALL) + input_file_text.dnd_bind("<>", drop_files_action) + + input_file_button.drop_target_register(DND_ALL) + input_file_button.dnd_bind("<>", drop_files_action) + def place_app_name(): app_name_label = CTkLabel(master = window, text = app_name + " " + version, @@ -1873,6 +1889,10 @@ def place_upscale_button(): upscale_button.place(relx = 0.79, rely = row3_y, anchor = tk.CENTER) +class Tk(CTk, TkinterDnD.DnDWrapper): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.TkdndVersion = TkinterDnD._require(self) class App(): def __init__(self, window): @@ -1911,7 +1931,7 @@ def __init__(self, window): set_appearance_mode("Dark") set_default_color_theme("dark-blue") - window = CTk() + window = Tk() global selected_file_list global selected_AI_model diff --git a/requirements.txt b/requirements.txt index 29372530..757a4a83 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,7 @@ torch-directml==0.1.13.1.dev230301 #GUI customtkinter +tkinterdnd2 win32mica #UTILS From 340d44d5980c351589ccd49170b9e0d5881d71f7 Mon Sep 17 00:00:00 2001 From: Wild Yaboku <499470+wildyaboku@users.noreply.github.com> Date: Wed, 13 Sep 2023 08:25:29 -0700 Subject: [PATCH 2/3] Add a shortcut function for enabling drag and drop --- QualityScaler.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/QualityScaler.py b/QualityScaler.py index 17306765..f09f1520 100644 --- a/QualityScaler.py +++ b/QualityScaler.py @@ -7,7 +7,7 @@ import tkinter as tk import webbrowser from timeit import default_timer as timer -from tkinterdnd2 import TkinterDnD, DND_ALL +from tkinterdnd2 import TkinterDnD, DND_FILES import cv2 import numpy as np @@ -1543,6 +1543,11 @@ def open_info_interpolation(): tk.messagebox.showinfo(title = 'Video output', message = info) +# GUI drag and drop registration function ------- + +def register_drag_drop(element): + element.drop_target_register(DND_FILES) + element.dnd_bind("<>", drop_files_action) # GUI place functions --------------------------- @@ -1559,8 +1564,7 @@ def place_up_background(): relheight = 1.0, anchor = tk.CENTER) - up_background.drop_target_register(DND_ALL) - up_background.dnd_bind("<>", drop_files_action) + register_drag_drop(up_background) def place_github_button(): git_button = CTkButton(master = window, @@ -1624,11 +1628,8 @@ def place_loadFile_section(): input_file_text.place(relx = 0.5, rely = 0.22, anchor = tk.CENTER) input_file_button.place(relx = 0.5, rely = 0.385, anchor = tk.CENTER) - input_file_text.drop_target_register(DND_ALL) - input_file_text.dnd_bind("<>", drop_files_action) - - input_file_button.drop_target_register(DND_ALL) - input_file_button.dnd_bind("<>", drop_files_action) + register_drag_drop(input_file_text) + register_drag_drop(input_file_button) def place_app_name(): app_name_label = CTkLabel(master = window, From bfb86e7e69fd9549f4f49283712da36afef95baf Mon Sep 17 00:00:00 2001 From: Wild Yaboku <499470+wildyaboku@users.noreply.github.com> Date: Wed, 13 Sep 2023 08:38:44 -0700 Subject: [PATCH 3/3] Enable drag and drop on the entire window --- QualityScaler.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/QualityScaler.py b/QualityScaler.py index f09f1520..a8ba3bbe 100644 --- a/QualityScaler.py +++ b/QualityScaler.py @@ -1563,8 +1563,6 @@ def place_up_background(): relwidth = 1.0, relheight = 1.0, anchor = tk.CENTER) - - register_drag_drop(up_background) def place_github_button(): git_button = CTkButton(master = window, @@ -1628,9 +1626,6 @@ def place_loadFile_section(): input_file_text.place(relx = 0.5, rely = 0.22, anchor = tk.CENTER) input_file_button.place(relx = 0.5, rely = 0.385, anchor = tk.CENTER) - register_drag_drop(input_file_text) - register_drag_drop(input_file_button) - def place_app_name(): app_name_label = CTkLabel(master = window, text = app_name + " " + version, @@ -1894,6 +1889,7 @@ class Tk(CTk, TkinterDnD.DnDWrapper): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.TkdndVersion = TkinterDnD._require(self) + register_drag_drop(self) class App(): def __init__(self, window):