WML Formato do arquivo
Propósito
Gera componentes de compiladores UIL variáveis.
Descrição
O recurso de metalinguagem de widget ( WML ) é usado para gerar componentes alteráveis do compilador de linguagem de interface do usuário (UIL), dependendo do conjunto de widgets. Usando o site WML, você pode adicionar suporte a um novo widget UIL ao conjunto de widgets do AIXwindows ou adicionar suporte a um conjunto de widgets totalmente novo.
Formato de Arquivo
WML são arquivos ASCII e podem ser modificados com qualquer editor de texto padrão. Eles são acessados por WML no diretório tools/wml e têm o sufixo .wml. O conjunto de widgets do Motif AIXwindows é descrito no arquivo motif.wml arquivo. Esse também é o arquivo padrão WML ao usar o recurso WML.
Ao criar um arquivo WML para adicionar novos widgets ou alterar as características do widget, você pode fazer uma cópia do arquivo motif.wml e modificá-la. Se você estiver criando um novo conjunto de widgets para uso com UIL, crie um arquivo completamente novo. Em ambos os casos, o arquivo motif.wml é um bom exemplo da sintaxe do WML e pode ajudá-lo a se familiarizar com a linguagem antes de tentar escrever seu próprio arquivo WML.
WML têm uma sintaxe básica que é semelhante em estrutura ao UIL. WML a sintaxe é composta pelos seguintes elementos:
- Comentários
- Definições De Tipo De Dados
- Definições Do Conjunto De Caracteres
- Definições De Conjunto De Enumeração
- Definições De Lista De Controle
- Definições De Classe
- Definições De Criança
- Definições de recurso
Você pode usar espaços, guias ou caracteres de nova linha em qualquer lugar em sintaxe, desde que não divida palavras-chave ou strings. Comentários terminam em um personagem de nova linha. A ordem dos elementos em sintaxe não é importante.
Os exemplos de sintaxe de meta-linguagem do widget mostrados utilizam as seguintes convenções adicionais:
| Item | Descrição |
|---|---|
| [ ] | Indica elementos opcionais. |
| ... | Indica onde um elemento de sintaxe pode ser repetido. |
| | | Indica uma escolha entre vários itens. |
Comentários
Você pode incluir comentários no arquivo WML. Os comentários têm a seguinte sintaxe:
[AnyElement]!AnyComment
Comentários começam com um! (ponto de exclamação) e estender até o final da linha. Um comentário pode começar em uma linha por si mesmo ou seguir qualquer parte de outro elemento. Um comentário não altera o significado de qualquer outro elemento. Por exemplo:
!This is a comment
! that spans two lines.
DataType !This is a comment that follows code.Definições De Tipo De Dados
Definições do tipo de dados registre todos os tipos de dados de recursos utilizados no arquivo. Você deve registrar todos os tipos de dados usados no seu arquivo WML. As definições do tipo de dados possuem a seguinte sintaxe:
DataType AnyDatatype [{InternalLiteral = InternalName | DocName = "String"; [...]}]; [...]
Uma definição de tipo de dados começa com a palavra-chave DataType . Após a palavra-chave DataType , há uma lista de tipos de dados que podem ser modificados com o seguinte:
| Item | Descrição |
|---|---|
| InternalLiteral | Força o valor da definição literal de tabela de símbolos internos do nome do tipo de dados. Este modificador é usado apenas para contornar definições de tabela de símbolo hard-codificadas no compilador UIL e deve ser usado com moderação. |
| DocName | Dá uma sequência arbitrária para uso na documentação. Esta string fornece um nome diferente para o tipo de dados ou um único nome para o tipo de dado se o tipo de dado tiver aliases. Por exemplo: |
Definições Do Conjunto De Caracteres
Definições do conjunto de caracteres registre o nome do kit de ferramentas AIXwindows e outras informações para os nomes de conjuntos de caracteres usados na UIL. As definições do conjunto de caracteres possuem a seguinte sintaxe:
CharacterSet AnyCharacterSet { [ FontListElementTag | XmStringCharsetName ] = " String "; [ Alias = " String "... ; | Direction = [ LeftToRight | RightToLeft ] ; | ParseDirection = [ LeftToRight | RightToLeft ] ; | CharacterSize = [ OneByte | TwoByte ] ; ] [... ] }; [... ]
Uma definição de conjunto de caracteres é iniciada com a palavra-chave CharacterSet Após a palavra-chave CharacterSet há uma lista de conjuntos de caracteres que podem ser modificados com o seguinte:
| Item | Descrição |
|---|---|
| FontListElementTag | XmStringCharsetName | Especifica o nome do conjunto de caracteres. O conjunto especificado torna-se o componente de conjunto de caracteres do segmento de cadeia composta que é criado. Um desses conjuntos de caracteres deve ser especificado. |
| Alias | Especifica uma ou mais aliases para o nome do conjunto de caracteres. Cada alias pode ser usado dentro do UIL para referir-se ao mesmo conjunto de caracteres. |
| Direção | Especifica a direção de um segmento de cadeia composta criado usando este conjunto de caracteres. O padrão é LeftToRight. |
| ParseDirection | Especifica a direção na qual uma string de entrada é analisada quando um segmento de string composto é criado usando este conjunto de caracteres. Se isso não for especificado, o valor de Direção é o padrão. |
| CharacterSize | Especifica o número de bytes em cada caractere de um segmento de cadeia composta criado usando este conjunto de caracteres. O padrão é OneByte.. |
Um exemplo da sintaxe de definição de conjunto de caracteres é o seguinte:
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; };Definições De Conjunto De Enumeração
Definições do conjunto de enumerações registre as constantes nomeadas usadas no AIXwindows Toolkit para especificar determinados valores de recursos. As definições do conjunto de enumerações possuem a seguinte sintaxe:
EnumerationSet ResourceName : ResourceType { EnumerationValueName ; [...] };
Uma definição de conjunto de enumeração é iniciada com a palavra-chave EnumerationSet Para cada conjunto de enumeração definido, é listado o nome e o tipo do recurso. O nome do recurso é o nome do recurso do Kit de ferramentas AIXwindows , com o prefixo XmN inicial removido e a letra inicial capitalizada. Por exemplo, o nome do recurso AIXwindows Toolkit XmNrowColumnType seria RowColumnType. O tipo de recurso é o tipo de dado para o recurso; para a maioria dos recursos, este é o tipo de dado inteiro. Seguindo o nome do recurso e do tipo está uma lista de nomes de valor de enumeração que podem ser usados como configurações para o recurso. Esses nomes são os mesmos do no AIXwindows Toolkit.
Um exemplo da sintaxe de definição do conjunto de enumerações é o seguinte:
EnumerationSet
RowColumnType: integer
{ XmWORK_AREA; XmMENU_BAR; XmMENU_POPUP;
XmMENU_PULLDOWN; XmMENU_OPTION; };Definições De Lista De Controle
Definições de lista de controle atribuem um nome a grupos de controles. Você pode usar essas listas de controle posteriormente nas definições de classe para simplificar a estrutura do seu arquivo WML. As definições de lista de controle possuem a seguinte sintaxe:
ControlList AnyControlList [{ AnyControl; [... ]} ];
Uma definição de lista de controle começa com a palavra-chave ControlList Após a palavra-chave ControlList , há qualquer número de definições de lista de controle As definições de lista de controle são feitas de um nome de lista de controle seguido pelo conjunto de controles que representa. Por exemplo:
ControlList
Buttons {PushButton;
RadioButton;
CascadeButton;
NewCascadebutton; } ;Cada controle especificado na lista de controle deve ser definido como uma classe no arquivo.
Definições De Classe
Definições de classe descrever uma determinada classe de widget. Incluso nesta descrição está sua posição na hierarquia de classes, função de conveniência do kit de ferramentas, recursos e controles. Deve haver uma definição de classe para cada widget ou gadget no conjunto de widgets desejado para o suporte no UIL. As definições de classe possuem a seguinte sintaxe:
Classe ClassName : MetaClass | Widget | Gadget [ { [ SuperClass = ClassName ; | ParentClass = ParentClassName ; | InternalLiteral = InternalName ; | Alias = Alias ; | ConvenienceFunction = ConvenienceFunction ; | WidgetClass = WidgetClass ; | DocName = " String "; | DialogClass = True | False; | Recursos { AnyResourceName [ { Padrão = NovoValorPadrão ; | Excluir = Verdadeiro | Falso; [...] } ] ; [...] }; | Controles { AnyControlName ; [...] }; Filhos { AnyChildName ; [...] }; [...] ] } ] ;
As definições de classe começam com a palavra-chave Classe . Para cada classe definida, o nome da classe e se a classe é uma metaclasse, widget ou gadget é listado. Cada definição de classe pode ser modificada usando o seguinte:
| Item | Descrição |
|---|---|
| SuperClass | Indica o nome da classe pai. Apenas a raiz da hierarquia não especifica uma super classe. |
| ParentClass | Indica o nome da classe pai criada automaticamente do widget, se um existir. Isso permite que os recursos para a classe pai criada automaticamente sejam utilizados nesta definição de classe. Por exemplo, XmBulletinBoardDialog cria tanto um XmBulletinBoard e um XmDialogShell. Para acessar os recursos da classe XmDialogShell classe pai, especifique-a aqui. |
| InternalLiteral | Força o valor da definição literal de tabela de símbolos internos do nome da classe. Este modificador é usado apenas para contornar definições de tabela de símbolo hard-codificadas no compilador UIL e deve ser usado com moderação. |
| Alias | Indica nomes de classes alternativas para uso em uma especificação UIL. |
| ConvenienceFunction | Indica o nome da função de conveniência de criação para esta classe. Todas as classes de widget e dispositivo devem ter ConvenienceFunction especificado. |
| WidgetClass | Indica a classe de widget associada de classes do tipo gadget. Esse valor atualmente não é reconhecido. |
| DocName | Define uma cadeia arbitrária para uso na documentação. Esse valor atualmente não é reconhecido. |
| DialogClass | Indica se a classe é uma classe de diálogo. Esse valor atualmente não é reconhecido. |
| Recursos | Lista os recursos da classe de widgets. Esta palavra-chave pode ser modificada ainda mais com o seguinte: |
| Padrão | Especifica um novo valor padrão para este recurso. Os valores de inadimplência de recursos geralmente são configurados na definição de recursos. Se um valor padrão do recurso herdado for alterado pela classe, o novo valor padrão deve ser anotado aqui. |
| Excluir | Especifica se um recurso herdado deve ser excluído da lista de recursos da classe. O valor padrão é False. |
| Filhos | Lista os nomes das crianças criadas automaticamente desta classe. Isso permite que essas crianças sejam acessadas no arquivo UIL. |
| Controles | Lista os controles que a classe de widget permite. Os controles podem ser outras classes ou uma lista de controle a partir da lista de definição de controle. |
Um exemplo do uso do tipo de dados precedentes e definições de lista de controle é mostrado:
Class
TopLevelWidget : MetaClass
{
Resources
{
XtbNfirstResource;
XtbNsecondResource;
};
}; NewWidget : Widget
{
SuperClass = TopLevelWidget;
ConvenienceFunction =
XtbCreateNewWidget;
Resources
{
XtbNnewResource;
XtbNfirstResource
{Default="XtbNEW_VALUE";};
XtbNsecondResource
{Exclude=True;};
};
Controls
{
NewWidget;
Buttons;
};
};Definições De Criança
As definições de criança registram as classes de filhos criados automaticamente. As crianças criadas automaticamente são referenciadas em outro lugar em um arquivo UIL usando a palavra-chave Crianças dentro de uma definição de classe. As definições de criança têm a seguinte sintaxe:
Criança ChildName : ClassName; [...]
ChildName é o nome do filho criado automaticamente e ClassName é o nome da classe desse filho
Definições de recurso
As definições de recursos descrevem um determinado recurso. Incluso nesta descrição é o seu tipo e valor padrão. Cada nova referência de recurso em uma definição de classe deve ter uma definição de recurso. As definições de recursos possuem a seguinte sintaxe:
Recurso ResourceName : Argumento | Motivo | Restrição | SubResource [{[ Tipo = Tipo ; | ResourceLiteral = ResourceLiteral ; | InternalLiteral = InternalName ; | Alias = Alias ; | Relacionado = Relacionado ; | Padrão = Padrão ; | DocName = DocumentName ; | [...]}] [...]
As definições de recursos começam com a palavra-chave Recurso . Para cada definição de recurso, é listado o nome do recurso e se o recurso é um argumento, razão, restrição ou subrecurso.
| Item | Descrição |
|---|---|
| Argumento | Indica um recurso padrão. |
| Razão | Indica um recurso de callback. |
| Limitação | Indica um recurso de restrição. |
| SubResource | Esse valor atualmente não é reconhecido. |
Uma definição de recurso pode ser modificada com o seguinte:
| Item | Descrição |
|---|---|
| Tipo | Indica o tipo de dado do recurso. O tipo de dado especificado deve ser listado na definição do tipo de dados. |
| ResourceLiteral | Indica a palavra-chave usada no arquivo UIL para referencia o recurso. Em AIXwindows, o nome do recurso é igual ao nome literal do recurso (ResourceLiteral) |
| InternalLiteral | Força o valor da definição literal de tabela de símbolos internos do nome do recurso. Este modificador é usado apenas para contornar definições de tabela de símbolo hard-codificadas no compilador UIL e deve ser usado com moderação. |
| Alias | Indica nomes alternativos para os recursos utilizados em uma especificação UIL. |
| Relacionados | Campo de propósito especial que permite recursos que atuam como um contador para que os recursos atuais sejam relacionados ao recurso. UIL configura automaticamente o valor desse recurso relacionado para o número de itens na instância compilada do tipo ResourceName . |
| Padrão | Indica o valor padrão do recurso. |
| DocName | Define uma cadeia arbitrária para uso na documentação. Esse valor atualmente não é reconhecido. |
Um exemplo do uso de tipo de dados, lista de controle e definições de classe é mostrado:
Resource
XtbNfirstResource : Argument
{ Type = OddNumber;
Default = "XtbOLD_VALUE";};
XtbNsecondResource : Argument
{ Type = NewString;
Default = "XtbNEW_STRING";};
XtbNnewResource : Argument
{ Type = OddNumber;
Default = "XtbODD_NUMBER";};