summaryrefslogtreecommitdiff
path: root/ext/tk/lib/tk
diff options
context:
space:
mode:
Diffstat (limited to 'ext/tk/lib/tk')
-rw-r--r--ext/tk/lib/tk/autoload.rb1
-rw-r--r--ext/tk/lib/tk/event.rb1
-rw-r--r--ext/tk/lib/tk/text.rb92
-rw-r--r--ext/tk/lib/tk/virtevent.rb15
4 files changed, 109 insertions, 0 deletions
diff --git a/ext/tk/lib/tk/autoload.rb b/ext/tk/lib/tk/autoload.rb
index 73544e1d23f..6b3773f4ea4 100644
--- a/ext/tk/lib/tk/autoload.rb
+++ b/ext/tk/lib/tk/autoload.rb
@@ -162,6 +162,7 @@ autoload :TkVariable, 'tk/variable'
autoload :TkVarAccess, 'tk/variable'
autoload :TkVirtualEvent, 'tk/virtevent'
+autoload :TkNamedVirtualEvent,'tk/virtevent'
autoload :TkWinfo, 'tk/winfo'
diff --git a/ext/tk/lib/tk/event.rb b/ext/tk/lib/tk/event.rb
index b538bfd63db..af05dc96de7 100644
--- a/ext/tk/lib/tk/event.rb
+++ b/ext/tk/lib/tk/event.rb
@@ -384,6 +384,7 @@ module TkEvent
=end
ALIAS_TBL = {
:button => :num,
+ :data => :detail,
:delta => :wheel_delta,
:root => :rootwin_id,
:rootx => :x_root,
diff --git a/ext/tk/lib/tk/text.rb b/ext/tk/lib/tk/text.rb
index bd5de278cf2..49d4b5625b7 100644
--- a/ext/tk/lib/tk/text.rb
+++ b/ext/tk/lib/tk/text.rb
@@ -103,6 +103,58 @@ class TkText<TkTextWin
end
alias char chars
+ def display_chars(mod)
+ # Tk8.5 feature
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
+ if mod < 0
+ TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display chars')
+ else
+ TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display chars')
+ end
+ end
+ alias display_char display_chars
+
+ def any_chars(mod)
+ # Tk8.5 feature
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
+ if mod < 0
+ TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any chars')
+ else
+ TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any chars')
+ end
+ end
+ alias any_char any_chars
+
+ def indices(mod)
+ # Tk8.5 feature
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
+ if mod < 0
+ TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' indices')
+ else
+ TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' indices')
+ end
+ end
+
+ def display_indices(mod)
+ # Tk8.5 feature
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
+ if mod < 0
+ TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display indices')
+ else
+ TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display indices')
+ end
+ end
+
+ def any_indices(mod)
+ # Tk8.5 feature
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
+ if mod < 0
+ TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any indices')
+ else
+ TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any indices')
+ end
+ end
+
def lines(mod)
fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
if mod < 0
@@ -113,6 +165,28 @@ class TkText<TkTextWin
end
alias line lines
+ def display_lines(mod)
+ # Tk8.5 feature
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
+ if mod < 0
+ TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display_lines')
+ else
+ TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display lines')
+ end
+ end
+ alias display_line display_lines
+
+ def any_lines(mod)
+ # Tk8.5 feature
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
+ if mod < 0
+ TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any_lines')
+ else
+ TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any lines')
+ end
+ end
+ alias any_line any_lines
+
def linestart
TkText::IndexString.new(String.new(id) << ' linestart')
end
@@ -120,12 +194,30 @@ class TkText<TkTextWin
TkText::IndexString.new(String.new(id) << ' lineend')
end
+ def display_linestart
+ # Tk8.5 feature
+ TkText::IndexString.new(String.new(id) << ' display linestart')
+ end
+ def display_lineend
+ # Tk8.5 feature
+ TkText::IndexString.new(String.new(id) << ' display lineend')
+ end
+
def wordstart
TkText::IndexString.new(String.new(id) << ' wordstart')
end
def wordend
TkText::IndexString.new(String.new(id) << ' wordend')
end
+
+ def display_wordstart
+ # Tk8.5 feature
+ TkText::IndexString.new(String.new(id) << ' display wordstart')
+ end
+ def display_wordend
+ # Tk8.5 feature
+ TkText::IndexString.new(String.new(id) << ' display wordend')
+ end
end
class IndexString < String
diff --git a/ext/tk/lib/tk/virtevent.rb b/ext/tk/lib/tk/virtevent.rb
index a1a94d3c551..d47e80aecda 100644
--- a/ext/tk/lib/tk/virtevent.rb
+++ b/ext/tk/lib/tk/virtevent.rb
@@ -15,6 +15,19 @@ class TkVirtualEvent<TkObject
TkCore::INTERP.init_ip_env{ TkVirtualEventTBL.clear }
class PreDefVirtEvent<self
+ def self.new(event, *sequences)
+ if event =~ /^<(<.*>)>$/
+ event = $1
+ elsif event !~ /^<.*>$/
+ event = '<' + event + '>'
+ end
+ if TkVirtualEvent::TkVirtualEventTBL.has_key?(event)
+ TkVirtualEvent::TkVirtualEventTBL[event]
+ else
+ super(event, *sequences)
+ end
+ end
+
def initialize(event, *sequences)
@path = @id = event
TkVirtualEvent::TkVirtualEventTBL[@id] = self
@@ -89,3 +102,5 @@ class TkVirtualEvent<TkObject
}
end
end
+
+TkNamedVirtualEvent = TkVirtualEvent::PreDefVirtEvent