ウィジェット編集ダイアログ

ウィジェット編集ダイアログは、特定のウィジェットクラスを記述するために使用されます。以下にフィールドを示します。

インクルードファイル

ウィジェットクラスを使用するプログラムにインクルードする、 などのファイルです。通常は、このファイルの指定を行う必要があります。

定義名関数

X-Designer は、内部リソース名を、#define のあるヘッダーファイルに通常定義されている記号名に変換する必要があります。たとえば、内部名「foreground」は、記号「XtNforeground」に変換しなければいけません。デフォルトでは、内部名に接頭辞「XtN」を追加して変換が行われますが、これが常に有効であるとはかぎりません。たとえば、Athena クロックウィジェットには、記号名が「XtNhand」であるリソース「hands」があります。定義名関数を使用すると、必要に応じて X-Designer のデフォルト名変換を書き換えることができます。これは、通常は指定する必要がありません。定義名関数が必要な場合に、まだ指定が行われていないと、「XtN」が定義されていないことを理由に、X-Designer が生成するコードのコンパイルは失敗します。この例は、X-Designer 7.9 ユーザーズガイドの第 17 章「構成」に示されています。

子を追加可能関数

X-Designer ウィジェットパレット内にあるそれぞれのウィジェットアイコンは、ウィジェットが、ウィジェット階層内で現在選択されているウィジェットの子になることができる場合にのみ使用することができます。Motif ウィジェットの場合には、さまざまな親が受け取ることのできる子の知識は、X-Designer に組み込まれています。X-Designer は、ユーザー定義ウィジェットに対してもこの機能のいくつかを提供しています(たとえば、プリミティブウィジェットへの子の追加は認められない、など) が、X-Designer が決定することができない制約もあります (メニューバーがカスケードボタンの子だけを受け取ることができる、など)。子を追加可能関数は、ユーザー定義ウィジェットに対してこの情報を提供するために使用されます。 これは、通常は指定する必要がありませんが、 、X-Designer において、あるいは X-Designer が生成するコードにおいて問題を生じるおそれのある、無効なウィジェット階層の作成を防ぐために必要とされる場合もあります。この例は、X-Designer 7.9 ユーザーズガイドの第 17 章「構成」に示されています。

適切な親関数

適切な親関数は、子を追加可能関数とは逆さの関数です。ウィジェット階層内で現在選択されているウィジェットが、ユーザー定義ウィジェットに対して適切な親ではない場合に、アイコンを使用できなくするために使用します。 これは、通常は指定する必要がありません。 X-Designer において、あるいは X-Designer が生成するコードにおいて問題を生じるおそれのある、無効なウィジェット階層の作成を防ぐために必要とされる場合もあります。この例は、X-Designer 7.9 ユーザーズガイドの第 17 章「構成」に示されています。

リアライズ関数

ウィジェットパレット内のアイコンをクリックすると、X-Designer は適切な種類のウィジェットを作成してリアライズします。X-Designer は通常、ウィジェットの作成時にリソース値を設定せず、ツールキットのデフォルトを受け取ります。しかし、これにより問題が生じる場合もあります。たとえば、コンテナウィジェットによっては、デフォルトにより幅および高さがゼロで作成されるものもあります。 この場合、X は問題があることを警告します。リアライズ関数を使用すると、ウィジェットがリアライズされる前に呼び出される関数を(通常は初期化を行うため) 指定することができます。この関数は、ウィジェットが X-Designer 内で作成された場合に限り呼び出されます。生成コードにおいても同じ初期化が必要な場合は、コードプレリュードとして追加します。多くの場合、これは必要ではありません。コンテナでの問題は、子を持たせる前に X-Designer がコンテナウィジェットをリアライズするために生じます。生成されたコードにおいては、幅および高さをゼロ以外の値に強制し、X からエラーの発生を防止するため、リアライズの前に子が追加されます。 リアライズ関数は、通常は必要ではありません。この例は、X-Designer 7.9 ユーザーズガイドの第 17 章「構成」に示されています。

抽象子関数

デフォルトの場合、X-Designer はサードパーティ製ウィジェットの組み込みの子すべてを再帰的に表示するので、ユーザーはコンポジットオブジェクトのパーツをカスタマイズできます。 この方法でアプリケーションプログラマにアクセスされては困るウィジェット部分があるかもしれません。 抽象子ルーチンを指定すれば、X-Designer の中のどの子をユーザーに見えるようにするか、また見えている子の中のどれを編集可能とするかを制御できます。

アイコン

アイコンは、ウィジェットパレットおよびウィジェット階層内でウィジェットを表現するために X-Designer が使用するビットマップです。小アイコン (20×20 ピクセル) は、VGA 解像度画面で使用され (xdesigner.smallscreenがtrueである場合)、大アイコン (32×32 ピクセル) は、ワークステーション型の画面で使用されます。小アイコンが指定されていない場合は、常に大アイコンが使用されます。また、アイコンが一切指定されていない場合は、X-Designer はウィジェットクラス名を持つボタンをパレット内で使用し、階層内では十字の付いたボックスを使用します。2 種類のアイコンのそれぞれに対しては、アイコンが定義されるインクルードファイル (X11/bitmaps/womanなど) およびファイル内で使用する名前を指定します。ビットマップ定義の最初の行は、通常以下のようになります。

#define _width 32

例の場合、ファイル/usr/openwin/include/bitmaps/woman 内のビットマップは「sorceress」です。ユーザーは通常、少なくとも大アイコンを指定するようにします。また、Xユーティリティ「bitmap」(およびその他) を使用してアイコンを作成することができます。

クラス初期化を生成

デフォルトの場合、デザイン内のサードパーティ製構成要素それぞれについて、X-Designer は XtInitializeWidgetClass(3X) の呼び出しを生成します。 この結果、ウィジェットのインスタンスが生成コードに作成される前に、ウィジェットの ClassInitialize メソッドに登録されているコンバータがインストールされます。 この動作が必要ではないこともあります。トグルをオフにすれば、XtInitializeWidgetClass() コードの生成を禁止できます。

ウィジェット検索を禁止

X-Designer でユーザーが動的ディスプレイに <Ctrl>G を入力すると、フォーカスがあるウィジェットが、デザイン階層において現在選択されているウィジェットとなります。実際のキーシーケンスの設定を変更することが可能ですが、この方法でユーザーがキーシーケンスを発行すると、一部のウィジェットクラスはうまく動作しない可能性があります。トグルをオフにすれば、このウィジェットクラスの「高速検索」を禁止できます。

前景スワップを禁止

階層内でウィジェットが選択される場合、X-Designer は通常前景色と背景色をスワップします。 このため、デザインウィンドウ内でウィジェットが強調表示されます。X-Designer は、ウィジェットが前景リソースを持っている場合にのみ、この動作を行います。前景リソースを持つウィジェット(特に OLIT ウィジェット) は、ウィジェットが管理された後のリソース値変更を処理することができません。階層内でこのようなウィジェットを選択した場合は、X-Designer が前景と背景のスワップを行おうとする際に問題が生じます。このトグルを設定すると、前景と背景のスワップが禁止されるため、問題を防ぐことができます。通常は、設定する必要はありません。

ウィジェット作成可能

このトグルが設定されている(デフォルト) 場合、X-Designer ウィジェットパレットにはユーザー定義ウィジェットに対してのアイコンが存在します。 そして、ユーザーは X-Designer において、このウィジェットクラスのインスタンスを作成することができます。トグルがリセットされている場合には、パレットにはアイコンは存在せず、ユーザーはこのウィジェットクラスのインスタンスを作成することはできません。しかし、クラスに対してのリソースパネルは生成されるため、このウィジェットクラスのサブクラスであるユーザー定義ウィジェットは、リソースパネルを使用して継承されるリソースを設定することができます。このトグルは、ユーザー定義ウィジェットクラスの階層が追加された場合、およびユーザーが階層内の抽象クラスを X-Designer によるコアリソースの扱いと同様の方法で扱おうとする場合にのみ使用されます。

ウィジェットマネージ可能

Xt 構成要素の中には、プログラマが直接管理すべきではないものがあります。 オブジェクトクラスから派生する構成要素は、その一例です。 実際、XtObject をマネージすると、アドレス空間が破壊されます。 X-Designer には、製品内や生成コード内でこの種の既知構成要素クラスのマネージを防止する内部アルゴリズムが備わっています。 ただし、サードパーティ製構成要素の中には、この内部アルゴリズムが捕捉できないものもあるかもしれません。 トグルをオフにすると、X-Designer によるコンポーネントのいかなるマネージも防止されます。

抽象子として編集可能

この構成要素が別のウィジェットクラスの組み込みの子として発生した場合、ウィジェットが存在する状況に合わせて慎重に用意されたと思われる設定をユーザーに変更されたくないことがあります。 トグルをオフにすると、この構成要素が別のクラスの組み込みの子として表示されたときにそのリソースをユーザーが編集することはできないようになります。

関連項目: