1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/tk/lib/multi-tk.rb: supports new features of Tcl/Tk8.5a2

* ext/tk/lib/tk/clock.rb: ditto
* ext/tk/lib/tk/text.rb: ditto
* ext/tk/lib/tk/panedwindow.rb: ditto


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7610 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nagai 2004-12-20 05:10:59 +00:00
parent 9a6c901fc4
commit 5cd1282f21
5 changed files with 154 additions and 19 deletions

View file

@ -1,3 +1,13 @@
Mon Dec 20 14:07:02 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/multi-tk.rb: supports new features of Tcl/Tk8.5a2
* ext/tk/lib/tk/clock.rb: ditto
* ext/tk/lib/tk/text.rb: ditto
* ext/tk/lib/tk/panedwindow.rb: ditto
Mon Dec 20 10:51:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (special_local_set): prevent the parser object from GC.
@ -51,34 +61,34 @@ Fri Dec 17 16:28:12 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/event.rb: fix error on require process
* ext/tk/lib/font.rb: fix abnormal termination error on Windows
* ext/tk/lib/tk/font.rb: fix abnormal termination error on Windows
* ext/tk/lib/tk/virtevent.rb: TkVirtualEvent::PreDefVirtEvent.new()
accepts event-sequence arguments
* ext/tk/lib/text.rb: fail to dump embedded images
* ext/tk/lib/tk/text.rb: fail to dump embedded images
* ext/tk/lib/text.rb: tag_nextrange and tag_prevrange returns wrong
* ext/tk/lib/tk/text.rb: tag_nextrange and tag_prevrange returns wrong
types of values
* ext/tk/lib/texttag.rb: nextrange and prevrange returns wrong
* ext/tk/lib/tk/texttag.rb: nextrange and prevrange returns wrong
types of values
* ext/tk/lib/text.rb: add TkText::IndexModMethods module and
* ext/tk/lib/tk/text.rb: add TkText::IndexModMethods module and
TkText::IndexString class to treat text index modifiers
* ext/tk/lib/texttag.rb: use TkText::IndexModMethods module
* ext/tk/lib/tk/texttag.rb: use TkText::IndexModMethods module
* ext/tk/lib/textmark.rb: ditto
* ext/tk/lib/tk/textmark.rb: ditto
* ext/tk/lib/textimage.rb: ditto
* ext/tk/lib/tk/textimage.rb: ditto
* ext/tk/lib/textwindow.rb: ditto
* ext/tk/lib/tk/textwindow.rb: ditto
* ext/tk/lib/textimage.rb: wrong gravity of text mark for embedded
* ext/tk/lib/tk/textimage.rb: wrong gravity of text mark for embedded
image
* ext/tk/lib/textwindow.rb: wrong gravity of text mark for
* ext/tk/lib/tk/textwindow.rb: wrong gravity of text mark for
embedded window
Fri Dec 17 13:33:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>

View file

@ -2056,7 +2056,7 @@ class MultiTkIp
elsif slave.kind_of?(String)
slave
else
cmd_name.to_s
slave.to_s
end
end
private :_slavearg
@ -2156,15 +2156,37 @@ class MultiTkIp
end
def invoke_hidden(slave, cmd, *args)
@interp._invoke('interp', 'invokehidden', _slavearg(slave), cmd, *args)
if args[-1].kind_of?(Hash)
keys = _symbolkey2str(args.pop)
else
keys = []
end
if Tk::TCL_MAJOR_VERSION > 8 ||
(Tk::TCL_MAJOR_VERSION == 8 && Tk::TCL_MINOR_VERSION >= 5)
keys << '--'
end
keys << _slavearg(slave) << cmd
keys.concat(args)
@interp._invoke('interp', 'invokehidden', *keys)
end
def self.invoke_hidden(slave, cmd, *args)
__getip.invoke_hidden(slave, cmd, *args)
end
def invoke_hidden_on_global(slave, cmd, *args)
@interp._invoke('interp', 'invokehidden', _slavearg(slave),
'-global', cmd, *args)
if args[-1].kind_of?(Hash)
keys = _symbolkey2str(args.pop)
else
keys = []
end
keys << '-global'
if Tk::TCL_MAJOR_VERSION > 8 ||
(Tk::TCL_MAJOR_VERSION == 8 && Tk::TCL_MINOR_VERSION >= 5)
keys << '--'
end
keys << _slavearg(slave) << cmd
keys.concat(args)
@interp._invoke('interp', 'invokehidden', *keys)
end
def self.invoke_hidden_on_global(slave, cmd, *args)
__getip.invoke_hidden_on_global(slave, cmd, *args)
@ -2179,6 +2201,56 @@ class MultiTkIp
self
end
def set_bgerror_handler(cmd = Proc.new, slave = nil, &b)
unless TkComm._callback_entry?(cmd)
unless slave
slave = cmd
cmd = Proc.new(&b)
end
end
slave = '' unless slave
@interp._invoke('interp', 'bgerror', _slavearg(slave), cmd)
end
def self.bgerror(cmd = Proc.new, slave = nil, &b)
__getip.bgerror(cmd, slave, &b)
end
def get_bgerror_handler(slave = '')
procedure(@interp._invoke('interp', 'bgerror', _slavearg(slave)))
end
def self.bgerror(slave = '')
__getip.bgerror(slave)
end
def set_limit(limit_type, slave = '', opts = {})
@interp._invoke('interp', 'limit', _slavearg(slave), limit_type, opts)
end
def self.set_limit(limit_type, slave = '', opts = {})
__getip.set_limit(limit_type, slave, opts)
end
def get_limit(limit_type, slave = '', slot = nil)
if slot
num_or_str(@interp._invoke('interp', 'limit', _slavearg(slave),
limit_type, slot))
else
l = @interp._split_tklist(@interp._invoke('interp', 'limit',
_slavearg(slave), limit_type))
r = {}
until l.empty?
key = l.shift[1..-1]
val = l.shift
val = num_or_str(val) if val
r[key] = val
end
r
end
end
def self.get_limit(limit_type, slave = '', slot = nil)
__getip.get_limit(limit_type, slave, slot)
end
def recursion_limit(slave = '', limit = None)
number(@interp._invoke('interp', 'recursionlimit',
_slavearg(slave), limit))

View file

@ -5,6 +5,10 @@ require 'tk'
module Tk
module Clock
def self.add(clk, *args)
tk_call_without_enc('clock','add', clk, *args).to_i
end
def self.clicks(ms=nil)
case ms
when nil
@ -53,5 +57,11 @@ module Tk
def self.seconds
tk_call_without_enc('clock','seconds').to_i
end
def self.milliseconds
tk_call_without_enc('clock','milliseconds').to_i
end
def self.microseconds
tk_call_without_enc('clock','microseconds').to_i
end
end
end

View file

@ -110,6 +110,10 @@ class TkPanedWindow<TkWindow
conf = tk_split_list(tk_send_without_enc('paneconfigure',
win, "-#{key}"))
conf[0] = conf[0][1..-1]
if conf[0] == 'hide'
conf[3] = bool(conf[3]) unless conf[3].empty?
conf[4] = bool(conf[4]) unless conf[4].empty?
end
conf
else
tk_split_simplelist(tk_send_without_enc('paneconfigure',
@ -117,14 +121,18 @@ class TkPanedWindow<TkWindow
conf = tk_split_simplelist(conflist)
conf[0] = conf[0][1..-1]
if conf[3]
if conf[3].index('{')
if conf[0] == 'hide'
conf[3] = bool(conf[3]) unless conf[3].empty?
elsif conf[3].index('{')
conf[3] = tk_split_list(conf[3])
else
conf[3] = tk_tcl2ruby(conf[3])
end
end
if conf[4]
if conf[4].index('{')
if conf[0] == 'hide'
conf[4] = bool(conf[4]) unless conf[4].empty?
elsif conf[4].index('{')
conf[4] = tk_split_list(conf[4])
else
conf[4] = tk_tcl2ruby(conf[4])
@ -141,6 +149,10 @@ class TkPanedWindow<TkWindow
conf = tk_split_list(tk_send_without_enc('paneconfigure',
win, "-#{key}"))
key = conf.shift[1..-1]
if key == 'hide'
conf[2] = bool(conf[2]) unless conf[2].empty?
conf[3] = bool(conf[3]) unless conf[3].empty?
end
{ key => conf }
else
ret = {}
@ -149,14 +161,18 @@ class TkPanedWindow<TkWindow
conf = tk_split_simplelist(conflist)
key = conf.shift[1..-1]
if key
if conf[2].index('{')
if key == 'hide'
conf[2] = bool(conf[2]) unless conf[2].empty?
elsif conf[2].index('{')
conf[2] = tk_split_list(conf[2])
else
conf[2] = tk_tcl2ruby(conf[2])
end
end
if conf[3]
if conf[3].index('{')
if key == 'hide'
conf[3] = bool(conf[3]) unless conf[3].empty?
elsif conf[3].index('{')
conf[3] = tk_split_list(conf[3])
else
conf[3] = tk_tcl2ruby(conf[3])

View file

@ -477,6 +477,11 @@ class TkText<TkTextWin
info
end
def peer_names()
# Tk8.5 feature
list(tk_send_without_enc('peer', 'names'))
end
def replace(idx1, idx2, *opts)
tk_send('replace', idx1, idx2, *opts)
self
@ -1373,3 +1378,25 @@ class TkText<TkTextWin
dump(['image'], *index, &block)
end
end
#######################################
class TkText::Peer < TkText
# Tk8.5 feature
def initialize(text, parent=nil, keys={})
unless text.kind_of?(TkText)
fail ArgumentError, "TkText is expected for 1st argument"
end
@src_text = text
super(parent, keys)
end
def create_self(keys)
if keys and keys != None
tk_call_without_enc(@src_text.path, 'peer', 'create', @path)
else
tk_call_without_enc(@src_text.path, 'peer', 'create', @path)
end
end
private :create_self
end