[#38323] [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@...

押田です。

22 messages 2009/04/24
[#38331] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/04/26

永井@知能.九工大です.

[#38339] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@... 2009/04/27

押田です。

[#38340] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/04/27

永井@知能.九工大です.

[#38697] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/06/21

永井@知能.九工大です.

[#38711] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@... 2009/06/24

押田です。

[#38723] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/07/01

永井@知能.九工大です.

[#38743] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@... 2009/07/07

押田です。

[#38747] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/07/08

永井@知能.九工大です.

[#38748] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@... 2009/07/08

押田です。

[#38749] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/07/08

永井@知能.九工大です.

[ruby-dev:38331] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合

From: Hidetoshi NAGAI <nagai@...>
Date: 2009-04-26 00:34:29 UTC
List: ruby-dev #38331
永井@知能.九工大です.

From: oshida@bb-next.net
Subject: [ruby-dev:38323] [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合
Date: Fri, 24 Apr 2009 21:28:42 +0900
Message-ID: <1240576111.49f1b06fabf64@u1.div.rasch.jp>
> 「sample/tkcombobox.rb が動かなくなっています」
> という表現の方がシンプルで良いかも知れません。
> 
> もし、tk/ttk_selector.rb の
> "Ttk is a standard library on Tcl/Tk8.5+"
> が 8.4 サポートの terminate を意味しないのであれば、
> autoload 登録を見合せていただければありがたいです。

8.4 と 8.5 との間で互換性のあるスクリプトを
書きやすいようにと考えていたのですが,
「小さな親切,大きなお世話」になってしまったようですね.
ごめんなさい.

ですが,将来の機能強化の際にも同様の問題が出てしまうであろうことや 
default_widget_set の切替え機能のことを考えると,
登録を削ってしまうのも少々辛いです.

> また、ひとまず手元では、
> 
> Object.const_set(:TkCombobox, Class.new(XXX))
> class TkCombobox < XXX
> 
> とすることで autoload を無効化しています。

衝突するクラス (この場合は TkCombobox クラス) を定義する前に
------------------------------------------------------------------------------
Object.instance_eval{remove_const :TkCombobox} if Object.autoload? :TkCombobox
------------------------------------------------------------------------------
として autoload を無効化してください.

# sample/tkcombobox.rb には,これを追加しておくようにします.

また,default_widget_set 切替えとの整合も取らせたいのであれば,
------------------------------------------------------------------------------
class MyTkCombobox < TkEntry; ... ; end
Tk.__set_toplevel_aliases__(:Tk, MyTkCombobox, :TkCombobox, TkComboBox)
------------------------------------------------------------------------------
などとして登録を行ってください.
この例では MyTkCombobox というクラスを default_widget_set が Tk の時に
TkCombobox および TkComboBox の名前で使えるようにしています.
-- 
永井 秀利  (nagai@ai.kyutech.ac.jp)
九州工業大学 大学院情報工学研究院 知能情報工学研究系 知能情報メディア部門

In This Thread