CIII. Newt 関数

導入

これは RedHat Newt ライブラリのための PHP 拡張モジュールで、 ユーザに優しいアプリケーションを作成するための、ターミナルベースの ウィンドウやウィジェットのライブラリです。 PHP でこの拡張モジュールを有効にすることで Newt ウィジェットが使用可能に なります。この中にはウィンドウやボタン・チェックボックス・ラジオボタン・ ラベル・エディットボックス・スクロールバー・テキストエリア・スケールなどが 含まれます。この拡張モジュールの使用方法は、もとの C 言語用の API と非常によく似ています。

要件

このモジュールは RedHat Newt ライブラリの関数を使用します。 libnewt バージョン >= 0.51.0 が必要です。

インストール手順

この PECL 拡張 モジュールは PHP にバンドルされていません。 この PECL 拡張モジュールをインストールする方法は、 マニュアルの PECL 拡張モジュールのインストール という章にあります。 新規リリース・ダウンロード・ソースファイル・管理者情報・CHANGELOG といった関連する情報については、次の場所にあります。 http://pecl.php.net/package/newt.

PHP 4 の場合、この PECL 拡張モジュール のソースは、PHP のソースの ext/ ディレクトリ、または 上の PECL リンクで入手可能です。 これらの関数を使用するには、--with-newt[=DIR] オプションを使用し、newt サポートを有効にした上で CGI あるいは CLI 版の PHP を コンパイルする必要があります。

注意: この拡張モジュールは、Windows プラットフォームでは使用できません。

この拡張モジュールをコンパイルするには、curses ライブラリおよび slang ライブラリも必要です。 これらのライブラリの場所を指定するには、以下の設定オプションを 使用します。 --with-curses-dir=/path/to/libcurses --with-slang-dir=/path/to/libslang

リソース型

この拡張モジュールは 2 つのリソース型 "newt component" および "newt grid" を使用します。 リソース型 "newt component" は関数から返されるもので、一般的な newt ウィジェット(例: newt_button())を作成します。 リソース型 "newt grid" はコンポーネントの特別なリンク ID で、これは newt グリッドファクトリ関数(例: newt_create_grid()) によって返されます。

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

Newt フォームの終了原因

表 1. Newt フォームの終了原因

定数意味
NEWT_EXIT_HOTKEYnewt_form_add_hot_key() で定義したホットキーが押されました
NEWT_EXIT_COMPONENT何らかのコンポーネントがフォームを終了させました
NEWT_EXIT_FDREADY newt_form_watch_fd() で指定したファイル記述子の 読み込みあるいは書き込みの準備が完了しました
NEWT_EXIT_TIMERnewt_form_set_timer() で指定した時間が 経過しました

Newt 色セット

表 2. Newt 色セット

定数意味
NEWT_COLORSET_ROOT 
NEWT_COLORSET_BORDER 
NEWT_COLORSET_WINDOW 
NEWT_COLORSET_SHADOW 
NEWT_COLORSET_TITLE 
NEWT_COLORSET_BUTTON 
NEWT_COLORSET_ACTBUTTON 
NEWT_COLORSET_CHECKBOX 
NEWT_COLORSET_ACTCHECKBOX 
NEWT_COLORSET_ENTRY 
NEWT_COLORSET_LABEL 
NEWT_COLORSET_LISTBOX 
NEWT_COLORSET_ACTLISTBOX 
NEWT_COLORSET_TEXTBOX 
NEWT_COLORSET_ACTTEXTBOX 
NEWT_COLORSET_HELPLINE 
NEWT_COLORSET_ROOTTEXT 
NEWT_COLORSET_ROOTTEXT 
NEWT_COLORSET_EMPTYSCALE 
NEWT_COLORSET_FULLSCALE 
NEWT_COLORSET_DISENTRY 
NEWT_COLORSET_COMPACTBUTTON 
NEWT_COLORSET_ACTSELLISTBOX 
NEWT_COLORSET_SELLISTBOX 

Newt 引数のフラグ

表 3. Newt 引数のフラグ

定数意味
NEWT_ARG_LAST 
NEWT_ARG_APPEND 

Newt フラグの状態

表 4. Newt フラグの状態

定数意味
NEWT_FLAGS_SET 
NEWT_FLAGS_RESET 
NEWT_FLAGS_TOGGLE 

Newt コンポーネントのフラグ

表 5. Newt コンポーネントのフラグ

定数意味
NEWT_FLAG_RETURNEXITコンポーネントがアクティブになった際にフォームを終了します
NEWT_FLAG_HIDDENコンポーネントは非表示です
NEWT_FLAG_SCROLLコンポーネントはスクロール可能です
NEWT_FLAG_DISABLEDコンポーネントは使用不能です
NEWT_FLAG_BORDER 
NEWT_FLAG_WRAPテキストを折り返します
NEWT_FLAG_NOF12F12 を押してもフォームを終了しません
NEWT_FLAG_MULTIPLE 
NEWT_FLAG_SELECTEDコンポーネントは選択されています
NEWT_FLAG_CHECKBOXコンポーネントはチェックボックスです
NEWT_FLAG_PASSWORD入力コンポーネントはパスワード入力欄です
NEWT_FLAG_SHOWCURSORカーソルを表示します

ファイル識別子のフラグ

表 6. ファイル識別子のフラグ

定数意味
NEWT_FD_READ 
NEWT_FD_WRITE 
NEWT_FD_EXCEPT 

チェックボックスツリーのフラグ

表 7. チェックボックスツリーのフラグ

定数意味
NEWT_CHECKBOXTREE_UNSELECTABLE 
NEWT_CHECKBOXTREE_HIDE_BOX 
NEWT_CHECKBOXTREE_COLLAPSED 
NEWT_CHECKBOXTREE_EXPANDED 
NEWT_CHECKBOXTREE_UNSELECTED 
NEWT_CHECKBOXTREE_SELECTED 

入力フラグ

表 8. 入力フラグ

定数意味
NEWT_ENTRY_SCROLL 
NEWT_ENTRY_HIDDEN 
NEWT_ENTRY_RETURNEXIT 
NEWT_ENTRY_DISABLED 

リストボックスのフラグ

表 9. リストボックスのフラグ

定数意味
NEWT_LISTBOX_RETURNEXIT 

テキストボックスのフラグ

表 10. テキストボックスのフラグ

定数意味
NEWT_TEXTBOX_WRAPテキストボックスのテキストを折り返します
NEWT_TEXTBOX_SCROLLテキストボックスのテキストをスクロールします

フォームのフラグ

表 11. フォームのフラグ

定数意味
NEWT_FORM_NOF12F12 を押しても終了しません

Newt キー

表 12. Newt キー

定数意味
NEWT_KEY_TAB 
NEWT_KEY_ENTER 
NEWT_KEY_SUSPEND 
NEWT_KEY_ESCAPE 
NEWT_KEY_RETURN 
NEWT_KEY_EXTRA_BASE 
NEWT_KEY_UP 
NEWT_KEY_DOWN 
NEWT_KEY_LEFT 
NEWT_KEY_RIGHT 
NEWT_KEY_BKSPC 
NEWT_KEY_DELETE 
NEWT_KEY_HOME 
NEWT_KEY_END 
NEWT_KEY_UNTAB 
NEWT_KEY_PGUP 
NEWT_KEY_PGDN 
NEWT_KEY_INSERT 
NEWT_KEY_F1 
NEWT_KEY_F2 
NEWT_KEY_F3 
NEWT_KEY_F4 
NEWT_KEY_F5 
NEWT_KEY_F6 
NEWT_KEY_F7 
NEWT_KEY_F8 
NEWT_KEY_F9 
NEWT_KEY_F10 
NEWT_KEY_F11 
NEWT_KEY_F12 
NEWT_KEY_RESIZE 

Newt アンカー

表 13. Newt アンカー

定数意味
NEWT_ANCHOR_LEFT 
NEWT_ANCHOR_RIGHT 
NEWT_ANCHOR_TOP 
NEWT_ANCHOR_BOTTOM 

グリッドのフラグ

表 14. グリッドのフラグ

定数意味
NEWT_GRID_FLAG_GROWX 
NEWT_GRID_FLAG_GROWY 
NEWT_GRID_EMPTY 
NEWT_GRID_COMPONENT 
NEWT_GRID_SUBGRID 

この例は、RedHat の 'setup' ユーティリティダイアログを PHP に移植した もので、テキストモードで動作します。

例 1. Newt の使用例

<?php
    newt_init
();
    
newt_cls ();
    
    
newt_draw_root_text (0, 0, "Test Mode Setup Utility 1.12");
    
newt_push_help_line (null);
    
newt_draw_root_text (-30, 0, "(c) 1999-2002 RedHat, Inc");

    
newt_get_screen_size (&$rows, &$cols);
    
    
newt_open_window ($rows/2-17, $cols/2-10, 34, 17, "Choose a Tool");

    
$form = newt_form ();

    
$list = newt_listbox (3, 2, 10);
    
    foreach (array (
        
"Authentication configuration",
        
"Firewall configuration",
        
"Mouse configuration",
        
"Network configuration",
        
"Printer configuration",
        
"System services") as $l_item)
    {
        
newt_listbox_add_entry ($list, $l_item, $l_item);
    }

    
$b1 = newt_button (5, 12, "Run Tool");
    
$b2 = newt_button (21, 12, "Quit");
    
    
newt_form_add_component ($form, $list);
    
newt_form_add_components ($form, array($b1, $b2));

    
newt_refresh ();
    
newt_run_form ($form);

    
newt_pop_window ();
    
newt_pop_help_line ();
    
newt_finished ();
    
newt_form_destroy ($form);
?>
目次
newt_bell -- ビープ音を端末に送信する
newt_button_bar -- 
newt_button -- 新しいボタンを作成する
newt_centered_window -- 画面の中央に指定したサイズのウィンドウをオープンする
newt_checkbox_get_value -- 
newt_checkbox_set_flags -- 
newt_checkbox_set_value -- 
newt_checkbox_tree_add_item -- *
newt_checkbox_tree_find_item -- 
newt_checkbox_tree_get_current -- 
newt_checkbox_tree_get_entry_value -- 
newt_checkbox_tree_get_multi_selection -- 
newt_checkbox_tree_get_selection -- 
newt_checkbox_tree_multi -- 
newt_checkbox_tree_set_current -- 
newt_checkbox_tree_set_entry_value -- 
newt_checkbox_tree_set_entry -- 
newt_checkbox_tree_set_width -- 
newt_checkbox_tree -- 
newt_checkbox -- 
newt_clear_key_buffer --  追加の入力を待たずに、端末の入力バッファの内容をクリアする
newt_cls -- 
newt_compact_button -- 
newt_component_add_callback -- 
newt_component_takes_focus -- 
newt_create_grid -- 
newt_cursor_off -- 
newt_cursor_on -- 
newt_delay -- 
newt_draw_form -- 
newt_draw_root_text -- 指定した位置に文字列を表示する
newt_entry_get_value -- 
newt_entry_set_filter -- 
newt_entry_set_flags -- 
newt_entry_set -- 
newt_entry -- 
newt_finished -- newt インターフェースを終了する
newt_form_add_component -- フォームにコンポーネントを追加する
newt_form_add_components -- フォームに複数のコンポーネントを追加する
newt_form_add_hot_key -- 
newt_form_destroy -- フォームを破壊する
newt_form_get_current -- 
newt_form_run -- フォームを実行する
newt_form_set_background -- 
newt_form_set_height -- 
newt_form_set_size -- 
newt_form_set_timer -- 
newt_form_set_width -- 
newt_form_watch_fd -- 
newt_form -- フォームを作成する
newt_get_screen_size --  参照で渡された引数に、現在の端末の大きさを格納する
newt_grid_add_components_to_form -- 
newt_grid_basic_window -- 
newt_grid_free -- 
newt_grid_get_size -- 
newt_grid_h_close_stacked -- 
newt_grid_h_stacked -- 
newt_grid_place -- 
newt_grid_set_field -- 
newt_grid_simple_window -- 
newt_grid_v_close_stacked -- 
newt_grid_v_stacked -- 
newt_grid_wrapped_window_at -- 
newt_grid_wrapped_window -- 
newt_init -- newt を初期化する
newt_label_set_text -- 
newt_label -- 
newt_listbox_append_entry -- 
newt_listbox_clear_selection -- 
newt_listbox_clear -- 
newt_listbox_delete_entry -- 
newt_listbox_get_current -- 
newt_listbox_get_selection -- 
newt_listbox_insert_entry -- 
newt_listbox_item_count -- 
newt_listbox_select_item -- 
newt_listbox_set_current_by_key -- 
newt_listbox_set_current -- 
newt_listbox_set_data -- 
newt_listbox_set_entry -- 
newt_listbox_set_width -- 
newt_listbox -- 
newt_listitem_get_data -- 
newt_listitem_set -- 
newt_listitem -- 
newt_open_window -- 指定したサイズと位置でウィンドウをオープンする
newt_pop_help_line -- 現在のヘルプ行をスタックの内容で置き換える
newt_pop_window -- トップウィンドウを画面から消去する
newt_push_help_line -- 現在のヘルプ行をスタックに保存し、新しい行を表示する
newt_radio_get_current -- 
newt_radiobutton -- 
newt_redraw_help_line -- 
newt_reflow_text -- 
newt_refresh -- 画面の変更された部分を更新する
newt_resize_screen -- 
newt_resume --  newt_suspend() をコールした後に newt インターフェースの使用を再開する
newt_run_form -- フォームを実行する
newt_scale_set -- 
newt_scale -- 
newt_scrollbar_set -- 
newt_set_help_callback -- 
newt_set_suspend_callback --  ユーザがサスペンドキーを押した際に起動するコールバック関数を設定する
newt_suspend -- 端末を元の状態に戻すよう、newt に通知する
newt_textbox_get_num_lines -- 
newt_textbox_reflowed -- 
newt_textbox_set_height -- 
newt_textbox_set_text -- 
newt_textbox -- 
newt_vertical_scrollbar -- 
newt_wait_for_key -- キーが押されるまで結果を返さない
newt_win_choice -- 
newt_win_entries -- 
newt_win_menu -- 
newt_win_message -- 
newt_win_messagev -- 
newt_win_ternary --