From d464704f111d211c1f1ff9ef23ef1d755054be00 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Wed, 15 Aug 2007 19:08:43 +0000 Subject: add tag v1_8_5_54 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_5_54@12952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ruby_1_8_5/ext/tk/sample/safe-tk.rb | 115 ++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 ruby_1_8_5/ext/tk/sample/safe-tk.rb (limited to 'ruby_1_8_5/ext/tk/sample/safe-tk.rb') diff --git a/ruby_1_8_5/ext/tk/sample/safe-tk.rb b/ruby_1_8_5/ext/tk/sample/safe-tk.rb new file mode 100644 index 0000000000..e2289697e0 --- /dev/null +++ b/ruby_1_8_5/ext/tk/sample/safe-tk.rb @@ -0,0 +1,115 @@ +#!/usr/bin/env ruby +# This script is a sample of MultiTkIp class + +require "multi-tk" + +############################### + +TkLabel.new(:text=>'This is the Default Master Ipnterpreter').pack(:padx=>5, :pady=>3) +TkButton.new(:text=>'QUIT', :command=>proc{exit}).pack(:pady=>3) +TkFrame.new(:borderwidth=>2, :height=>3, + :relief=>:sunken).pack(:fill=>:x, :expand=>true, + :padx=>10, :pady=>7) + +############################### + +puts "---- create a safe slave IP with Ruby's safe-level == 1 ----------" +ip = MultiTkIp.new_safe_slave(1) + +puts "\n---- create procs ----------" +puts 'x = proc{p [\'proc x\', "$SAFE==#{$SAFE}"]; exit}' +x = proc{p ['proc x', "$SAFE==#{$SAFE}"]; exit} +TkLabel.new(:text=>'x = proc{p [\'proc x\', "$SAFE==#{$SAFE}"]; exit}', + :anchor=>:w).pack(:fill=>:x) + +puts 'y = proc{|label| p [\'proc y\', "$SAFE==#{$SAFE}", label]; label.text($SAFE)}' +y = proc{|label| p ['proc y', "$SAFE==#{$SAFE}", label]; label.text($SAFE)} +TkLabel.new(:text=>'y = proc{|label| p [\'proc y\', "$SAFE==#{$SAFE}", label]; label.text($SAFE)}', + :anchor=>:w).pack(:fill=>:x) + +puts 'z = proc{p [\'proc z\', "$SAFE==#{$SAFE}"]; exit}' +z = proc{p ['proc z', "$SAFE==#{$SAFE}"]; exit} +TkLabel.new(:text=>'z = proc{p [\'proc z\', "$SAFE==#{$SAFE}"]; exit}', + :anchor=>:w).pack(:fill=>:x) + +puts "\n---- call 1st eval_proc ----------" +print 'lbl = ' +p lbl = ip.eval_proc{ + TkLabel.new(:text=>"1st eval_proc : $SAFE == #{$SAFE}").pack + + f = TkFrame.new.pack + TkLabel.new(f, :text=>"$SAFE == ").pack(:side=>:left) + # TkLabel.new(f, :text=>" (<-- 'lbl' widget is here)").pack(:side=>:right) + l = TkLabel.new(f).pack(:side=>:right) + + TkButton.new(:text=>':command=>proc{l.text($SAFE)}', + :command=>proc{l.text($SAFE)}).pack(:fill=>:x, :padx=>5) + TkButton.new(:text=>':command=>x', :command=>x).pack(:fill=>:x, :padx=>5) + TkButton.new(:text=>':command=>proc{exit}', + :command=>proc{exit}).pack(:fill=>:x, :padx=>5) + TkFrame.new(:borderwidth=>2, :height=>3, + :relief=>:sunken).pack(:fill=>:x, :expand=>true, + :padx=>10, :pady=>7) + l # return the label widget +} + +puts "\n---- change the safe slave IP's safe-level ==> 3 ----------" +ip.safe_level = 3 + +puts "\n---- call 2nd eval_proc ----------" +p ip.eval_proc(proc{ + TkLabel.new(:text=>"2nd eval_proc : $SAFE == #{$SAFE}").pack + f = TkFrame.new.pack + TkLabel.new(f, :text=>"$SAFE == ").pack(:side=>:left) + l = TkLabel.new(f, :text=>$SAFE).pack(:side=>:right) + TkButton.new(:text=>':command=>proc{l.text($SAFE)}', + :command=>proc{l.text($SAFE)}).pack(:fill=>:x, + :padx=>5) + TkButton.new(:text=>':command=>proc{y.call(l)}', + :command=>proc{y.call(l)}).pack(:fill=>:x, + :padx=>5) + TkButton.new(:text=>':command=>proc{Thread.new(l, &y).value}', + :command=>proc{ + Thread.new(l, &y).value + }).pack(:fill=>:x, :padx=>5) + TkButton.new(:text=>':command=>proc{z.call}', + :command=>proc{z.call}).pack(:fill=>:x, :padx=>5) + TkFrame.new(:borderwidth=>2, :height=>3, + :relief=>:sunken).pack(:fill=>:x, :expand=>true, + :padx=>10, :pady=>7) + }) + +puts "\n---- call 1st and 2nd eval_str ----------" +p bind = ip.eval_str(' + TkLabel.new(:text=>"1st and 2nd eval_str : $SAFE == #{$SAFE}").pack + f = TkFrame.new.pack + TkLabel.new(f, :text=>"$SAFE == ").pack(:side=>:left) + l = TkLabel.new(f, :text=>$SAFE).pack(:side=>:right) + TkButton.new(:text=>":command=>proc{y.call(l)}", + :command=>proc{y.call(l)}).pack(:fill=>:x, :padx=>5) + binding +', binding) + +p ip.eval_str(" + TkButton.new(:text=>':command=>proc{ l.text = $SAFE }', + :command=>proc{ l.text = $SAFE }).pack(:fill=>:x, :padx=>5) + TkFrame.new(:borderwidth=>2, :height=>3, + :relief=>:sunken).pack(:fill=>:x, :expand=>true, + :padx=>10, :pady=>7) +", bind) + +puts "\n---- change the safe slave IP's safe-level ==> 4 ----------" +ip.safe_level = 4 + +puts "\n---- call 3rd and 4th eval_proc ----------" +p ip.eval_proc{ + TkLabel.new(:text=>"3rd and 4th eval_proc : $SAFE == #{$SAFE}").pack +} +p ip.eval_proc{ + TkButton.new(:text=>':command=>proc{ lbl.text = $SAFE }', + :command=>proc{ lbl.text = $SAFE }).pack(:fill=>:x, :padx=>5) +} + +puts "\n---- start event-loop ( current $SAFE == #{$SAFE} ) ----------" + +Tk.mainloop -- cgit v1.2.3