Skip to content

Commit 1b28199

Browse files
author
piotrj
committed
searching improvements
1 parent 8057e5a commit 1b28199

File tree

4 files changed

+48
-42
lines changed

4 files changed

+48
-42
lines changed

src/core.py

+3-5
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,11 @@ def fnumber(num):
124124

125125
def str_to_bytes(string):
126126
try:
127-
string = string.replace(' ','').lower()
127+
string = string.replace(' ','').lower().rstrip('b')
128128
string_endswith = string.endswith
129-
for suffix,altsuffix,weight in ( ('kb','k',1024),('mb','m',1024*1024),('gb','g',1024*1024*1024),('tb','t',1024*1024*1024*1024),('b','b',1) ):
129+
for suffix,weight in ( ('k',1024),('m',1024*1024),('g',1024*1024*1024),('t',1024*1024*1024*1024) ):
130130
if string_endswith(suffix):
131-
return int(string[0:-len(suffix)]) * weight #no decimal point
132-
elif string_endswith(altsuffix):
133-
return int(string[0:-len(altsuffix)]) * weight #no decimal point
131+
return int(string[0:-1]) * weight #no decimal point
134132

135133
return int(string)
136134
except:

src/dialogs.py

+8-6
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ def key_press_Shift_f3(self,event):
399399
def key_press(self,event):
400400
key=event.keysym
401401

402-
if key != "F3":
402+
if key not in ("F3",'Up','Down','Next','Prior','Home','End','Delete','BackSpace'):
403403
if event.widget!=self.find_entry:
404404
self.find_var.set(self.find_var.get() + event.char)
405405
self.find_entry.icursor('end')
@@ -471,16 +471,18 @@ def show(self,title='',message='',uplabel_text=''):
471471

472472
self.message = message
473473

474-
self.text.configure(state='normal')
475-
self.text.delete('1.0', 'end')
476-
self.text.insert('end',message)
477-
self.text.configure(state='disabled')
474+
self_text = self.text
475+
self_text.configure(state='normal')
476+
self_text.delete('1.0', 'end')
477+
self_text.insert('end',message)
478+
self_text.configure(state='disabled')
478479

479-
self.text.grid(row=1,column=0,sticky='news',padx=5,pady=5)
480+
self_text.grid(row=1,column=0,sticky='news',padx=5,pady=5)
480481

481482
self.copy_button.configure(state='normal')
482483

483484
self.find_key_binding()
485+
self.focus = self_text
484486
super().show()
485487

486488
class TextDialogQuestion(TextDialogInfo):

src/librer.py

+27-25
Original file line numberDiff line numberDiff line change
@@ -1477,25 +1477,6 @@ def ver_number(var):
14771477

14781478
##############
14791479

1480-
self.find_size_min_var.trace_add("write", lambda i,j,k : self.find_mod())
1481-
self.find_size_max_var.trace_add("write", lambda i,j,k : self.find_mod())
1482-
1483-
self.find_modtime_min_var.trace_add("write", lambda i,j,k : self.find_mod())
1484-
self.find_modtime_max_var.trace_add("write", lambda i,j,k : self.find_mod())
1485-
1486-
self.find_name_regexp_var.trace_add("write", lambda i,j,k : self.find_mod())
1487-
self.find_name_glob_var.trace_add("write", lambda i,j,k : self.find_mod())
1488-
self.find_name_fuzz_var.trace_add("write", lambda i,j,k : self.find_mod())
1489-
self.find_name_case_sens_var.trace_add("write", lambda i,j,k : self.find_mod())
1490-
1491-
self.find_cd_regexp_var.trace_add("write", lambda i,j,k : self.find_mod())
1492-
self.find_cd_glob_var.trace_add("write", lambda i,j,k : self.find_mod())
1493-
self.find_cd_fuzz_var.trace_add("write", lambda i,j,k : self.find_mod())
1494-
self.find_cd_case_sens_var.trace_add("write", lambda i,j,k : self.find_mod())
1495-
1496-
self.find_name_fuzzy_threshold.trace_add("write", lambda i,j,k : self.find_mod())
1497-
self.find_cd_fuzzy_threshold.trace_add("write", lambda i,j,k : self.find_mod())
1498-
14991480
sfdma = self.find_dialog.area_main
15001481

15011482
(find_filename_frame := LabelFrame(sfdma,text='Search range',bd=2,bg=self.bg_color,takefocus=False)).grid(row=0,column=0,sticky='news',padx=4,pady=4)
@@ -1527,9 +1508,9 @@ def ver_number(var):
15271508
self.find_filename_glob_entry = Entry(find_filename_frame,textvariable=self.find_name_glob_var,validate="key")
15281509
self.find_filename_fuzz_entry = Entry(find_filename_frame,textvariable=self.find_name_fuzz_var,validate="key")
15291510

1530-
self.find_filename_regexp_entry.bind("<KeyPress>", lambda event : self.find_mod)
1531-
self.find_filename_glob_entry.bind("<KeyPress>", lambda event : self.find_mod)
1532-
self.find_filename_fuzz_entry.bind("<KeyPress>", lambda event : self.find_mod)
1511+
self.find_filename_regexp_entry.bind("<KeyPress>", self.find_mod_keypress)
1512+
self.find_filename_glob_entry.bind("<KeyPress>", self.find_mod_keypress)
1513+
self.find_filename_fuzz_entry.bind("<KeyPress>", self.find_mod_keypress)
15331514

15341515
self.find_filename_regexp_entry.grid(row=2, column=1, sticky='we',padx=4,pady=4)
15351516
self.find_filename_glob_entry.grid(row=3, column=1, sticky='we',padx=4,pady=4)
@@ -1543,6 +1524,8 @@ def ver_number(var):
15431524
self.find_filename_fuzzy_threshold_lab.grid(row=4, column=2, sticky='wens',padx=4,pady=4)
15441525
self.find_filename_fuzzy_threshold_entry.grid(row=4, column=3, sticky='wens',padx=4,pady=4)
15451526

1527+
self.find_filename_fuzzy_threshold_entry.bind("<KeyPress>", self.find_mod_keypress)
1528+
15461529
self.widget_tooltip(regexp_radio_name,regexp_tooltip + regexp_tooltip_name)
15471530
self.widget_tooltip(self.find_filename_regexp_entry,regexp_tooltip + regexp_tooltip_name)
15481531
self.widget_tooltip(glob_radio_name,glob_tooltip + glob_tooltip_name)
@@ -1568,9 +1551,9 @@ def ver_number(var):
15681551
self.find_cd_glob_entry = Entry(find_cd_frame,textvariable=self.find_cd_glob_var,validate="key")
15691552
self.find_cd_fuzz_entry = Entry(find_cd_frame,textvariable=self.find_cd_fuzz_var,validate="key")
15701553

1571-
self.find_cd_regexp_entry.bind("<KeyPress>", lambda event : self.find_mod)
1572-
self.find_cd_glob_entry.bind("<KeyPress>", lambda event : self.find_mod)
1573-
self.find_cd_fuzz_entry.bind("<KeyPress>", lambda event : self.find_mod)
1554+
self.find_cd_regexp_entry.bind("<KeyPress>", self.find_mod_keypress)
1555+
self.find_cd_glob_entry.bind("<KeyPress>", self.find_mod_keypress)
1556+
self.find_cd_fuzz_entry.bind("<KeyPress>", self.find_mod_keypress)
15741557

15751558
self.find_cd_regexp_entry.grid(row=4, column=1, sticky='we',padx=4,pady=4)
15761559
self.find_cd_glob_entry.grid(row=5, column=1, sticky='we',padx=4,pady=4)
@@ -1584,6 +1567,8 @@ def ver_number(var):
15841567
self.find_cd_fuzzy_threshold_lab.grid(row=6, column=2, sticky='wens',padx=4,pady=4)
15851568
self.find_cd_fuzzy_threshold_entry.grid(row=6, column=3, sticky='wens',padx=4,pady=4)
15861569

1570+
self.find_cd_fuzzy_threshold_entry.bind("<KeyPress>", self.find_mod_keypress)
1571+
15871572
self.widget_tooltip(regexp_radio_cd,regexp_tooltip + regexp_tooltip_cd)
15881573
self.widget_tooltip(self.find_cd_regexp_entry,regexp_tooltip + regexp_tooltip_cd)
15891574
self.widget_tooltip(glob_radio_cd,glob_tooltip + glob_tooltip_cd)
@@ -1611,6 +1596,9 @@ def validate_size_str(val):
16111596
find_size_max_entry=Entry(find_size_frame,textvariable=self.find_size_max_var)
16121597
find_size_max_entry.grid(row=0, column=3, sticky='we',padx=4,pady=4)
16131598

1599+
find_size_min_entry.bind("<KeyPress>", self.find_mod_keypress)
1600+
find_size_max_entry.bind("<KeyPress>", self.find_mod_keypress)
1601+
16141602
size_tooltip = 'Integer value [in bytes] or integer with unit.\nLeave the value blank to ignore this criterion.\n\nexamples:\n399\n100B\n125kB\n10MB'
16151603
self.widget_tooltip(find_size_min_entry,size_tooltip)
16161604
self.widget_tooltip(find_size_min_label,size_tooltip)
@@ -1628,6 +1616,9 @@ def validate_size_str(val):
16281616
find_modtime_max_entry=Entry(find_modtime_frame,textvariable=self.find_modtime_max_var)
16291617
find_modtime_max_entry.grid(row=0, column=3, sticky='we',padx=4,pady=4)
16301618

1619+
find_modtime_min_entry.bind("<KeyPress>", self.find_mod_keypress)
1620+
find_modtime_max_entry.bind("<KeyPress>", self.find_mod_keypress)
1621+
16311622
time_toltip = 'Date and time in the format below.\nLeave the value blank to ignore this criterion.\n\nexamples:\n2023-12-14 22:21:20\n2023-12-14 22:21\n2023-12-14\n2023-12'
16321623
self.widget_tooltip(find_modtime_min_entry,time_toltip)
16331624
self.widget_tooltip(find_modtime_min_label,time_toltip)
@@ -2136,6 +2127,14 @@ def find_show_results(self):
21362127

21372128
find_dialog_shown=False
21382129

2130+
def find_mod_keypress(self,event):
2131+
key=event.keysym
2132+
2133+
if key=='Return':
2134+
self.find_items()
2135+
else:
2136+
return self.find_mod()
2137+
21392138
def find_mod(self):
21402139
try:
21412140
if self.cfg.get(CFG_KEY_find_cd_search_kind) != self.find_cd_search_kind_var.get():
@@ -2228,6 +2227,9 @@ def find_mod(self):
22282227

22292228
self.search_show_butt.configure(state='disabled')
22302229
self.search_save_butt.configure(state='disabled')
2230+
else:
2231+
self.search_show_butt.configure(state='normal')
2232+
self.search_save_butt.configure(state='normal')
22312233

22322234
except Exception as e:
22332235
self.find_result_record_index=0

src/record.py

+10-6
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def printer():
143143
result=results_queue_get()
144144
if result==True:
145145
break
146-
print(json_dumps(result))
146+
print(json_dumps(result),flush=False)
147147
else:
148148
sys.stdout.flush()
149149
sleep(0.001)
@@ -268,11 +268,15 @@ def print_info(*args):
268268
thread = Thread(target=printer,daemon=True)
269269
thread.start()
270270

271-
record.find_items(results_queue,
272-
size_min,size_max,
273-
timestamp_min,timestamp_max,
274-
name_search_kind,name_func_to_call,
275-
cd_search_kind,cd_func_to_call)
271+
try:
272+
record.find_items(results_queue,
273+
size_min,size_max,
274+
timestamp_min,timestamp_max,
275+
name_search_kind,name_func_to_call,
276+
cd_search_kind,cd_func_to_call)
277+
except Exception as fe:
278+
print_info('find_items error:' + str(fe))
279+
results_queue.append(True) #stop printer thread
276280

277281
thread.join()
278282

0 commit comments

Comments
 (0)