_tk_call_to_list_core(depth, arg_enc, val_enc, *args)
click to toggle source
def _tk_call_to_list_core(depth, arg_enc, val_enc, *args)
args = _conv_args([], arg_enc, *args)
val = _tk_call_core(false, *args)
if !depth.kind_of?(Integer) || depth == 0
tk_split_simplelist(val, false, val_enc)
else
tk_split_list(val, depth, false, val_enc)
end
end
after(ms, cmd=Proc.new)
click to toggle source
def after(ms, cmd=Proc.new)
cmdid = install_cmd(proc{ret = cmd.call;uninstall_cmd(cmdid); ret})
after_id = tk_call_without_enc("after",ms,cmdid)
after_id.instance_variable_set('@cmdid', cmdid)
after_id
end
after_cancel(afterId)
click to toggle source
begin¶ ↑
def after_idle(cmd=Proc.new)
crit_bup = Thread.critical
Thread.critical = true
myid = _curr_cmd_id
cmdid = install_cmd(proc{ret = cmd.call;uninstall_cmd(myid); ret})
Thread.critical = crit_bup
tk_call_without_enc('after','idle',cmdid)
end
def after_cancel(afterId)
tk_call_without_enc('after','cancel',afterId)
if (cmdid = afterId.instance_variable_get('@cmdid'))
afterId.instance_variable_set('@cmdid', nil)
uninstall_cmd(cmdid)
end
afterId
end
after_idle(cmd=Proc.new)
click to toggle source
begin¶ ↑
def after(ms, cmd=Proc.new)
crit_bup = Thread.critical
Thread.critical = true
myid = _curr_cmd_id
cmdid = install_cmd(proc{ret = cmd.call;uninstall_cmd(myid); ret})
Thread.critical = crit_bup
tk_call_without_enc("after",ms,cmdid) # return id
# return # if false defined? Thread # Thread.start do # ms
= Float(ms)/1000 # ms = 10 if ms == 0 # sleep ms/1000 #
cmd.call # end # else # cmdid = install_cmd(cmd) # #tk_call(“after”,ms,cmdid) # end
end
def after_idle(cmd=Proc.new)
cmdid = install_cmd(proc{ret = cmd.call;uninstall_cmd(cmdid); ret})
after_id = tk_call_without_enc('after','idle',cmdid)
after_id.instance_variable_set('@cmdid', cmdid)
after_id
end
appname(name=None)
click to toggle source
def appname(name=None)
tk_call('tk', 'appname', name)
end
appsend(interp, async, *args)
click to toggle source
def appsend(interp, async, *args)
if $SAFE >= 4
fail SecurityError, "cannot send Tk commands at level 4"
elsif $SAFE >= 1 && args.find{|obj| obj.tainted?}
fail SecurityError, "cannot send tainted Tk commands at level #{$SAFE}"
end
if async != true && async != false && async != nil
args.unshift(async)
async = false
end
if async
tk_call('send', '-async', '--', interp, *args)
else
tk_call('send', '--', interp, *args)
end
end
appsend_deny()
click to toggle source
def appsend_deny
tk_call('rename', 'send', '')
end
appsend_displayof(interp, win, async, *args)
click to toggle source
def appsend_displayof(interp, win, async, *args)
if $SAFE >= 4
fail SecurityError, "cannot send Tk commands at level 4"
elsif $SAFE >= 1 && args.find{|obj| obj.tainted?}
fail SecurityError, "cannot send tainted Tk commands at level #{$SAFE}"
end
win = '.' if win == nil
if async != true && async != false && async != nil
args.unshift(async)
async = false
end
if async
tk_call('send', '-async', '-displayof', win, '--', interp, *args)
else
tk_call('send', '-displayor', win, '--', interp, *args)
end
end
call(*args)
click to toggle source
def call(*args)
@ip.cb_eval(@cmd, *args)
end
callback_break()
click to toggle source
def callback_break
fail TkCallbackBreak, "Tk callback returns 'break' status"
end
callback_continue()
click to toggle source
def callback_continue
fail TkCallbackContinue, "Tk callback returns 'continue' status"
end
callback_return()
click to toggle source
def callback_return
fail TkCallbackReturn, "Tk callback returns 'return' status"
end
chooseColor(keys = nil)
click to toggle source
def chooseColor(keys = nil)
tk_call('tk_chooseColor', *hash_kv(keys))
end
chooseDirectory(keys = nil)
click to toggle source
def chooseDirectory(keys = nil)
tk_call('tk_chooseDirectory', *hash_kv(keys))
end
do_one_event(flag = TclTkLib::EventFlag::ALL)
click to toggle source
def do_one_event(flag = TclTkLib::EventFlag::ALL)
TclTkLib.do_one_event(flag)
end
event_generate(win, context, keys=nil)
click to toggle source
def event_generate(win, context, keys=nil)
if context.kind_of?(TkEvent::Event)
context.generate(win, ((keys)? keys: {}))
elsif keys
tk_call_without_enc('event', 'generate', win,
"<#{tk_event_sequence(context)}>",
*hash_kv(keys, true))
else
tk_call_without_enc('event', 'generate', win,
"<#{tk_event_sequence(context)}>")
end
nil
end
getMultipleOpenFile(keys = nil)
click to toggle source
def getMultipleOpenFile(keys = nil)
simplelist(tk_call('tk_getOpenFile', '-multiple', '1', *hash_kv(keys)))
end
getMultipleSaveFile(keys = nil)
click to toggle source
def getMultipleSaveFile(keys = nil)
simplelist(tk_call('tk_getSaveFile', '-multiple', '1', *hash_kv(keys)))
end
getOpenFile(keys = nil)
click to toggle source
def getOpenFile(keys = nil)
tk_call('tk_getOpenFile', *hash_kv(keys))
end
getSaveFile(keys = nil)
click to toggle source
def getSaveFile(keys = nil)
tk_call('tk_getSaveFile', *hash_kv(keys))
end
get_eventloop_tick()
click to toggle source
def get_eventloop_tick()
TclTkLib.get_eventloop_tick
end
get_eventloop_weight()
click to toggle source
def get_eventloop_weight()
TclTkLib.get_eventloop_weight
end
get_no_event_wait()
click to toggle source
def get_no_event_wait()
TclTkLib.get_no_eventloop_wait
end
inactive()
click to toggle source
def inactive
Integer(tk_call_without_enc('tk', 'inactive'))
end
inactive_displayof(win)
click to toggle source
def inactive_displayof(win)
Integer(tk_call_without_enc('tk', 'inactive', '-displayof', win))
end
inspect()
click to toggle source
def inspect
sprintf("#<cb_entry:%0x>", self.__id__)
end
ip_eval(cmd_string)
click to toggle source
def ip_eval(cmd_string)
_ip_eval_core(nil, cmd_string)
end
ip_eval_with_enc(cmd_string)
click to toggle source
def ip_eval_with_enc(cmd_string)
_ip_eval_core(true, cmd_string)
end
ip_eval_without_enc(cmd_string)
click to toggle source
def ip_eval_without_enc(cmd_string)
_ip_eval_core(false, cmd_string)
end
ip_invoke(*args)
click to toggle source
def ip_invoke(*args)
_ip_invoke_core(nil, *args)
end
ip_invoke_with_enc(*args)
click to toggle source
def ip_invoke_with_enc(*args)
_ip_invoke_core(true, *args)
end
ip_invoke_without_enc(*args)
click to toggle source
def ip_invoke_without_enc(*args)
_ip_invoke_core(false, *args)
end
is_mainloop?()
click to toggle source
def is_mainloop?
TclTkLib.mainloop_thread? == true
end
load_cmd_on_ip(tk_cmd)
click to toggle source
begin¶ ↑
def TkCore.callback(arg_str)
# arg = tk_split_list(arg_str)
arg = tk_split_simplelist(arg_str)
#_get_eval_string(TkUtil.eval_cmd(Tk_CMDTBL[arg.shift], *arg))
#_get_eval_string(TkUtil.eval_cmd(TkCore::INTERP.tk_cmd_tbl[arg.shift],
# *arg))
# TkCore::INTERP.tk_cmd_tbl[arg.shift].call(*arg)
begin
TkCore::INTERP.tk_cmd_tbl[arg.shift].call(*arg)
rescue Exception => e
raise(e, e.class.inspect + ': ' + e.message + "\n" +
"\n---< backtrace of Ruby side >-----\n" +
e.backtrace.join("\n") +
"\n---< backtrace of Tk side >-------")
end
#=begin # cb_obj = MultiTkIp.tk_cmd_tbl #
unless $DEBUG # cb_obj.call(*arg) # else # begin # raise
'check backtrace' # rescue # # ignore backtrace before
'callback' # pos = -($!.backtrace.size) # end #
begin # cb_obj.call(*arg) # rescue # trace = $!.backtrace
# raise $!, “n#{trace}: #{$!.message} (#{$!.class})n”
+ # “tfrom #{trace.join(”ntfrom “)}” #
end # end #=end
end
def load_cmd_on_ip(tk_cmd)
bool(tk_call('auto_load', tk_cmd))
end
mainloop(check_root = true)
click to toggle source
def mainloop(check_root = true)
if !TkCore::WITH_RUBY_VM
TclTkLib.mainloop(check_root)
elsif TkCore::RUN_EVENTLOOP_ON_MAIN_THREAD
if Thread.current != Thread.main
raise RuntimeError, "Tk.mainloop is allowed on the main thread only"
end
TclTkLib.mainloop(check_root)
else
unless TkCore::INTERP.default_master?
return TkCore::INTERP._thread_tkwait('window', '.') if check_root
end
TkCore::INTERP._eval_without_enc('catch {unset __initial_state_of_rubytk__}')
INTERP_THREAD.run
begin
TclTkLib.set_eventloop_window_mode(true)
TkCore::INTERP._eval_without_enc('update')
TkCore::INTERP._eval_without_enc('catch {set __initial_state_of_rubytk__}')
INTERP_THREAD.run
if check_root
INTERP_MUTEX.synchronize{
INTERP_ROOT_CHECK.wait(INTERP_MUTEX)
status = INTERP_THREAD_STATUS.value
if status && TkCore::INTERP.default_master?
INTERP_THREAD_STATUS.value = nil if $SAFE < 4
raise status if status.kind_of?(Exception)
end
}
else
begin
INTERP_THREAD.value
rescue Exception => e
raise e
end
end
rescue Exception => e
raise e
ensure
TclTkLib.set_eventloop_window_mode(false)
end
end
end
mainloop_exist?()
click to toggle source
def mainloop_exist?
TclTkLib.mainloop_thread? != nil
end
mainloop_thread?()
click to toggle source
def mainloop_thread?
if !TkCore::WITH_RUBY_VM || TkCore::RUN_EVENTLOOP_ON_MAIN_THREAD
TclTkLib.mainloop_thread?
else
Thread.current == INTERP_THREAD
end
end
mainloop_watchdog(check_root = true)
click to toggle source
def mainloop_watchdog(check_root = true)
TclTkLib.mainloop_watchdog(check_root)
end
messageBox(keys)
click to toggle source
def messageBox(keys)
tk_call('tk_messageBox', *hash_kv(keys))
end
rb_appsend(interp, async, *args)
click to toggle source
def rb_appsend(interp, async, *args)
if $SAFE >= 4
fail SecurityError, "cannot send Ruby commands at level 4"
elsif $SAFE >= 1 && args.find{|obj| obj.tainted?}
fail SecurityError, "cannot send tainted Ruby commands at level #{$SAFE}"
end
if async != true && async != false && async != nil
args.unshift(async)
async = false
end
args = args.collect!{|c| _get_eval_string(c).gsub(/[\[\]$"\\]/, '\\\\\&')}
args.push('}.call)"')
appsend(interp, async, 'ruby "TkComm._get_eval_string(proc{', *args)
end
rb_appsend_displayof(interp, win, async, *args)
click to toggle source
def rb_appsend_displayof(interp, win, async, *args)
if $SAFE >= 4
fail SecurityError, "cannot send Ruby commands at level 4"
elsif $SAFE >= 1 && args.find{|obj| obj.tainted?}
fail SecurityError, "cannot send tainted Ruby commands at level #{$SAFE}"
end
win = '.' if win == nil
if async != true && async != false && async != nil
args.unshift(async)
async = false
end
args = args.collect!{|c| _get_eval_string(c).gsub(/[\[\]$"\\]/, '\\\\\&')}
args.push('}.call)"')
appsend(interp, win, async, 'ruby "TkComm._get_eval_string(proc{', *args)
end
reset_inactive()
click to toggle source
def reset_inactive
tk_call_without_enc('tk', 'inactive', 'reset')
end
reset_inactive_displayof(win)
click to toggle source
def reset_inactive_displayof(win)
tk_call_without_enc('tk', 'inactive', '-displayof', win, 'reset')
end
restart(app_name = nil, keys = {})
click to toggle source
def restart(app_name = nil, keys = {})
TkCore::INTERP.init_ip_internal
tk_call('set', 'argv0', app_name) if app_name
if keys.kind_of?(Hash)
tk_call('set', 'argv', hash_kv(keys).join(' '))
end
INTERP.restart
nil
end
scaling(scale=nil)
click to toggle source
def scaling(scale=nil)
if scale
tk_call_without_enc('tk', 'scaling', scale)
else
Float(number(tk_call_without_enc('tk', 'scaling')))
end
end
scaling_displayof(win, scale=nil)
click to toggle source
def scaling_displayof(win, scale=nil)
if scale
tk_call_without_enc('tk', 'scaling', '-displayof', win, scale)
else
Float(number(tk_call_without_enc('tk', '-displayof', win, 'scaling')))
end
end
set_eventloop_tick(timer_tick)
click to toggle source
def set_eventloop_tick(timer_tick)
TclTkLib.set_eventloop_tick(timer_tick)
end
set_eventloop_weight(loop_max, no_event_tick)
click to toggle source
def set_eventloop_weight(loop_max, no_event_tick)
TclTkLib.set_eventloop_weight(loop_max, no_event_tick)
end
set_no_event_wait(wait)
click to toggle source
def set_no_event_wait(wait)
TclTkLib.set_no_even_wait(wait)
end
tk_call(*args)
click to toggle source
def tk_call(*args)
_tk_call_core(nil, *args)
end
tk_call_to_list(*args)
click to toggle source
private :_tk_call_to_list_core
def tk_call_to_list(*args)
_tk_call_to_list_core(-1, nil, true, *args)
end
tk_call_to_list_with_enc(*args)
click to toggle source
def tk_call_to_list_with_enc(*args)
_tk_call_to_list_core(-1, true, true, *args)
end
tk_call_to_list_without_enc(*args)
click to toggle source
def tk_call_to_list_without_enc(*args)
_tk_call_to_list_core(-1, false, false, *args)
end
tk_call_to_simplelist(*args)
click to toggle source
def tk_call_to_simplelist(*args)
_tk_call_to_list_core(0, nil, true, *args)
end
tk_call_to_simplelist_with_enc(*args)
click to toggle source
def tk_call_to_simplelist_with_enc(*args)
_tk_call_to_list_core(0, true, true, *args)
end
tk_call_to_simplelist_without_enc(*args)
click to toggle source
def tk_call_to_simplelist_without_enc(*args)
_tk_call_to_list_core(0, false, false, *args)
end
tk_call_with_enc(*args)
click to toggle source
def tk_call_with_enc(*args)
_tk_call_core(true, *args)
end
tk_call_without_enc(*args)
click to toggle source
def tk_call_without_enc(*args)
_tk_call_core(false, *args)
end
to_s()
click to toggle source
windowingsystem()
click to toggle source
def windowingsystem
tk_call_without_enc('tk', 'windowingsystem')
end