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.
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
|
# File 'ext/ae-editor/ae-editor.rb', line 5430
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.
5429
5430
5431
|
# File 'ext/ae-editor/ae-editor.rb', line 5429
def e_what
@e_what
end
|
Instance Method Details
#do_find(_istart = nil) ⇒ Object
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
|
# File 'ext/ae-editor/ae-editor.rb', line 5561
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
5616
5617
5618
5619
5620
5621
|
# File 'ext/ae-editor/ae-editor.rb', line 5616
def do_find_next
if @idx1 != nil
self.editor.text.tag_remove('sel',@idx1,@idx2)
end
do_find(@last_index)
end
|
#do_replace ⇒ Object
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
|
# File 'ext/ae-editor/ae-editor.rb', line 5475
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
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
|
# File 'ext/ae-editor/ae-editor.rb', line 5486
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
5511
5512
5513
5514
5515
5516
|
# File 'ext/ae-editor/ae-editor.rb', line 5511
def editor
if @editor_caller == nil
@editor_caller = @controller.raised
end
return @editor_caller
end
|
#go_line ⇒ Object
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
|
# File 'ext/ae-editor/ae-editor.rb', line 5523
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
5549
5550
5551
5552
|
# File 'ext/ae-editor/ae-editor.rb', line 5549
def show
super
use(@controller.raised)
end
|
#show_go_to_line_dialog ⇒ Object
5518
5519
5520
5521
|
# File 'ext/ae-editor/ae-editor.rb', line 5518
def show_go_to_line_dialog
use(@controller.raised)
@goto_line_dialog.show
end
|
#update_combo(_txt) ⇒ Object
5554
5555
5556
5557
5558
5559
|
# File 'ext/ae-editor/ae-editor.rb', line 5554
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
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
|
# File 'ext/ae-editor/ae-editor.rb', line 5538
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
|
5500
5501
5502
5503
5504
5505
5506
5507
5508
|
# File 'ext/ae-editor/ae-editor.rb', line 5500
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
|