新井です。

In message "[ruby-list:28663] TkMenuClone の使い方は?"
  on 10 Mar 2001 15:38:38 +0900,
  Noritsugu Nakamura <nnakamur / mxq.mesh.ne.jp> wrote:
> 
> 中村 のりつぐ です。
> 
> TkMenuClone が良く分かりません。
> 
> Tcl/Tk, Perl/Tk では一応使えたのですが、
> Ruby/Tk の場合の使い方が分かりませんでした。

TkMenuClone は始めて知ったのですがこういうことなんではないか
と思います。

# リファレンスで一切触れてないのは当時なかったのか、見逃して
# たのか?

生成するメニューのパスを任意に指定できず。必ずMenuの子になる
のは良いのかな?
# メニューは良く知らないもので判断できませんでした


#!/usr/bin/env ruby require "tk" class TkMenuClone<TkMenu def initialize(parent, type=None) unless parent.kind_of?(TkMenu) fail ArgumentError, "parent must be TkMenu" end @parent = parent install_win(@parent ? @parent.path : nil) tk_call @parent.path, 'clone', @path, type end end m1 = TkMenu.new Tk.root.configure('menu' => m1) m1.add("cascade", 'label' => "File") m1.add("cascade", 'label' => "File2") i1 = TkMenu.new(m1) m1.entryconfigure('File', 'menu' => i1) i1.add('command', 'label' => "Open", 'command' => proc { print "Open\n" }) i1.add('command', 'label' => "Exit", 'command' => proc { exit }) i2 = TkMenuClone.new(i1) m1.entryconfigure('File2', 'menu' => i2) Tk.mainloop