##
6.15.1 Textbox オブジェクト

以下のような `Textbox` オブジェクトをインスタンス生成することが できます:

class `Textbox`( | win)

  テキストボックスウィジェットオブジェクトを返します。win 引数は、テキストボックスを入れるための `WindowObject` で なければなりません。テキストボックスの編集カーソルは、最初は テキストボックスが入っているウィンドウの左上角に配置され、その 座標は `(0, 0)` です。インスタンスの `stripspaces` フラグの初期値はオンに設定されます。

`Textbox` オブジェクトは以下のメソッドを持ちます:

`edit`( | [validator])

  普段使うことになるエントリポイントです。終了キーストロークの一つが 入力されるまで編集キーストロークを受け付けます。validator を与える場合、関数でなければなりません。validator は キーストロークが入力されるたびにそのキーストロークが引数となって 呼び出されます; 返された値に対して、コマンドキーストロークとして 解釈が行われます。このメソッドはウィンドウの内容を文字列として返します; ウィンドウ内の空白が含められるかどうかは `stripspaces` メンバ で決められます。

`do_command`( | ch)

  単一のコマンドキーストロークを処理します。以下にサポートされている 特殊キーストロークを示します:

  キーストローク | 動作
  --- | ---
  `Control-A` | ウィンドウの左端に移動します。
  `Control-B` | カーソルを左へ移動し、必要なら前の行に折り返します。
  `Control-D` | カーソル下の文字を削除します。
  `Control-E` | 右端 (stripspaces がオフのとき) または行末 (stripspaces がオンのとき) に移動します。
  `Control-F` | カーソルを右に移動し、必要なら次の行に折り返します。
  `Control-G` | ウィンドウを終了し、その内容を返します。
  `Control-H` | 逆方向に文字を削除します。(バックスペース)
  `Control-J` | ウィンドウが 1 行であれば終了し、そうでなければ新しい行を挿入します。
  `Control-K` | 行が空白行ならその行全体を削除し、そうでなければカーソル以降行末までを消去します。
  `Control-L` | スクリーンを更新します。
  `Control-N` | カーソルを下に移動します; 1 行下に移動します。
  `Control-O` | カーソルの場所に空行を 1 行挿入します。
  `Control-P` | カーソルを上に移動します; 1 行上に移動します。

  移動操作は、カーソルがウィンドウの縁にあって移動ができない場合には 何も行いません。場合によっては、以下のような同義のキーストロークが サポートされています:

  定数 | キーストローク
  --- | ---
  `KEY_LEFT` | `Control-B`
  `KEY_RIGHT` | `Control-F`
  `KEY_UP` | `Control-P`
  `KEY_DOWN` | `Control-N`
  `KEY_BACKSPACE` | `Control-h`

  他のキーストロークは、与えられた文字を挿入し、(行折り返し付きで) 右に移動するコマンドとして扱われます。

`gather`( | )

  このメソッドはウィンドウの内容を文字列として返します; ウィンドウ内の 空白が含められるかどうかは `stripspaces` メンバ変数で決められ ます。

`stripspaces`
  このデータメンバはウィンドウ内の空白領域の解釈方法を制御するための フラグです。フラグがオンに設定されている場合、各行の末端にある 空白領域は無視されます; すなわち、末端空白領域にカーソルが入ると、 その場所の代わりに行の末尾にカーソルが移動します。また、末端の空白 領域はウィンドウの内容を取得する際に剥ぎ取られます。