@@ -14,19 +14,45 @@ class File:
14
14
"""
15
15
16
16
root : tk .Tk
17
- enableTree : bool
18
17
19
- def __init__ (self , sourceSDK , enableTree = True ) -> None :
18
+ def __init__ (self , sourceSDK ) -> None :
20
19
"""
21
20
Initialize the File class with a given sourceSDK instance.
22
21
"""
23
22
self .sdk = sourceSDK
24
23
self .tree = None
25
24
self .thumbnails = {}
26
25
self .init_grid = False
27
- self .enableTree = enableTree
28
26
self .files = []
29
27
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
+
30
56
def list_files (self ):
31
57
"""
32
58
List all files in the selected folder and game paths with specified extensions.
@@ -66,6 +92,8 @@ def display_files_tree(self):
66
92
self .main_root .title ("File Explorer" )
67
93
self .main_root .geometry ("1400x600" )
68
94
95
+ self .main_root .protocol ("WM_DELETE_WINDOW" , self .__del__ )
96
+
69
97
self .root = tk .Frame (self .main_root , width = 200 , height = 600 )
70
98
self .root .grid (row = 0 , column = 0 , padx = 0 , pady = 0 , sticky = "nsew" )
71
99
@@ -95,21 +123,20 @@ def display_files_tree(self):
95
123
# Insert folders and files into the Treeview
96
124
for folder , file_list in files .items ():
97
125
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 ]
107
138
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 )
113
140
114
141
for file_name in file_list :
115
142
parent_folder_path = os .path .join (self .sdk .parent_folder , folder ) # Define parentFolder
@@ -317,18 +344,9 @@ def load_files_grid_tree(self, folder):
317
344
for widget in self .scroll_frame .winfo_children ():
318
345
widget .destroy ()
319
346
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" ))]
332
350
333
351
columns = max (1 , int (self .root .winfo_width () / 150 ))
334
352
row = col = 0
@@ -345,11 +363,7 @@ def load_files_grid_tree(self, folder):
345
363
frame .grid_propagate (False )
346
364
frame .grid (row = row , column = col , padx = 5 , pady = 5 )
347
365
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" )
353
367
label .place (relx = 0.5 , rely = 0.1 , anchor = 'center' )
354
368
355
369
thumbnail = self .load_thumbnail (file_path )
@@ -397,9 +411,6 @@ def create_widgets(self):
397
411
self .open_dir_button = ttk .Button (self .root , text = "Open Directory" , command = self .open_directory )
398
412
self .open_dir_button .pack (side = "top" , pady = 5 )
399
413
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
-
403
414
self .canvas = tk .Canvas (self .root , bg = 'white' )
404
415
self .scroll_y = ttk .Scrollbar (self .root , orient = "vertical" , command = self .canvas .yview )
405
416
self .canvas .configure (yscrollcommand = self .scroll_y .set )
@@ -462,23 +473,4 @@ def open_directory(self):
462
473
"""
463
474
open_instance = Open (self .sdk )
464
475
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