50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
# File 'ext/ae-search-in-files/ae-search-in-files.rb', line 50
def do_find
return if @find.e_what.text.strip.length == 0 || @find.e_filter.text.strip.length == 0 || @find.e_dir.text.strip.length == 0
@find.hide
if !defined?(@search_output)
@search_output = SearchOutput.new(@service)
else
@service.frame.show
end
begin
_search_title = 'search result for : "'+@find.e_what.text+'" in :"'+@find.e_dir.text+'"'+' ['+@find.e_filter.text+']'
_filter = @find.e_dir.text+'/**/'+@find.e_filter.text
_files = Dir[_filter]
_node = @search_output.new_result(_search_title, _files.length)
progress_stop=false
@progress_bar = TkProgressframe.new(@service.arcadia.layout.root, _files.length)
@progress_bar.title('Searching')
@progress_bar.on_cancel=proc{progress_stop=true}
pattern = Regexp.new(@find.e_what.text)
_files.each do |_filename|
File.open(_filename) do |file|
file.grep(pattern) do |line|
@search_output.add_result(_node, _filename, file.lineno.to_s, line)
break if progress_stop
end
end
@progress_bar.progress
break if progress_stop
end
rescue Exception => e
Arcadia.console(self, 'msg'=>e.message, 'level'=>'error')
ensure
@progress_bar.destroy
end
end
|