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:

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:

DataType OddNumber {DocName="OddNumber";};
         NewString;

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";};