diff options
33 files changed, 297 insertions, 134 deletions
diff --git a/ext/tk/MANIFEST b/ext/tk/MANIFEST index c20ee7ffa3..f858fd8e80 100644 --- a/ext/tk/MANIFEST +++ b/ext/tk/MANIFEST @@ -35,6 +35,7 @@ sample/resource.ja sample/resource.en sample/tktimer.rb sample/tktimer2.rb +sample/tktimer3.rb sample/demos-en/ChangeLog sample/demos-en/ChangeLog.prev sample/demos-en/README diff --git a/ext/tk/lib/multi-tk.rb b/ext/tk/lib/multi-tk.rb index c74b5714b8..d1bf21164a 100644 --- a/ext/tk/lib/multi-tk.rb +++ b/ext/tk/lib/multi-tk.rb @@ -33,7 +33,7 @@ MultiTkIp_OK.freeze ################################################ # methods for construction class MultiTkIp - SLAVE_IP_ID = ['slave'.freeze, '0'] + SLAVE_IP_ID = ['slave'.freeze, '0'].freeze @@IP_TABLE = {} @@ -234,7 +234,12 @@ class MultiTkIp ###################################### - SAFE_OPT_LIST = ['accessPath', 'statics', 'nested', 'deleteHook'] + SAFE_OPT_LIST = [ + 'accessPath'.freeze, + 'statics'.freeze, + 'nested'.freeze, + 'deleteHook'.freeze + ].freeze def _parse_slaveopts(keys) name = nil safe = false diff --git a/ext/tk/lib/tk.rb b/ext/tk/lib/tk.rb index a2c4a7d61f..6f3de4e417 100644 --- a/ext/tk/lib/tk.rb +++ b/ext/tk/lib/tk.rb @@ -1,4 +1,4 @@ - +# # tk.rb - Tk interface module using tcltklib # $Date$ # by Yukihiro Matsumoto <[email protected]> @@ -17,7 +17,7 @@ module TkComm #Tk_CMDTBL = {} #Tk_WINDOWS = {} - Tk_IDs = ["00000", "00000"] # [0]-cmdid, [1]-winid + Tk_IDs = ["00000", "00000"].freeze # [0]-cmdid, [1]-winid # for backward compatibility Tk_CMDTBL = Object.new @@ -1651,7 +1651,7 @@ class TkBindTag #BTagID_TBL = {} BTagID_TBL = TkCore::INTERP.create_table - Tk_BINDTAG_ID = ["btag".freeze, "00000"] + Tk_BINDTAG_ID = ["btag".freeze, "00000"].freeze TkCore::INTERP.init_ip_env{ BTagID_TBL.clear } @@ -1726,7 +1726,7 @@ class TkVariable #TkVar_ID_TBL = {} TkVar_CB_TBL = TkCore::INTERP.create_table TkVar_ID_TBL = TkCore::INTERP.create_table - Tk_VARIABLE_ID = ["v".freeze, "00000"] + Tk_VARIABLE_ID = ["v".freeze, "00000"].freeze TkCore::INTERP.add_tk_procs('rb_var', 'args', "ruby [format \"TkVariable.callback %%Q!%s!\" $args]") @@ -1839,6 +1839,10 @@ class TkVariable string(value).to_s end + def to_sym + value.intern + end + def inspect format "#<TkVariable: %s>", @id end @@ -1849,6 +1853,8 @@ class TkVariable self.equal?(other) when String self.to_s == other + when Symbol + self.to_sym == other when Integer self.to_i == other when Float @@ -4630,7 +4636,7 @@ end module TkTreatListItemFont include TkTreatItemFont - ItemCMD = ['itemconfigure', TkComm::None] + ItemCMD = ['itemconfigure'.freeze, TkComm::None].freeze def __conf_cmd(idx) ItemCMD[idx] end @@ -4770,7 +4776,7 @@ end module TkTreatMenuEntryFont include TkTreatItemFont - ItemCMD = ['entryconfigure', TkComm::None] + ItemCMD = ['entryconfigure'.freeze, TkComm::None].freeze def __conf_cmd(idx) ItemCMD[idx] end diff --git a/ext/tk/lib/tkafter.rb b/ext/tk/lib/tkafter.rb index 529b1e6cfb..0572106771 100644 --- a/ext/tk/lib/tkafter.rb +++ b/ext/tk/lib/tkafter.rb @@ -11,7 +11,7 @@ class TkTimer TkCommandNames = ['after'.freeze].freeze - Tk_CBID = ['a'.freeze, '00000'] + Tk_CBID = ['a'.freeze, '00000'].freeze Tk_CBTBL = {} TkCore::INTERP.add_tk_procs('rb_after', 'id', <<-'EOL') @@ -311,6 +311,22 @@ class TkTimer self end + def reset(*reset_args) + restart() if @running + + if @init_proc + @return_value = @init_proc.call(self) + else + @return_value = nil + end + + @current_pos = 0 + @current_args = @init_args + @set_next = false if @in_callback + + self + end + def restart(*restart_args) cancel if @running if restart_args == [] diff --git a/ext/tk/lib/tkcanvas.rb b/ext/tk/lib/tkcanvas.rb index cbe4f89043..47e925c4fe 100644 --- a/ext/tk/lib/tkcanvas.rb +++ b/ext/tk/lib/tkcanvas.rb @@ -11,7 +11,7 @@ require 'tkfont' module TkTreatCItemFont include TkTreatItemFont - ItemCMD = ['itemconfigure', TkComm::None] + ItemCMD = ['itemconfigure'.freeze, TkComm::None].freeze def __conf_cmd(idx) ItemCMD[idx] end @@ -529,7 +529,7 @@ class TkcTag<TkObject include TkcTagAccess CTagID_TBL = TkCore::INTERP.create_table - Tk_CanvasTag_ID = ['ctag', '00000'] + Tk_CanvasTag_ID = ['ctag'.freeze, '00000'].freeze TkCore::INTERP.init_ip_env{ CTagID_TBL.clear } @@ -660,7 +660,7 @@ class TkcTagCurrent<TkcTag end class TkcGroup<TkcTag - Tk_cGroup_ID = ['tkcg', '00000'] + Tk_cGroup_ID = ['tkcg'.freeze, '00000'].freeze def create_self(parent, *args) if not parent.kind_of?(TkCanvas) fail format("%s need to be TkCanvas", parent.inspect) @@ -823,7 +823,7 @@ class TkImage<TkObject TkCommandNames = ['image'.freeze].freeze Tk_IMGTBL = TkCore::INTERP.create_table - Tk_Image_ID = ['i', '00000'] + Tk_Image_ID = ['i'.freeze, '00000'].freeze TkCore::INTERP.init_ip_env{ Tk_IMGTBL.clear } diff --git a/ext/tk/lib/tkentry.rb b/ext/tk/lib/tkentry.rb index ccfb7928ac..ab69e76550 100644 --- a/ext/tk/lib/tkentry.rb +++ b/ext/tk/lib/tkentry.rb @@ -158,7 +158,7 @@ class TkEntry<TkLabel self end def delete(first, last=None) - tk_send 'insert', first, last + tk_send 'delete', first, last self end def mark(pos) diff --git a/ext/tk/lib/tkfont.rb b/ext/tk/lib/tkfont.rb index 68eb91039b..eb21b1fabf 100644 --- a/ext/tk/lib/tkfont.rb +++ b/ext/tk/lib/tkfont.rb @@ -11,7 +11,7 @@ class TkFont TkCommandNames = ['font'.freeze].freeze - Tk_FontID = ["@font".freeze, "00000"] + Tk_FontID = ["@font".freeze, "00000"].freeze Tk_FontNameTBL = TkCore::INTERP.create_table Tk_FontUseTBL = TkCore::INTERP.create_table diff --git a/ext/tk/lib/tktext.rb b/ext/tk/lib/tktext.rb index a28c3d31fc..6fa69aa597 100644 --- a/ext/tk/lib/tktext.rb +++ b/ext/tk/lib/tktext.rb @@ -9,7 +9,7 @@ require 'tkfont' module TkTreatTextTagFont include TkTreatItemFont - ItemCMD = ['tag', 'configure'] + ItemCMD = ['tag'.freeze, 'configure'.freeze].freeze def __conf_cmd(idx) ItemCMD[idx] end @@ -24,7 +24,7 @@ module TkTreatTextTagFont end class TkText<TkTextWin - ItemConfCMD = ['tag', 'configure'] + ItemConfCMD = ['tag'.freeze, 'configure'.freeze].freeze include TkTreatTextTagFont include Scrollable @@ -767,7 +767,7 @@ class TkTextTag<TkObject include TkTreatTagFont TTagID_TBL = TkCore::INTERP.create_table - Tk_TextTag_ID = ['tag', '00000'] + Tk_TextTag_ID = ['tag'.freeze, '00000'].freeze TkCore::INTERP.init_ip_env{ TTagID_TBL.clear } @@ -971,7 +971,7 @@ end class TkTextMark<TkObject TMarkID_TBL = TkCore::INTERP.create_table - Tk_TextMark_ID = ['mark', '00000'] + Tk_TextMark_ID = ['mark'.freeze, '00000'].freeze TkCore::INTERP.init_ip_env{ TMarkID_TBL.clear } diff --git a/ext/tk/lib/tkvirtevent.rb b/ext/tk/lib/tkvirtevent.rb index c594d4716f..49c236f7f0 100644 --- a/ext/tk/lib/tkvirtevent.rb +++ b/ext/tk/lib/tkvirtevent.rb @@ -9,7 +9,7 @@ class TkVirtualEvent<TkObject TkCommandNames = ['event'.freeze].freeze - TkVirtualEventID = ["<VirtEvent".freeze, "00000", ">".freeze] + TkVirtualEventID = ["<VirtEvent".freeze, "00000", ">".freeze].freeze TkVirtualEventTBL = TkCore::INTERP.create_table TkCore::INTERP.init_ip_env{ TkVirtualEventTBL.clear } diff --git a/ext/tk/sample/demos-en/rmt b/ext/tk/sample/demos-en/rmt index d4b1d93760..73f631180a 100644 --- a/ext/tk/sample/demos-en/rmt +++ b/ext/tk/sample/demos-en/rmt @@ -53,10 +53,8 @@ class Rmt # Create text window and scrollbar. - @txt = TkText.new(root, 'relief'=>'sunken', 'bd'=>2, 'setgrid'=>true) {|t| - TkScrollbar.new(root, 'command'=>proc{|*args| t.yview *args}) { - pack('side'=>'right', 'fill'=>'both') - } + @txt = TkText.new(root, 'relief'=>'sunken', 'bd'=>2, 'setgrid'=>true) { + yscrollbar(TkScrollbar.new(root){pack('side'=>'right', 'fill'=>'y')}) pack('side'=>'left') } @@ -247,13 +245,18 @@ class Rmt rescue end TkWinfo.interps.sort.each{|ip| - if Tk.appsend(ip, false, 'info commands ruby') == "" - mode = 'Tcl' - else - mode = 'Ruby' + begin + if Tk.appsend(ip, false, 'info commands ruby') == "" + mode = 'Tcl' + else + mode = 'Ruby' + end + menu.add('command', 'label'=>format("%s (#{mode}/Tk)", ip), + 'command'=>proc{win.newApp ip, mode}) + rescue + menu.add('command', 'label'=>format("%s (unknown Tk)", ip), + 'command'=>proc{win.newApp ip, mode}, 'state'=>'disabled') end - menu.add('command', 'label'=>format("%s (#{mode}/Tk)", ip), - 'command'=>proc{win.newApp ip, mode}) } menu.add('command', 'label'=>format("local (Ruby/Tk)"), 'command'=>proc{win.newApp 'local', 'Ruby'}) diff --git a/ext/tk/sample/demos-en/rolodex b/ext/tk/sample/demos-en/rolodex index 84254d93bf..9a4030e902 100644 --- a/ext/tk/sample/demos-en/rolodex +++ b/ext/tk/sample/demos-en/rolodex @@ -4,7 +4,7 @@ # This script is a part of Tom LaStrange's rolodex # # Copyright (C) 1998 by Takaaki Tateishi <[email protected]> -# Time-stamp: "98/07/20 12:00:02 ttate" +# Time-stamp: "03/08/02 06:23:06 nagai" # require "tk" @@ -176,8 +176,8 @@ end class Rolodex < TkRoot attr_reader :frame, :buttons, :menu - def initialize - super + def initialize(*args) + super(*args) @frame = RolodexFrame.new(self) @frame.pack("side"=>"top", "fill"=>"y", @@ -314,7 +314,7 @@ Ctrl+S: Search (dummy operation) EOF $helpTopics["version"] = <<EOF -This is version 1.0. +This is version 1.0.1. EOF Tk.mainloop diff --git a/ext/tk/sample/demos-en/rolodex-j b/ext/tk/sample/demos-en/rolodex-j index b0fc1d2c76..27e2bc9da0 100644 --- a/ext/tk/sample/demos-en/rolodex-j +++ b/ext/tk/sample/demos-en/rolodex-j @@ -4,11 +4,10 @@ # ���Υ�����ץȤ� Tom LaStrange �� rolodex �ΰ����Ǥ��� # # Copyright (C) 1998 by Takaaki Tateishi <[email protected]> -# Time-stamp: "98/07/20 12:00:36 ttate" +# Time-stamp: "03/08/02 14:02:04 nagai" # require "tk" -require 'tkencoding' Tk.encoding = "euc-jp" $font = TkFont.new('k14') @@ -198,8 +197,8 @@ end class Rolodex < TkRoot attr_reader :frame, :buttons, :menu - def initialize - super + def initialize(*args) + super(*args) @frame = RolodexFrame.new(self) @frame.pack("side"=>"top", "fill"=>"y", @@ -318,7 +317,7 @@ Ctrl+S: ���� EOF $helpTopics["�С���������"] = <<EOF -�С������� 1.0 �Ǥ��� +�С������� 1.0.1e �Ǥ��� EOF Tk.mainloop diff --git a/ext/tk/sample/demos-en/square b/ext/tk/sample/demos-en/square index 821cd9927e..00bfde59ff 100644 --- a/ext/tk/sample/demos-en/square +++ b/ext/tk/sample/demos-en/square @@ -15,13 +15,20 @@ require 'tkafter' class TkSquare<TkWindow def create_self - tk_call 'square', path + begin + tk_call 'square', path + rescue + STDERR.print "\nSorry. Your Tk interpreter does not contain " + + 'a "square" demonstration widget.' + + "\n ( See documents included the Tcl/Tk source archive. )\n\n" + exit + end end def size(amount=nil) if amount tk_send 'size', amount else - number(tk_send 'size') + number(tk_send('size')) end end def position(x,y) diff --git a/ext/tk/sample/demos-en/tcolor b/ext/tk/sample/demos-en/tcolor index 8750d15c3e..6d023f0f8b 100644 --- a/ext/tk/sample/demos-en/tcolor +++ b/ext/tk/sample/demos-en/tcolor @@ -30,6 +30,12 @@ $label2 = TkVariable.new("label2") $label3 = TkVariable.new("label3") +# setup the entry of the resourc database +if (TkVarAccess.new('tcl_platform')['platform'] == 'unix') + TkOptionDB.add('*Entry.background', 'white') +end + + # �ƥ��٥���ѤΥ�å� def rgbToHsv(red,green,blue) @@ -132,7 +138,7 @@ def tc_scaleChanged scale2 = $root.middle.middle.scale2 scale3 = $root.middle.middle.scale3 - case $colorSpace.to_i + case $colorSpace.value.intern when :rgb $red = (scale1.get * 65.535).to_i $green = (scale2.get * 65.535).to_i @@ -167,7 +173,7 @@ def tc_setScales scale2 = $root.middle.middle.scale2 scale3 = $root.middle.middle.scale3 - case $colorSpace.to_i + case $colorSpace.value.intern when :rgb scale1.set($red / 65.535) scale2.set($green / 65.535) @@ -289,7 +295,7 @@ class TkColorMenuFrame<TkFrame "command" => proc{changeColorSpace(:hsb)} add "separator" add "radio", - "label" => "Qutomatic updates", + "label" => "Automatic updates", "variable" => $autoUpdate, "value" => "1", "underline" => "0" @@ -367,7 +373,7 @@ class TkColorMiddleLeftFrame<TkFrame "relief"=>"sunken", "borderwidth"=>"2", "exportselection"=>"false") - @scroll.command(proc{|*args| @names.yview *args}) + @scroll.command(proc{|*args| @names.yview(*args)}) @names.bind("Double-1",proc{ tc_loadNamedColor(@names.get(@names.curselection))}) @names.pack("side"=>"left") @@ -490,8 +496,8 @@ end class TkColor<TkRoot attr_reader :menu, :bottom, :middle - def initialize - super + def initialize(*args) + super(*args) @menu = TkColorMenuFrame.new(self) @menu.pack("side"=>"top", "fill"=>"x") diff --git a/ext/tk/sample/demos-en/timer b/ext/tk/sample/demos-en/timer index 896568c0bc..58a41d00c0 100644 --- a/ext/tk/sample/demos-en/timer +++ b/ext/tk/sample/demos-en/timer @@ -80,12 +80,28 @@ end class ButtonFrame < TkFrame def initialize(parent=nil,keys=nil) super(parent,keys) +=begin @stop = TkButton.new(self, 'text'=>'Stop', 'command'=>proc{timer_stop}) @start = TkButton.new(self, 'text'=>'Start', 'command'=>proc{timer_start}) +=end + @stop = TkButton.new(self, :text=>'Stop', :state=>:disabled) + @start = TkButton.new(self, :text=>'Start', :state=>:normal) + + @stop.command proc{ + timer_stop + @start.state(:normal) + @stop.state(:disabled) + } + @start.command proc{ + timer_start + @stop.state(:normal) + @start.state(:disabled) + } + @reset = TkButton.new(self, 'text'=>'Reset', 'command'=>proc{timer_reset}) @@ -99,8 +115,8 @@ end class Timer < TkRoot attr_reader :countframe - def initialize - super + def initialize(*args) + super(*args) @countframe = CountFrame.new(self) @buttonframe = ButtonFrame.new(self) for f in [@buttonframe,@countframe] diff --git a/ext/tk/sample/demos-jp/browse1 b/ext/tk/sample/demos-jp/browse1 index 6bb8fb35ca..03e251035a 100644 --- a/ext/tk/sample/demos-jp/browse1 +++ b/ext/tk/sample/demos-jp/browse1 @@ -1,4 +1,4 @@ -#!/usr/local/bin/ruby +#!/usr/bin/env ruby # browse -- # This script generates a directory browser, which lists the working diff --git a/ext/tk/sample/demos-jp/browse2 b/ext/tk/sample/demos-jp/browse2 index 755afa682c..304a5f547e 100644 --- a/ext/tk/sample/demos-jp/browse2 +++ b/ext/tk/sample/demos-jp/browse2 @@ -1,4 +1,4 @@ -#!/usr/local/bin/ruby +#!/usr/bin/env ruby # browse -- # This script generates a directory browser, which lists the working diff --git a/ext/tk/sample/demos-jp/hello b/ext/tk/sample/demos-jp/hello index 94e450899c..859ebd950e 100644 --- a/ext/tk/sample/demos-jp/hello +++ b/ext/tk/sample/demos-jp/hello @@ -1,4 +1,4 @@ -#!/usr/local/bin/ruby +#!/usr/bin/env ruby require 'tk' TkButton.new(nil, diff --git a/ext/tk/sample/demos-jp/ixset b/ext/tk/sample/demos-jp/ixset index 5391012cfb..46c2378073 100644 --- a/ext/tk/sample/demos-jp/ixset +++ b/ext/tk/sample/demos-jp/ixset @@ -1,4 +1,4 @@ -#!/usr/local/bin/ruby +#!/usr/bin/env ruby # ixset -- # A nice interface to "xset" to change X server settings @@ -166,7 +166,7 @@ class Xsettings l = TkLabel.new(bell, 'text'=>'Bell Settings') @w_bellvol = TkScale.new(bell, 'from'=>0, 'to'=>100, 'length'=>200, 'tickinterval'=>20, 'orient'=>'horizontal', - 'label'=>"Volume (%)") + 'label'=>"Volume (%)") f = TkFrame.new(bell) @w_bellpit = LabelEntry.new(f, "Pitch (Hz)", 6) diff --git a/ext/tk/sample/demos-jp/rmt b/ext/tk/sample/demos-jp/rmt index 64583d714e..73f631180a 100644 --- a/ext/tk/sample/demos-jp/rmt +++ b/ext/tk/sample/demos-jp/rmt @@ -1,4 +1,4 @@ -#!/usr/local/bin/ruby +#!/usr/bin/env ruby # rmt -- # This script implements a simple remote-control mechanism for @@ -53,10 +53,8 @@ class Rmt # Create text window and scrollbar. - @txt = TkText.new(root, 'relief'=>'sunken', 'bd'=>2, 'setgrid'=>true) {|t| - TkScrollbar.new(root, 'command'=>proc{|*args| t.yview *args}) { - pack('side'=>'right', 'fill'=>'both') - } + @txt = TkText.new(root, 'relief'=>'sunken', 'bd'=>2, 'setgrid'=>true) { + yscrollbar(TkScrollbar.new(root){pack('side'=>'right', 'fill'=>'y')}) pack('side'=>'left') } @@ -247,13 +245,18 @@ class Rmt rescue end TkWinfo.interps.sort.each{|ip| - if Tk.appsend(ip, false, 'info commands ruby') == "" - mode = 'Tcl' - else - mode = 'Ruby' + begin + if Tk.appsend(ip, false, 'info commands ruby') == "" + mode = 'Tcl' + else + mode = 'Ruby' + end + menu.add('command', 'label'=>format("%s (#{mode}/Tk)", ip), + 'command'=>proc{win.newApp ip, mode}) + rescue + menu.add('command', 'label'=>format("%s (unknown Tk)", ip), + 'command'=>proc{win.newApp ip, mode}, 'state'=>'disabled') end - menu.add('command', 'label'=>format("%s (#{mode}/Tk)", ip), - 'command'=>proc{win.newApp ip, mode}) } menu.add('command', 'label'=>format("local (Ruby/Tk)"), 'command'=>proc{win.newApp 'local', 'Ruby'}) diff --git a/ext/tk/sample/demos-jp/rolodex b/ext/tk/sample/demos-jp/rolodex index 9ed1f6d7d1..9f87ae2829 100644 --- a/ext/tk/sample/demos-jp/rolodex +++ b/ext/tk/sample/demos-jp/rolodex @@ -1,10 +1,10 @@ -#!/usr/local/bin/ruby +#!/usr/bin/env ruby # # rolodex -- # This script is a part of Tom LaStrange's rolodex # # Copyright (C) 1998 by Takaaki Tateishi <[email protected]> -# Time-stamp: "98/07/20 12:00:02 ttate" +# Time-stamp: "03/08/02 12:45:21 nagai" # require "tk" @@ -176,8 +176,8 @@ end class Rolodex < TkRoot attr_reader :frame, :buttons, :menu - def initialize - super + def initialize(*args) + super(*args) @frame = RolodexFrame.new(self) @frame.pack("side"=>"top", "fill"=>"y", @@ -314,7 +314,7 @@ Ctrl+S: Search (dummy operation) EOF $helpTopics["version"] = <<EOF -This is version 1.0. +This is version 1.0.1. EOF Tk.mainloop diff --git a/ext/tk/sample/demos-jp/rolodex-j b/ext/tk/sample/demos-jp/rolodex-j index 170f7bb96b..1c482aafb2 100644 --- a/ext/tk/sample/demos-jp/rolodex-j +++ b/ext/tk/sample/demos-jp/rolodex-j @@ -1,21 +1,14 @@ -#!/usr/local/bin/ruby +#!/usr/bin/env ruby # # rolodex -- # ���Υ�����ץȤ� Tom LaStrange �� rolodex �ΰ����Ǥ��� # # Copyright (C) 1998 by Takaaki Tateishi <[email protected]> -# Time-stamp: "98/07/20 12:00:36 ttate" +# Time-stamp: "03/08/02 14:01:54 nagai" # require "tk" - -# UTF8�ؤ��Ѵ���Ԥʤ��� - -$encoding = "euc-jp" -def j(str) - Tk.toUTF8(str,$encoding) -end - +Tk.encoding = "euc-jp" def show_help(topic,x=0,y=0) if( topic.is_a?(TkWindow) ) @@ -33,17 +26,17 @@ def show_help(topic,x=0,y=0) msg = "���Υȥԥå��ˤĤ��ƤΥإ�פϤޤ����ѤǤ��ޤ���" end TkDialog.new("title"=>"Rolodex Help", - "message"=>j("��#{topic}��\n\n#{msg}"), + "message"=>"��#{topic}��\n\n#{msg}", "default_button"=>0, "buttons"=>["OK"]) end def fillCard clearAction - $root.frame.entry[1].insert(0,j("Ω�� ����")) - $root.frame.entry[2].insert(0,j("923-1292 ���")) - $root.frame.entry[3].insert(0,j("ä��Į ���� 1-1")) - $root.frame.entry[4].insert(0,j("��Φ��ü�ʳص�����ر����")) + $root.frame.entry[1].insert(0, "Ω�� ����") + $root.frame.entry[2].insert(0, "923-1292 ���") + $root.frame.entry[3].insert(0, "ä��Į ���� 1-1") + $root.frame.entry[4].insert(0, "��Φ��ü�ʳص�����ر����") $root.frame.entry[5].insert(0,"private") $root.frame.entry[6].insert(0,"***-***-****") $root.frame.entry[7].insert(0,"***-***-****") @@ -53,7 +46,7 @@ def addAction for i in 1..7 STDERR.print format("%-12s %s\n", RolodexFrame::LABEL[i], - Tk.fromUTF8($root.frame.entry[i].value,$encoding)) + $root.frame.entry[i].value) end end @@ -65,7 +58,7 @@ end def fileAction TkDialog.new("title"=>"File Selection", - "message"=>j("����ϥե�������������������Υ��ߡ��Ǥ���\n"), + "message"=>"����ϥե�������������������Υ��ߡ��Ǥ���\n", "default_button"=>0, "buttons"=>["OK"]) STDERR.print "dummy file name\n" @@ -73,9 +66,9 @@ end def deleteAction result = TkDialog.new("title"=>"Confirm Action", - "message"=>j("��������Ǥ�����"), + "message"=>"��������Ǥ�����", "default_button"=>0, - "buttons"=>[j("�����")]) + "buttons"=>["�����"]) if( result.value == 0 ) clearAction end @@ -90,7 +83,6 @@ class RolodexFrame < TkFrame def initialize(parent=nil,keys=nil) super(parent,keys) self["relief"] = "flat" - @i = [] @label = [] @entry = [] @@ -100,7 +92,7 @@ class RolodexFrame < TkFrame "pady"=>2, "anchor"=>"e") @label[i] = TkLabel.new(@i[i], - "text"=>j(LABEL[i]), + "text"=>LABEL[i], "anchor"=>"e") @entry[i] = TkEntry.new(@i[i], "width"=>30, @@ -116,14 +108,10 @@ class RolodexButtons < TkFrame def initialize(parent,keys=nil) super(parent,keys) - @clear = TkButton.new(self, - "text" => j("���ꥢ��")) - @add = TkButton.new(self, - "text" => j("�ɲ�")) - @search = TkButton.new(self, - "text" => j("����")) - @delete = TkButton.new(self, - "text" => j("�õ�")) + @clear = TkButton.new(self,"text" => "���ꥢ��") + @add = TkButton.new(self, "text" => "�ɲ�") + @search = TkButton.new(self, "text" => "����") + @delete = TkButton.new(self, "text" => "�õ�") for w in [@clear,@add,@search,@delete] w.pack("side"=>"left", "padx"=>2) end @@ -139,42 +127,42 @@ class RolodexMenuFrame < TkFrame "borderwidth"=>1) @file = TkMenubutton.new(self, - "text"=>j("�ե�����"), + "text"=> "�ե�����", "underline"=>0) @file_menu = TkMenu.new(@file) @file_menu.add("command", - "label" => j("�ɤ߹��� ..."), + "label" => "�ɤ߹��� ...", "command" => proc{fileAction}, "underline" => 0) @file_menu.add("command", - "label" => j("��λ"), + "label" => "��λ", "command" => proc{$root.destroy}, "underline" => 0) @file.menu(@file_menu) @file.pack("side"=>"left") @help = TkMenubutton.new(self, - "text"=>j("�إ��"), + "text"=> "�إ��", "underline"=>0) @help_menu = TkMenu.new(@help) @help_menu.add("command", - "label"=>j("����ƥ����ȤˤĤ���"), + "label"=> "����ƥ����ȤˤĤ���", "command"=>proc{show_help("����ƥ�����")}, "underline"=>3) @help_menu.add("command", - "label"=>j("�إ�פˤĤ���"), + "label"=> "�إ�פˤĤ���", "command"=>proc{show_help("�إ��")}, "underline"=>3) @help_menu.add("command", - "label"=>j("������ɥ��ˤĤ���"), + "label"=> "������ɥ��ˤĤ���", "command"=>proc{show_help("������ɥ�")}, "underline"=>3) @help_menu.add("command", - "label"=>j("�������ˤĤ���"), + "label"=> "�������ˤĤ���", "command"=>proc{show_help("�������")}, "underline"=>3) @help_menu.add("command", - "label"=>j("�С���������"), + "label"=> "�С���������", "command"=>proc{show_help("�С���������")}, "underline"=>3) @help.menu(@help_menu) @@ -185,8 +173,8 @@ end class Rolodex < TkRoot attr_reader :frame, :buttons, :menu - def initialize - super + def initialize(*args) + super(*args) @frame = RolodexFrame.new(self) @frame.pack("side"=>"top", "fill"=>"y", @@ -209,16 +197,16 @@ $root.buttons.add.configure("command"=>proc{addAction}) $root.buttons.clear.configure("command"=>proc{clearAction}) $root.buttons.search.configure("command"=>proc{addAction; fillCard}) -$root.buttons.clear.configure("text"=>j("���ꥢ�� Ctrl+C")) +$root.buttons.clear.configure("text"=> "���ꥢ�� Ctrl+C") $root.bind("Control-c",proc{clearAction}) -$root.buttons.add.configure("text"=>j("�ɲ� Ctrl+A")) +$root.buttons.add.configure("text"=> "�ɲ� Ctrl+A") $root.bind("Control-a",proc{addAction}) -$root.buttons.search.configure("text"=>j("���� Ctrl+S")) +$root.buttons.search.configure("text"=> "���� Ctrl+S") $root.bind("Control-s",proc{addAction; fillCard}) -$root.buttons.delete.configure("text"=>j("�õ� Ctrl+D")) +$root.buttons.delete.configure("text"=> "�õ� Ctrl+D") $root.bind("Control-d",proc{deleteAction}) $root.menu.file_menu.entryconfigure(1, "accel"=>"Ctrl+F") @@ -305,7 +293,7 @@ Ctrl+S: ���� EOF $helpTopics["�С���������"] = <<EOF -�С������� 1.0 �Ǥ��� +�С������� 1.0.1j �Ǥ��� EOF Tk.mainloop diff --git a/ext/tk/sample/demos-jp/square b/ext/tk/sample/demos-jp/square index b914b735b2..00bfde59ff 100644 --- a/ext/tk/sample/demos-jp/square +++ b/ext/tk/sample/demos-jp/square @@ -1,4 +1,4 @@ -#!/usr/local/bin/ruby +#!/usr/bin/env ruby # square -- # This script generates a demo application containing only @@ -15,13 +15,20 @@ require 'tkafter' class TkSquare<TkWindow def create_self - tk_call 'square', path + begin + tk_call 'square', path + rescue + STDERR.print "\nSorry. Your Tk interpreter does not contain " + + 'a "square" demonstration widget.' + + "\n ( See documents included the Tcl/Tk source archive. )\n\n" + exit + end end def size(amount=nil) if amount tk_send 'size', amount else - number(tk_send 'size') + number(tk_send('size')) end end def position(x,y) diff --git a/ext/tk/sample/demos-jp/tcolor b/ext/tk/sample/demos-jp/tcolor index 5464aebae2..391ce4c446 100644 --- a/ext/tk/sample/demos-jp/tcolor +++ b/ext/tk/sample/demos-jp/tcolor @@ -1,4 +1,4 @@ -#!/usr/local/bin/ruby +#!/usr/bin/env ruby # # tcolor -- # ���Υ�����ץȤ�RGB,HSB,CYM�����ݡ��Ȥ��� @@ -30,6 +30,12 @@ $label2 = TkVariable.new("label2") $label3 = TkVariable.new("label3") +# ������ǡ����١��������� +if (TkVarAccess.new('tcl_platform')['platform'] == 'unix') + TkOptionDB.add('*Entry.background', 'white') +end + + # �ƥ��٥���ѤΥ�å� def rgbToHsv(red,green,blue) @@ -132,7 +138,7 @@ def tc_scaleChanged scale2 = $root.middle.middle.scale2 scale3 = $root.middle.middle.scale3 - case $colorSpace.to_i + case $colorSpace.value.intern when :rgb $red = (scale1.get * 65.535).to_i $green = (scale2.get * 65.535).to_i @@ -167,7 +173,7 @@ def tc_setScales scale2 = $root.middle.middle.scale2 scale3 = $root.middle.middle.scale3 - case $colorSpace.to_i + case $colorSpace.value.intern when :rgb scale1.set($red / 65.535) scale2.set($green / 65.535) @@ -289,7 +295,7 @@ class TkColorMenuFrame<TkFrame "command" => proc{changeColorSpace(:hsb)} add "separator" add "radio", - "label" => "Qutomatic updates", + "label" => "Automatic updates", "variable" => $autoUpdate, "value" => "1", "underline" => "0" @@ -367,7 +373,7 @@ class TkColorMiddleLeftFrame<TkFrame "relief"=>"sunken", "borderwidth"=>"2", "exportselection"=>"false") - @scroll.command(proc{|*args| @names.yview *args}) + @scroll.command(proc{|*args| @names.yview(*args)}) @names.bind("Double-1",proc{ tc_loadNamedColor(@names.get(@names.curselection))}) @names.pack("side"=>"left") @@ -490,8 +496,8 @@ end class TkColor<TkRoot attr_reader :menu, :bottom, :middle - def initialize - super + def initialize(*args) + super(*args) @menu = TkColorMenuFrame.new(self) @menu.pack("side"=>"top", "fill"=>"x") diff --git a/ext/tk/sample/demos-jp/timer b/ext/tk/sample/demos-jp/timer index 232f4ae5ca..58a41d00c0 100644 --- a/ext/tk/sample/demos-jp/timer +++ b/ext/tk/sample/demos-jp/timer @@ -1,4 +1,4 @@ -#!/usr/local/bin/ruby +#!/usr/bin/env ruby # # timer -- # This script generates a counter with start,stop and reset buttons. @@ -80,12 +80,28 @@ end class ButtonFrame < TkFrame def initialize(parent=nil,keys=nil) super(parent,keys) +=begin @stop = TkButton.new(self, 'text'=>'Stop', 'command'=>proc{timer_stop}) @start = TkButton.new(self, 'text'=>'Start', 'command'=>proc{timer_start}) +=end + @stop = TkButton.new(self, :text=>'Stop', :state=>:disabled) + @start = TkButton.new(self, :text=>'Start', :state=>:normal) + + @stop.command proc{ + timer_stop + @start.state(:normal) + @stop.state(:disabled) + } + @start.command proc{ + timer_start + @stop.state(:normal) + @start.state(:disabled) + } + @reset = TkButton.new(self, 'text'=>'Reset', 'command'=>proc{timer_reset}) @@ -99,8 +115,8 @@ end class Timer < TkRoot attr_reader :countframe - def initialize - super + def initialize(*args) + super(*args) @countframe = CountFrame.new(self) @buttonframe = ButtonFrame.new(self) for f in [@buttonframe,@countframe] diff --git a/ext/tk/sample/demos-jp/widget b/ext/tk/sample/demos-jp/widget index 3d4690d57a..5eb5d5f074 100644 --- a/ext/tk/sample/demos-jp/widget +++ b/ext/tk/sample/demos-jp/widget @@ -1,4 +1,4 @@ -#!/usr/local/bin/ruby +#!/usr/bin/env ruby # tk �ط��饤�֥����ɤ߹��� require 'tk' diff --git a/ext/tk/sample/safe-tk.rb b/ext/tk/sample/safe-tk.rb index 6b6de8f848..8be13a32d0 100644 --- a/ext/tk/sample/safe-tk.rb +++ b/ext/tk/sample/safe-tk.rb @@ -32,6 +32,7 @@ cmd = Proc.new{|txt| timer = TkTimer.new(50, -1, tick).start(0, proc{ label.text('0.00'); 0 }) +=begin TkButton.new(:text=>'Start') { command proc{ timer.continue unless timer.running? } pack(:side=>:left, :fill=>:both, :expand=>true) @@ -44,6 +45,30 @@ cmd = Proc.new{|txt| command proc{ timer.stop if timer.running? } pack('side'=>'right','fill'=>'both','expand'=>'yes') } +=end + b_start = TkButton.new(:text=>'Start', :state=>:disabled) { + pack(:side=>:left, :fill=>:both, :expand=>true) + } + b_stop = TkButton.new(:text=>'Stop', :state=>:normal) { + pack('side'=>'left', 'fill'=>'both', 'expand'=>'yes') + } + + b_start.command { + timer.continue + b_stop.state(:normal) + b_start.state(:disabled) + } + + b_stop.command { + timer.stop + b_start.state(:normal) + b_stop.state(:disabled) + } + + TkButton.new(:text=>'Reset', :state=>:normal) { + command { timer.reset } + pack('side'=>'right', 'fill'=>'both', 'expand'=>'yes') + } ev_quit = TkVirtualEvent.new('Control-c', 'Control-q') Tk.root.bind(ev_quit, proc{Tk.exit}).focus diff --git a/ext/tk/sample/tkbiff.rb b/ext/tk/sample/tkbiff.rb index 5fe367fd97..e89644bd9d 100644 --- a/ext/tk/sample/tkbiff.rb +++ b/ext/tk/sample/tkbiff.rb @@ -1,4 +1,4 @@ -#! /usr/local/bin/ruby +#!/usr/bin/env ruby if ARGV[0] != '-d' unless $DEBUG diff --git a/ext/tk/sample/tkbrowse.rb b/ext/tk/sample/tkbrowse.rb index 882f0a489b..7395688e97 100644 --- a/ext/tk/sample/tkbrowse.rb +++ b/ext/tk/sample/tkbrowse.rb @@ -1,4 +1,4 @@ -#!/usr/local/bin/ruby +#!/usr/bin/env ruby # # This script generates a directory browser, which lists the working # directory and allows you to open files or subdirectories by diff --git a/ext/tk/sample/tkdialog.rb b/ext/tk/sample/tkdialog.rb index 73708945fb..00cc12ab11 100644 --- a/ext/tk/sample/tkdialog.rb +++ b/ext/tk/sample/tkdialog.rb @@ -1,4 +1,4 @@ -#! /usr/local/bin/ruby +#!/usr/bin/env ruby require "tk" root = TkFrame.new diff --git a/ext/tk/sample/tkfrom.rb b/ext/tk/sample/tkfrom.rb index e0e7f4810f..25f1d7c429 100644 --- a/ext/tk/sample/tkfrom.rb +++ b/ext/tk/sample/tkfrom.rb @@ -1,4 +1,4 @@ -#! /usr/local/bin/ruby +#!/usr/bin/env ruby require "parsedate" require "base64" diff --git a/ext/tk/sample/tktimer.rb b/ext/tk/sample/tktimer.rb index 34377e2f39..b1adb5b506 100644 --- a/ext/tk/sample/tktimer.rb +++ b/ext/tk/sample/tktimer.rb @@ -1,4 +1,4 @@ -#!/usr/local/bin/ruby +#!/usr/bin/env ruby # This script generates a counter with start and stop buttons. require "tk" diff --git a/ext/tk/sample/tktimer3.rb b/ext/tk/sample/tktimer3.rb new file mode 100644 index 0000000000..e3bb4c3e4a --- /dev/null +++ b/ext/tk/sample/tktimer3.rb @@ -0,0 +1,59 @@ +#!/usr/bin/env ruby +# This script is a re-implementation of tktimer.rb with TkTimer(TkAfter) class. + +require "tk" + +# new notation : +# * symbols are acceptable as keys or values of the option hash +# * the parent widget can be given by :parent key on the option hash +root = TkRoot.new(:title=>'timer sample') +label = TkLabel.new(:parent=>root, :relief=>:raised, :width=>10) \ + .pack(:side=>:bottom, :fill=>:both) + +# define the procedure repeated by the TkTimer object +tick = proc{|aobj| #<== TkTimer object + cnt = aobj.return_value + 5 # return_value keeps a result of the last proc + label.text format("%d.%02d", *(cnt.divmod(100))) + cnt #==> return value is kept by TkTimer object + # (so, can be send to the next repeat-proc) +} + +timer = TkTimer.new(50, -1, tick).start(0, proc{ label.text('0.00'); 0 }) + # ==> repeat-interval : (about) 50 ms, + # repeat : infinite (-1) times, + # repeat-procedure : tick (only one, in this case) + # + # ==> wait-before-call-init-proc : 0 ms, + # init_proc : proc{ label.text('0.00'); 0 } + # + # (0ms)-> init_proc ->(50ms)-> tick ->(50ms)-> tick ->.... + +b_start = TkButton.new(:text=>'Start', :state=>:disabled) { + pack(:side=>:left, :fill=>:both, :expand=>true) +} + +b_stop = TkButton.new(:text=>'Stop', :state=>:normal) { + pack('side'=>'left', 'fill'=>'both', 'expand'=>'yes') +} + +b_start.command { + timer.continue + b_stop.state(:normal) + b_start.state(:disabled) +} + +b_stop.command { + timer.stop + b_start.state(:normal) + b_stop.state(:disabled) +} + +TkButton.new(:text=>'Reset', :state=>:normal) { + command { timer.reset } + pack(:side=>:right, :fill=>:both, :expand=>:yes) +} + +ev_quit = TkVirtualEvent.new('Control-c', 'Control-q') +Tk.root.bind(ev_quit, proc{Tk.exit}).focus + +Tk.mainloop |