WML ファイル形式
目的
変数 UIL コンパイラー・コンポーネントを生成します。
説明
ウィジェットメタ言語機能( WML )は、ウィジェットセットに応じてユーザーインターフェース言語(UIL)コンパイラの変更可能なコンポーネントを生成するために使用される。 を使用すると WML、 AIXwindows ウィジェットセットに新しいウィジェットUILサポートを追加したり、まったく新しいウィジェットセットのサポートを追加したりできます。
ファイル・フォーマット
WML ファイルはASCII形式であり、標準的なテキストエディタで編集可能です。 それらは tools/wml ディレクトリ内の WML によってアクセスされ、.wml という拡張子を持っています。 Motif AIXwindows ウィジェットセットは、ファイル motif.wml に記述されています。 これも、機能 WML を使用する際のデフォルト WML ファイルです。
新しいウィジェットを追加したり、ウィジェットの特 WML 性を変更するためのファイルを作成する際には、その motif.wml ファイルのコピーを作成して修正することができます。 UIL で使用する新しいウィジェット・セットを作成する場合は、完全に新しいファイルを作成します。 いずれにせよ、この motif.wml ファイルは WML 構文の良い例であり、独自の WML ファイルを作成する前に言語に慣れるのに役立ちます。
WML ファイルは、UILと構造が類似した基本的な構文を持っています。 WML 構文は以下の要素で構成される:
キーワードまたはストリングを分割しない限り、構文の任意の場所でスペース、タブ、または改行文字を使用できます。 コメントは改行文字で終わります。 構文内のエレメントの順序は重要ではありません。
示されているウィジェット・メタ言語の構文例では、以下の追加規則を使用しています。
| 項目 | 説明 |
|---|---|
| [ ] | オプションのエレメントを示します。 |
| ... | 構文のエレメントを繰り返すことができる場所を示します。 |
| | | 複数の項目から 1 つを選択することを示します。 |
コメント
ファイル WML にコメントを含めることができます。 コメントの構文は次のとおりです。
[AnyElement]!AnyComment
コメントは「!」で始まります。 (感嘆符) を入力し、行の終わりまで拡張します。 コメントは、単独で行の先頭に置くことも、別の要素の任意の部分の後に続けることもできます。 コメントによって他のエレメントの意味が変更されることはありません。 次に例を示します。
!This is a comment
! that spans two lines.
DataType !This is a comment that follows code.データ型の定義
データ・タイプ定義 は、ファイルで使用されるすべてのリソース・データ・タイプを登録します。 ファイル WML で使用するすべてのデータ型を登録する必要があります。 データ・タイプ定義の構文は、次のとおりです。
DataType AnyDatatype [{InternalLiteral = InternalName | DocName = "String"; [...]}]; [...]
データ・タイプ定義は、 DataType キーワードで始まります。 DataType キーワードの後に、以下を使用して変更できるデータ・タイプのリストがあります。
| 項目 | 説明 |
|---|---|
| InternalLiteral | データ・タイプ名の内部シンボル・テーブル・リテラル定義の値を強制します。 この修飾子は、UIL コンパイラーにハードコーディングされたシンボル・テーブル定義を回避するためにのみ使用され、慎重に使用する必要があります。 |
| DocName | 資料で使用する任意のストリングを指定します。 このストリングは、データ・タイプに別の名前を指定するか、データ・タイプに別名がある場合はデータ・タイプに単一の名前を指定します。 次に例を示します。 |
文字セット定義
文字セット定義 は、 AIXwindows Toolkit 名、および UIL で使用される文字セット名に関するその他の情報を登録します。 文字セット定義の構文は、次のとおりです。
AnyCharacterSetCharacterSet { [ フォントリスト要素タグ | XM文字セット名 ] = " 文字列 "; [ 別名 = " 文字列 "... ; | 方向 = [ 左から右 | 右から左 ] ; | 解析方向 = [ 左から右 | 右から左 ] ; | 文字サイズ = [ 1バイト | 2バイト ] ; ] [... ] }; [... ]
文字セット定義は、 CharacterSet キーワードで始まります。 CharacterSet キーワードの後には、以下を使用して変更できる文字セットのリストがあります。
| 項目 | 説明 |
|---|---|
| FontListElementTag | XmStringCharsetName | 文字セットの名前を指定します。 指定されたセットは、作成される複合ストリング・セグメントの文字セット・コンポーネントになります。 これらの文字セットのいずれかを指定する必要があります。 |
| ALIAS | 文字セット名の 1 つ以上の別名を指定します。 各別名は、同じ文字セットを参照するために UIL 内で使用できます。 |
| 方向 | この文字セットを使用して作成された複合ストリング・セグメントの方向を指定します。 デフォルトは. です LeftToRight。 |
| ParseDirection | この文字セットを使用して複合ストリング・セグメントが作成されるときに、入力ストリングが構文解析される方向を指定します。 これを指定しない場合、 方向 の値がデフォルトになります。 |
| CharacterSize | この文字セットを使用して作成された複合ストリング・セグメントの各文字のバイト数を指定します。 デフォルトは OneByteです。 |
文字セット定義構文の例を以下に示します。
CharacterSet
iso_latin1
{ XmStringCharsetName = "ISO8859-1";
Alias = "ISOLatin1"; } ;
iso_hebrew_lr
{ XmStringCharsetName = "ISO8859-8";
Alias = "iso_latin8_lr";
Direction = RightToLeft;
ParseDirection = LeftToRight; } ;
ksc_korean
{ XmStringCharsetName = "KSC5601.1987-0";
CharacterSize = TwoByte; };列挙セット定義
列挙セット定義 は、特定のリソース値を指定するために AIXwindows Toolkit で使用される名前付き定数を登録します。 列挙型セット定義の構文は、次のとおりです。
EnumerationSet ResourceName : ResourceType { EnumerationValueName ; [...] };
列挙型セット定義は、 EnumerationSet キーワードで始まります。 定義されている列挙型セットごとに、リソースの名前とタイプがリストされます。 リソース名は、先頭の XmN 接頭部を除去し、先頭の文字を大文字にした AIXwindows Toolkit リソース名です。 たとえば、 AIXwindows Toolkit リソースの名前は XmNrowColumnType. となります RowColumnType。 リソース・タイプはリソースのデータ・タイプです。ほとんどのリソースの場合、これは整数データ・タイプです。 リソース名およびタイプの後に、リソースの設定として使用できる列挙値の名前のリストが続きます。 これらの名前は、 AIXwindows Toolkit の名前と同じです。
列挙型セット定義の構文の例を以下に示します。
EnumerationSet
RowColumnType: integer
{ XmWORK_AREA; XmMENU_BAR; XmMENU_POPUP;
XmMENU_PULLDOWN; XmMENU_OPTION; };制御リスト定義
制御リスト定義 コントロールのグループに名前を割り当てます。 これらの制御リストは、後でクラス定義で使用することで、ファイル WML の構造を簡素化できます。 制御リスト定義の構文は、次のとおりです。
AnyControlListControlList [ { AnyControl; [...] } ];
制御リスト定義は、 ControlList キーワードで始まります。 ControlList キーワードの後には、任意の数の制御リスト定義が続きます。 制御リスト定義は、制御リスト名と、それが表す制御のセットで構成されます。 次に例を示します。
ControlList
Buttons {PushButton;
RadioButton;
CascadeButton;
NewCascadebutton; } ;制御リストに指定する各制御は、ファイル内のクラスとして定義する必要があります。
クラス定義
クラス定義 は、特定のウィジェット・クラスを記述します。 この説明には、クラス階層、ツールキット・コンビニエンス機能、リソース、およびコントロール内でのその位置が含まれています。 UIL でサポートするウィジェット・セット内のウィジェットまたはガジェットごとに 1 つのクラス定義が必要です。 クラス定義の構文は、次のとおりです。
クラス ClassName : MetaClass | ウィジェット | ガジェット [ { [ SuperClass = クラス名; | ParentClass = 親クラス名; | InternalLiteral = 内部名; | エイリアス = エイリアス; | ConvenienceFunction = 便利関数; | WidgetClass = WidgetClass ; | DocName = " 文字列 "; | DialogClass = 真 | 偽; | リソース { AnyResourceName [ { デフォルト = 新デフォルト値; | 除外 = 真 | 偽; [...] } ]; [...] }; | コントロール { 任意コントロール名; [...] }; 子要素 { 任意子要素名; [...] }; [...] ] } ];
クラス定義は、 クラス キーワードで始まります。 定義されているクラスごとに、クラスの名前と、クラスがメタクラス、ウィジェット、ガジェットのいずれであるかがリストされます。 各クラス定義は、以下を使用して変更できます。
| 項目 | 説明 |
|---|---|
| SuperClass | 親クラスの名前を示します。 スーパークラスを指定しないのは、階層のルートのみです。 |
| ParentClass | ウィジェットの自動作成された親クラスの名前を示します (存在する場合)。 これにより、自動的に作成された親クラスのリソースをこのクラス定義で使用することができます。 例えば、はと XmBulletinBoardDialog を生成 XmBulletinBoard する XmDialogShell。 親 XmDialogShell クラスのリソースにアクセスするには、ここで指定してください。 |
| InternalLiteral | クラス名の内部シンボル・テーブル・リテラル定義の値を強制します。 この修飾子は、UIL コンパイラーにハードコーディングされたシンボル・テーブル定義を回避するためにのみ使用され、慎重に使用する必要があります。 |
| ALIAS | UIL 指定で使用する代替クラス名を示します。 |
| ConvenienceFunction | このクラスの作成コンビニエンス関数の名前を示します。 すべてのウィジェット・クラスとガジェット・クラスには、 ConvenienceFunction が指定されている必要があります。 |
| WidgetClass | ガジェット・タイプ・クラスの関連ウィジェット・クラスを示します。 この値は現在認識されていません。 |
| DocName | 資料で使用する任意のストリングを定義します。 この値は現在認識されていません。 |
| DialogClass | クラスがダイアログ・クラスであるかどうかを示します。 この値は現在認識されていません。 |
| リソース | ウィジェット・クラスのリソースをリストします。 このキーワードは、以下を使用してさらに変更できます。 |
| DEFAULT | このリソースの新しいデフォルト値を指定します。 リソース・デフォルト値は通常、リソース定義で設定されます。 継承されたリソースのデフォルト値がクラスによって変更された場合、新しいデフォルト値をここに書き留めておく必要があります。 |
| 除外 | 継承されたリソースをクラスのリソース・リストから除外するかどうかを指定します。 デフォルト値は False です。 |
| 子 | このクラスの自動的に作成された子の名前をリストします。 これにより、それらの子が UIL ファイルでアクセスできるようになります。 |
| 制御 | ウィジェット・クラスが許可するコントロールをリストします。 制御は、他のクラスにすることも、制御定義リストからの制御リストにすることもできます。 |
上記のデータ・タイプおよび制御リスト定義の使用例を以下に示します。
Class
TopLevelWidget : MetaClass
{
Resources
{
XtbNfirstResource;
XtbNsecondResource;
};
}; NewWidget : Widget
{
SuperClass = TopLevelWidget;
ConvenienceFunction =
XtbCreateNewWidget;
Resources
{
XtbNnewResource;
XtbNfirstResource
{Default="XtbNEW_VALUE";};
XtbNsecondResource
{Exclude=True;};
};
Controls
{
NewWidget;
Buttons;
};
};子定義
子定義は、自動的に作成された子のクラスを登録します。 自動的に作成された子は、クラス定義内の 子供たち キーワードを使用して、UIL ファイル内の他の場所で参照されます。 子定義の構文は以下のとおりです。
子 ChildName : クラス名; [...]
ChildName は自動的に作成された子の名前であり、 ClassName はその子のクラスの名前です。
リソース定義
リソース定義は、特定のリソースを記述します。 この説明には、そのタイプとデフォルト値が含まれています。 クラス定義内の新しい各リソース参照には、リソース定義が必要です。 リソース定義の構文は、次のとおりです。
リソース ResourceName : 引数 | 理由 | 制約 | SubResource [{[ タイプ = タイプ ; | リソース・リテラル = リソース・リテラル ; | 国内リテラル = 内部名 ; | エイリアス = エイリアス ; | 関連 = 関連 ; | デフォルト = デフォルト ; | ドキュメント名 = ドキュメント名 ; | [...]}] [...]
リソース定義は、 リソース キーワードで始まります。 リソース定義ごとに、リソースの名前と、リソースが引数、理由、制約、またはサブリソースのいずれであるかがリストされます。
| 項目 | 説明 |
|---|---|
| 引数 | 標準リソースを示します。 |
| REASON | コールバック・リソースを示します。 |
| 制約 | 制約リソースを示します。 |
| SubResource | この値は現在認識されていません。 |
リソース定義は、以下を使用して変更できます。
| 項目 | 説明 |
|---|---|
| Type | リソースのデータ・タイプを示します。 指定するデータ・タイプは、データ・タイプ定義にリストされていなければなりません。 |
| ResourceLiteral | リソースを参照するために UIL ファイルで使用されるキーワードを示します。 AIXwindowsでは、リソース名はリソース・リテラル名 (ResourceLiteral) と同じです。 |
| InternalLiteral | リソース名の内部シンボル・テーブル・リテラル定義の値を強制します。 この修飾子は、UIL コンパイラーにハードコーディングされたシンボル・テーブル定義を回避するためにのみ使用され、慎重に使用する必要があります。 |
| ALIAS | UIL 指定で使用されるリソースの代替名を示します。 |
| 関連 | 現行リソースのカウンターとして機能するリソースがリソースに関連付けられるようにする特殊目的フィールド。 UIL は、この関連リソースの値を、 ResourceName タイプのコンパイル済みインスタンス内の項目数に自動的に設定します。 |
| DEFAULT | リソースのデフォルト値を示します。 |
| DocName | 資料で使用する任意のストリングを定義します。 この値は現在認識されていません。 |
データ・タイプ、制御リスト、およびクラス定義の使用例を以下に示します。
Resource
XtbNfirstResource : Argument
{ Type = OddNumber;
Default = "XtbOLD_VALUE";};
XtbNsecondResource : Argument
{ Type = NewString;
Default = "XtbNEW_STRING";};
XtbNnewResource : Argument
{ Type = OddNumber;
Default = "XtbODD_NUMBER";};