WML Dateiformat
Zweck
Generiert variable UIL-Compilerkomponenten.
Beschreibung
Die Widget-Metasprache ( WML ) wird verwendet, um veränderbare Komponenten des Compilers für die Benutzeroberflächensprache (UIL) zu generieren, abhängig vom Widget-Set. Mit können Sie dem AIXwindows -Widget-Set WML neue UIL-Unterstützung hinzufügen oder Unterstützung für ein völlig neues Widget-Set hinzufügen.
Dateiformat
WML Die Dateien sind ASCII-Dateien und können mit jedem Standard-Texteditor bearbeitet werden. Sie sind im Verzeichnis WML tools/wml zu finden und haben die Endung .wml. Das Motif AIXwindows -Widget-Set wird in der motif.wml Datei beschrieben. Dies ist auch die WML Standarddatei bei Verwendung der WML Funktion.
Wenn Sie eine WML Datei erstellen, um neue Widgets hinzuzufügen oder Widget-Eigenschaften zu ändern, können Sie eine Kopie der motif.wml Datei erstellen und diese ändern. Wenn Sie eine neue Widgetgruppe zur Verwendung mit UIL erstellen, erstellen Sie eine völlig neue Datei. In beiden Fällen ist die motif.wml Datei ein gutes Beispiel für WML die Syntax und kann Ihnen helfen, sich mit der Sprache vertraut zu machen, bevor Sie versuchen, Ihre eigene WML Datei zu schreiben.
WML Dateien haben eine grundlegende Syntax, die in ihrer Struktur der von UIL ähnelt. WML Die Syntax besteht aus den folgenden Elementen:
- Kommentare
- Datentypdefinitionen
- Zeichensatzdefinitionen
- Aufzählungsgruppendefinitionen
- Kontrolllistendefinitionen
- Klassendefinitionen
- Untergeordnete Definitionen
- Ressourcendefinitionen
Sie können Leerzeichen, Tabulatoren oder Zeilenvorschubzeichen an beliebiger Stelle in der Syntax verwenden, solange sie keine Schlüsselwörter oder Zeichenfolgen trennen. Kommentare enden mit einem Zeilenvorschubzeichen. Die Reihenfolge der Elemente in der Syntax ist nicht wichtig.
Die gezeigten Syntaxbeispiele für die Metasprache des Widgets verwenden die folgenden zusätzlichen Konventionen:
| Element | Beschreibung |
|---|---|
| [ ] | Gibt optionale Elemente an. |
| ... | Gibt an, wo ein Syntaxelement wiederholt werden kann. |
| | | Gibt eine Auswahl aus mehreren Elementen an |
Kommentar
Sie können Kommentare in die WML Datei einfügen. Kommentare haben die folgende Syntax:
[AnyElement]!AnyComment
Kommentare beginnen mit einem! (Ausrufezeichen) und bis zum Ende der Zeile. Ein Kommentar kann in einer Zeile allein beginnen oder einem beliebigen Teil eines anderen Elements folgen. Ein Kommentar ändert nicht die Bedeutung eines anderen Elements. Beispiel:
!This is a comment
! that spans two lines.
DataType !This is a comment that follows code.Datentypdefinitionen
Datentypdefinitionen registriert alle Ressourcendatentypen, die in der Datei verwendet werden. Sie müssen alle in Ihrer WML Datei verwendeten Datentypen registrieren. Datentypdefinitionen haben die folgende Syntax:
DataType AnyDatatype [{InternalLiteral = InternalName | DocName = "Zeichenfolge"; [...]}]; [...]
Eine Datentypdefinition beginnt mit dem Schlüsselwort DataType . Im Anschluss an das Schlüsselwort DataType folgt eine Liste der Datentypen, die wie folgt geändert werden können:
| Element | Beschreibung |
|---|---|
| InternalLiteral | Erzwingt den Wert der internen Literaldefinition der Symboltabelle des Datentypnamens. Dieser Änderungswert wird nur verwendet, um Symboltabellendefinitionen zu umgehen, die fest im UIL-Compiler codiert sind, und sollte sparsam verwendet werden. |
| DocName | Gibt eine beliebige Zeichenfolge für die Verwendung in der Dokumentation an. Diese Zeichenfolge gibt einen anderen Namen für den Datentyp oder einen einzelnen Namen für den Datentyp an, wenn der Datentyp Aliasnamen hat. Beispiel: |
Zeichensatzdefinitionen
Zeichensatzdefinitionen registrieren Sie den AIXwindows Toolkit-Namen und weitere Informationen für die in UIL verwendeten Zeichensatznamen. Zeichensatzdefinitionen haben folgende Syntax:
AnyCharacterSetCharacterSet { [ FontListElementTag | XmStringCharsetName ] = " String "; [ Alias = " String "... ; | Direction = [ LeftToRight | RightToLeft ] ; | ParseDirection = [ LeftToRight | RightToLeft ] ; | CharacterSize = [ OneByte | TwoByte ] ; ] [... ] }; [... ]
Eine Zeichensatzdefinition beginnt mit dem Schlüsselwort CharacterSet . Nach dem Schlüsselwort CharacterSet folgt eine Liste mit Zeichensätzen, die wie folgt geändert werden können:
| Element | Beschreibung |
|---|---|
| FontListElementTag | XmStringCharsetName | Gibt den Namen des Zeichensatzes an. Der angegebene Satz wird zur Zeichensatzkomponente des erstellten zusammengesetzten Zeichenfolgesegments. Einer dieser Zeichensätze muss angegeben werden. |
| Aliasname | Gibt einen oder mehrere Aliasnamen für den Zeichensatznamen an Jeder Aliasname kann in UIL verwendet werden, um auf denselben Zeichensatz zu verweisen. |
| Richtung | Gibt die Richtung eines zusammengesetzten Zeichenfolgesegments an, das mit diesem Zeichensatz erstellt wurde. Die Standardeinstellung ist LeftToRight. |
| ParseDirection | Gibt die Richtung an, in der eine Eingabezeichenfolge geparst wird, wenn ein Verbundzeichenfolgesegment mit diesem Zeichensatz erstellt wird. Wenn dies nicht angegeben wird, ist der Wert von Richtung der Standardwert. |
| CharacterSize | Gibt die Anzahl der Byte in jedem Zeichen eines zusammengesetzten Zeichenfolgesegments an, das mit diesem Zeichensatz erstellt wurde. Der Standardwert ist OneByte. |
Es folgt ein Beispiel für die Syntax der Zeichensatzdefinition:
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; };Aufzählungsgruppendefinitionen
Aufzählungsgruppendefinitionen Registrieren Sie die benannten Konstanten, die im AIXwindows Toolkit verwendet werden, um bestimmte Ressourcenwerte anzugeben. Aufzählungsgruppendefinitionen haben die folgende Syntax:
EnumerationSet ResourceName : ResourceType { Aufzählungswertname ; [...] };
Eine Aufzählungsgruppendefinition beginnt mit dem Schlüsselwort EnumerationSet . Für jede definierte Aufzählungsgruppe werden Name und Typ der Ressource aufgelistet. Der Ressourcenname ist der Ressourcenname von AIXwindows Toolkit, wobei das Präfix XmN am Anfang entfernt und der Anfangsbuchstabe in Großbuchstaben geschrieben wird. Der Name der AIXwindows Toolkit-Ressource XmNrowColumnType würde beispielsweise lauten RowColumnType. Der Ressourcentyp ist der Datentyp für die Ressource; für die meisten Ressourcen ist dies der Datentyp für ganze Zahlen. Nach dem Ressourcennamen und -typ folgt eine Liste mit Aufzählungswertnamen, die als Einstellungen für die Ressource verwendet werden können. Diese Namen sind mit denen im AIXwindows Toolkit identisch.
Es folgt ein Beispiel für die Syntax der Aufzählungssatzdefinition:
EnumerationSet
RowColumnType: integer
{ XmWORK_AREA; XmMENU_BAR; XmMENU_POPUP;
XmMENU_PULLDOWN; XmMENU_OPTION; };Kontrolllistendefinitionen
Steuerlistendefinitionen weist Gruppen von Steuerelementen einen Namen zu. Sie können diese Kontrolllisten später in Klassendefinitionen verwenden, um die Struktur Ihrer WML Datei zu vereinfachen. Steuerlistendefinitionen haben folgende Syntax:
AnyControlListControlList [ { AnyControl; [...] } ];
Eine Steuerlistendefinition beginnt mit dem Schlüsselwort ControlList . Nach dem Schlüsselwort ControlList folgt eine beliebige Anzahl von Steuerlistendefinitionen. Steuerlistendefinitionen bestehen aus einem Steuerlistennamen, gefolgt von der Gruppe von Steuerelementen, die sie darstellen. Beispiel:
ControlList
Buttons {PushButton;
RadioButton;
CascadeButton;
NewCascadebutton; } ;Jedes in der Steuerliste angegebene Steuerelement muss als Klasse in der Datei definiert sein.
Klassendefinitionen
Klassendefinitionen beschreiben eine bestimmte Widgetklasse. In dieser Beschreibung ist die Position in der Klassenhierarchie, in der Komfortfunktion des Toolkits, in Ressourcen und Steuerelementen enthalten. Es sollte eine Klassendefinition für jedes Widget oder Gadget in der Widgetgruppe geben, die Sie in UIL unterstützen möchten. Klassendefinitionen haben folgende Syntax:
Klasse ClassName : MetaClass | Widget | Gerät [{[ SuperClass = Klassenname; | ParentClass = Elternklassenbezeichnung; | InternalLiteral = Interner Name; | Alias = Alias; | ConvenienceFunction = Komfortfunktion; | WidgetClass = WidgetClass ; | DocName = "Zeichenfolge"; | DialogClass = Wahr | Falsch; | Ressourcen { AnyResourceName [{ Standard = NeuerStandardwert; | Ausschließen = Wahr | Falsch; [...]} ]; [...]};| Steuerelemente { Beliebiger Steuerungsname; [...]}; Kinder { Beliebiger Kindername; [...]}; [...] ]}];
Klassendefinitionen beginnen mit dem Schlüsselwort Klasse . Für jede definierte Klasse werden der Name der Klasse und die Angabe, ob die Klasse eine Metaklasse, ein Widget oder ein Gadget ist, aufgelistet. Jede Klassendefinition kann wie folgt geändert werden:
| Element | Beschreibung |
|---|---|
| SuperClass | Gibt den Namen der übergeordneten Klasse an Nur das Stammelement der Hierarchie gibt keine Superklasse an. |
| ParentClass | Gibt den Namen der automatisch erstellten übergeordneten Klasse des Widgets an, sofern vorhanden. Dadurch können Ressourcen für die automatisch erstellte übergeordnete Klasse in dieser Klassendefinition verwendet werden. Beispielsweise erstellt sowohl eine XmBulletinBoard als XmBulletinBoardDialog auch eine XmDialogShell. Um auf die Ressourcen der XmDialogShell übergeordneten Klasse zuzugreifen, geben Sie diese hier an. |
| InternalLiteral | Erzwingt den Wert der internen Literaldefinition der Symboltabelle des Klassennamens. Dieser Änderungswert wird nur verwendet, um Symboltabellendefinitionen zu umgehen, die fest im UIL-Compiler codiert sind, und sollte sparsam verwendet werden. |
| Aliasname | Gibt alternative Klassennamen für die Verwendung in einer UIL-Spezifikation an |
| ConvenienceFunction | Gibt den Namen der Vereinfachungsfunktion für diese Klasse an. Für alle Widget-und Gadget-Klassen muss ConvenienceFunction angegeben sein. |
| WidgetClass | Gibt die zugeordnete Widgetklasse von Gadgettypklassen an. Dieser Wert wird derzeit nicht erkannt. |
| DocName | Definiert eine beliebige Zeichenfolge für die Verwendung in der Dokumentation. Dieser Wert wird derzeit nicht erkannt. |
| DialogClass | Gibt an, ob die Klasse eine Dialogklasse ist. Dieser Wert wird derzeit nicht erkannt. |
| Ressourcen | Listet die Ressourcen der Widgetklasse auf. Dieses Schlüsselwort kann wie folgt weiter geändert werden: |
| Standardwert | Gibt einen neuen Standardwert für diese Ressource an Ressourcenstandardwerte werden normalerweise in der Ressourcendefinition festgelegt. Wenn der Standardwert einer übernommenen Ressource von der Klasse geändert wird, sollte hier der neue Standardwert vermerkt werden. |
| Exclude | Gibt an, ob eine übernommene Ressource aus der Ressourcenliste der Klasse ausgeschlossen werden soll Der Standardwert ist "False". |
| Untergeordnete Elemente | Listet die Namen der automatisch erstellten untergeordneten Elemente dieser Klasse auf Auf diese untergeordneten Elemente kann in der UIL-Datei zugegriffen werden. |
| Kontrollmechanismen | Listet die Steuerelemente auf, die die Widgetklasse zulässt. Die Steuerelemente können andere Klassen oder eine Steuerliste aus der Steuerelementdefinitionsliste sein. |
Es folgt ein Beispiel für die Verwendung des vorherigen Datentyps und der Steuerlistendefinitionen:
Class
TopLevelWidget : MetaClass
{
Resources
{
XtbNfirstResource;
XtbNsecondResource;
};
}; NewWidget : Widget
{
SuperClass = TopLevelWidget;
ConvenienceFunction =
XtbCreateNewWidget;
Resources
{
XtbNnewResource;
XtbNfirstResource
{Default="XtbNEW_VALUE";};
XtbNsecondResource
{Exclude=True;};
};
Controls
{
NewWidget;
Buttons;
};
};Untergeordnete Definitionen
Untergeordnete Definitionen registrieren die Klassen automatisch erstellter untergeordneter Elemente. Automatisch erstellte untergeordnete Elemente werden an anderer Stelle in einer UIL-Datei referenziert, wenn das Schlüsselwort Untergeordnete Elemente in einer Klassendefinition verwendet wird. Untergeordnete Definitionen haben die folgende Syntax:
Kind ChildName : Klassenname; [...]
ChildName ist der Name des automatisch erstellten untergeordneten Elements und ClassName ist der Name der Klasse dieses untergeordneten Elements.
Ressourcendefinitionen
Ressourcendefinitionen beschreiben eine bestimmte Ressource. In dieser Beschreibung sind Typ und Standardwert enthalten. Jede neue Ressourcenreferenz in einer Klassendefinition sollte eine Ressourcendefinition haben. Ressourcendefinitionen haben die folgende Syntax:
Ressource ResourceName : Argument | Reason | Integritätsbedingung | SubResource [{[ Type = Typ ; | ResourceLiteral = ResourceLiteral ; | InternalLiteral = InternalName ; | Alias = Alias ; | Related = Related , | Default = Default , | DocName = Dokumentname , | [...]}] [...]
Ressourcendefinitionen beginnen mit dem Schlüsselwort Ressource . Für jede Ressourcendefinition wird der Name der Ressource und die Angabe, ob die Ressource ein Argument, eine Ursache, eine Integritätsbedingung oder eine untergeordnete Ressource ist, aufgelistet.
| Element | Beschreibung |
|---|---|
| Argument | Gibt eine Standardressource an. |
| Grund | Zeigt eine Callback-Ressource an. |
| Constraint | Gibt eine Einschränkungsressource an |
| SubResource | Dieser Wert wird derzeit nicht erkannt. |
Eine Ressourcendefinition kann wie folgt geändert werden:
| Element | Beschreibung |
|---|---|
| Typ | Gibt den Datentyp der Ressource an Der angegebene Datentyp muss in der Datentypdefinition aufgelistet sein. |
| ResourceLiteral | Gibt das Schlüsselwort an, das in der UIL-Datei zum Referenzieren der Ressource verwendet wird. In AIXwindowsstimmt der Ressourcenname mit dem Namen des Ressourcenliterals (ResourceLiteral) überein. |
| InternalLiteral | Erzwingt den Wert der Literaldefinition der internen Symboltabelle des Ressourcennamens. Dieser Änderungswert wird nur verwendet, um Symboltabellendefinitionen zu umgehen, die fest im UIL-Compiler codiert sind, und sollte sparsam verwendet werden. |
| Aliasname | Gibt alternative Namen für die in einer UIL-Spezifikation verwendeten Ressourcen an. |
| Zugehörig | Feld für besondere Zwecke, in dem Ressourcen, die als Zähler für die aktuellen Ressourcen fungieren, mit der Ressource verknüpft werden können. UIL setzt den Wert dieser zugehörigen Ressource automatisch auf die Anzahl der Elemente in der kompilierten Instanz des Typs ResourceName . |
| Standardwert | Gibt den Standardwert der Ressource an. |
| DocName | Definiert eine beliebige Zeichenfolge für die Verwendung in der Dokumentation. Dieser Wert wird derzeit nicht erkannt. |
Es folgt ein Beispiel für die Verwendung von Datentypen, Steuerlisten und Klassendefinitionen:
Resource
XtbNfirstResource : Argument
{ Type = OddNumber;
Default = "XtbOLD_VALUE";};
XtbNsecondResource : Argument
{ Type = NewString;
Default = "XtbNEW_STRING";};
XtbNnewResource : Argument
{ Type = OddNumber;
Default = "XtbODD_NUMBER";};