PHPプロ!TIPS+

Newtを使ってユーザインタフェースを作ろう

TIPSメーリングリストでは何回か対話形式のコマンドラインプログラムを紹介しています。今回はNcurses端末画面制御関数の回で少しふれたNewtという拡張モジュールを紹介したいと思います。

このNewt拡張モジュールは、RedHat Newtライブラリを用いて対話形式のインターフェースを作成する拡張モジュールです。使用するにはlibnewtが必要になるので、あらかじめシステムにインストールしておかなければなりません。

libnewtの準備ができたらこの拡張モジュールをインストールします。なお、libnewtを使用するためWindowsプラットフォームでは使用することができません。

pecl install newt

これで完了です。では、早速使ってみることにしましょう。以下、サンプルスクリプトを実行してみてください。

<?php
newt_init
();
newt_cls();

newt_draw_root_text(00"サンプルスクリプト");
newt_push_help_line("");
newt_draw_root_text(-90"PHPプロ!");
newt_centered_window(3417"メニュー");

$form newt_form();
$list newt_listbox(3210);

$item_list array("アイテム1""アイテム2""アイテム3""アイテム4");
foreach (
$item_list as $item) {
  
newt_listbox_add_entry($list$item$item);
}

$button_next newt_button(512"次へ");
$button_exit newt_button(2112"終了");

newt_form_add_component($form$list);
newt_form_add_components($formarray($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の環境であればこのように日本語でも使用することができます。

今回はリストボックスとボタンを使用しましたが、この他にもチェックボックスやテキストボックスなど各ウィジェットがそろっています。興味のある方は使ってみてはいかがでしょうか。

バックナンバーについて

TIPS-MLは、毎週金曜日に更新され、新しい記事が掲載されます。

Tipsꗗy[W 

Pick Up Q&A

Q
負荷時のmysql_connect()エラー
 このエントリーをはてなブックマークに追加 
A
これはPHPというよりOSまたはMySQLのコミュニティで質問されたほうがいいと思います。 ぱっと思いついた範囲で記すと MySQL等のDBに「ある時点において同時に接続可能なクライアントの最大数」に制限があるよう...

>>続きを読む

今回のような実践的な経験がエンジニアのキャリアに繋がると思います。是非サービスを成功させて下さい!

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)