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, #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_sep, #create_frame, #head_buttons, #menu_button, #visible?
Constructor Details
#initialize(_frame, _controller) ⇒ Finder
Returns a new instance of Finder.
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
|
# File 'ext/ae-editor/ae-editor.rb', line 4512
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.
4511
4512
4513
|
# File 'ext/ae-editor/ae-editor.rb', line 4511
def e_what
@e_what
end
|
Instance Method Details
#do_find(_istart = nil) ⇒ Object
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
|
# File 'ext/ae-editor/ae-editor.rb', line 4642
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.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
4697
4698
4699
4700
4701
4702
|
# File 'ext/ae-editor/ae-editor.rb', line 4697
def do_find_next
if @idx1 != nil
self.editor.text.tag_remove('sel',@idx1,@idx2)
end
do_find(@last_index)
end
|
#do_replace ⇒ Object
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
|
# File 'ext/ae-editor/ae-editor.rb', line 4557
def do_replace
if do_find_next
_message = 'Replace "'+@e_what.value+'" with "'+@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
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
|
# File 'ext/ae-editor/ae-editor.rb', line 4568
def do_replace_all
while do_find_next
_message = 'Replace "'+@e_what.value+'" with "'+@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
4593
4594
4595
4596
4597
4598
|
# File 'ext/ae-editor/ae-editor.rb', line 4593
def editor
if @editor_caller == nil
@editor_caller = @controller.raised
end
return @editor_caller
end
|
#go_line ⇒ Object
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
|
# File 'ext/ae-editor/ae-editor.rb', line 4605
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.bookmark_add(self.editor.file, _index)
@goto_line_dialog.hide
end
end
|
#show ⇒ Object
4630
4631
4632
4633
|
# File 'ext/ae-editor/ae-editor.rb', line 4630
def show
super
use(@controller.raised)
end
|
#show_go_to_line_dialog ⇒ Object
4600
4601
4602
4603
|
# File 'ext/ae-editor/ae-editor.rb', line 4600
def show_go_to_line_dialog
use(@controller.raised)
@goto_line_dialog.show
end
|
#update_combo(_txt) ⇒ Object
4635
4636
4637
4638
4639
4640
|
# File 'ext/ae-editor/ae-editor.rb', line 4635
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
4620
4621
4622
4623
4624
4625
4626
4627
4628
|
# File 'ext/ae-editor/ae-editor.rb', line 4620
def use(_editor)
if (_editor != @editor_caller)
@last_index='insert'
@editor_caller = _editor
_title = File.basename(_editor.file)
title(_title)
@goto_line_dialog.title(_title) if @goto_line_dialog
end
end
|
4582
4583
4584
4585
4586
4587
4588
4589
4590
|
# File 'ext/ae-editor/ae-editor.rb', line 4582
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
|