diff options
-rw-r--r-- | MANIFEST | 2 | ||||
-rw-r--r-- | lib/tkbgerror.rb | 17 | ||||
-rw-r--r-- | lib/tkmngfocus.rb | 27 | ||||
-rw-r--r-- | lib/tkvirtevent.rb | 66 |
4 files changed, 112 insertions, 0 deletions
@@ -125,12 +125,14 @@ lib/thread.rb lib/thwait.rb lib/tk.rb lib/tkafter.rb +lib/tkbgerror.rb lib/tkcanvas.rb lib/tkclass.rb lib/tkdialog.rb lib/tkentry.rb lib/tkfont.rb lib/tkmenubar.rb +lib/tkmngfocus.rb lib/tkpalette.rb lib/tkscrollbox.rb lib/tktext.rb diff --git a/lib/tkbgerror.rb b/lib/tkbgerror.rb new file mode 100644 index 0000000000..8022077a3f --- /dev/null +++ b/lib/tkbgerror.rb @@ -0,0 +1,17 @@ +# +# tkbgerror -- bgerror ( tkerror ) module +# 1998/07/16 by Hidetoshi Nagai <nagai@ai.kyutech.ac.jp> +# +require 'tk' + +module TkBgError + extend Tk + + def bgerror(message) + tk_call 'bgerror', message + end + alias tkerror bgerror + alias show bgerror + + module_function :bgerror, :tkerror, :show +end diff --git a/lib/tkmngfocus.rb b/lib/tkmngfocus.rb new file mode 100644 index 0000000000..921fb646e7 --- /dev/null +++ b/lib/tkmngfocus.rb @@ -0,0 +1,27 @@ +# +# tkmngfocus.rb : methods for Tcl/Tk standard library 'focus.tcl' +# 1998/07/16 by Hidetoshi Nagai <nagai@ai.kyutech.ac.jp> +# +require 'tk' + +module TkManageFocus + extend Tk + + def TkManageFocus.followsMouse + tk_call 'tk_focusFollowsMouse' + end + + def TkManageFocus.next(window) + tk_call 'tk_focusNext', window + end + def focusNext + TkManageFocus.next(self) + end + + def TkManageFocus.prev(window) + tk_call 'tk_focusPrev', window + end + def focusPrev + TkManageFocus.prev(self) + end +end diff --git a/lib/tkvirtevent.rb b/lib/tkvirtevent.rb new file mode 100644 index 0000000000..0d100c2186 --- /dev/null +++ b/lib/tkvirtevent.rb @@ -0,0 +1,66 @@ +# +# tkvirtevent.rb : treats virtual events +# 1998/07/16 by Hidetoshi Nagai <nagai@ai.kyutech.ac.jp> +# +require 'tk' + +class TkVirtualEvent<TkObject + extend Tk + + TkVirturlEventID = [0] + TkVirturlEventTBL = {} + + def TkVirtualEvent.getobj(event) + obj = TkVirturlEventTBL[event] + obj ? obj : event + end + + def TkVirtualEvent.info + tk_call('event', 'info').split(/\s+/).filter{|seq| + TkVirtualEvent.getobj(seq[1..-2]) + } + end + + def initialize(*sequences) + @path = @id = format("<VirtEvent%.4d>", TkVirturlEventID[0]) + TkVirturlEventID[0] += 1 + add(*sequences) + end + + def add(*sequences) + if sequences != [] + tk_call('event', 'add', "<#{@id}>", + *(sequences.collect{|seq| "<#{tk_event_sequence(seq)}>"}) ) + TkVirturlEventTBL[@id] = self + end + self + end + + def delete(*sequences) + if sequences == [] + tk_call('event', 'delete', "<#{@id}>") + TkVirturlEventTBL[@id] = nil + else + tk_call('event', 'delete', "<#{@id}>", + *(sequences.collect{|seq| "<#{tk_event_sequence(seq)}>"}) ) + TkVirturlEventTBL[@id] = nil if info == [] + end + self + end + + def info + tk_call('event', 'info', "<#{@id}>").split(/\s+/).filter{|seq| + l = seq.scan(/<*[^<>]+>*/).filter{|subseq| + case (subseq) + when /^<<[^<>]+>>$/ + TkVirtualEvent.getobj(subseq[1..-2]) + when /^<[^<>]+>$/ + subseq[1..-2] + else + subseq.split('') + end + }.flatten + (l.size == 1) ? l[0] : l + } + end +end |