2222
2323
2424import psutil
25- from os import walk , mkdir , stat
25+ from os import walk , mkdir , stat , access , W_OK
2626from os .path import exists , join , getmtime , realpath , split , expanduser , \
2727 abspath , isabs , splitext , dirname , getsize , isdir , isfile , islink
2828try :
@@ -909,7 +909,9 @@ def _display_folder_walk(self, folder, reset=True, update_bar=True):
909909 * reset (boolean): forget all the part of the history right of self._hist_index
910910 * update_bar (boolean): update the buttons in path bar
911911 """
912- folder = abspath (folder ) # remove trailing / if any
912+ # remove trailing / if any
913+ folder = abspath (folder )
914+ # reorganize display if previous was 'recent'
913915 if not self .path_bar .winfo_ismapped ():
914916 self .path_bar .grid ()
915917 self .right_tree .configure (displaycolumns = ("size" , "date" ))
@@ -921,14 +923,22 @@ def _display_folder_walk(self, folder, reset=True, update_bar=True):
921923 self .right_tree .column ("date" , width = 120 )
922924 if self .foldercreation :
923925 self .b_new_folder .grid ()
924- if reset : # reset history
926+ # reset history
927+ if reset :
925928 if not self ._hist_index == - 1 :
926929 self .history = self .history [:self ._hist_index + 1 ]
927930 self ._hist_index = - 1
928931 self .history .append (folder )
929- if update_bar : # update path bar
932+ # update path bar
933+ if update_bar :
930934 self ._update_path_bar (folder )
931935 self .path_var .set (folder )
936+ # disable new folder creation if no write access
937+ if self .foldercreation :
938+ if access (folder , W_OK ):
939+ self .b_new_folder .state (('!disabled' ,))
940+ else :
941+ self .b_new_folder .state (('disabled' ,))
932942 # clear self.right_tree
933943 self .right_tree .delete (* self .right_tree .get_children ("" ))
934944 self .right_tree .delete (* self .hidden )
@@ -1033,7 +1043,9 @@ def _display_folder_scandir(self, folder, reset=True, update_bar=True):
10331043 * reset (boolean): forget all the part of the history right of self._hist_index
10341044 * update_bar (boolean): update the buttons in path bar
10351045 """
1036- folder = abspath (folder ) # remove trailing / if any
1046+ # remove trailing / if any
1047+ folder = abspath (folder )
1048+ # reorganize display if previous was 'recent'
10371049 if not self .path_bar .winfo_ismapped ():
10381050 self .path_bar .grid ()
10391051 self .right_tree .configure (displaycolumns = ("size" , "date" ))
@@ -1045,14 +1057,22 @@ def _display_folder_scandir(self, folder, reset=True, update_bar=True):
10451057 self .right_tree .column ("date" , width = 120 )
10461058 if self .foldercreation :
10471059 self .b_new_folder .grid ()
1048- if reset : # reset history
1060+ # reset history
1061+ if reset :
10491062 if not self ._hist_index == - 1 :
10501063 self .history = self .history [:self ._hist_index + 1 ]
10511064 self ._hist_index = - 1
10521065 self .history .append (folder )
1053- if update_bar : # update path bar
1066+ # update path bar
1067+ if update_bar :
10541068 self ._update_path_bar (folder )
10551069 self .path_var .set (folder )
1070+ # disable new folder creation if no write access
1071+ if self .foldercreation :
1072+ if access (folder , W_OK ):
1073+ self .b_new_folder .state (('!disabled' ,))
1074+ else :
1075+ self .b_new_folder .state (('disabled' ,))
10561076 # clear self.right_tree
10571077 self .right_tree .delete (* self .right_tree .get_children ("" ))
10581078 self .right_tree .delete (* self .hidden )
@@ -1101,7 +1121,6 @@ def ok(event):
11011121 name = e .get ()
11021122 e .destroy ()
11031123 if name :
1104- path = self .history [self ._hist_index ]
11051124 folder = join (path , name )
11061125 try :
11071126 mkdir (folder )
@@ -1114,7 +1133,9 @@ def cancel(event):
11141133 e .destroy ()
11151134 self .right_tree .delete ("tmp" )
11161135
1117- if self .path_bar .winfo_ismapped ():
1136+ path = self .path_var .get ()
1137+
1138+ if self .path_bar .winfo_ismapped () and access (path , W_OK ):
11181139 self .right_tree .insert ("" , 0 , "tmp" , tags = ("folder" , "1" ))
11191140 self .right_tree .see ("tmp" )
11201141 e = ttk .Entry (self )
0 commit comments