# Características Avançadas do &quanta;

Este capítulo debruça-se sobre as características avançadas do &quanta;.

## Utilização do Kommander com o &quanta;

Kommander por Marc Britton.

&debugging-quanta;

## Ficheiros de Marcas do &quanta;

O &quanta; utiliza ficheiros de 'tags' para definir as várias acções que estão disponíveis para a associação da barra de ferramentas. Estes ficheiros de 'tags' podem definir uma 'tag' simples sem atributos ou podem definir uma janela da 'tag' que irá recordar todos os atributos disponíveis para que o utilizador possa preencher os campos em branco.

Os espaços não afectam de forma adversa nada, mas tenha em atenção os caracteres & e <. Estes poderão ser substituídos por &amp; e por &lt;, respectivamente, em todos os ficheiros de recursos do &quanta; em XML. Isto não fará o programa estoirar, mas poderá ter pedaços do seu trabalho a desaparecer se se esquecer.

### Estrutura dos Ficheiros de Marcas

####

Os campos possíveis para o atributo 'type' da 'tag' 'attr': Para obter uma lista dos tipos possíveis, eu fiz o seguinte nas directorias de 'tags': grep -h type= *.tag |sed -e 's/^.*type=\"\([a-z]*\).*/\1/'| sort |uniq

Estes são os tipos do itens na janelas de marcas:

- check
- color
- input
- list
- text
- url

Estes são os tipos de argumentos dentro das 'tags' de funções do PHP; pergunte ao Andras se estas são livres e se as anteriores são palavras-chave:

- array
- bool
- boolean
- char
- constant
- flags
- float
- function
- int
- long
- mixed
- number
- object
- resource
- resoure
- string

A definição da marca tem ainda os seguintes atributos opcionais:

hasScript

  "1" se os 'scripts'/eventos comuns poderão ser associados com esta 'tag' (onclick etc.)

hasCore

  "1" se os atributos básicos comuns estão presentes (id, class, etc)

hasI18n

  "1" se os atributos comuns de i18n estão presentes (lang, dir)

single

  "1" se é uma 'tag' única (p.ex. <hr >)

optional

  "1" se for uma marca opcional (eg. <colgroup >)

returnType

  para as linguagens de 'scripting' é o tipo devolvido pela função, se válido (p.ex. int)

A definição <attr > pode ter os seguintes atributos:

defaultValue

  o valor poro omissão da 'tag' ???

status

  pode ser optional, required, implied

####

Para funções de linguagens de 'scripting', defina ficheiros de marcas do tipo:

    <!DOCTYPE tags>
    <tags>

    <tag name=[nome-da-função] type=function returnType=[tipo de retorno]>
      <attr name=[argumento1]> type=[tipo-do-argumento1]
    ></attr>
      <attr name=[argumento2] type=[tipo-do-argumento2] status=optional
    ></attr>
        ...
    </tag>
    <tag ...
    ...
    </tag>
     ...
    </tags>

O items entre [] devem ser substituídos. No exemplo acima o argumento1 é obrigatório e o argumento2 é opcional.

Um ficheiro de 'tags' para o qual deseja ter uma janela de edição deverá ser semelhante ao seguinte:

    <!DOCTYPE tags>
    <tags>
      <tag name="[name] [hasCore="[01]" hasI18n="[01]" hasScript="[01]"]>
        <attr name="[attribute1]" type="[check|color|input|list|text|url]">
          <text
    ></text>
          <textlocation col="0" row="0" />
          <tooltip
    ></tooltip>
          <location col="1" row="0" colspan="3"/>
        </attr>
      ...
      </tag>
      ...
    </tags>

<text ></text > define um texto resumido que decreve o objecto.

<textlocation ... /> define a disposição em linhas e columas da marca <text >.

O <tooltip ></tooltip > é a descrição do texto para um utilizador que passa por cima.

O <location ../> define a localização do objecto para aquele atributo.

Todos os atributos deverão ser enumerados no ficheiro de 'tags'. Se não quiser que apareçam na janela de 'tags', basta ignorar a 'tag' <location >, p.ex. <attr ... > </attr >