From 900bf3a0d908c265067a3a6751a7fc963bfaeea3 Mon Sep 17 00:00:00 2001 From: piotrj Date: Sat, 27 Jan 2024 10:36:53 +0100 Subject: [PATCH 1/4] cleanup, GitHub CI actions update --- .github/workflows/run.yml | 28 ++++++++++++++-------------- scripts/pyinstaller.run.sh | 6 ------ 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/.github/workflows/run.yml b/.github/workflows/run.yml index eb50a8b..e13e636 100644 --- a/.github/workflows/run.yml +++ b/.github/workflows/run.yml @@ -2,7 +2,7 @@ name: win_lin_release on: push: - branches: [ "main","devel" ] + branches: [ "main","devel","nuitka" ] permissions: read-all @@ -13,10 +13,10 @@ jobs: steps: - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: python setup - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.12" cache: 'pip' @@ -35,7 +35,7 @@ jobs: shell: cmd - name: version upload - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: version path: ./src/version.txt @@ -53,7 +53,7 @@ jobs: shell: cmd - name: upload win distro - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: pyinstaller-win path: ./build-pyinstaller/dude.win.zip @@ -67,10 +67,10 @@ jobs: steps: - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: python setup - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.12" cache: 'pip' @@ -86,7 +86,7 @@ jobs: run: find $pythonLocation -name *.so* -type f -exec strip {} \; - name: version download - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: version path: ./src @@ -101,7 +101,7 @@ jobs: run: bash "pyinstaller.run.sh" - name: upload lin distro - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: pyinstaller-lin path: ./build-pyinstaller/dude.lin.zip @@ -113,17 +113,17 @@ jobs: run: echo "version=$(cat ./src/version.txt)" >> $GITHUB_OUTPUT - name: rename linux distro - run: mv ./build-pyinstaller/dude.lin.zip ./dude.${{ steps.version.outputs.version }}.portable.linux.zip + run: mv ./build-pyinstaller/dude.lin.zip ./dude_devel.${{ steps.version.outputs.version }}.portable.linux.zip ##################################### - name: download windows distro - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: pyinstaller-win path: ./ - name: rename windows distro - run: mv ./dude.win.zip ./dude.${{ steps.version.outputs.version }}.portable.windows.zip + run: mv ./dude.win.zip ./dude_devel.${{ steps.version.outputs.version }}.portable.windows.zip ##################################### - name: Create GitHub release @@ -136,6 +136,6 @@ jobs: draft: false prerelease: true files: | - dude.${{ steps.version.outputs.version }}.portable.linux.zip - dude.${{ steps.version.outputs.version }}.portable.windows.zip + dude_devel.${{ steps.version.outputs.version }}.portable.linux.zip + dude_devel.${{ steps.version.outputs.version }}.portable.windows.zip diff --git a/scripts/pyinstaller.run.sh b/scripts/pyinstaller.run.sh index a677e42..c954956 100755 --- a/scripts/pyinstaller.run.sh +++ b/scripts/pyinstaller.run.sh @@ -23,12 +23,6 @@ echo '' echo running-pyinstaller-stage_dude pyinstaller --strip --noconfirm --noconsole --clean --add-data="distro.info.txt:." --add-data="version.txt:." --add-data="../LICENSE:." --contents-directory=internal --distpath=$outdir ./dude.py -echo '' -echo running-pyinstaller-stage_dudecmd -pyinstaller --strip --noconfirm --console --clean --add-data="distro.info.txt:." --add-data="version.txt:." --add-data="../LICENSE:." --contents-directory=internal --distpath=$outdir ./dudecmd.py -n dudecmd - -mv -v $outdir/record/record $outdir/dude - echo '' echo packing cd $outdir From 43682487a687bca6d579f2da16c2c9b681bae709 Mon Sep 17 00:00:00 2001 From: piotrj Date: Sat, 27 Jan 2024 11:48:49 +0100 Subject: [PATCH 2/4] release name --- .github/workflows/run.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run.yml b/.github/workflows/run.yml index e13e636..bddda6a 100644 --- a/.github/workflows/run.yml +++ b/.github/workflows/run.yml @@ -132,7 +132,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ steps.version.outputs.version }} - name: Release ${{ steps.version.outputs.version }} + name: Dude-devel Release ${{ steps.version.outputs.version }} draft: false prerelease: true files: | From f325b1cc1f6eb1cd4c0bc3c9dee39a3f95870f48 Mon Sep 17 00:00:00 2001 From: piotrj Date: Sat, 27 Jan 2024 12:14:02 +0100 Subject: [PATCH 3/4] fix pyinstaller version files order --- scripts/pyinstaller.run.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/pyinstaller.run.bat b/scripts/pyinstaller.run.bat index 90fc567..a2ed70d 100644 --- a/scripts/pyinstaller.run.bat +++ b/scripts/pyinstaller.run.bat @@ -21,11 +21,11 @@ @echo. @echo running-pyinstaller-stage_dude -pyinstaller --version-file=version.pi.dudecmd.txt --noconfirm --clean --add-data="distro.info.txt:." --add-data="version.txt;." --add-data="../LICENSE;." --icon=icon.ico --distpath=%OUTDIR% --windowed --contents-directory=internal --name dude dude.py || exit /b 2 +pyinstaller --version-file=version.pi.dude.txt --noconfirm --clean --add-data="distro.info.txt:." --add-data="version.txt;." --add-data="../LICENSE;." --icon=icon.ico --distpath=%OUTDIR% --windowed --contents-directory=internal --name dude dude.py || exit /b 2 @echo. @echo running-pyinstaller-dudecmd -pyinstaller --version-file=version.pi.dude.txt --noconfirm --clean --add-data="distro.info.txt:." --add-data="version.txt;." --add-data="../LICENSE;." --icon=icon.ico --distpath=%OUTDIR% --console --contents-directory=internal --name dudecmd console.py || exit /b 1 +pyinstaller --version-file=version.pi.dudecmd.txt --noconfirm --clean --add-data="distro.info.txt:." --add-data="version.txt;." --add-data="../LICENSE;." --icon=icon.ico --distpath=%OUTDIR% --console --contents-directory=internal --name dudecmd console.py || exit /b 1 move %OUTDIR%\dudecmd\dudecmd.exe %OUTDIR%\dude From 6c45b8ef45faa2b22ebbb7a232a809f228ebda63 Mon Sep 17 00:00:00 2001 From: piotrj Date: Sat, 27 Jan 2024 17:00:36 +0100 Subject: [PATCH 4/4] optimisations, cleanup --- src/dude.py | 178 +++++++++++++++++----------------------------------- 1 file changed, 57 insertions(+), 121 deletions(-) diff --git a/src/dude.py b/src/dude.py index 1540376..d8e619c 100755 --- a/src/dude.py +++ b/src/dude.py @@ -205,9 +205,6 @@ class Gui: def block_actions_processing(func): def block_actions_processing_wrapp(self,*args,**kwargs): - #if self.actions_processing: - #gc_disable() - #gc_collect() prev_active=self.actions_processing self.actions_processing=False @@ -221,9 +218,6 @@ def block_actions_processing_wrapp(self,*args,**kwargs): res=None self.actions_processing=prev_active - #if self.actions_processing: - #gc_collect() - #gc_enable() return res return block_actions_processing_wrapp @@ -563,7 +557,6 @@ def __init__(self,cwd,paths_to_add=None,exclude=None,exclude_regexp=None,norun=N self_groups_tree = self.groups_tree self.groups_tree_set = self_groups_tree.set self.groups_tree_see = self_groups_tree.see - #self.groups_tree_get_children = self.groups_tree.get_children self.groups_tree_focus = lambda item : self.groups_tree.focus(item) self.tree_children[self.groups_tree]=[] @@ -719,11 +712,11 @@ def __init__(self,cwd,paths_to_add=None,exclude=None,exclude_regexp=None,norun=N self_main_bind("",lambda event : self.unpost() ) self_main_bind("",lambda event : self.focusin() ) - self.groups_tree.bind("",self.groups_tree_focus_out ) - self.folder_tree.bind("",self.folder_tree_focus_out ) + self.groups_tree.bind("",lambda event :self.groups_tree_focus_out() ) + self.folder_tree.bind("",lambda event :self.folder_tree_focus_out() ) - self.groups_tree.bind("",self.groups_tree_focus_in ) - self.folder_tree.bind("",self.folder_tree_focus_in ) + self.groups_tree.bind("",lambda event :self.groups_tree_focus_in() ) + self.folder_tree.bind("",lambda event :self.folder_tree_focus_in() ) self.selected={} self.selected[self.groups_tree]=None @@ -822,14 +815,6 @@ def __init__(self,cwd,paths_to_add=None,exclude=None,exclude_regexp=None,norun=N self.info_dialog_on_mark={} self.info_dialog_on_find={} - try: - lab_courier.configure(font=('Courier', 10)) - except: - try: - lab_courier.configure(font=('TkFixedFont', 10)) - except: - pass - def file_cascade_post(): self.hide_tooltip() self.popup_groups_unpost() @@ -1427,6 +1412,14 @@ def get_license_dialog(self): lab_courier=Label(frame1,text=self.license,bg=self.bg_color,justify='center') lab_courier.pack(expand=1,fill='both') + try: + lab_courier.configure(font=('Courier', 10)) + except: + try: + lab_courier.configure(font=('TkFixedFont', 10)) + except: + pass + self.license_dialog_created = True return self.license_dialog @@ -1442,37 +1435,36 @@ def semi_selection(self,tree,item): self.selected[tree]=item - def groups_tree_focus_out(self,event): - #print(f'groups_tree_focus_out:{event.widget}') + def groups_tree_focus_out(self): self_groups_tree = self.groups_tree item=self_groups_tree.focus() if item: self_groups_tree.selection_set(item) self.selected[self_groups_tree]=item - def folder_tree_focus_out(self,event): - #print(f'folder_tree_focus_out:{event.widget}') + def folder_tree_focus_out(self): self_folder_tree = self.folder_tree item = self_folder_tree.focus() if item: self_folder_tree.selection_set(item) self.selected[self_folder_tree]=item - def groups_tree_focus_in(self,event): - #print(f'groups_tree_focus_in:{event.widget}') + def groups_tree_focus_in(self): + #print('groups_tree_focus_in',str(event.type),dir(event.type)) tree=self.groups_tree self.sel_tree=tree if item:=self.selected[tree]: tree.focus(item) tree.selection_remove(item) + self.groups_tree_sel_change(item,True) tree.configure(style='semi_focus.Treeview') self.other_tree[tree].configure(style='no_focus.Treeview') - #tree.selection_remove(tree.selection()) + #print('groups_tree_focus_in',str(event.type),'end') - def folder_tree_focus_in(self,event): - #print(f'folder_tree_focus_in:{event.widget}') + def folder_tree_focus_in(self): + #print('folder_tree_focus_in',str(event.type),dir(event.type)) tree = self.folder_tree self.sel_tree=tree @@ -1482,7 +1474,7 @@ def folder_tree_focus_in(self,event): tree.configure(style='semi_focus.Treeview') self.other_tree[tree].configure(style='no_focus.Treeview') - #tree.selection_remove(tree.selection()) + #print('folder_tree_focus_in',str(event.type),'end') def focusin(self): #print('focusin') @@ -1814,17 +1806,14 @@ def find_items(self,expression,use_reg_expr): items=[] items_append = items.append - #self_groups_tree_get_children = self.groups_tree_get_children self_item_full_path = self.item_full_path if expression: if self.sel_tree==self.groups_tree: - #crc_range = self_groups_tree_get_children() crc_range = self.tree_children[self.groups_tree] try: for crc_item in crc_range: - #for item in self_groups_tree_get_children(crc_item): for item in self.tree_children_sub[crc_item]: fullpath = self_item_full_path(item) if (use_reg_expr and search(expression,fullpath)) or (not use_reg_expr and fnmatch(fullpath,expression) ): @@ -1895,7 +1884,6 @@ def tag_toggle_selected(self,tree, *items): except Exception : pass elif tree_set(item,'kind')==self_CRC: - #self.tag_toggle_selected(tree, *tree.get_children(item) ) self.tag_toggle_selected(tree, *tree_children_sub[item] ) self.calc_mark_stats_groups() @@ -2028,7 +2016,6 @@ def key_press(self,event): if item: if tree==self.groups_tree: if tree.set(item,'kind')==self.CRC: - #self.tag_toggle_selected(tree,*tree.get_children(item)) self.tag_toggle_selected(tree,*self.tree_children_sub[item]) else: self.tag_toggle_selected(tree,item) @@ -2175,10 +2162,6 @@ def key_press(self,event): self.get_info_dialog_on_main().show('INTERNAL ERROR','key_press\n' + str(e)) #t2=perf_counter() - - #if tree_focus:=tree.focus(): - #print('another_selection') - #tree.selection_set(tree_focus) #t3=perf_counter() self.main_bind_class('Treeview','', self.key_press ) @@ -2196,7 +2179,6 @@ def go_to_parent_dir(self): ################################################# def crc_select_and_focus(self,crc,try_to_show_all=False): if try_to_show_all: - #self.groups_tree_see(self.groups_tree_get_children(crc)[-1]) self.groups_tree_see(self.tree_children_sub[crc][-1]) self.groups_tree.update() @@ -2225,13 +2207,11 @@ def tree_on_mouse_button_press(self,event,toggle=False): if (colname:=tree.column(tree.identify_column(event.x),'id') ) in self.REAL_SORT_COLUMN: self.column_sort_click(tree,colname) elif item:=tree.identify('item',event.x,event.y): - tree.selection_remove(tree.selection()) - tree.focus_set() - #tree.focus(item) + tree.selection_remove(*tree.selection()) - self.semi_selection(tree,item) - #tree.selection_set(item) + self.selected[tree]=item + tree.focus(item) if tree==self.groups_tree: self.groups_tree_sel_change(item) @@ -2240,10 +2220,10 @@ def tree_on_mouse_button_press(self,event,toggle=False): if toggle: self.tag_toggle_selected(tree,item) + #prevents processing of expanding nodes #return "break" - #return None return "break" def set_full_path_to_file_win(self): @@ -2303,7 +2283,8 @@ def groups_tree_sel_change(self,item,force=False,change_status_line=True): else: self.tree_folder_update_none() - gc_collect() + #gc_collect() + gc_enable() #t1=perf_counter() #print(f'groups_tree_sel_change\t{t1a-t0}\t{t1-t1a}') @@ -2630,8 +2611,7 @@ def tree_sort_item(self,tree,parent_item,lower_tree): self_UPDIR = self.UPDIR dir_or_dirlink = (self.DIR,self.DIRLINK) - #for item in (tree.get_children(parent_item) if parent_item else tree.get_children(parent_item)): - for item in (self.tree_children_sub[parent_item] if parent_item else tree.get_children(parent_item)): + for item in (self.tree_children_sub[parent_item] if parent_item else self.tree_children[tree]): sortval_org=tree_set(item,real_column_to_sort) sortval=(int(sortval_org) if sortval_org.isdigit() else 0) if is_numeric else sortval_org @@ -2651,7 +2631,7 @@ def tree_sort_item(self,tree,parent_item,lower_tree): _ = {tree_move(item, parent_item, index) for index,(val_tuple,item) in enumerate(sorted(tlist,reverse=reverse,key=lambda x: x[0]) ) } if lower_tree: - self.current_folder_items = tree.get_children() + self.current_folder_items = self.tree_children[self.folder_tree] @restore_status_line @block_actions_processing @@ -2667,7 +2647,7 @@ def column_sort(self, tree): if tree==self.groups_tree: if colname in ('path','file','ctime_h'): - for crc in tree.get_children(): + for crc in self.tree_children[tree]: self_tree_sort_item(tree,crc,False) else: self_tree_sort_item(tree,None,False) @@ -3218,7 +3198,6 @@ def crc_node_update(self,crc): #l_debug('crc_node_update-2 %s',crc) else: crc_dict=dude_core.files_of_size_of_crc[size][crc] - #for item in list(self_groups_tree.get_children(crc)): for item in self.tree_children_sub[crc]: index_tuple=self_get_index_tuple_groups_tree(item) @@ -3226,13 +3205,11 @@ def crc_node_update(self,crc): self_groups_tree_delete(item) #l_debug('crc_node_update-3:%s',item) - #if not self_groups_tree.get_children(crc): if not self.tree_children_sub[crc]: self_groups_tree_delete(crc) #l_debug('crc_node_update-4:%s',crc) @catched - @logwrapper def create_my_prev_next_dicts(self,tree): my_next_dict = self.my_next_dict[tree]={} my_prev_dict = self.my_prev_dict[tree]={} @@ -3241,21 +3218,23 @@ def create_my_prev_next_dicts(self,tree): children = self.tree_children[tree]=tree.get_children() if tree==self.groups_tree: - self.tree_children_sub={} + self_tree_children_sub = self.tree_children_sub={} if top_nodes := children: first=top_nodes[0] + tree_get_children = tree.get_children for top_node in top_nodes: prev2,prev1 = prev1,top_node my_next_dict[prev2],my_prev_dict[prev1] = prev1,prev2 - sub_children = self.tree_children_sub[top_node] = tree.get_children(top_node) - for subnode in sub_children: - prev2,prev1 = prev1,subnode - my_next_dict[prev2],my_prev_dict[prev1] = prev1,prev2 + if sub_children := tree_get_children(top_node): + self_tree_children_sub[top_node] = sub_children - my_next_dict[prev1],my_prev_dict[first] = first,prev1 + for subnode in sub_children: + prev2,prev1 = prev1,subnode + my_next_dict[prev2],my_prev_dict[prev1] = prev1,prev2 + my_next_dict[prev1],my_prev_dict[first] = first,prev1 @catched @logwrapper @@ -3263,10 +3242,9 @@ def data_precalc(self): self.status('Precalculating data...') self.create_my_prev_next_dicts(self.groups_tree) - #self_groups_tree_get_children = self.groups_tree_get_children + self_tree_children = self.tree_children - #self.status_groups_configure(text=fnumber(len(self_groups_tree_get_children())),image=self.ico['warning' if self.cfg_get_bool(CFG_KEY_CROSS_MODE) else 'empty'],compound='right',width=80,anchor='w') - self.status_groups_configure(text=fnumber(len(self.tree_children[self.groups_tree])),image=self.ico['warning' if self.cfg_get_bool(CFG_KEY_CROSS_MODE) else 'empty'],compound='right',width=80,anchor='w') + self.status_groups_configure(text=fnumber(len(self_tree_children[self.groups_tree])),image=self.ico['warning' if self.cfg_get_bool(CFG_KEY_CROSS_MODE) else 'empty'],compound='right',width=80,anchor='w') path_stat_size={} path_stat_size_get=path_stat_size.get @@ -3287,16 +3265,12 @@ def data_precalc(self): self_active_crcs = self.active_crcs - #self_tree_children[groups_tree]_of_crc = self.tree_children[groups_tree]_of_crc = {} - for size,size_dict in dude_core.files_of_size_of_crc_items(): for crc,crc_dict in size_dict.items(): if crc in self_active_crcs: - #self_tree_children[groups_tree]_of_crc_crc = self_tree_children[groups_tree]_of_crc[crc]=[] for pathnr,path,file,ctime,dev,inode in crc_dict: item_id = self_idfunc(inode,dev) self_id2crc[item_id]=(crc,ctime) - #self_tree_children[groups_tree]_of_crc_crc.append(item_id) path_index=(pathnr,path) path_stat_size[path_index] = path_stat_size_get(path_index,0) + size path_stat_quant[path_index] = path_stat_quant_get(path_index,0) + 1 @@ -3306,21 +3280,19 @@ def data_precalc(self): self_biggest_file_of_path_id[path_index]=item_id self_groups_tree_set = self.groups_tree_set + self_tree_children_sub = self.tree_children_sub + + self_tree_children_self_groups_tree = self_tree_children[self.groups_tree] self.path_stat_list_size=tuple(sorted([(pathnr,path,number) for (pathnr,path),number in path_stat_size.items()],key=lambda x : x[2],reverse=True)) self.path_stat_list_quant=tuple(sorted([(pathnr,path,number) for (pathnr,path),number in path_stat_quant.items()],key=lambda x : x[2],reverse=True)) - #self.groups_combos_size = tuple(sorted([(crc_item,sum([int(self_groups_tree_set(item,'size')) for item in self_groups_tree_get_children(crc_item)])) for crc_item in self_groups_tree_get_children()],key = lambda x : x[1],reverse = True)) - self.groups_combos_size = tuple(sorted([(crc_item,sum([int(self_groups_tree_set(item,'size')) for item in self.tree_children_sub[crc_item]])) for crc_item in self.tree_children[self.groups_tree]],key = lambda x : x[1],reverse = True)) - #self.groups_combos_quant = tuple(sorted([(crc_item,len(self_groups_tree_get_children(crc_item))) for crc_item in self_groups_tree_get_children()],key = lambda x : x[1],reverse = True)) - self.groups_combos_quant = tuple(sorted([(crc_item,len(self.tree_children_sub[crc_item])) for crc_item in self.tree_children[self.groups_tree]],key = lambda x : x[1],reverse = True)) + self.groups_combos_size = tuple(sorted([(crc_item,sum([int(self_groups_tree_set(item,'size')) for item in self_tree_children_sub[crc_item]])) for crc_item in self_tree_children_self_groups_tree],key = lambda x : x[1],reverse = True)) + self.groups_combos_quant = tuple(sorted([(crc_item,len(self_tree_children_sub[crc_item])) for crc_item in self_tree_children_self_groups_tree],key = lambda x : x[1],reverse = True)) self.status('') - #self.tree_children[groups_tree]=self.groups_tree.get_children() - @logwrapper def initial_focus(self): if children := self.tree_children[self.groups_tree]: - #first_node_file=next(iter(self.groups_tree_get_children(next(iter(children))))) first_node_file=self.tree_children_sub[children[0]][0] self.groups_tree.focus_set() self.groups_tree_focus(first_node_file) @@ -3343,7 +3315,6 @@ def groups_show(self): self.reset_sels() self_groups_tree = self.groups_tree - #self_groups_tree.delete(*self_groups_tree.get_children()) self_groups_tree.delete(*self.tree_children[self_groups_tree]) self.selected[self.groups_tree]=None @@ -3352,9 +3323,6 @@ def groups_show(self): show_full_crc=self.cfg_get_bool(CFG_KEY_FULL_CRC) show_full_paths=self.cfg_get_bool(CFG_KEY_FULL_PATHS) - self.active_crcs=set() - self_active_crcs_add=self.active_crcs.add - self_status('Rendering data...') self.tagged.clear() @@ -3389,9 +3357,6 @@ def groups_show(self): if not is_cross_group: continue - #tree_mirror_crcs.append(crc) - self_active_crcs_add(crc) - #self_groups_tree["columns"]=('pathnr','path','file','size','size_h','ctime','dev','inode','crc','instances','instances_h','ctime_h','kind') instances_str=str(len(crc_dict)) crc_item=self_groups_tree_insert('','end',crc, values=('','','',size_str,size_h,'','','',crc,instances_str,instances_str,'',self_CRC),tags=self_CRC,open=True,text= crc if show_full_crc else crc[:dude_core_crc_cut_len]) @@ -3413,6 +3378,8 @@ def groups_show(self): #kind,crc,file,path,pathnr groups_tree_mirror[file_item]=(self_FILE,crc,file,path,pathnr) + self.active_crcs={crc for size_dict in dude_core.files_of_size_of_crc.values() for crc in size_dict } + self.data_precalc() if self.column_sort_last_params[self_groups_tree]!=self.column_groups_sort_params_default: @@ -3535,6 +3502,8 @@ def tree_folder_update(self,arbitrary_path=None): self_current_folder_items_tagged.clear() current_folder_items_tagged_size=0 + local_strftime = strftime + local_localtime = localtime folder_items=set() folder_items_add=folder_items.add @@ -3569,7 +3538,7 @@ def tree_folder_update(self,arbitrary_path=None): ctime,size_num = stat_res.st_ctime_ns,stat_res.st_size file_id=self_idfunc(inode,dev) - ctime_h = strftime('%Y/%m/%d %H:%M:%S',localtime(ctime//1000000000)) #DE_NANO + ctime_h = local_strftime('%Y/%m/%d %H:%M:%S',local_localtime(ctime//1000000000)) #DE_NANO size_h=local_bytes_to_str(size_num) @@ -3608,7 +3577,12 @@ def tree_folder_update(self,arbitrary_path=None): ############################################################ if arbitrary_path: - self.sel_tree,self.sel_pathnr,self.sel_file,self.sel_crc,self.sel_item,self.sel_kind = ftree,None,None,None,None,None + self.sel_tree = ftree + self.sel_pathnr = None + self.sel_file = None + self.sel_crc = None + self.sel_item = None + self.sel_kind = None self.sel_path_set(str(Path(arbitrary_path))) @@ -3681,7 +3655,6 @@ def calc_mark_stats_folder(self): def mark_in_specified_group_by_ctime(self, action, crc, reverse,select=False): self_groups_tree = self.groups_tree self_groups_tree_set = self_groups_tree.set - #item=sorted([ (item,self_groups_tree_set(item,'ctime') ) for item in self_groups_tree.get_children(crc)],key=lambda x : int(x[1]),reverse=reverse)[0][0] item=sorted([ (item,self_groups_tree_set(item,'ctime') ) for item in self.tree_children_sub[crc]],key=lambda x : int(x[1]),reverse=reverse)[0][0] if item: action(item,self_groups_tree) @@ -3699,7 +3672,6 @@ def mark_all_by_ctime(self,order_str, action): self_mark_in_specified_group_by_ctime = self.mark_in_specified_group_by_ctime _ = { self_mark_in_specified_group_by_ctime(action, crc, reverse) for crc in self.tree_children[self.groups_tree] } - #_ = { self_mark_in_specified_group_by_ctime(action, crc, reverse) for size,size_dict in dude_core.files_of_size_of_crc_items() for crc in size_dict } self.update_marks_folder() self.calc_mark_stats_groups() @@ -3717,7 +3689,6 @@ def mark_in_group_by_ctime(self,order_str,action): def mark_in_specified_crc_group(self,action,crc): self_groups_tree = self.groups_tree - #_ = { action(item,self_groups_tree) for item in self_groups_tree.get_children(crc) } _ = { action(item,self_groups_tree) for item in self.tree_children_sub[crc] } @block_actions_processing @@ -3735,7 +3706,7 @@ def mark_on_all(self,action): self.status('Un/Setting marking on all files ...') self_mark_in_specified_crc_group = self.mark_in_specified_crc_group _ = { self_mark_in_specified_crc_group(action,crc) for crc in self.tree_children[self.groups_tree] } - #_ = { self_mark_in_specified_crc_group(action,crc) for size,size_dict in dude_core.files_of_size_of_crc_items() for crc in size_dict } + self.update_marks_folder() self.calc_mark_stats_groups() self.calc_mark_stats_folder() @@ -3784,19 +3755,16 @@ def action_on_path(self,path_param,action,all_groups=True): if all_groups: crc_range = self.tree_children[self.groups_tree] - #crc_range = [crc for size,size_dict in dude_core.files_of_size_of_crc_items() for crc in size_dict] else : crc_range = [str(self.sel_crc)] sel_count=0 - #self_groups_tree_get_children = self.groups_tree_get_children self_item_full_path = self.item_full_path dude_core_name_func = dude_core.name_func path_param_abs = dude_core.name_func(normpath(abspath(path_param)).rstrip(sep)) for crc_item in crc_range: - #for item in self_groups_tree_get_children(crc_item): for item in self.tree_children_sub[crc_item]: fullpath = dude_core_name_func(self_item_full_path(item)) @@ -3847,14 +3815,11 @@ def mark_expression(self,action,prompt,all_groups=True): self.expr_by_tree[tree]=expression self_item_full_path = self.item_full_path - #self_groups_tree_get_children = self.groups_tree_get_children if tree==self.groups_tree: - #crc_range = self_groups_tree_get_children() if all_groups else [str(self.sel_crc)] crc_range = self.tree_children[tree] if all_groups else [str(self.sel_crc)] for crc_item in crc_range: - #for item in self_groups_tree_get_children(crc_item): for item in self.tree_children_sub[crc_item]: fullpath = self_item_full_path(item) try: @@ -3911,7 +3876,6 @@ def mark_expression(self,action,prompt,all_groups=True): self.main_update() else: - #self.info_dialog_on_main self.info_dialog_on_mark[self.sel_tree].show('No files found.',f'expression:"{expression}" {use_reg_expr_info}\n') tree.focus_set() @@ -4012,7 +3976,6 @@ def goto_max_folder(self,size_flag=0,direction=1): self.groups_tree_sel_change(item,change_status_line=False) try: - #self.groups_tree_see(self.groups_tree_get_children(self.sel_crc)[-1]) self.groups_tree_see(self.tree_children_sub[self.sel_crc][-1]) self.groups_tree_see(self.sel_crc) self.groups_tree_see(item) @@ -4070,19 +4033,13 @@ def process_files_in_groups_wrapper(self,action,all_groups): else: scope_title='Single CRC group.' - #self_groups_tree_tag_has = self.groups_tree.tag_has self_sel_crc = self.sel_crc - #self_groups_tree_get_children = self.groups_tree_get_children - #self_MARK = self.MARK self_tree_children_sub = self.tree_children_sub - #for crc in self_groups_tree_get_children(): for crc in self.tree_children[self.groups_tree]: if all_groups or crc==self_sel_crc: - #for item in self_groups_tree_get_children(crc): for item in self_tree_children_sub[crc]: - #if self_groups_tree_tag_has(self_MARK,item): if item in self.tagged: processed_items[crc].append(item) @@ -4094,33 +4051,23 @@ def process_files_in_folder_wrapper(self,action,on_dir_action=False): processed_items=defaultdict(list) self_item_full_path = self.item_full_path - #self_groups_tree_tag_has = self.groups_tree.tag_has - #self_groups_tree_get_children = self.groups_tree_get_children - - #self_MARK = self.MARK self_tree_children_sub = self.tree_children_sub if on_dir_action: scope_title='All marked files on selected directory sub-tree.' sel_path_with_sep=self.sel_full_path_to_file.rstrip(sep) + sep - #for crc in self_groups_tree_get_children(): for crc in self.tree_children[self.groups_tree]: - #for item in self_groups_tree_get_children(crc): for item in self_tree_children_sub[crc]: if self_item_full_path(item).startswith(sel_path_with_sep): - #if self_groups_tree_tag_has(self_MARK,item): if item in self.tagged: processed_items[crc].append(item) else: scope_title='Selected Directory.' - #self.sel_path_full self_folder_tree_set = self.folder_tree.set - #self_folder_tree_tag_has = self.folder_tree.tag_has self_current_folder_items_tagged = self.current_folder_items_tagged for item in self.current_folder_items: - #if self_folder_tree_tag_has(self_MARK,item): if item in self_current_folder_items_tagged: crc=self_folder_tree_set(item,'crc') processed_items[crc].append(item) @@ -4141,8 +4088,6 @@ def process_files_check_correctness(self,action,processed_items,remaining_items) self.status('checking data consistency with filesystem state ...') - #self_groups_tree_get_children = self.groups_tree_get_children - dude_core_check_group_files_state = dude_core.check_group_files_state self_crc_node_update = self.crc_node_update @@ -4153,7 +4098,6 @@ def process_files_check_correctness(self,action,processed_items,remaining_items) if checkres: self.get_text_info_dialog().show('Error. Inconsistent data.','Current filesystem state is inconsistent with scanned data.\n\n' + '\n'.join(checkres) + '\n\nSelected CRC group will be reduced. For complete results re-scanning is recommended.') - #orglist=self_groups_tree_get_children() orglist=self.tree_children[self.groups_tree] dude_core.remove_from_data_pool(int(size),crc,tuples_to_remove) @@ -4162,7 +4106,6 @@ def process_files_check_correctness(self,action,processed_items,remaining_items) self.data_precalc() - #newlist=self_groups_tree_get_children() newlist=self.tree_children[self.groups_tree] item_to_sel = self.get_closest_in_crc(orglist,crc,newlist) @@ -4546,14 +4489,9 @@ def process_files(self,action,processed_items,scope_title): self.status('checking remaining items...') remaining_items={} - #self_groups_tree_get_children = self.groups_tree_get_children - #self_groups_tree_tag_has = self.groups_tree.tag_has - self_MARK = self.MARK for crc in affected_crcs: - #remaining_items[crc]=[item for item in self_groups_tree_get_children(crc) if not self_groups_>(self_MARK,item)] - #remaining_items[crc]=[item for item in self.tree_children_sub[crc] if not self_groups_tree_tag_has(self_MARK,item)] remaining_items[crc]=[item for item in self.tree_children_sub[crc] if item not in self.tagged] check=self.process_files_check_correctness(action,processed_items,remaining_items) @@ -4822,7 +4760,6 @@ def open_folder(self): params=[] if tree.set(self.sel_item,'kind')==self.CRC: self.status('Opening folders(s)') - #for item in tree.get_children(self.sel_item): for item in self.tree_children_sub[self.sel_item]: pathnr=int(tree.set(item,'pathnr')) item_path=tree.set(item,'path') @@ -4911,7 +4848,6 @@ def show_homepage(self): DUDE_EXECUTABLE_DIR = dirname(DUDE_EXECUTABLE_FILE) PORTABLE_DIR = sep.join([DUDE_EXECUTABLE_DIR,'dude.data']) - ####################################################################### VER_TIMESTAMP = console.get_ver_timestamp()