tk 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +2 -0
- data/MANUAL_tcltklib.eng +0 -2
- data/MANUAL_tcltklib.ja +0 -2
- data/README.ActiveTcl +1 -1
- data/README.md +43 -0
- data/ext/tk/extconf.rb +4 -2
- data/ext/tk/old-extconf.rb +0 -1
- data/ext/tk/tcltklib.c +46 -148
- data/ext/tk/tkutil/extconf.rb +0 -2
- data/ext/tk/tkutil/tkutil.c +6 -9
- data/lib/multi-tk.rb +95 -315
- data/lib/remote-tk.rb +6 -23
- data/lib/tk.rb +41 -122
- data/lib/tk/bgerror.rb +2 -2
- data/lib/tk/bindtag.rb +1 -1
- data/lib/tk/canvas.rb +6 -14
- data/lib/tk/canvastag.rb +8 -16
- data/lib/tk/font.rb +1 -1
- data/lib/tk/fontchooser.rb +1 -1
- data/lib/tk/image.rb +1 -1
- data/lib/tk/menu.rb +4 -4
- data/lib/tk/msgcat.rb +5 -5
- data/lib/tk/namespace.rb +12 -32
- data/lib/tk/optiondb.rb +3 -73
- data/lib/tk/scale.rb +2 -2
- data/lib/tk/scrollable.rb +4 -2
- data/lib/tk/selection.rb +5 -4
- data/lib/tk/text.rb +8 -16
- data/lib/tk/textmark.rb +1 -1
- data/lib/tk/texttag.rb +7 -15
- data/lib/tk/timer.rb +2 -2
- data/lib/tk/tk_mac.rb +18 -18
- data/lib/tk/validation.rb +4 -35
- data/lib/tk/variable.rb +7 -5
- data/lib/tk/virtevent.rb +1 -1
- data/lib/tkextlib/blt/barchart.rb +0 -17
- data/lib/tkextlib/blt/bitmap.rb +1 -1
- data/lib/tkextlib/blt/component.rb +34 -34
- data/lib/tkextlib/blt/dragdrop.rb +6 -6
- data/lib/tkextlib/blt/graph.rb +0 -17
- data/lib/tkextlib/blt/stripchart.rb +0 -17
- data/lib/tkextlib/blt/tabset.rb +16 -31
- data/lib/tkextlib/blt/tree.rb +5 -5
- data/lib/tkextlib/blt/treeview.rb +14 -14
- data/lib/tkextlib/blt/watch.rb +1 -1
- data/lib/tkextlib/bwidget/labelentry.rb +6 -14
- data/lib/tkextlib/bwidget/listbox.rb +13 -29
- data/lib/tkextlib/bwidget/notebook.rb +6 -14
- data/lib/tkextlib/bwidget/spinbox.rb +6 -14
- data/lib/tkextlib/bwidget/tree.rb +19 -35
- data/lib/tkextlib/itcl/incr_tcl.rb +2 -2
- data/lib/tkextlib/itk/incr_tk.rb +7 -29
- data/lib/tkextlib/iwidgets/calendar.rb +0 -15
- data/lib/tkextlib/iwidgets/entryfield.rb +0 -21
- data/lib/tkextlib/iwidgets/notebook.rb +2 -2
- data/lib/tkextlib/iwidgets/scrolledcanvas.rb +6 -14
- data/lib/tkextlib/iwidgets/tabnotebook.rb +2 -2
- data/lib/tkextlib/tcllib/ctext.rb +2 -2
- data/lib/tkextlib/tcllib/plotchart.rb +5 -5
- data/lib/tkextlib/tcllib/validator.rb +6 -6
- data/lib/tkextlib/tile.rb +1 -1
- data/lib/tkextlib/tile/style.rb +1 -1
- data/lib/tkextlib/tile/treeview.rb +13 -20
- data/lib/tkextlib/tkDND/tkdnd.rb +6 -22
- data/lib/tkextlib/tkHTML/htmlwidget.rb +1 -1
- data/lib/tkextlib/tktable/tktable.rb +1 -1
- data/lib/tkextlib/treectrl/tktreectrl.rb +12 -20
- data/lib/tkextlib/vu/pie.rb +1 -1
- data/sample/binding_sample.rb +2 -2
- data/sample/cmd_res_test.rb +1 -1
- data/sample/demos-en/widget +21 -21
- data/sample/demos-jp/widget +4 -4
- data/sample/multi-ip_sample.rb +0 -3
- data/sample/multi-ip_sample2.rb +1 -1
- data/sample/resource.en +3 -3
- data/sample/resource.ja +3 -3
- data/sample/tcltklib/sample1.rb +2 -2
- data/sample/tkballoonhelp.rb +2 -2
- data/sample/tkextlib/tkHTML/ss.rb +0 -6
- data/sample/tkmulticolumnlist.rb +2 -2
- data/sample/tkmultilistframe.rb +2 -2
- data/sample/tkoptdb.rb +14 -16
- data/tk.gemspec +4 -4
- metadata +6 -13
- data/ChangeLog.tkextlib +0 -949
- data/old-README.tcltklib.ja +0 -159
- data/sample/binstr_usage.rb +0 -46
- data/sample/remote-ip_sample2.rb +0 -57
- data/sample/safe-tk.rb +0 -132
- data/sample/tkoptdb-safeTk.rb +0 -74
- data/sample/tktree.rb +0 -104
- data/sample/tktree.tcl +0 -305
data/lib/remote-tk.rb
CHANGED
@@ -13,8 +13,8 @@ class MultiTkIp; end
|
|
13
13
|
class RemoteTkIp < MultiTkIp; end
|
14
14
|
|
15
15
|
class MultiTkIp
|
16
|
-
@@IP_TABLE =
|
17
|
-
@@TK_TABLE_LIST =
|
16
|
+
@@IP_TABLE = {} unless defined?(@@IP_TABLE)
|
17
|
+
@@TK_TABLE_LIST = [] unless defined?(@@TK_TABLE_LIST)
|
18
18
|
def self._IP_TABLE; @@IP_TABLE; end
|
19
19
|
def self._TK_TABLE_LIST; @@TK_TABLE_LIST; end
|
20
20
|
|
@@ -87,39 +87,25 @@ class RemoteTkIp
|
|
87
87
|
@slave_ip_tbl = {}
|
88
88
|
@slave_ip_top = {}
|
89
89
|
|
90
|
-
@force_default_encoding ||=
|
91
|
-
@encoding ||=
|
90
|
+
@force_default_encoding ||= [false]
|
91
|
+
@encoding ||= [nil]
|
92
92
|
def @encoding.to_s; self.join(nil); end
|
93
93
|
|
94
|
-
TkUtil.untrust(@tk_windows) unless @tk_windows.tainted?
|
95
|
-
TkUtil.untrust(@tk_table_list) unless @tk_table_list.tainted?
|
96
|
-
TkUtil.untrust(@slave_ip_tbl) unless @slave_ip_tbl.tainted?
|
97
|
-
TkUtil.untrust(@slave_ip_top) unless @slave_ip_top.tainted?
|
98
|
-
|
99
94
|
@system = Object.new
|
100
95
|
|
101
96
|
@threadgroup = ThreadGroup.new
|
102
97
|
|
103
|
-
@safe_level = [
|
98
|
+
@safe_level = [0]
|
104
99
|
|
105
100
|
@wait_on_mainloop = [true, 0]
|
106
101
|
|
107
102
|
@cmd_queue = Queue.new
|
108
103
|
|
109
|
-
=begin
|
110
|
-
@cmd_receiver, @receiver_watchdog = _create_receiver_and_watchdog()
|
111
|
-
|
112
|
-
@threadgroup.add @cmd_receiver
|
113
|
-
@threadgroup.add @receiver_watchdog
|
114
|
-
|
115
|
-
@threadgroup.enclose
|
116
|
-
=end
|
117
104
|
@@DEFAULT_MASTER.assign_receiver_and_watchdog(self)
|
118
105
|
|
119
106
|
@@IP_TABLE[@threadgroup] = self
|
120
107
|
@@TK_TABLE_LIST.size.times{
|
121
|
-
|
122
|
-
@tk_table_list << tbl
|
108
|
+
@tk_table_list << {}
|
123
109
|
}
|
124
110
|
|
125
111
|
@ret_val = TkVariable.new
|
@@ -198,9 +184,6 @@ class RemoteTkIp
|
|
198
184
|
raise SecurityError, "no permission to manipulate" unless self.manipulable?
|
199
185
|
|
200
186
|
p ['_appsend', [@remote, @displayof], enc_mode, async, cmds] if $DEBUG
|
201
|
-
if $SAFE >= 1 && cmds.find{|obj| obj.tainted?}
|
202
|
-
fail SecurityError, "cannot send tainted commands at level #{$SAFE}"
|
203
|
-
end
|
204
187
|
|
205
188
|
cmds = @interp._merge_tklist(*TkUtil::_conv_args([], enc_mode, *cmds))
|
206
189
|
if @displayof
|
data/lib/tk.rb
CHANGED
@@ -31,8 +31,8 @@ class TclTkIp
|
|
31
31
|
def initialize(*args)
|
32
32
|
__initialize__(*args)
|
33
33
|
|
34
|
-
@force_default_encoding ||=
|
35
|
-
@encoding ||=
|
34
|
+
@force_default_encoding ||= [false]
|
35
|
+
@encoding ||= [nil]
|
36
36
|
def @encoding.to_s; self.join(nil); end
|
37
37
|
end
|
38
38
|
end
|
@@ -42,8 +42,8 @@ module TkComm
|
|
42
42
|
include TkUtil
|
43
43
|
extend TkUtil
|
44
44
|
|
45
|
-
WidgetClassNames =
|
46
|
-
TkExtlibAutoloadModule =
|
45
|
+
WidgetClassNames = {}
|
46
|
+
TkExtlibAutoloadModule = []
|
47
47
|
|
48
48
|
# None = Object.new ### --> definition is moved to TkUtil module
|
49
49
|
# def None.to_s
|
@@ -54,8 +54,8 @@ module TkComm
|
|
54
54
|
#Tk_CMDTBL = {}
|
55
55
|
#Tk_WINDOWS = {}
|
56
56
|
Tk_IDs = [
|
57
|
-
|
58
|
-
|
57
|
+
"00000", # [0]-cmdid
|
58
|
+
"00000" # [1]-winid
|
59
59
|
]
|
60
60
|
Tk_IDs.instance_eval{
|
61
61
|
@mutex = Mutex.new
|
@@ -76,7 +76,7 @@ module TkComm
|
|
76
76
|
Tk_WINDOWS.freeze
|
77
77
|
|
78
78
|
self.instance_eval{
|
79
|
-
@cmdtbl =
|
79
|
+
@cmdtbl = []
|
80
80
|
}
|
81
81
|
|
82
82
|
unless const_defined?(:GET_CONFIGINFO_AS_ARRAY)
|
@@ -848,7 +848,6 @@ end
|
|
848
848
|
TkCore::INTERP.tk_cmd_tbl[id] = TkCore::INTERP.get_cb_entry(cmd)
|
849
849
|
end
|
850
850
|
@cmdtbl = [] unless defined? @cmdtbl
|
851
|
-
TkUtil.untrust(@cmdtbl) unless @cmdtbl.tainted?
|
852
851
|
@cmdtbl.push id
|
853
852
|
|
854
853
|
if local_cmdtbl && local_cmdtbl.kind_of?(Array)
|
@@ -1070,31 +1069,23 @@ module TkComm
|
|
1070
1069
|
:_bind_append_for_event_class, :_bind_remove_for_event_class,
|
1071
1070
|
:_bindinfo_for_event_class
|
1072
1071
|
|
1073
|
-
|
1074
|
-
# _bind(["bind", tagOrClass], context, cmd, *args)
|
1075
|
-
# tagOrClass
|
1076
|
-
#end
|
1077
|
-
def bind(tagOrClass, context, *args)
|
1072
|
+
def bind(tagOrClass, context, *args, &block)
|
1078
1073
|
# if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
|
1079
|
-
if TkComm._callback_entry?(args[0]) || !
|
1074
|
+
if TkComm._callback_entry?(args[0]) || !block
|
1080
1075
|
cmd = args.shift
|
1081
1076
|
else
|
1082
|
-
cmd =
|
1077
|
+
cmd = block
|
1083
1078
|
end
|
1084
1079
|
_bind(["bind", tagOrClass], context, cmd, *args)
|
1085
1080
|
tagOrClass
|
1086
1081
|
end
|
1087
1082
|
|
1088
|
-
|
1089
|
-
# _bind_append(["bind", tagOrClass], context, cmd, *args)
|
1090
|
-
# tagOrClass
|
1091
|
-
#end
|
1092
|
-
def bind_append(tagOrClass, context, *args)
|
1083
|
+
def bind_append(tagOrClass, context, *args, &block)
|
1093
1084
|
# if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
|
1094
|
-
if TkComm._callback_entry?(args[0]) || !
|
1085
|
+
if TkComm._callback_entry?(args[0]) || !block
|
1095
1086
|
cmd = args.shift
|
1096
1087
|
else
|
1097
|
-
cmd =
|
1088
|
+
cmd = block
|
1098
1089
|
end
|
1099
1090
|
_bind_append(["bind", tagOrClass], context, cmd, *args)
|
1100
1091
|
tagOrClass
|
@@ -1109,31 +1100,23 @@ module TkComm
|
|
1109
1100
|
_bindinfo(['bind', tagOrClass], context)
|
1110
1101
|
end
|
1111
1102
|
|
1112
|
-
|
1113
|
-
# _bind(['bind', 'all'], context, cmd, *args)
|
1114
|
-
# TkBindTag::ALL
|
1115
|
-
#end
|
1116
|
-
def bind_all(context, *args)
|
1103
|
+
def bind_all(context, *args, &block)
|
1117
1104
|
# if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
|
1118
|
-
if TkComm._callback_entry?(args[0]) || !
|
1105
|
+
if TkComm._callback_entry?(args[0]) || !block
|
1119
1106
|
cmd = args.shift
|
1120
1107
|
else
|
1121
|
-
cmd =
|
1108
|
+
cmd = block
|
1122
1109
|
end
|
1123
1110
|
_bind(['bind', 'all'], context, cmd, *args)
|
1124
1111
|
TkBindTag::ALL
|
1125
1112
|
end
|
1126
1113
|
|
1127
|
-
|
1128
|
-
# _bind_append(['bind', 'all'], context, cmd, *args)
|
1129
|
-
# TkBindTag::ALL
|
1130
|
-
#end
|
1131
|
-
def bind_append_all(context, *args)
|
1114
|
+
def bind_append_all(context, *args, &block)
|
1132
1115
|
# if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
|
1133
|
-
if TkComm._callback_entry?(args[0]) || !
|
1116
|
+
if TkComm._callback_entry?(args[0]) || !block
|
1134
1117
|
cmd = args.shift
|
1135
1118
|
else
|
1136
|
-
cmd =
|
1119
|
+
cmd = block
|
1137
1120
|
end
|
1138
1121
|
_bind_append(['bind', 'all'], context, cmd, *args)
|
1139
1122
|
TkBindTag::ALL
|
@@ -1363,11 +1346,10 @@ EOS
|
|
1363
1346
|
end
|
1364
1347
|
|
1365
1348
|
INTERP.instance_eval{
|
1366
|
-
# @tk_cmd_tbl = TkUtil.untrust({})
|
1367
1349
|
@tk_cmd_tbl =
|
1368
|
-
|
1350
|
+
Hash.new{|hash, key|
|
1369
1351
|
fail IndexError, "unknown command ID '#{key}'"
|
1370
|
-
}
|
1352
|
+
}
|
1371
1353
|
def @tk_cmd_tbl.[]=(idx,val)
|
1372
1354
|
if self.has_key?(idx) && Thread.current.group != ThreadGroup::Default
|
1373
1355
|
fail SecurityError,"cannot change the entried command"
|
@@ -1375,15 +1357,15 @@ EOS
|
|
1375
1357
|
super(idx,val)
|
1376
1358
|
end
|
1377
1359
|
|
1378
|
-
@tk_windows =
|
1360
|
+
@tk_windows = {}
|
1379
1361
|
|
1380
|
-
@tk_table_list =
|
1362
|
+
@tk_table_list = []
|
1381
1363
|
|
1382
|
-
@init_ip_env =
|
1383
|
-
@add_tk_procs =
|
1364
|
+
@init_ip_env = [] # table of Procs
|
1365
|
+
@add_tk_procs = [] # table of [name, args, body]
|
1384
1366
|
|
1385
|
-
@force_default_encoding ||=
|
1386
|
-
@encoding ||=
|
1367
|
+
@force_default_encoding ||= [false]
|
1368
|
+
@encoding ||= [nil]
|
1387
1369
|
def @encoding.to_s; self.join(nil); end
|
1388
1370
|
|
1389
1371
|
@cb_entry_class = Class.new(TkCallbackEntry){
|
@@ -1437,15 +1419,7 @@ EOS
|
|
1437
1419
|
end
|
1438
1420
|
def INTERP.create_table
|
1439
1421
|
id = @tk_table_list.size
|
1440
|
-
|
1441
|
-
@tk_table_list << tbl
|
1442
|
-
# obj = Object.new
|
1443
|
-
# obj.instance_eval <<-EOD
|
1444
|
-
# def self.method_missing(m, *args)
|
1445
|
-
# TkCore::INTERP.tk_object_table(#{id}).send(m, *args)
|
1446
|
-
# end
|
1447
|
-
# EOD
|
1448
|
-
# return obj
|
1422
|
+
@tk_table_list << {}
|
1449
1423
|
Tk_OBJECT_TABLE.new(id)
|
1450
1424
|
end
|
1451
1425
|
|
@@ -1456,7 +1430,8 @@ EOS
|
|
1456
1430
|
TkUtil._get_eval_string(TkUtil.eval_cmd(cmd, *args))
|
1457
1431
|
end
|
1458
1432
|
|
1459
|
-
def INTERP.init_ip_env(script =
|
1433
|
+
def INTERP.init_ip_env(script = (use_block = true), &block)
|
1434
|
+
script = block if use_block
|
1460
1435
|
@init_ip_env << script
|
1461
1436
|
script.call(self)
|
1462
1437
|
end
|
@@ -1684,57 +1659,21 @@ EOS
|
|
1684
1659
|
bool(tk_call('auto_load', tk_cmd))
|
1685
1660
|
end
|
1686
1661
|
|
1687
|
-
def after(ms, cmd=
|
1662
|
+
def after(ms, cmd=nil, &block)
|
1663
|
+
cmd ||= block
|
1688
1664
|
cmdid = install_cmd(proc{ret = cmd.call;uninstall_cmd(cmdid); ret})
|
1689
1665
|
after_id = tk_call_without_enc("after",ms,cmdid)
|
1690
1666
|
after_id.instance_variable_set('@cmdid', cmdid)
|
1691
1667
|
after_id
|
1692
1668
|
end
|
1693
|
-
=begin
|
1694
|
-
def after(ms, cmd=Proc.new)
|
1695
|
-
crit_bup = Thread.critical
|
1696
|
-
Thread.critical = true
|
1697
|
-
|
1698
|
-
myid = _curr_cmd_id
|
1699
|
-
cmdid = install_cmd(proc{ret = cmd.call;uninstall_cmd(myid); ret})
|
1700
|
-
|
1701
|
-
Thread.critical = crit_bup
|
1702
|
-
|
1703
|
-
tk_call_without_enc("after",ms,cmdid) # return id
|
1704
|
-
# return
|
1705
|
-
# if false #defined? Thread
|
1706
|
-
# Thread.start do
|
1707
|
-
# ms = Float(ms)/1000
|
1708
|
-
# ms = 10 if ms == 0
|
1709
|
-
# sleep ms/1000
|
1710
|
-
# cmd.call
|
1711
|
-
# end
|
1712
|
-
# else
|
1713
|
-
# cmdid = install_cmd(cmd)
|
1714
|
-
# tk_call("after",ms,cmdid)
|
1715
|
-
# end
|
1716
|
-
end
|
1717
|
-
=end
|
1718
1669
|
|
1719
|
-
def after_idle(cmd=
|
1670
|
+
def after_idle(cmd=nil, &block)
|
1671
|
+
cmd ||= block
|
1720
1672
|
cmdid = install_cmd(proc{ret = cmd.call;uninstall_cmd(cmdid); ret})
|
1721
1673
|
after_id = tk_call_without_enc('after','idle',cmdid)
|
1722
1674
|
after_id.instance_variable_set('@cmdid', cmdid)
|
1723
1675
|
after_id
|
1724
1676
|
end
|
1725
|
-
=begin
|
1726
|
-
def after_idle(cmd=Proc.new)
|
1727
|
-
crit_bup = Thread.critical
|
1728
|
-
Thread.critical = true
|
1729
|
-
|
1730
|
-
myid = _curr_cmd_id
|
1731
|
-
cmdid = install_cmd(proc{ret = cmd.call;uninstall_cmd(myid); ret})
|
1732
|
-
|
1733
|
-
Thread.critical = crit_bup
|
1734
|
-
|
1735
|
-
tk_call_without_enc('after','idle',cmdid)
|
1736
|
-
end
|
1737
|
-
=end
|
1738
1677
|
|
1739
1678
|
def after_cancel(afterId)
|
1740
1679
|
tk_call_without_enc('after','cancel',afterId)
|
@@ -1786,9 +1725,6 @@ EOS
|
|
1786
1725
|
end
|
1787
1726
|
|
1788
1727
|
def appsend(interp, async, *args)
|
1789
|
-
if $SAFE >= 1 && args.find{|obj| obj.tainted?}
|
1790
|
-
fail SecurityError, "cannot send tainted Tk commands at level #{$SAFE}"
|
1791
|
-
end
|
1792
1728
|
if async != true && async != false && async != nil
|
1793
1729
|
args.unshift(async)
|
1794
1730
|
async = false
|
@@ -1801,9 +1737,6 @@ EOS
|
|
1801
1737
|
end
|
1802
1738
|
|
1803
1739
|
def rb_appsend(interp, async, *args)
|
1804
|
-
if $SAFE >= 1 && args.find{|obj| obj.tainted?}
|
1805
|
-
fail SecurityError, "cannot send tainted Ruby commands at level #{$SAFE}"
|
1806
|
-
end
|
1807
1740
|
if async != true && async != false && async != nil
|
1808
1741
|
args.unshift(async)
|
1809
1742
|
async = false
|
@@ -1817,9 +1750,6 @@ EOS
|
|
1817
1750
|
end
|
1818
1751
|
|
1819
1752
|
def appsend_displayof(interp, win, async, *args)
|
1820
|
-
if $SAFE >= 1 && args.find{|obj| obj.tainted?}
|
1821
|
-
fail SecurityError, "cannot send tainted Tk commands at level #{$SAFE}"
|
1822
|
-
end
|
1823
1753
|
win = '.' if win == nil
|
1824
1754
|
if async != true && async != false && async != nil
|
1825
1755
|
args.unshift(async)
|
@@ -1833,9 +1763,6 @@ EOS
|
|
1833
1763
|
end
|
1834
1764
|
|
1835
1765
|
def rb_appsend_displayof(interp, win, async, *args)
|
1836
|
-
if $SAFE >= 1 && args.find{|obj| obj.tainted?}
|
1837
|
-
fail SecurityError, "cannot send tainted Ruby commands at level #{$SAFE}"
|
1838
|
-
end
|
1839
1766
|
win = '.' if win == nil
|
1840
1767
|
if async != true && async != false && async != nil
|
1841
1768
|
args.unshift(async)
|
@@ -2085,7 +2012,6 @@ EOS
|
|
2085
2012
|
puts 'invoke args => ' + args.inspect if $DEBUG
|
2086
2013
|
### print "=> ", args.join(" ").inspect, "\n" if $DEBUG
|
2087
2014
|
begin
|
2088
|
-
# res = TkUtil.untrust(INTERP._invoke(*args))
|
2089
2015
|
# res = INTERP._invoke(enc_mode, *args)
|
2090
2016
|
res = _ip_invoke_core(enc_mode, *args)
|
2091
2017
|
# >>>>> _invoke returns a TAINTED string <<<<<
|
@@ -2093,7 +2019,6 @@ EOS
|
|
2093
2019
|
# err = $!
|
2094
2020
|
begin
|
2095
2021
|
args.unshift "unknown"
|
2096
|
-
#res = TkUtil.untrust(INTERP._invoke(*args))
|
2097
2022
|
#res = INTERP._invoke(enc_mode, *args)
|
2098
2023
|
res = _ip_invoke_core(enc_mode, *args)
|
2099
2024
|
# >>>>> _invoke returns a TAINTED string <<<<<
|
@@ -3383,28 +3308,22 @@ end
|
|
3383
3308
|
|
3384
3309
|
|
3385
3310
|
module TkBindCore
|
3386
|
-
|
3387
|
-
# Tk.bind(self, context, cmd, *args)
|
3388
|
-
#end
|
3389
|
-
def bind(context, *args)
|
3311
|
+
def bind(context, *args, &block)
|
3390
3312
|
# if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
|
3391
|
-
if TkComm._callback_entry?(args[0]) || !
|
3313
|
+
if TkComm._callback_entry?(args[0]) || !block
|
3392
3314
|
cmd = args.shift
|
3393
3315
|
else
|
3394
|
-
cmd =
|
3316
|
+
cmd = block
|
3395
3317
|
end
|
3396
3318
|
Tk.bind(self, context, cmd, *args)
|
3397
3319
|
end
|
3398
3320
|
|
3399
|
-
|
3400
|
-
# Tk.bind_append(self, context, cmd, *args)
|
3401
|
-
#end
|
3402
|
-
def bind_append(context, *args)
|
3321
|
+
def bind_append(context, *args, &block)
|
3403
3322
|
# if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
|
3404
|
-
if TkComm._callback_entry?(args[0]) || !
|
3323
|
+
if TkComm._callback_entry?(args[0]) || !block
|
3405
3324
|
cmd = args.shift
|
3406
3325
|
else
|
3407
|
-
cmd =
|
3326
|
+
cmd = block
|
3408
3327
|
end
|
3409
3328
|
Tk.bind_append(self, context, cmd, *args)
|
3410
3329
|
end
|
@@ -5592,7 +5511,7 @@ class TkWindow<TkObject
|
|
5592
5511
|
if cmd
|
5593
5512
|
configure_cmd('command', cmd)
|
5594
5513
|
elsif b
|
5595
|
-
configure_cmd('command',
|
5514
|
+
configure_cmd('command', b)
|
5596
5515
|
else
|
5597
5516
|
cget('command')
|
5598
5517
|
end
|
data/lib/tk/bgerror.rb
CHANGED
@@ -17,8 +17,8 @@ module TkBgError
|
|
17
17
|
alias show bgerror
|
18
18
|
module_function :bgerror, :tkerror, :show
|
19
19
|
|
20
|
-
def set_handler(hdlr =
|
21
|
-
tk_call('proc', 'bgerror', 'msg', install_cmd(hdlr) + ' $msg')
|
20
|
+
def set_handler(hdlr = nil, &block) #==> handler :: proc{|msg| ...body... }
|
21
|
+
tk_call('proc', 'bgerror', 'msg', install_cmd(hdlr || block) + ' $msg')
|
22
22
|
end
|
23
23
|
def set_default
|
24
24
|
begin
|
data/lib/tk/bindtag.rb
CHANGED
@@ -10,7 +10,7 @@ class TkBindTag
|
|
10
10
|
#BTagID_TBL = {}
|
11
11
|
BTagID_TBL = TkCore::INTERP.create_table
|
12
12
|
|
13
|
-
(Tk_BINDTAG_ID = ["btag".freeze,
|
13
|
+
(Tk_BINDTAG_ID = ["btag".freeze, "00000"]).instance_eval{
|
14
14
|
@mutex = Mutex.new
|
15
15
|
def mutex; @mutex; end
|
16
16
|
freeze
|
data/lib/tk/canvas.rb
CHANGED
@@ -131,31 +131,23 @@ class Tk::Canvas<TkWindow
|
|
131
131
|
*tags.collect{|t| tagid(t)}))
|
132
132
|
end
|
133
133
|
|
134
|
-
|
135
|
-
# _bind([path, "bind", tagid(tag)], context, cmd, *args)
|
136
|
-
# self
|
137
|
-
#end
|
138
|
-
def itembind(tag, context, *args)
|
134
|
+
def itembind(tag, context, *args, &block)
|
139
135
|
# if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
|
140
|
-
if TkComm._callback_entry?(args[0]) || !
|
136
|
+
if TkComm._callback_entry?(args[0]) || !block
|
141
137
|
cmd = args.shift
|
142
138
|
else
|
143
|
-
cmd =
|
139
|
+
cmd = block
|
144
140
|
end
|
145
141
|
_bind([path, "bind", tagid(tag)], context, cmd, *args)
|
146
142
|
self
|
147
143
|
end
|
148
144
|
|
149
|
-
|
150
|
-
# _bind_append([path, "bind", tagid(tag)], context, cmd, *args)
|
151
|
-
# self
|
152
|
-
#end
|
153
|
-
def itembind_append(tag, context, *args)
|
145
|
+
def itembind_append(tag, context, *args, &block)
|
154
146
|
# if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
|
155
|
-
if TkComm._callback_entry?(args[0]) || !
|
147
|
+
if TkComm._callback_entry?(args[0]) || !block
|
156
148
|
cmd = args.shift
|
157
149
|
else
|
158
|
-
cmd =
|
150
|
+
cmd = block
|
159
151
|
end
|
160
152
|
_bind_append([path, "bind", tagid(tag)], context, cmd, *args)
|
161
153
|
self
|