TIPSメーリングリストでは何回か対話形式のコマンドラインプログラムを紹介しています。今回はNcurses端末画面制御関数の回で少しふれたNewtという拡張モジュールを紹介したいと思います。
このNewt拡張モジュールは、RedHat Newtライブラリを用いて対話形式のインターフェースを作成する拡張モジュールです。使用するにはlibnewtが必要になるので、あらかじめシステムにインストールしておかなければなりません。
libnewtの準備ができたらこの拡張モジュールをインストールします。なお、libnewtを使用するためWindowsプラットフォームでは使用することができません。
これで完了です。では、早速使ってみることにしましょう。以下、サンプルスクリプトを実行してみてください。
<?php
newt_init();
newt_cls();
newt_draw_root_text(0, 0, "サンプルスクリプト");
newt_push_help_line("");
newt_draw_root_text(-9, 0, "PHPプロ!");
newt_centered_window(34, 17, "メニュー");
$form = newt_form();
$list = newt_listbox(3, 2, 10);
$item_list = array("アイテム1", "アイテム2", "アイテム3", "アイテム4");
foreach ($item_list as $item) {
newt_listbox_add_entry($list, $item, $item);
}
$button_next = newt_button(5, 12, "次へ");
$button_exit = newt_button(21, 12, "終了");
newt_form_add_component($form, $list);
newt_form_add_components($form, array($button_next, $button_exit));
newt_refresh();
newt_form_run($form, $result);
newt_pop_window();
switch ($result['component']) {
case $button_next:
$select_item = newt_listbox_get_current($list);
newt_win_message("結果", "OK", "選択したのは「" . $select_item . "」で
す");
break;
case $button_exit:
newt_win_message("終了", "OK", "終了します");
break;
default:
break;
}
newt_finished ();
newt_form_destroy ($form);
?>
実行すると、4つのアイテムをリスト表示されて「次へ」「終了」というボタンが表示されます。いずれかのアイテムを選び「次へ」ボタンをクリックすると選択したアイテム名を表示します。また「終了」ボタンを押すと終了します。
このサンプルスクリプトでは日本語を使用しています。もし文字化けやレイアウト崩れがある場合は、スクリプトの文字コード、ターミナルのローケルがEUC-JPになっているか確認してください。EUC-JPの環境であればこのように日本語でも使用することができます。
今回はリストボックスとボタンを使用しましたが、この他にもチェックボックスやテキストボックスなど各ウィジェットがそろっています。興味のある方は使ってみてはいかがでしょうか。
(アシアル 熊谷裕志)
この記事は、アシアルが運営するPHP開発者のためのポータル&コミュニティサイト「PHPプロ!」で毎週配信しているPHP・TIPSメーリングリストを再録したものです。
同サイトでは、他にもPHP最新ニュースや、困ったときのQ&A掲示板、初心者向けのPHP講座など、PHP開発者をサポートする情報を掲載しています。