Skip to content

Commit 2758127

Browse files
authored
Merge pull request #24 from ChocoScaff/remove_change_view
remove change view and fix reload bug
2 parents 3ce81fa + 41c7936 commit 2758127

File tree

1 file changed

+49
-57
lines changed

1 file changed

+49
-57
lines changed

file.py

+49-57
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,45 @@ class File:
1414
"""
1515

1616
root: tk.Tk
17-
enableTree : bool
1817

19-
def __init__(self, sourceSDK, enableTree=True) -> None:
18+
def __init__(self, sourceSDK) -> None:
2019
"""
2120
Initialize the File class with a given sourceSDK instance.
2221
"""
2322
self.sdk = sourceSDK
2423
self.tree = None
2524
self.thumbnails = {}
2625
self.init_grid = False
27-
self.enableTree = enableTree
2826
self.files = []
2927

28+
29+
def __del__(self):
30+
"""
31+
"""
32+
if self.canvas:
33+
self.canvas.destroy()
34+
35+
# Destroy the scrollbar if it exists
36+
if self.scroll_y:
37+
self.scroll_y.destroy()
38+
39+
if self.up_button:
40+
self.up_button.destroy()
41+
42+
if self.open_dir_button:
43+
self.open_dir_button.destroy()
44+
45+
self.scroll_frame.destroy()
46+
47+
self.main_root.destroy()
48+
49+
self.tree = None
50+
self.thumbnails = {}
51+
self.init_grid = False
52+
self.files = []
53+
self.root.destroy()
54+
55+
3056
def list_files(self):
3157
"""
3258
List all files in the selected folder and game paths with specified extensions.
@@ -66,6 +92,8 @@ def display_files_tree(self):
6692
self.main_root.title("File Explorer")
6793
self.main_root.geometry("1400x600")
6894

95+
self.main_root.protocol("WM_DELETE_WINDOW", self.__del__)
96+
6997
self.root = tk.Frame(self.main_root, width=200, height=600)
7098
self.root.grid(row=0, column=0, padx=0, pady=0, sticky="nsew")
7199

@@ -95,21 +123,20 @@ def display_files_tree(self):
95123
# Insert folders and files into the Treeview
96124
for folder, file_list in files.items():
97125
parent = ""
98-
if self.enableTree == True:
99-
for subfolder in folder.split(os.sep):
100-
101-
if not parent:
102-
nodes = self.tree.get_children("")
103-
if subfolder in [self.tree.item(node, "text") for node in nodes]:
104-
parent = [node for node in nodes if self.tree.item(node, "text") == subfolder][0]
105-
else:
106-
parent = self.tree.insert("", "end", text=subfolder, open=False)
126+
for subfolder in folder.split(os.sep):
127+
128+
if not parent:
129+
nodes = self.tree.get_children("")
130+
if subfolder in [self.tree.item(node, "text") for node in nodes]:
131+
parent = [node for node in nodes if self.tree.item(node, "text") == subfolder][0]
132+
else:
133+
parent = self.tree.insert("", "end", text=subfolder, open=False)
134+
else:
135+
nodes = self.tree.get_children(parent)
136+
if subfolder in [self.tree.item(node, "text") for node in nodes]:
137+
parent = [node for node in nodes if self.tree.item(node, "text") == subfolder][0]
107138
else:
108-
nodes = self.tree.get_children(parent)
109-
if subfolder in [self.tree.item(node, "text") for node in nodes]:
110-
parent = [node for node in nodes if self.tree.item(node, "text") == subfolder][0]
111-
else:
112-
parent = self.tree.insert(parent, "end", text=subfolder, open=False)
139+
parent = self.tree.insert(parent, "end", text=subfolder, open=False)
113140

114141
for file_name in file_list:
115142
parent_folder_path = os.path.join(self.sdk.parent_folder, folder) # Define parentFolder
@@ -317,18 +344,9 @@ def load_files_grid_tree(self, folder):
317344
for widget in self.scroll_frame.winfo_children():
318345
widget.destroy()
319346

320-
if self.enableTree == True:
321-
self.current_folder = folder
322-
self.files = [f for f in os.listdir(self.current_folder) if os.path.isdir(os.path.join(self.current_folder, f)) or f.endswith(
323-
(".vmf", ".txt", ".cfg", ".vtf", ".vmt", ".qc", ".mdl", ".vcd", ".res", ".bsp", "dir.vpk", ".tga", ".wav", ".mp3", ".sln", ".bik", ".bat"))]
324-
else:
325-
extensions = (".vmf", ".txt", ".cfg", ".vtf", ".vmt", ".qc", ".mdl", ".vcd", ".res", ".bsp", "dir.vpk", ".tga", ".wav", ".mp3", ".sln", ".bik", ".bat")
326-
for game in self.sdk.game_path:
327-
for root, dirs, filenames in os.walk(self.sdk.parent_folder + "/" + game):
328-
for filename in filenames:
329-
if filename.endswith(extensions):
330-
self.files.append(os.path.join(root, filename))
331-
347+
self.current_folder = folder
348+
self.files = [f for f in os.listdir(self.current_folder) if os.path.isdir(os.path.join(self.current_folder, f)) or f.endswith(
349+
(".vmf", ".txt", ".cfg", ".vtf", ".vmt", ".qc", ".mdl", ".vcd", ".res", ".bsp", "dir.vpk", ".tga", ".wav", ".mp3", ".sln", ".bik", ".bat"))]
332350

333351
columns = max(1, int(self.root.winfo_width() / 150))
334352
row = col = 0
@@ -345,11 +363,7 @@ def load_files_grid_tree(self, folder):
345363
frame.grid_propagate(False)
346364
frame.grid(row=row, column=col, padx=5, pady=5)
347365

348-
if self.enableTree == True:
349-
label = ttk.Label(frame, text=file, wraplength=130, anchor="center")
350-
else:
351-
label_text = os.path.basename(file_path)
352-
label = ttk.Label(frame, text=label_text, wraplength=130, anchor="center")
366+
label = ttk.Label(frame, text=file, wraplength=130, anchor="center")
353367
label.place(relx=0.5, rely=0.1, anchor='center')
354368

355369
thumbnail = self.load_thumbnail(file_path)
@@ -397,9 +411,6 @@ def create_widgets(self):
397411
self.open_dir_button = ttk.Button(self.root, text="Open Directory", command=self.open_directory)
398412
self.open_dir_button.pack(side="top", pady=5)
399413

400-
self.open_dir_button = ttk.Button(self.root, text="Change View", command=self.change_view)
401-
self.open_dir_button.pack(side="top", pady=5)
402-
403414
self.canvas = tk.Canvas(self.root, bg='white')
404415
self.scroll_y = ttk.Scrollbar(self.root, orient="vertical", command=self.canvas.yview)
405416
self.canvas.configure(yscrollcommand=self.scroll_y.set)
@@ -462,23 +473,4 @@ def open_directory(self):
462473
"""
463474
open_instance = Open(self.sdk)
464475
open_instance.open_directory(self.current_folder)
465-
466-
def change_view(self):
467-
"""
468-
"""
469-
470-
self.enableTree = not self.enableTree
471-
472-
self.clean()
473-
474-
self.display_files_tree()
475-
476-
def clean(self):
477-
"""
478-
"""
479-
self.tree = None
480-
self.thumbnails = {}
481-
self.init_grid = False
482-
self.files = []
483-
self.root.destroy()
484-
self.main_root.destroy()
476+

0 commit comments

Comments
 (0)