From: Ryutaro Amano Date: 2007-10-21T22:49:51+09:00 Subject: [ruby-list:44135] Re: ruby-tk with tcltk8.5b1 パッチを当てましたが、エラーになります。 $ ruby -rtk -e "" dyld: NSLinkModule() error dyld: Symbol not found: _TkFindMenuReferences Referenced from: /usr/local/lib/ruby/1.8/powerpc-darwin8.10.0/ tcltklib.bundle Expected in: flat namespace Trace/BPT trap On 2007/10/20, at 1:20, Hidetoshi NAGAI wrote: > 永井@知能.九工大です. > > From: Ryutaro Amano > Subject: [ruby-list:44129] Re: ruby-tk with tcltk8.5b1 > Date: Fri, 19 Oct 2007 22:42:13 +0900 > Message-ID: >>> #if TCL_MAJOR_VERSION >= 8 && TCL_MINOR_VERSION < 5 >>> ------------------------------------------------------------ >>> としてコンパイルしてください. >> >> 天野です。有り難うございます。うまく動くようになりました。 > > 問題の関数を使わない方法を考えてみました. > もし良かったら,先に変更した部分を元に戻して, > 以下のパッチをあてて試してみていただけませんでしょうか? > > # ついでに... > # Tcl/Tk 8.5 の新機能への対応が不十分なところを見つけたら, > # 報告していただけると助かります. > # Tcl/Tk 8.5 の売りの一つの Tile 拡張については > # require 'tkextlib/tile' でかなりの部分は使えると思います. > # ただ,tkextlib/tile/style.rb には修正が必要で > # ('style' で呼んでいる部分を '::ttk::style' で呼ぶよう > にする), > # そのままではうまく動かないはずです. > # 標準ウィジェット群が '::tk::button' 等でも定義されたこ > とも踏まえて, > # TkButton 等が標準ウィジェットと Tile 拡張とのどちらを > 指すかを > # 切り替えできるようにしようと構想中です. > > Index: tcltklib.c > =================================================================== > --- tcltklib.c (revision 13577) > +++ tcltklib.c (working copy) > @@ -7843,6 +7843,7 @@ > #if TCL_MAJOR_VERSION >= 8 > struct tcltkip *ptr = get_ip(interp); > struct dummy_TkMenuRef *menuRefPtr; > + XEvent event; > > StringValue(menu_path); > > @@ -7873,9 +7874,20 @@ > } > #endif > > +#if 0 > TkEventuallyRecomputeMenu(menuRefPtr->menuPtr); > TkEventuallyRedrawMenu(menuRefPtr->menuPtr, > (struct dummy_TkMenuEntry *)NULL); > +#else > + memset((void *) &event, 0, sizeof(event)); > + event.xany.type = ConfigureNotify; > + event.xany.serial = NextRequest(Tk_Display((menuRefPtr- > >menuPtr)->tkwin)); > + event.xany.send_event = 0; /* FALSE */ > + event.xany.window = Tk_WindowId((menuRefPtr->menuPtr)->tkwin); > + event.xany.display = Tk_Display((menuRefPtr->menuPtr)->tkwin); > + event.xconfigure.window = event.xany.window; > + Tk_HandleEvent(&event); > +#endif > > #else /* TCL_MAJOR_VERSION <= 7 */ > rb_notimplement(); > > -- > 永井 秀利 > (九工大 知能情報) > nagai@ai.kyutech.ac.jp > Ryutaro Amano wn9r-amn@asahi-net.or.jp