summaryrefslogtreecommitdiffstats
path: root/ext/tk/lib/remote-tk.rb
diff options
context:
space:
mode:
authornagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-07-21 22:05:04 +0000
committernagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-07-21 22:05:04 +0000
commite3344184b11fa45e30ff18d853c06cc826e5fd2d (patch)
treedfe1ac616e08d920da1177c7b4762c3d0e74feb6 /ext/tk/lib/remote-tk.rb
parent26008404e53ae09913b8f3659f33247b01bdef6f (diff)
downloadruby-e3344184b11fa45e30ff18d853c06cc826e5fd2d.tar.gz
ruby-e3344184b11fa45e30ff18d853c06cc826e5fd2d.tar.xz
ruby-e3344184b11fa45e30ff18d853c06cc826e5fd2d.zip
* ext/tk/tkutil/tkutil.c (tk_conv_args): forget to revert
thread_critical and gc_disable when raise ArgumentError. * ext/tk/lib/remote-tk.rb: RemoteTkIp doesn't need to include TkUtil. * ext/tk/tcltklib.c: add TclTkIp#has_mainwindow? method. * ext/tk/lib/tk.rb: add Tk.has_mainwindow? method. * ext/tk/lib/multi-tk.rb: add MultiTkIp#has_mainwindow? method. * ext/tk/lib/remote-tk.rb: add RemoteTkIp#has_mainwindow? method. * ext/tk/lib/multi-tk.rb: slave IP fail to exit itself when $SAFE==4. * ext/tk/lib/multi-tk.rb: remove constants from MultiTkIp module to avoid access from external. * ext/tk/lib/multi-tk.rb: check_root flag is ignored on slave IPs' mainloop. * ext/tk/lib/multi-tk.rb: hang-up Tk.mainloop called on a slave IP with $SAFE==4. * ext/tk/lib/multi-tk.rb: MultiTkIp#bg_eval_proc doesn't work properly. * ext/tk/lib/multi-tk.rb: add MultiTkIp#set_cb_error(proc) and cb_error(exc) to log errors at callbacks on safe slave IPs. * ext/tk/lib/multi-tk.rb: fail to get an available slave IP object when call Tk.mainloop in the block which is given to new_* method, because cannot finish initialize while the root widget is alive. * ext/tk/lib/multi-tk.rb: fail to control a slave IP when Tk.mainloop runs on the IP. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@8818 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk/lib/remote-tk.rb')
-rw-r--r--ext/tk/lib/remote-tk.rb39
1 files changed, 25 insertions, 14 deletions
diff --git a/ext/tk/lib/remote-tk.rb b/ext/tk/lib/remote-tk.rb
index ed7f75b33..6e64a1ca2 100644
--- a/ext/tk/lib/remote-tk.rb
+++ b/ext/tk/lib/remote-tk.rb
@@ -60,8 +60,6 @@ class << RemoteTkIp
end
class RemoteTkIp
- include TkUtil
-
def initialize(remote_ip, displayof=nil, timeout=5)
if $SAFE >= 4
fail SecurityError, "cannot access another interpreter at level #{$SAFE}"
@@ -96,7 +94,7 @@ class RemoteTkIp
@safe_level = [$SAFE]
- @wait_on_mainloop = [true, false]
+ @wait_on_mainloop = [true, 0]
@cmd_queue = Queue.new
@@ -179,7 +177,7 @@ class RemoteTkIp
fail SecurityError, "cannot send tainted commands at level #{$SAFE}"
end
- cmds = @interp._merge_tklist(*_conv_args([], enc_mode, *cmds))
+ cmds = @interp._merge_tklist(*TkUtil::_conv_args([], enc_mode, *cmds))
if @displayof
if async
@interp.__invoke('send', '-async', '-displayof', @displayof,
@@ -283,6 +281,19 @@ class RemoteTkIp
end
end
+ def has_mainwindow?
+ begin
+ inf = @interp._invoke_without_enc('info', 'command', '.')
+ rescue Exception
+ return nil
+ end
+ if !inf.kind_of?(String) || inf != '.'
+ false
+ else
+ true
+ end
+ end
+
def invalid_namespace?
false
end
@@ -343,25 +354,25 @@ class RemoteTkIp
def _get_variable(var_name, flag)
# ignore flag
- _appsend(false, 'set', _get_eval_string(var_name))
+ _appsend(false, 'set', TkComm::_get_eval_string(var_name))
end
def _get_variable2(var_name, index_name, flag)
# ignore flag
- _appsend(false, 'set', "#{_get_eval_string(var_name)}(#{_get_eval_string(index_name)})")
+ _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})")
end
def _set_variable(var_name, value, flag)
# ignore flag
- _appsend(false, 'set', _get_eval_string(var_name), _get_eval_string(value))
+ _appsend(false, 'set', TkComm::_get_eval_string(var_name), TkComm::_get_eval_string(value))
end
def _set_variable2(var_name, index_name, value, flag)
# ignore flag
- _appsend(false, 'set', "#{_get_eval_string(var_name)}(#{_get_eval_string(index_name)})", _get_eval_string(value))
+ _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})", TkComm::_get_eval_string(value))
end
def _unset_variable(var_name, flag)
# ignore flag
- _appsend(false, 'unset', _get_eval_string(var_name))
+ _appsend(false, 'unset', TkComm::_get_eval_string(var_name))
end
def _unset_variable2(var_name, index_name, flag)
# ignore flag
@@ -369,21 +380,21 @@ class RemoteTkIp
end
def _get_global_var(var_name)
- _appsend(false, 'set', _get_eval_string(var_name))
+ _appsend(false, 'set', TkComm::_get_eval_string(var_name))
end
def _get_global_var2(var_name, index_name)
- _appsend(false, 'set', "#{_get_eval_string(var_name)}(#{_get_eval_string(index_name)})")
+ _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})")
end
def _set_global_var(var_name, value)
- _appsend(false, 'set', _get_eval_string(var_name), _get_eval_string(value))
+ _appsend(false, 'set', TkComm::_get_eval_string(var_name), TkComm::_get_eval_string(value))
end
def _set_global_var2(var_name, index_name, value)
- _appsend(false, 'set', "#{_get_eval_string(var_name)}(#{_get_eval_string(index_name)})", _get_eval_string(value))
+ _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})", TkComm::_get_eval_string(value))
end
def _unset_global_var(var_name)
- _appsend(false, 'unset', _get_eval_string(var_name))
+ _appsend(false, 'unset', TkComm::_get_eval_string(var_name))
end
def _unset_global_var2(var_name, index_name)
_appsend(false, 'unset', "#{var_name}(#{index_name})")