mainloop(*args)
click to toggle source
# File tk/lib/remote-tk.rb, line 494
def mainloop(*args)
fail RuntimeError, 'not support "mainloop" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 500
def do_one_event(flag = nil)
fail RuntimeError, 'not support "do_one_event" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 512
def get_eventloop_tick
fail RuntimeError, 'not support "get_eventloop_tick" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 524
def get_eventloop_weight
fail RuntimeError, 'not support "get_eventloop_weight" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 518
def get_no_event_wait
fail RuntimeError, 'not support "get_no_event_wait" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 494
def mainloop(*args)
fail RuntimeError, 'not support "mainloop" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 503
def mainloop_abort_on_exception
fail RuntimeError, 'not support "mainloop_abort_on_exception" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 506
def mainloop_abort_on_exception=(mode)
fail RuntimeError, 'not support "mainloop_abort_on_exception=" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 497
def mainloop_watchdog(*args)
fail RuntimeError, 'not support "mainloop_watchdog" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 142
def self.manipulable?
true
end
# File tk/lib/remote-tk.rb, line 66
def initialize(remote_ip, displayof=nil, timeout=5)
@interp = MultiTkIp.__getip
if @interp.safe?
fail SecurityError, "safe-IP cannot create RemoteTkIp"
end
@interp.allow_ruby_exit = false
@appname = @interp._invoke('tk', 'appname')
@remote = remote_ip.to_s.dup.freeze
if displayof.kind_of?(TkWindow)
@displayof = displayof.path.dup.freeze
else
@displayof = nil
end
if self.deleted?
fail RuntimeError, "no Tk application named \"#{@remote}\""
end
@tk_windows = {}
@tk_table_list = []
@slave_ip_tbl = {}
@slave_ip_top = {}
@force_default_encoding ||= TkUtil.untrust([false])
@encoding ||= TkUtil.untrust([nil])
def @encoding.to_s; self.join(nil); end
TkUtil.untrust(@tk_windows) unless @tk_windows.tainted?
TkUtil.untrust(@tk_table_list) unless @tk_table_list.tainted?
TkUtil.untrust(@slave_ip_tbl) unless @slave_ip_tbl.tainted?
TkUtil.untrust(@slave_ip_top) unless @slave_ip_top.tainted?
@system = Object.new
@threadgroup = ThreadGroup.new
@safe_level = [$SAFE]
@wait_on_mainloop = [true, 0]
@cmd_queue = Queue.new
@cmd_receiver, @receiver_watchdog = _create_receiver_and_watchdog()
@threadgroup.add @cmd_receiver
@threadgroup.add @receiver_watchdog
@threadgroup.enclose
@@DEFAULT_MASTER.assign_receiver_and_watchdog(self)
@@IP_TABLE[@threadgroup] = self
@@TK_TABLE_LIST.size.times{
(tbl = {}).tainted? || TkUtil.untrust(tbl)
@tk_table_list << tbl
}
@ret_val = TkVariable.new
if timeout > 0 && ! _available_check(timeout)
fail RuntimeError, "cannot create connection"
end
@ip_id = _create_connection
class << self
undef :instance_eval
end
self.freeze # defend against modification
end
# File tk/lib/remote-tk.rb, line 58
def new(*args, &b)
ip = __new(*args)
ip.eval_proc(&b) if b
ip
end
# File tk/lib/remote-tk.rb, line 509
def set_eventloop_tick(*args)
fail RuntimeError, 'not support "set_eventloop_tick" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 338
def __eval(str)
_appsend(false, false, str)
end
# File tk/lib/remote-tk.rb, line 355
def __invoke(*args)
_appsend(false, false, *args)
end
# File tk/lib/remote-tk.rb, line 449
def _conv_listelement(str)
raise SecurityError, "no permission to manipulate" unless self.manipulable?
@interp._conv_listelement(str)
end
# File tk/lib/remote-tk.rb, line 454
def _create_console
fail RuntimeError, 'not support "_create_console" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 341
def _eval(str)
_appsend(nil, false, str)
end
# File tk/lib/remote-tk.rb, line 347
def _eval_with_enc(str)
_appsend(true, false, str)
end
# File tk/lib/remote-tk.rb, line 344
def _eval_without_enc(str)
_appsend(false, false, str)
end
# File tk/lib/remote-tk.rb, line 373
def _fromUTF8(str, encoding=nil)
raise SecurityError, "no permission to manipulate" unless self.manipulable?
@interp._fromUTF8(str, encoding)
end
# File tk/lib/remote-tk.rb, line 418
def _get_global_var(var_name)
_appsend(false, 'set', TkComm::_get_eval_string(var_name))
end
# File tk/lib/remote-tk.rb, line 421
def _get_global_var2(var_name, index_name)
_appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})")
end
# File tk/lib/remote-tk.rb, line 391
def _get_variable(var_name, flag)
# ignore flag
_appsend(false, 'set', TkComm::_get_eval_string(var_name))
end
# File tk/lib/remote-tk.rb, line 395
def _get_variable2(var_name, index_name, flag)
# ignore flag
_appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})")
end
# File tk/lib/remote-tk.rb, line 351
def _invoke(*args)
_appsend(nil, false, *args)
end
# File tk/lib/remote-tk.rb, line 364
def _invoke_with_enc(*args)
_appsend(true, false, *args)
end
# File tk/lib/remote-tk.rb, line 361
def _invoke_without_enc(*args)
_appsend(false, false, *args)
end
# File tk/lib/remote-tk.rb, line 444
def _merge_tklist(*args)
raise SecurityError, "no permission to manipulate" unless self.manipulable?
@interp._merge_tklist(*args)
end
# File tk/lib/remote-tk.rb, line 386
def _return_value
raise SecurityError, "no permission to manipulate" unless self.manipulable?
@interp._return_value
end
# File tk/lib/remote-tk.rb, line 425
def _set_global_var(var_name, value)
_appsend(false, 'set', TkComm::_get_eval_string(var_name), TkComm::_get_eval_string(value))
end
# File tk/lib/remote-tk.rb, line 428
def _set_global_var2(var_name, index_name, value)
_appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})", TkComm::_get_eval_string(value))
end
# File tk/lib/remote-tk.rb, line 400
def _set_variable(var_name, value, flag)
# ignore flag
_appsend(false, 'set', TkComm::_get_eval_string(var_name), TkComm::_get_eval_string(value))
end
# File tk/lib/remote-tk.rb, line 404
def _set_variable2(var_name, index_name, value, flag)
# ignore flag
_appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})", TkComm::_get_eval_string(value))
end
# File tk/lib/remote-tk.rb, line 439
def _split_tklist(str)
raise SecurityError, "no permission to manipulate" unless self.manipulable?
@interp._split_tklist(str)
end
# File tk/lib/remote-tk.rb, line 382
def _thread_tkwait(mode, target)
_appsend(false, 'thread_tkwait', mode, target)
end
# File tk/lib/remote-tk.rb, line 378
def _thread_vwait(var_name)
_appsend(false, 'thread_vwait', varname)
end
# File tk/lib/remote-tk.rb, line 368
def _toUTF8(str, encoding=nil)
raise SecurityError, "no permission to manipulate" unless self.manipulable?
@interp._toUTF8(str, encoding)
end
# File tk/lib/remote-tk.rb, line 432
def _unset_global_var(var_name)
_appsend(false, 'unset', TkComm::_get_eval_string(var_name))
end
# File tk/lib/remote-tk.rb, line 435
def _unset_global_var2(var_name, index_name)
_appsend(false, 'unset', "#{var_name}(#{index_name})")
end
# File tk/lib/remote-tk.rb, line 409
def _unset_variable(var_name, flag)
# ignore flag
_appsend(false, 'unset', TkComm::_get_eval_string(var_name))
end
# File tk/lib/remote-tk.rb, line 413
def _unset_variable2(var_name, index_name, flag)
# ignore flag
_appsend(false, 'unset', "#{var_name}(#{index_name})")
end
# File tk/lib/remote-tk.rb, line 290
def allow_ruby_exit= (mode)
fail RuntimeError, 'cannot change mode of the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 286
def allow_ruby_exit?
false
end
# File tk/lib/remote-tk.rb, line 237
def appsend(async, *args)
raise SecurityError, "no permission to manipulate" unless self.manipulable?
if async != true && async != false && async != nil
args.unshift(async)
async = false
end
if @displayof
Tk.appsend_displayof(@remote, @displayof, async, *args)
else
Tk.appsend(@remote, async, *args)
end
end
# File tk/lib/remote-tk.rb, line 265
def create_slave(name, safe=false)
if safe
safe_opt = ''
else
safe_opt = '-safe'
end
_appsend(false, false, "interp create #{safe_opt} -- #{name}")
end
# File tk/lib/remote-tk.rb, line 294
def delete
_appsend(false, true, 'exit')
end
# File tk/lib/remote-tk.rb, line 298
def deleted?
raise SecurityError, "no permission to manipulate" unless self.manipulable?
if @displayof
lst = @interp._invoke_without_enc('winfo', 'interps',
'-displayof', @displayof)
else
lst = @interp._invoke_without_enc('winfo', 'interps')
end
# unless @interp._split_tklist(lst).index(@remote)
unless @interp._split_tklist(lst).index(_toUTF8(@remote))
true
else
false
end
end
# File tk/lib/remote-tk.rb, line 464
def do_one_event(flag = nil)
fail RuntimeError, 'not support "do_one_event" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 476
def get_eventloop_tick
fail RuntimeError, 'not support "get_eventloop_tick" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 488
def get_eventloop_weight
fail RuntimeError, 'not support "get_eventloop_weight" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 482
def get_no_event_wait
fail RuntimeError, 'not support "get_no_event_wait" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 315
def has_mainwindow?
raise SecurityError, "no permission to manipulate" unless self.manipulable?
begin
inf = @interp._invoke_without_enc('info', 'command', '.')
rescue Exception
return nil
end
if !inf.kind_of?(String) || inf != '.'
false
else
true
end
end
# File tk/lib/remote-tk.rb, line 330
def invalid_namespace?
false
end
# File tk/lib/remote-tk.rb, line 231
def is_rubytk?
return false if _appsend(false, false, 'info', 'command', 'ruby') == ""
[ _appsend(false, false, 'ruby', 'RUBY_VERSION'),
_appsend(false, false, 'set', 'tk_patchLevel') ]
end
# File tk/lib/remote-tk.rb, line 458
def mainloop
fail RuntimeError, 'not support "mainloop" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 467
def mainloop_abort_on_exception
fail RuntimeError, 'not support "mainloop_abort_on_exception" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 470
def mainloop_abort_on_exception=(mode)
fail RuntimeError, 'not support "mainloop_abort_on_exception=" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 461
def mainloop_watchdog
fail RuntimeError, 'not support "mainloop_watchdog" on the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 274
def make_safe
fail RuntimeError, 'cannot change safe mode of the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 138
def manipulable?
return true if (Thread.current.group == ThreadGroup::Default)
MultiTkIp.__getip == @interp && ! @interp.safe?
end
# File tk/lib/remote-tk.rb, line 251
def rb_appsend(async, *args)
raise SecurityError, "no permission to manipulate" unless self.manipulable?
if async != true && async != false && async != nil
args.unshift(async)
async = false
end
if @displayof
Tk.rb_appsend_displayof(@remote, @displayof, async, *args)
else
Tk.rb_appsend(@remote, async, *args)
end
end
# File tk/lib/remote-tk.rb, line 224
def ready?(timeout=5)
if timeout < 0
fail ArgumentError, "timeout must be positive number"
end
_available_check(timeout)
end
# File tk/lib/remote-tk.rb, line 334
def restart
fail RuntimeError, 'cannot restart the remote interpreter'
end
# File tk/lib/remote-tk.rb, line 278
def safe?
_appsend(false, false, 'interp issafe')
end
# File tk/lib/remote-tk.rb, line 473
def set_eventloop_tick(*args)
fail RuntimeError, 'not support "set_eventloop_tick" on the remote interpreter'
end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.