永井@知能.九工大です. From: 天野 竜太郎 <wn9r-amn / asahi-net.or.jp> Subject: [ruby-list:41669] Re: MacOS X Aqua 対応のための tcltklib の extconf.rb Date: Tue, 6 Dec 2005 15:53:12 +0900 Message-ID: <986548DD-E4CE-4778-937E-4F66A34F4E06 / asahi-net.or.jp> > どのようにすればいいのでしょうか。 > できるだけ具体的指示をお願いします。 > (この部分をこのファイルのx行目以下に貼り付けろ、など) では,messageBox のみについて対応することを考えるとすると, demos-jp/widget の末尾で --------------------------------------------------------- Tk.mainloop --------------------------------------------------------- と呼んでいる部分の直前に --------------------------------------------------------- Tk.ip_eval(<<'EOS') proc ::tk_messageBox {args} { return [eval tk::MessageBox $args] } EOS --------------------------------------------------------- という記述を加えてみてください. 期待通りであれば,メッセージボックスのデモにおいて, Aqua 特有のダイアログの代りに,昔からの Tcl/Tk の メッセージボックスが表示されることになるはずです. > メニューの項目です。 > 1. メニューとカスケードを含んだウィンドウ > 2. メニューとカスケードを含んだウィンドウ (Tk8.x 専用) > 3. 〃 (機能に対応したバー > ジョンのTkが必要) > のうち、最初の二つは、 > 「Alt-Xを入力すると、Xがメニューにアンダーライン付き > で表示されている文字ならば...」 > とあり、 > 3番目のは > 「Command+X('x'はコマンドキーシンボルに続けて表示されてい > る文字です)とタイプ...」 > とあります。1と2に関しては、マック環境でもこのように > 表示されて、いいわけですよね。 > 1と2がプラットフォーム判定のif文のミスで、Mac > 環境にもかかわらず「Alt-X...」の方の文が出てきているという > わけではないですよね。 はい. 1 と 2 は古くに作られたデモであるために, 単に aqua に対応していないというだけです. 1 と 2 での表示メッセージ決定部分は ------------------------------------------------------ if $tk_platform['platform'] == 'macintosh' ------------------------------------------------------ という判定になっており,3 では ------------------------------------------------------ if $tk_platform['platform'] == 'macintosh' || windowingsystem == "classic" || windowingsystem == "aqua" ------------------------------------------------------ となっています. 紛らわしいので,本来なら 3 に揃えた方がいいのでしょうね. 念のための確認として,Aqua では -------------------------------------------------- ruby -r tk -e 'p $tk_platform["platform"]' -------------------------------------------------- が何を返すか教えていただけると助かります. -- 永井 秀利 (九工大 知能情報) nagai / ai.kyutech.ac.jp