Class: SearchInFilesListener

Inherits:
Object
  • Object
show all
Defined in:
ext/ae-search-in-files/ae-search-in-files.rb

Instance Method Summary collapse

Constructor Details

#initialize(_service) ⇒ SearchInFilesListener

Returns a new instance of SearchInFilesListener.



16
17
18
19
# File 'ext/ae-search-in-files/ae-search-in-files.rb', line 16

def initialize(_service)
  @service = _service
  create_find
end

Instance Method Details

#do_findObject



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}
    #@progress_bar.on_cancel=proc{cancel}
    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')
    #Arcadia.new_error_msg(self, e.message)
  ensure
    @progress_bar.destroy
  end

end

#on_before_search_in_files(_event) ⇒ Object



21
22
23
24
25
# File 'ext/ae-search-in-files/ae-search-in-files.rb', line 21

def on_before_search_in_files(_event)
  if _event.what.nil?
    @find.show
  end
end