Class: FocusEventManager
- Inherits:
-
Object
- Object
- FocusEventManager
- Defined in:
- lib/a-core.rb
Instance Attribute Summary collapse
-
#last_focus_widget ⇒ Object
readonly
Returns the value of attribute last_focus_widget.
Instance Method Summary collapse
- #_replace_sel(_focused_widget, _method) ⇒ Object
- #do_copy(_focused_widget) ⇒ Object
- #do_cut(_focused_widget) ⇒ Object
- #do_invert_selection(_focused_widget) ⇒ Object
- #do_lower_case(_focused_widget) ⇒ Object
- #do_paste(_focused_widget) ⇒ Object
- #do_redo(_focused_widget) ⇒ Object
- #do_select_all(_focused_widget) ⇒ Object
- #do_undo(_focused_widget) ⇒ Object
- #do_upper_case(_focused_widget) ⇒ Object
-
#initialize ⇒ FocusEventManager
constructor
A new instance of FocusEventManager.
- #on_focus(_event) ⇒ Object
- #on_input(_event) ⇒ Object
Constructor Details
#initialize ⇒ FocusEventManager
Returns a new instance of FocusEventManager.
3850 3851 3852 3853 |
# File 'lib/a-core.rb', line 3850 def initialize Arcadia.attach_listener(self, FocusEvent) Arcadia.attach_listener(self, InputEvent) end |
Instance Attribute Details
#last_focus_widget ⇒ Object (readonly)
Returns the value of attribute last_focus_widget.
3849 3850 3851 |
# File 'lib/a-core.rb', line 3849 def @last_focus_widget end |
Instance Method Details
#_replace_sel(_focused_widget, _method) ⇒ Object
3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 |
# File 'lib/a-core.rb', line 3974 def _replace_sel(, _method) if .respond_to?(:tag_ranges) r = .tag_ranges('sel') if .respond_to?(:get) && r && r[0] target_text = .get(r[0][0],r[0][1]) if target_text .delete(r[0][0],r[0][1]) .insert(r[0][0],target_text.send(_method)) end end elsif .kind_of?(Tk::Entry) if .selection_present i1= .index("sel.first") i2= .index("sel.last") target_text = .value[i1.to_i..i2.to_i-1] .delete(i1,i2) .insert(i1,target_text.send(_method)) end end end |
#do_copy(_focused_widget) ⇒ Object
3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 |
# File 'lib/a-core.rb', line 3905 def do_copy() if .respond_to?(:text_copy) .text_copy elsif .kind_of?(Tk::Entry) if .selection_present i1= .index("sel.first") i2= .index("sel.last") TkClipboard::set(.value[i1.to_i..i2.to_i-1]) end end end |
#do_cut(_focused_widget) ⇒ Object
3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 |
# File 'lib/a-core.rb', line 3892 def do_cut() if .respond_to?(:text_cut) .text_cut elsif .kind_of?(Tk::Entry) if .selection_present i1= .index("sel.first") i2= .index("sel.last") TkClipboard::set(.value[i1.to_i..i2.to_i-1]) .delete(i1,i2) end end end |
#do_invert_selection(_focused_widget) ⇒ Object
3950 3951 3952 3953 3954 3955 3956 |
# File 'lib/a-core.rb', line 3950 def do_invert_selection() if .respond_to?(:tag_ranges) r = .tag_ranges('sel') .tag_add('sel','1.0','end') if .respond_to?(:tag_add) .tag_remove('sel',r[0][0],r[0][1]) if .respond_to?(:tag_remove) && r && r[0] end end |
#do_lower_case(_focused_widget) ⇒ Object
3966 3967 3968 3969 3970 3971 3972 |
# File 'lib/a-core.rb', line 3966 def do_lower_case() if .respond_to?(:do_lower_case) .do_lower_case else _replace_sel(, :downcase) end end |
#do_paste(_focused_widget) ⇒ Object
3917 3918 3919 3920 3921 3922 3923 |
# File 'lib/a-core.rb', line 3917 def do_paste() if .respond_to?(:text_paste) .text_paste elsif .kind_of?(Tk::Entry) .insert(.index("insert"), TkClipboard::get) end end |
#do_redo(_focused_widget) ⇒ Object
3933 3934 3935 3936 3937 3938 3939 |
# File 'lib/a-core.rb', line 3933 def do_redo() begin .edit_redo if .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) ⇒ Object
3941 3942 3943 3944 3945 3946 3947 3948 |
# File 'lib/a-core.rb', line 3941 def do_select_all() if .respond_to?(:tag_add) .tag_add('sel','1.0','end') elsif .kind_of?(Tk::Entry) .selection_from('0') .selection_to('end') end end |
#do_undo(_focused_widget) ⇒ Object
3925 3926 3927 3928 3929 3930 3931 |
# File 'lib/a-core.rb', line 3925 def do_undo() begin .edit_undo if .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) ⇒ Object
3958 3959 3960 3961 3962 3963 3964 |
# File 'lib/a-core.rb', line 3958 def do_upper_case() if .respond_to?(:do_upper_case) .do_upper_case else _replace_sel(, :upcase) end end |
#on_focus(_event) ⇒ Object
3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 |
# File 'lib/a-core.rb', line 3864 def on_focus(_event) if @last_focus_widget _event. = @last_focus_widget else _event.=Tk.focus end case _event when CutTextEvent do_cut(_event.) when CopyTextEvent do_copy(_event.) when PasteTextEvent do_paste(_event.) when UndoTextEvent do_undo(_event.) when RedoTextEvent do_redo(_event.) when SelectAllTextEvent do_select_all(_event.) when InvertSelectionTextEvent do_invert_selection(_event.) when UpperCaseTextEvent do_upper_case(_event.) when LowerCaseTextEvent do_lower_case(_event.) end end |
#on_input(_event) ⇒ Object
3855 3856 3857 3858 3859 3860 3861 3862 |
# File 'lib/a-core.rb', line 3855 def on_input(_event) case _event when InputEnterEvent @last_focus_widget = _event.receiver when InputExitEvent @last_focus_widget = nil end end |