class FocusEventManager
Attributes
last_focus_widget[R]
Public Class Methods
new()
click to toggle source
# File lib/a-core.rb, line 4445 def initialize Arcadia.attach_listener(self, FocusEvent) Arcadia.attach_listener(self, InputEvent) end
Public Instance Methods
_replace_sel(_focused_widget, _method)
click to toggle source
# File lib/a-core.rb, line 4569 def _replace_sel(_focused_widget, _method) if _focused_widget.respond_to?(:tag_ranges) r = _focused_widget.tag_ranges('sel') if _focused_widget.respond_to?(:get) && r && r[0] target_text = _focused_widget.get(r[0][0],r[0][1]) if target_text _focused_widget.delete(r[0][0],r[0][1]) _focused_widget.insert(r[0][0],target_text.send(_method)) end end elsif _focused_widget.kind_of?(Tk::Entry) if _focused_widget.selection_present i1= _focused_widget.index("sel.first") i2= _focused_widget.index("sel.last") target_text = _focused_widget.value[i1.to_i..i2.to_i-1] _focused_widget.delete(i1,i2) _focused_widget.insert(i1,target_text.send(_method)) end end end
do_copy(_focused_widget)
click to toggle source
# File lib/a-core.rb, line 4500 def do_copy(_focused_widget) if _focused_widget.respond_to?(:text_copy) _focused_widget.text_copy elsif _focused_widget.kind_of?(Tk::Entry) if _focused_widget.selection_present i1= _focused_widget.index("sel.first") i2= _focused_widget.index("sel.last") TkClipboard::set(_focused_widget.value[i1.to_i..i2.to_i-1]) end end end
do_cut(_focused_widget)
click to toggle source
# File lib/a-core.rb, line 4487 def do_cut(_focused_widget) if _focused_widget.respond_to?(:text_cut) _focused_widget.text_cut elsif _focused_widget.kind_of?(Tk::Entry) if _focused_widget.selection_present i1= _focused_widget.index("sel.first") i2= _focused_widget.index("sel.last") TkClipboard::set(_focused_widget.value[i1.to_i..i2.to_i-1]) _focused_widget.delete(i1,i2) end end end
do_invert_selection(_focused_widget)
click to toggle source
# File lib/a-core.rb, line 4545 def do_invert_selection(_focused_widget) if _focused_widget.respond_to?(:tag_ranges) r = _focused_widget.tag_ranges('sel') _focused_widget.tag_add('sel','1.0','end') if _focused_widget.respond_to?(:tag_add) _focused_widget.tag_remove('sel',r[0][0],r[0][1]) if _focused_widget.respond_to?(:tag_remove) && r && r[0] end end
do_lower_case(_focused_widget)
click to toggle source
# File lib/a-core.rb, line 4561 def do_lower_case(_focused_widget) if _focused_widget.respond_to?(:do_lower_case) _focused_widget.do_lower_case else _replace_sel(_focused_widget, :downcase) end end
do_paste(_focused_widget)
click to toggle source
# File lib/a-core.rb, line 4512 def do_paste(_focused_widget) if _focused_widget.respond_to?(:text_paste) _focused_widget.text_paste elsif _focused_widget.kind_of?(Tk::Entry) _focused_widget.insert(_focused_widget.index("insert"), TkClipboard::get) end end
do_redo(_focused_widget)
click to toggle source
# File lib/a-core.rb, line 4528 def do_redo(_focused_widget) begin _focused_widget.edit_redo if _focused_widget.respond_to?(:edit_redo) rescue RuntimeError => e throw e unless e.to_s.include? "nothing to redo" # this is ok--we've done redo back to the beginning end end
do_select_all(_focused_widget)
click to toggle source
# File lib/a-core.rb, line 4536 def do_select_all(_focused_widget) if _focused_widget.respond_to?(:tag_add) _focused_widget.tag_add('sel','1.0','end') elsif _focused_widget.kind_of?(Tk::Entry) _focused_widget.selection_from('0') _focused_widget.selection_to('end') end end
do_undo(_focused_widget)
click to toggle source
# File lib/a-core.rb, line 4520 def do_undo(_focused_widget) begin _focused_widget.edit_undo if _focused_widget.respond_to?(:edit_undo) rescue RuntimeError => e throw e unless e.to_s.include? "nothing to undo" # this is ok--we've done undo back to the beginning end end
do_upper_case(_focused_widget)
click to toggle source
# File lib/a-core.rb, line 4553 def do_upper_case(_focused_widget) if _focused_widget.respond_to?(:do_upper_case) _focused_widget.do_upper_case else _replace_sel(_focused_widget, :upcase) end end
on_focus(_event)
click to toggle source
# File lib/a-core.rb, line 4459 def on_focus(_event) if @last_focus_widget _event.focus_widget = @last_focus_widget else _event.focus_widget=Tk.focus end case _event when CutTextEvent do_cut(_event.focus_widget) when CopyTextEvent do_copy(_event.focus_widget) when PasteTextEvent do_paste(_event.focus_widget) when UndoTextEvent do_undo(_event.focus_widget) when RedoTextEvent do_redo(_event.focus_widget) when SelectAllTextEvent do_select_all(_event.focus_widget) when InvertSelectionTextEvent do_invert_selection(_event.focus_widget) when UpperCaseTextEvent do_upper_case(_event.focus_widget) when LowerCaseTextEvent do_lower_case(_event.focus_widget) end end
on_input(_event)
click to toggle source
# File lib/a-core.rb, line 4450 def on_input(_event) case _event when InputEnterEvent @last_focus_widget = _event.receiver when InputExitEvent @last_focus_widget = nil end end