[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.2 Frame Part Classes

sawfish の目標の中の一つが可能な限り多くの柔軟性を提供することですが、こ れはときどきすべてのことについて有害となる可能性があります。例えばすべて のテーマが概念的に似たウィンドウフレームパーツについて一貫したキーマップ とカーソル画像を使うことでよりユーザに優しくなります。すなわち、すべての 閉ボタンが同じマウスボタンバインディングを持ち、ポインタがそれらの上に来 たときに同じマウスカーソルを表示する方がいいでしょう。

これを達成するために sawfish はそれぞれいくつかのデフォルトの属性を持つ フレームパーツの クラス 群を定義しています。ウィンドウフレームを定 義する際に各パーツの定義はそれがメンバとなるクラスを指定し、そしてデフォ ルトの属性(これらの属性に対する特定の値は暗黙に指定されます)を継承します。

Variable: frame-part-classes
この変数は関連リストで、フレームパーツクラスをそのクラスのデフォルトの関 連リストに関連づけます。

あらかじめ定義されたクラスは次のとおりで、それらの意味は自身が説明してい ます:

title, menu-button, close-button, iconify-button, maximize-button, top-border, left-border, right-border, bottom-border, top-left-corner, top-right-corner, bottom-left-corner, bottom-right-corner.

frame-part-classes frame-part-classes に追加することで別の クラスを生成できます。けれどもおそらく一つ以上のテーマがその同じクラスを 必要とし、そしてユーザは使われているキーマップをカスタマイズしたいと思う かもしれません。def-frame-class マクロはこのような状況に対応し、 新しいクラスを追加するのに使われます。

Macro: def-frame-class class alist-form &rest binding-forms ...
シンボル CLASS という名前の新しいフレームパーツクラスを生成します。

ALIST-FORM はクラスに対する属性を定義する関連リストを与えるために 評価されます。キーについて既存の値が存在しないときだけ、各キー値の組が設 定されます。

もし binding-forms が与えられるとそれらはクラスについて既存のキー マップがないときだけ評価されます。キーマップが生成され `class-name' という名前の変数に保持されます。そしてこの変数は binding-forms 内で使われます。

そして仮想の shade-button クラスを定義するには次が使えます:

 
(def-frame-class shade-button '((cursor . left_ptr))
  (bind-keys shade-button-keymap
    "Button1-Off" 'toggle-window-shaded))

いくつかのケースではあらかじめ定義されたフレームパーツプロパティを上書き できる変数になるかもしれません。例えば、ウィンドウタイトルバー上のテキス トがいつも青くなるような、設定などです。

Variable: override-frame-part-classes
frame-part-classes に似ていますがプロパティがその変数とフレームス タイル自身の両方で定義される値よりも優先されます。

次の関数はこれら二つの変数のカスタマイズを単純にするのに使えます:

Function: set-frame-part-value class key value &optional override
value をクラス class のすべてのフレームパーツについてプロパ ティ key に関連づけます。

もし override が nil でなければ設定は override-frame-part-classes 変数にインストールされ、そうでなけれ ばframe-part-classes 変数に保持されます。

次の例はすべてのタイトルバーの色を上書きしています:

 
(set-frame-part-value 'title 'background
                      '("black" "white" "green" "blue") t)

(実際にここで何が設定されるかの詳細については次の節を参照して下さい)



This document was generated by SATO Satoru on October, 28 2000 using texi2html