86
86
###########################################################################################################################################
87
87
88
88
CFG_THEME = 'theme'
89
+ CFG_KEY_include_hidden = 'include_hidden'
89
90
CFG_KEY_FULL_CRC = 'show_full_crc'
90
91
CFG_KEY_SHOW_TOOLTIPS_INFO = 'show_tooltips_info'
91
92
CFG_KEY_SHOW_TOOLTIPS_HELP = 'show_tooltips_help'
132
133
133
134
cfg_defaults = {
134
135
CFG_THEME :'Vista' if windows else 'Clam' ,
136
+ CFG_KEY_include_hidden :False ,
135
137
CFG_KEY_FULL_CRC :False ,
136
138
CFG_KEY_SHOW_TOOLTIPS_INFO :True ,
137
139
CFG_KEY_SHOW_TOOLTIPS_HELP :True ,
@@ -1805,6 +1807,7 @@ def get_settings_dialog(self):
1805
1807
self .settings_dialog = GenericDialog (self .main ,self .main_icon_tuple ,self .bg_color ,STR ('Settings' ),pre_show = self .pre_show_settings ,post_close = self .post_close )
1806
1808
1807
1809
self .theme = StringVar ()
1810
+ self .scan_hidden_var = BooleanVar ()
1808
1811
self .show_full_crc = BooleanVar ()
1809
1812
self .show_tooltips_info = BooleanVar ()
1810
1813
self .show_tooltips_help = BooleanVar ()
@@ -1830,6 +1833,7 @@ def get_settings_dialog(self):
1830
1833
self .folders_open_wrapper_params = StringVar ()
1831
1834
1832
1835
self .settings = [
1836
+ (self .scan_hidden_var ,CFG_KEY_include_hidden ),
1833
1837
(self .show_full_crc ,CFG_KEY_FULL_CRC ),
1834
1838
(self .show_tooltips_info ,CFG_KEY_SHOW_TOOLTIPS_INFO ),
1835
1839
(self .show_tooltips_help ,CFG_KEY_SHOW_TOOLTIPS_HELP ),
@@ -1886,6 +1890,11 @@ def get_settings_dialog(self):
1886
1890
1887
1891
label_frame .grid_columnconfigure ((0 ,1 ,2 ), weight = 1 )
1888
1892
1893
+ label_frame = LabelFrame (self .settings_dialog .area_main , text = STR ("Scan options" ),borderwidth = 2 ,bg = self .bg_color )
1894
+ label_frame .grid (row = row ,column = 0 ,sticky = 'wens' ,padx = 3 ,pady = 3 ) ; row += 1
1895
+
1896
+ (cb_1 := Checkbutton (label_frame , text = ' ' + STR ('Include hidden files / folders in scan' ), variable = self .scan_hidden_var )).grid (row = 0 ,column = 0 ,sticky = 'wens' ,padx = 3 ,pady = 2 )
1897
+
1889
1898
label_frame = LabelFrame (self .settings_dialog .area_main , text = STR ("Main panels and dialogs" ),borderwidth = 2 ,bg = self .bg_color )
1890
1899
label_frame .grid (row = row ,column = 0 ,sticky = 'wens' ,padx = 3 ,pady = 3 ) ; row += 1
1891
1900
@@ -2664,8 +2673,9 @@ def find_prev_from_dialog(self,expression,use_reg_expr):
2664
2673
self .select_find_result (- 1 )
2665
2674
2666
2675
def find_prev (self ):
2667
- if not self .find_result or self .find_tree != self .sel_tree :
2676
+ if not self .find_result or self .find_tree != self .sel_tree or self . find_params_changed :
2668
2677
self .find_params_changed = True
2678
+ self .find_result_index = 0
2669
2679
self .finder_wrapper_show ()
2670
2680
else :
2671
2681
self .select_find_result (- 1 )
@@ -2675,8 +2685,9 @@ def find_next_from_dialog(self,expression,use_reg_expr):
2675
2685
self .select_find_result (1 )
2676
2686
2677
2687
def find_next (self ):
2678
- if not self .find_result or self .find_tree != self .sel_tree :
2688
+ if not self .find_result or self .find_tree != self .sel_tree or self . find_params_changed :
2679
2689
self .find_params_changed = True
2690
+ self .find_result_index = 0
2680
2691
self .finder_wrapper_show ()
2681
2692
else :
2682
2693
self .select_find_result (1 )
@@ -2698,7 +2709,13 @@ def find_mod(self,expression,use_reg_expr):
2698
2709
def find_items (self ,expression ,use_reg_expr ):
2699
2710
self .status (STR ('finding ...' ))
2700
2711
2712
+ self_files_of_groups_filtered_by_mode = self .files_of_groups_filtered_by_mode
2713
+
2714
+ crc_shown = list (self_files_of_groups_filtered_by_mode .keys ())
2715
+
2701
2716
if self .find_params_changed or self .find_tree != self .sel_tree :
2717
+ self .find_result = ()
2718
+
2702
2719
self .find_tree = self .sel_tree
2703
2720
2704
2721
items = []
@@ -2712,10 +2729,15 @@ def find_items(self,expression,use_reg_expr):
2712
2729
2713
2730
try :
2714
2731
for crc_item in crc_range :
2715
- for item in self .tree_children_sub [crc_item ]:
2716
- fullpath = self_item_full_path (item )
2717
- if (use_reg_expr and search (expression ,fullpath )) or (not use_reg_expr and fnmatch (fullpath ,expression ) ):
2718
- items_append (item )
2732
+ if crc_item in crc_shown :
2733
+ sub_items = self_files_of_groups_filtered_by_mode [crc_item ]
2734
+
2735
+ for item in self .tree_children_sub [crc_item ]:
2736
+ fullpath = self_item_full_path (item )
2737
+ if (use_reg_expr and search (expression ,fullpath )) or (not use_reg_expr and fnmatch (fullpath ,expression ) ):
2738
+ kind ,size ,crc , (pathnr ,path ,file ,ctime ,dev ,inode ) = self .groups_tree_item_to_data [item ]
2739
+ if (dev ,inode ) in sub_items :
2740
+ items_append (item )
2719
2741
except Exception as e :
2720
2742
try :
2721
2743
self .info_dialog_on_find [self .find_tree ].show ('Error' ,str (e ))
@@ -2742,15 +2764,12 @@ def find_items(self,expression,use_reg_expr):
2742
2764
2743
2765
def select_find_result (self ,mod ):
2744
2766
if self .find_result :
2767
+ #print(f'{self.find_result=}')
2745
2768
items_len = len (self .find_result )
2746
2769
self .find_result_index += mod
2747
2770
next_item = self .find_result [self .find_result_index % items_len ]
2748
2771
2749
- if self .find_dialog_shown :
2750
- #focus is still on find dialog
2751
- self .semi_selection (self .find_tree ,next_item )
2752
- else :
2753
- self .semi_selection (self .find_tree ,next_item )
2772
+ self .semi_selection (self .find_tree ,next_item )
2754
2773
2755
2774
self .tree_see_wrapper (self .find_tree ,next_item )
2756
2775
@@ -2816,7 +2835,6 @@ def goto_next_prev_crc(self,direction):
2816
2835
2817
2836
if tree_set (current_item ,'kind' )== self_CRC :
2818
2837
self .crc_select_and_focus_child (current_item )
2819
-
2820
2838
self .status (status )
2821
2839
2822
2840
break
@@ -2875,14 +2893,8 @@ def key_release(self,event):
2875
2893
2876
2894
if key == "Next" :
2877
2895
item = tree .focus ()
2878
- #tree.yview_moveto(tree.bbox(item)[1] / tree.winfo_height())
2879
2896
children = tree .get_children (item )
2880
2897
children_len = len (children )
2881
-
2882
- #if children_len>=3:
2883
- # tree.see(children[2])
2884
- #elif children_len:
2885
- # tree.see(children[-1])
2886
2898
except Exception as e :
2887
2899
#print(e)
2888
2900
pass
@@ -4113,9 +4125,12 @@ def scan(self):
4113
4125
if file_max_size_int == - 1 :
4114
4126
file_max_size_int = 0
4115
4127
4128
+ #################
4129
+ include_hidden = self .cfg_get_bool (CFG_KEY_include_hidden )
4130
+
4116
4131
#################
4117
4132
4118
- scan_thread = Thread (target = lambda : dude_core .scan (operation_mode ,file_min_size_int ,file_max_size_int ),daemon = True )
4133
+ scan_thread = Thread (target = lambda : dude_core .scan (operation_mode ,file_min_size_int ,file_max_size_int , include_hidden ),daemon = True )
4119
4134
scan_thread .start ()
4120
4135
4121
4136
self_progress_dialog_on_scan .lab_l1 .configure (text = STR ('Total space:' ))
@@ -4625,6 +4640,9 @@ def settings_ok(self):
4625
4640
if not need_restart :
4626
4641
self .get_info_dialog_on_settings ().show (STR ('Theme Changed' ),STR ('Application restart required\n for changes to take effect' ))
4627
4642
4643
+ if self .cfg_get_bool (CFG_KEY_include_hidden )!= self .scan_hidden_var .get ():
4644
+ self .cfg .set_bool (CFG_KEY_include_hidden ,self .scan_hidden_var .get ())
4645
+
4628
4646
if self .cfg_get_bool (CFG_KEY_FULL_CRC )!= self .show_full_crc .get ():
4629
4647
self .cfg .set_bool (CFG_KEY_FULL_CRC ,self .show_full_crc .get ())
4630
4648
update1 = True
@@ -4647,6 +4665,8 @@ def settings_ok(self):
4647
4665
4648
4666
if self .cfg_get (CFG_KEY_SHOW_MODE )!= self .show_mode .get ():
4649
4667
self .cfg .set (CFG_KEY_SHOW_MODE ,self .show_mode .get ())
4668
+ self .find_params_changed = True
4669
+ self .find_result_index = 0
4650
4670
update0 = True
4651
4671
4652
4672
if self .cfg_get_bool (CFG_KEY_REL_SYMLINKS )!= self .create_relative_symlinks .get ():
@@ -4940,12 +4960,13 @@ def groups_show(self):
4940
4960
#kind,crc,(pathnr,path,file,ctime,dev,inode)
4941
4961
self_groups_tree_item_to_data [group_item ]= (self_CRC ,size ,crc ,(None ,None ,None ,None ,None ,None ) )
4942
4962
4963
+ files_of_groups_filtered_by_mode_group_index_add = files_of_groups_filtered_by_mode [group_index ].add
4943
4964
for pathnr ,path ,file ,ctime ,dev ,inode ,size in sorted (items_set ,key = lambda x : (x [6 ],x [0 ],x [1 ],x [2 ]),reverse = True ):
4944
4965
if show_mode_same_dir :
4945
4966
if hist [(pathnr ,path )]== 1 :
4946
4967
continue
4947
4968
4948
- files_of_groups_filtered_by_mode [ group_index ]. add ( (dev ,inode ) )
4969
+ files_of_groups_filtered_by_mode_group_index_add ( (dev ,inode ) )
4949
4970
4950
4971
#print(pathnr,path,file,mtime,ctime,dev,inode,size)
4951
4972
iid = self_idfunc (inode ,dev )
@@ -4998,13 +5019,14 @@ def groups_show(self):
4998
5019
#kind,crc,index_tuple
4999
5020
#kind,crc,(pathnr,path,file,ctime,dev,inode)
5000
5021
self_groups_tree_item_to_data [crc_item ]= (self_CRC ,size ,crc ,(None ,None ,None ,None ,None ,None ) )
5022
+ files_of_groups_filtered_by_mode_crc_add = files_of_groups_filtered_by_mode [crc ].add
5001
5023
5002
5024
for pathnr ,path ,file ,ctime ,dev ,inode in sorted (crc_dict ,key = lambda x : x [0 ]):
5003
5025
if show_mode_same_dir :
5004
5026
if hist [(pathnr ,path )]== 1 :
5005
5027
continue
5006
5028
5007
- files_of_groups_filtered_by_mode [ crc ]. add ( (dev ,inode ) )
5029
+ files_of_groups_filtered_by_mode_crc_add ( (dev ,inode ) )
5008
5030
5009
5031
iid = self_idfunc (inode ,dev )
5010
5032
self_iid_to_size [iid ]= size
@@ -5106,8 +5128,6 @@ def tree_folder_update(self,arbitrary_path=None):
5106
5128
5107
5129
current_path = arbitrary_path if arbitrary_path else self .sel_path_full
5108
5130
5109
- #print('current_path:',current_path)
5110
-
5111
5131
if not current_path :
5112
5132
return False
5113
5133
0 commit comments