Class: Finder
Constant Summary
Constants included
from TkResizable
TkResizable::MIN_HEIGHT, TkResizable::MIN_WIDTH
Instance Attribute Summary collapse
#frame, #top
Instance Method Summary
collapse
#head_buttons, #hide, #hide_if_visible, #on_close=, #show_grabbed, #title
#resizing_do_move_obj, #resizing_do_press, #start_resizing, #stop_resizing
Methods included from TkMovable
#moving_do_move_obj, #moving_do_press, #start_moving, #stop_moving
#add_fixed_button, #add_fixed_menu_button, #add_fixed_panel, #add_fixed_sep, #create_frame, #head_buttons, #menu_button, #visible?
Constructor Details
#initialize(_frame, _controller) ⇒ Finder
Returns a new instance of Finder.
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
|
# File 'ext/ae-editor/ae-editor.rb', line 5844
def initialize(_frame, _controller)
super(_frame)
@controller = _controller
@forwards = true
@find_action = proc{
do_find_next
hide
}
@b_go.bind('1', @find_action)
@b_replace.bind('1', proc{do_replace})
@b_replace_all.bind('1', proc{do_replace_all})
@e_what_entry.bind_append('KeyRelease'){|e|
case e.keysym
when 'Return'
@find_action.call
Tk.callback_break
else
widget_state
end
}
e2 = TkWinfo.children(@e_with)[0]
e2.bind_append('KeyPress'){|e|
widget_state
}
@last_index='insert'
@goto_line_dialog = GoToLine.new(_frame).hide
@goto_line_dialog.on_close=proc{@goto_line_dialog.hide}
@goto_line_dialog.b_go.bind('1',proc{go_line})
@goto_line_dialog.e_line.bind_append('KeyRelease'){|e|
case e.keysym
when 'Return'
go_line
Tk.callback_break
end
}
end
|
Instance Attribute Details
#e_what ⇒ Object
Returns the value of attribute e_what.
5843
5844
5845
|
# File 'ext/ae-editor/ae-editor.rb', line 5843
def e_what
@e_what
end
|
Instance Method Details
#do_find(_istart = nil) ⇒ Object
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
|
# File 'ext/ae-editor/ae-editor.rb', line 5975
def do_find(_istart=nil)
@forwards = @cb_back.cget('onvalue') != @cb_back.cget('variable').value.to_i
_found = false
@idx1 = nil
@idx2 = nil
if @e_what.text.length > 0
update_combo(@e_what.text)
if !_istart && self.editor.text.index('insert')!=nil
_istart ='insert'
elsif defined?(@last_index)
_istart = @last_index
else
_istart = '1.0'
end
options = []
if !@forwards
options << 'backwards'
end
if @cb_reg.cget('onvalue')==@cb_reg.cget('variable').value.to_i
options << 'regexp'
end
if @cb_ignore_case.cget('onvalue')==@cb_ignore_case.cget('variable').value.to_i
options << 'nocase'
end
_index = self.editor.text.tksearch(options,@e_what.text,_istart)
if _index && _index.length>0
self.editor.text.see(_index)
_row, _col = _index.split('.')
_index_sel_end = _row.to_i.to_s+'.'+(_col.to_i+@e_what.text.length).to_i.to_s
if @forwards
@last_index= _index_sel_end
else
@last_index= _row.to_i.to_s+'.'+(_col.to_i-1).to_i.to_s
end
self.editor.text.tag_add('sel', _index,_index_sel_end)
self.editor.text.set_insert(_index)
@idx1 =_index
@idx2 =_index_sel_end
_found = true
@controller.chrono_bookmark_add(self.editor.file, _index)
else
_message = '"'+@e_what.value+'" not found'
TkDialog2.new('message'=>_message, 'buttons'=>['Ok']).show()
end
else
self.show()
end
self.editor.text.focus
return _found
end
|
#do_find_next ⇒ Object
6030
6031
6032
6033
6034
6035
|
# File 'ext/ae-editor/ae-editor.rb', line 6030
def do_find_next
if @idx1 != nil
self.editor.text.tag_remove('sel',@idx1,@idx2)
end
do_find(@last_index)
end
|
#do_replace ⇒ Object
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
|
# File 'ext/ae-editor/ae-editor.rb', line 5889
def do_replace
if do_find_next
_message = Arcadia.text('ext.editor.search.d.replace.msg'[@e_what.value, @e_with.value])
if TkDialog2.new('message'=>_message, 'buttons'=>['Yes','No']).show() == 0
self.editor.text.delete(@idx1,@idx2)
self.editor.text.insert(@idx1,@e_with.value)
self.editor.check_modify
end
end
end
|
#do_replace_all ⇒ Object
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
|
# File 'ext/ae-editor/ae-editor.rb', line 5900
def do_replace_all
while do_find_next
_message = Arcadia.text('ext.editor.search.d.replace.msg'[@e_what.value, @e_with.value])
_rc = TkDialog2.new('message'=>_message, 'buttons'=>['Yes','No','Annulla']).show()
if _rc == 0
self.editor.text.delete(@idx1,@idx2)
self.editor.text.insert(@idx1,@e_with.value)
self.editor.check_modify
elsif _rc == 2
break
end
end
end
|
#editor ⇒ Object
5925
5926
5927
5928
5929
5930
|
# File 'ext/ae-editor/ae-editor.rb', line 5925
def editor
if @editor_caller == nil
@editor_caller = @controller.raised
end
return @editor_caller
end
|
#go_line ⇒ Object
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
|
# File 'ext/ae-editor/ae-editor.rb', line 5937
def go_line
if @goto_line_dialog.e_line.value.length > 0
_row = @goto_line_dialog.e_line.value
_index = _row.strip+'.1'
self.editor.text.see(_index)
self.editor.text.tag_remove('selected','1.0','end')
self.editor.text.tag_add('selected',_index,_index+' lineend')
self.editor.text.set_insert(_index)
@controller.chrono_bookmark_add(self.editor.file, _index)
@goto_line_dialog.hide
end
end
|
#show ⇒ Object
5963
5964
5965
5966
|
# File 'ext/ae-editor/ae-editor.rb', line 5963
def show
super
use(@controller.raised)
end
|
#show_go_to_line_dialog ⇒ Object
5932
5933
5934
5935
|
# File 'ext/ae-editor/ae-editor.rb', line 5932
def show_go_to_line_dialog
use(@controller.raised)
@goto_line_dialog.show
end
|
#update_combo(_txt) ⇒ Object
5968
5969
5970
5971
5972
5973
|
# File 'ext/ae-editor/ae-editor.rb', line 5968
def update_combo(_txt)
values = @e_what.cget('values')
if (values != nil && !values.include?(_txt))
@e_what.insert('end', @e_what.value)
end
end
|
#use(_editor) ⇒ Object
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
|
# File 'ext/ae-editor/ae-editor.rb', line 5952
def use(_editor)
if (_editor != @editor_caller)
@last_index='insert'
@editor_caller = _editor
_title = '?'
_title = File.basename(_editor.file) if _editor.file
title(_title)
@goto_line_dialog.title(_title) if @goto_line_dialog
end
end
|
5914
5915
5916
5917
5918
5919
5920
5921
5922
|
# File 'ext/ae-editor/ae-editor.rb', line 5914
def widget_state
if (@e_what.value.length > 0) && (@e_with.value.length > 0)
@b_replace.configure('state'=>'active')
@b_replace_all.configure('state'=>'active')
else
@b_replace.configure('state'=>'disabled')
@b_replace_all.configure('state'=>'disabled')
end
end
|