[#50363] [質問] Ruby socket.send でUDP Packet が出ない? ネットワーク環境によるものか? — <yamataka@...08.itscom.net>

山口と申します。

9 messages 2016/07/27

[ruby-list:50354] Re: [再]Re: TkDND での日本語名の扱い

From: Hidetoshi NAGAI <nagai@...>
Date: 2016-07-11 04:41:24 UTC
List: ruby-list #50354
永井@知能.九工大です.

From: Toshihiko Ichida <dogatana@gmail.com>
Subject: [ruby-list:50353] [再]Re: TkDND での日本語名の扱い
Date: Sat, 09 Jul 2016 08:29:00 +0900
Message-ID: <5780373C.8000603@gmail.com>

> 今回永井さんが 49992 に書かれているのを見たのですが、内容がどうもよく
> わかりません :<
> ただTkComm.listを継続して利用するとなっていると理解してまして、それだと
> 3.の問題が復活してしまいます。(パッチそのものは試せてません)

drag&drop で渡されるデータはファイルパスとは限らない (と思っている) ので,
勝手に加工することは問題があるだろうと考えた結果が [ruby-list:49992] です.
data タイプの扱いをリスト (?l) から単純文字列 (?s) に変更しようという
内容ですので,[ruby-list:49992] の変更後は 
data タイプで TkComm.list の処理は行いません.
PROC_TBL での ?s の処理が TkComm.method(:string) ですから,
全体が {} で囲まれている場合はそれを取り除き,
それ以外であればそのままに返す形の処理です.

> 漢字ファイル名について、内容がUTF-8の文字列のEncodingが
> ASCII-8BITになっているいるのそもそも問題(*)であるので、Windows環境限定
> とすれば次の修正が考えられるのではないでしょうか。

添付されたように変更してしまうと,他の ?l 
(action, descriptions, source_types, modifiers, types) の処理も
すべて置き変わってしまい不都合が出ます.
識別文字を ?d などとして,KEY_TBL 登録を [?D, ?d, :data] とした上で
PROC_TBL に新たに [ ?d, ...処理... ] を追加するという形は可能かと思いますが,
「データはファイルパスとは限らない」とすると,望ましくはなさそうです.

目的に合わせて設定できるようにするのであれば,
処理型 ?d として PROC_TBL に登録する処理の中で,
ユーザが定義したハンドラを呼び出せるようにするという対応はいかがでしょうか?
従来との互換を維持するのであれば,デフォルトのハンドラの処理を
TkComm.list を呼ぶ形にしておくことで可能です.

私が TkDND をよく理解できていないのが悪いのですが,
data タイプの値は,1次元リスト (埋め込みのリスト構造なし) と
断言しても問題なしでしょうか.
そうであるなら,KEY_TBL の :data の ?l を ?L に変更して,
simplelist を呼ぶようにした方がいいのでしょうね.
-- 
永井 秀利  (nagai@ai.kyutech.ac.jp)
九州工業大学大学院情報工学研究院知能情報工学研究系知能情報メディア部門助教

In This Thread