[#21736] OBJECTDAY 2000 — 助田 雅紀 <masaki.suketa@...>

助田です.

29 messages 2000/04/03
[#21748] Re: OBJECTDAY 2000 — keiju@... (石塚圭樹) 2000/04/04

けいじゅ@日本ラショナルソフトウェアです.

[#21753] Re: OBJECTDAY 2000 — Hideto ISHIBASHI <hideto-i@...4u.or.jp> 2000/04/05

石橋秀仁です。

[#21755] Re: OBJECTDAY 2000 — keiju@... (石塚圭樹) 2000/04/05

けいじゅ@日本ラショナルソフトウェアです.

[#21837] site_ruby & Linux distribution — OZAWA Sakuro <crouton@...>

小澤さくです。

14 messages 2000/04/10

[#21922] ruby-1.4.4 binary for BeOS 5 (Intel) — tenmei@... (Noriaki Harada)

はらだです。

23 messages 2000/04/15
[#21923] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — NAITOH Jun <naitoh@...> 2000/04/15

はじめまして、内藤と申します。

[#21926] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — tenmei@... (Noriaki Harada) 2000/04/16

>はじめまして、内藤と申します。

[#21930] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — NAITOH Jun <naitoh@...> 2000/04/16

内藤です。

[#21968] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — Katsuyuki Komatsu <komatsu@...> 2000/04/17

小松です。

[#21969] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — NAITOH Jun <naitoh@...> 2000/04/17

再び内藤です。

[#21956] Thread & STDIN — Masato Toyoshima <mt@...>

はじめまして、豊島といいます。

16 messages 2000/04/17

[#21981] rd2man — WATANABE Hirofumi <eban@...>

わたなべです.

29 messages 2000/04/18
[#21982] Re: rd2man — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/04/18

Toshです。

[#21985] Re: rd2man — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/04/19

わたなべです.

[#22036] Re: rd2man — Wakou Aoyama <wakou@...> 2000/04/20

青山です。

[#22040] Re: rd2man — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/04/21

Toshです。

[#22014] shell interactive — WATANABE Daisaku <dwata@...3.rim.or.jp>

31 messages 2000/04/20
[#22016] Re: shell interactive — 時田幸粋 <ktokita@...> 2000/04/20

こんにちは、時田です。

[#22017] Re: shell interactive — nobu.nakada@... 2000/04/20

なかだです。

[#22018] Re: shell interactive — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/04/20

わたなべです.

[#22027] Re: shell interactive — 時田幸粋 <ktokita@...> 2000/04/20

こんにちは、時田です。

[#22103] Please put ruby-1.4.4.tar.gz in pub/lang/ruby/1.4/ — "Akinori -Aki- MUSHA" <knu@...>

 お願いがあるのですが、 ruby-1.4.4.tar.gz を FTP ツリーの 1.4/

16 messages 2000/04/25
[#22199] Where to put ruby-i.j.k.tar.gz on? (Re: ) — SUGIHARA Hiroshi <maili31s@...> 2000/04/28

[ruby-list:22103]におきまして、2000/04/25 12:38ほどに、

[#22117] StateGraph: state machine interpreter — Hideto ISHIBASHI <hideto-i@...4u.or.jp>

石橋 "rubyholic" 秀仁です。

16 messages 2000/04/25

[#22159] $LOAD_PATH への追加について — "Sugawara Hajime" <sugawara@...>

 はじめまして、菅原@ホビー・データです。

13 messages 2000/04/27

[#22181] Can't Use optparse — Yamada Kenji <kyamada@...>

28 messages 2000/04/28
[#22186] Re: Can't Use optparse — akira yamada / やまだあきら <akira@...> 2000/04/28

[#22195] Re: Can't Use optparse — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/04/28

Toshです。

[#22261] Re: Can't Use optparse — nobu.nakada@... 2000/05/04

なかだです。

[#22264] Re: Can't Use optparse — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/04

Toshです。

[#22270] Re: Can't Use optparse — nobu.nakada@... 2000/05/04

なかだです。

[#22272] Re: Can't Use optparse — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/04

Toshです。

[#22300] Re: Can't Use optparse — Koji Arai <JCA02266@...> 2000/05/05

新井です。

[ruby-list:21825] Re: tktext.rb BUG

From: nagai@...
Date: 2000-04-10 03:09:41 UTC
List: ruby-list #21825
永井@知能.九工大です.

From: matz@netlab.co.jp (Yukihiro Matsumoto)
Subject: [ruby-list:21809] Re: tktext.rb BUG
Date: Sat, 8 Apr 2000 17:41:50 +0900
Message-ID: <E12dqk8-0003u1-00@ev.netlab.co.jp>
matz> In message "[ruby-list:21808] tktext.rb BUG"
matz>     on 00/04/08, nagai@ai.kyutech.ac.jp <nagai@ai.kyutech.ac.jp> writes:
matz> |tktext.rb に bug がありました.
matz> |テキストウィジェットの dump コマンドが,
matz> |どこをどう間違ったのか,TkTextWindow クラスの中にあります.(^_^;
matz> |dump 関連を TkText クラスに移しておいてください.
matz> _dump, dump_all, dump_mark, dump_tag, dump_text, dump_window
matz> で全部ですか?

_retrieve_braced_text と _retrive_backshashed_text もです.
が,ついでですので,欠けてる機能を追加しておきます.
TkTextWindow クラスから dump 関連を削った後,
後述のリストを TkText クラスに加えてください.
これにより,dump_command や dump_image が追加される上,
----------------------------------------------------------
require 'tk'
t = TkText.new.pack
t.bind('Control-Button-1', 
       proc{p t.dump(['text', 'mark', ['command', proc{|*args| p args}]], 
                     '1.0', 'end')})
Tk.mainloop
----------------------------------------------------------
などということができます.

ついでに bind_remove を tk.rb に追加しておきます.
こちらは,
=================================================================
module TkComm において,
-------------------------------------------------------
  def _bind_remove(what, context)
    tk_call(*(what + ["<#{tk_event_sequence(context)}>", '']))
  end
-------------------------------------------------------
を追加し,private リストの
-------------------------------------------------------
  private :install_bind, :tk_event_sequence, 
          :_bind_core, :_bind, :_bind_append, :_bindinfo
-------------------------------------------------------
に :_bind_remove を追加.
さらに同モジュールに
-------------------------------------------------------
  def bind_remove(tagOrClass, context)
    _bind_remove(['bind', tagOrClass], context)
  end
-------------------------------------------------------
を追加.

modlue TkBindCore に
-------------------------------------------------------
  def bind_remove(context)
    Tk.bind_remove(to_eval, context)
  end
-------------------------------------------------------
を追加.
=================================================================
というようにお願いします.
bind_remove は滅多に使うことはないと思いますが,
衝突するバインディングの優先順序を変更するためには必須ですので.

# 例えば <Control-Button-1> と <Shift-Button-1> とがあるとき,
# Control + Shift + Button-1 でどちらが実行されるかという話です.
# 順序変更には,バインドを一旦抹殺した後に再定義する必要があります.

では,以下が TkText クラスの修正分です.
=================================================================
  def dump(type_info, *index)
    args = type_info.collect{|inf|
                 if inf.kind_of? Array
                   inf[0] = '-' + inf[0]
                   inf
                 else
                   '-' + inf
                 end
               }.flatten
    str = tk_send('dump', *(args + index))
    result = []
    sel = nil
    i = 0
    while i < str.size
      # retrieve key
      idx = str.index(/ /, i)
      result.push str[i..(idx-1)]
      i = idx + 1
      
      # retrieve value
      case result[-1]
      when 'text'
	if str[i] == ?{
	  # text formed as {...}
	  val, i = _retrieve_braced_text(str, i)
	  result.push val
	else
	  # text which may contain backslahes
	  val, i = _retrieve_backslashed_text(str, i)
	  result.push val
	end
      else
	idx = str.index(/ /, i)
	val = str[i..(idx-1)]
	case result[-1]
	when 'mark'
	  case val
	  when 'insert'
	    result.push TkTextMarkInsert.new(self)
	  when 'current'
	    result.push TkTextMarkCurrent.new(self)
	  when 'anchor'
	    result.push TkTextMarkAnchor.new(self)
	  else
	    result.push tk_tcl2rb(val)
	  end
	when 'tagon'
	  if val == 'sel'
	    if sel
	      result.push sel
	    else
	      result.push TkTextTagSel.new(self)
	    end
	  else
	    result.push tk_tcl2rb val
	  end
	when 'tagoff'
	    result.push tk_tcl2rb sel
	when 'window'
	  result.push tk_tcl2rb val
	end
	i = idx + 1
      end

      # retrieve index
      idx = str.index(/ /, i)
      if idx
	result.push str[i..(idx-1)]
	i = idx + 1
      else
	result.push str[i..-1]
	break
      end
    end
    
    kvis = []
    until result.empty?
      kvis.push [result.shift, result.shift, result.shift]
    end
    kvis  # result is [[key1, value1, index1], [key2, value2, index2], ...]
  end

  def _retrieve_braced_text(str, i)
    cnt = 0
    idx = i
    while idx < str.size
      case str[idx]
      when ?{
	cnt += 1
      when ?}
	cnt -= 1
	if cnt == 0
	  break
	end
      end
      idx += 1
    end
    return str[i+1..idx-1], idx + 2
  end
  private :_retrieve_braced_text

  def _retrieve_backslashed_text(str, i)
    j = i
    idx = nil
    loop {
      idx = str.index(/ /, j)
      if str[idx-1] == ?\\
	j += 1
      else
	break
      end
    }
    val = str[i..(idx-1)]
    val.gsub!(/\\( |\{|\})/, '\1')
    return val, idx + 1
  end
  private :_retrieve_backslashed_text

  def dump_all(*index)
    dump(['all'], *index)
  end
  def dump_command(cmd, *index)
    dump([['command', cmd]], *index)
  end
  def dump_mark(*index)
    dump(['mark'], *index)
  end
  def dump_tag(*index)
    dump(['tag'], *index)
  end
  def dump_text(*index)
    dump(['text'], *index)
  end
  def dump_window(*index)
    dump(['window'], *index)
  end
  def dump_image(*index)
    dump(['image'], *index)
  end
=================================================================
-- 
                                         永井 秀利 (九工大 知能情報)
                                             nagai@ai.kyutech.ac.jp

In This Thread