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:
parent
9a6c901fc4
commit
5cd1282f21
5 changed files with 154 additions and 19 deletions
32
ChangeLog
32
ChangeLog
|
@ -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>
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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])
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue