Sonntag でCommand を呼び出す - Printable Version +- Curl Global Community (https://communities.curl.com) +-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1) +--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2) +--- Thread: Sonntag でCommand を呼び出す (/showthread.php?tid=156) |
Sonntag でCommand を呼び出す - umemura - 07-25-2011 Sonntag で、Command で定義した処理をイベントとして呼び出すときには、 CommandButton のなかで bind-screen-command を使えばいいのは分かったのですが、 バインドさせずに、たとえばコンストラクタのなかで呼び出す場合には、どうすればよいのでしょうか。 RE: Sonntag でCommand を呼び出す - umemura - 07-25-2011 Sonntag 設計者に聞いて解決しました。 Screenクラス内で {self.do-command "コマンド名"} で実行できました。 アチョー。 RE: Sonntag でCommand を呼び出す - fukuta - 07-25-2011 内部的にはScreenクラスはCommandContextで、define-screen-commandで定義されるのはそのCommandImplです。do-command以外にも、CommandContextのメソッドはすべて使えます。 RE: Sonntag でCommand を呼び出す - umemura - 07-26-2011 Sonntagの設計者にも聞いてみましたが、Command に引数を渡したり、戻り値をもらったりはできないんですね。 Screen のフィールドを使って格納したり、参照したりするのが基本的スタンスという理解です。 RE: Sonntag でCommand を呼び出す - fukuta - 08-02-2011 Command がパラメータを扱う場合は CommandImpl.prepare や CommandImpl.prompt を正しく実装するというのがCommand 本来の作法のようです。(詳しくは CommandImpl の APIリファレンス参照) ただし Sonntag でスクリーンコマンドを定義するための define-screen-command はこれらの実装を定義できるようになっていないため、実行時の処理の一環として Screen から値を取得したりする必要があります。 |