Next: , Previous: , Up: ボタン   [Contents][Index]


40.19.3 ボタンの作成

ボタンはボタン固有の情報を保持するために、オーバーレイプロパティかテキストプロパティを使用してテキストのリージョンに関連付けられます。これらはすべてボタンのタイプ(デフォルトはビルトインのボタンタイプbutton)から初期化されます。すべてのEmacsテキストと同じようにボタンの外観はfaceプロパティにより制御されます。(ボタンタイプbuttonから継承されたfaceプロパティを通じることにより)デフォルトでは典型的なウェブページリンクのようなシンプルなアンダーラインです。

簡便さのために2種類のボタン作成関数があります。1つはバッファーの既存リージョンにボタンプロパティを追加するmake-...buttonと呼ばれる関数、もう1つはボタンテキストを挿入するinsert-...buttonと呼ばれる関数です。

すべてのボタン作成関数は&rest引数のpropertiesを受け取ります。これはボタンに追加するプロパティを指定するproperty valueペアーのシーケンスである必要があります。ボタンのプロパティを参照してください。これに加えて他のプロパティの継承元となるボタンタイプの指定にキーワード引数:typeを使用できます。ボタンのタイプを参照してください。作成の間に明示的に指定されなかったプロパティは、(そのタイプがそのようなプロパティを定義していれば)そのボタンのタイプから継承されます。

以下の関数はボタンプロパティを保持するためにオーバーレイを使用してボタンを追加します(オーバーレイを参照)。

Function: make-button beg end &rest properties

これはカレントバッファー内のbegからendにボタンを作成してリターンする。

Function: insert-button label &rest properties

これはポイント位置にラベルlabelのボタンを挿入してリターンする。

以下の関数も同様ですが、ボタンプロパティを保持するためにテキストプロパティを使用します(テキストのプロパティを参照)。この種のボタンはバッファーにマーカーを追加しないので、非常に多数のボタンが存在してもバッファーでの編集が低速になることはありません。しかしそのテキストに既存のfaceテキストプロパティが存在する場合(たとえばFont Lockモードにより割り当てられたフェイス)には、そのボタンのフェイスは可視にならないかもしれません。これらの関数はいずれも新たなボタンの開始位置をリターンします。

Function: make-text-button beg end &rest properties

これはテキストプロパティを使用してカレントバッファー内のbegからendにボタンを作成する。

Function: insert-text-button label &rest properties

これはテキストプロパティを使用してポイント位置にラベルlabelのボタンを挿入する。

Function: button-buttonize string callback &optional data

たとえば後でバッファーに挿入されるかもしれないデータ構造の作成時など、即座にバッファーに挿入せずに文字列をボタンにできれば便利なことがある。この関数はstringをそのような文字列にして、ユーザーがそのボタンをクリックした際にはcallbackが呼び出されるようにする。オプションのdataパラメーターはcallbackの呼び出し時にパラメーターとして使用される。nilならかわりにボタンがパラメーターとして使用される。