<chapter id="advanced-quanta">
<title
>Características Avançadas do &quanta;</title>
<para
>Este capítulo debruça-se sobre as características avançadas do &quanta;.</para>

<sect1 id="kommander">
<title
>Utilização do <application
>Kommander</application
> com o &quanta;</title>
<para
>Kommander por Marc Britton.</para>
</sect1>

&debugging-quanta;

<sect1 id="tag-files">
<title
>Ficheiros de Marcas do &quanta;</title>
<para
>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.</para>
<important
> <para
>Os espaços não afectam de forma adversa nada, mas tenha em atenção os caracteres &amp; e &lt;. Estes poderão ser substituídos por &amp;amp; e por &amp;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.</para
> </important>
<sect2 id="tag-file-structure">
<title
>Estrutura dos Ficheiros de Marcas</title>
<sect3>
<title
></title>
<para
>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</para>
<para
>Estes são os tipos do itens na janelas de marcas: <simplelist
><member
>check</member
> <member
>color</member
> <member
>input</member
> <member
>list</member
> <member
>text</member
> <member
>url</member
> </simplelist
> </para>
<para
> 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: <simplelist
> <member
>array</member
> <member
>bool</member
> <member
>boolean</member
> <member
>char</member
> <member
>constant</member
> <member
>flags</member
> <member
>float</member
> <member
>function</member
> <member
>int</member
> <member
>long</member
> <member
>mixed</member
> <member
>number</member
> <member
>object</member
> <member
>resource</member
> <member
>resoure</member
> <member
>string</member
> </simplelist
> </para>
<para
>A definição da marca tem ainda os seguintes atributos opcionais: <variablelist
> <varlistentry
> <term
>hasScript</term
> <listitem
><para
>"1" se os 'scripts'/eventos comuns poderão ser associados com esta 'tag' (onclick etc.)</para
></listitem
> </varlistentry
> <varlistentry
> <term
>hasCore</term
> <listitem
><para
>"1" se os atributos básicos comuns estão presentes (id, class, etc)</para
></listitem
> </varlistentry
> <varlistentry
> <term
>hasI18n</term
> <listitem
><para
>"1" se os atributos comuns de i18n estão presentes (lang, dir)</para
></listitem
> </varlistentry
> <varlistentry
> <term
>single </term
> <listitem
><para
>"1" se é uma 'tag' única (p.ex. &lt;hr
>)</para
></listitem
> </varlistentry
> <varlistentry
> <term
>optional </term
> <listitem
><para
>"1" se for uma marca opcional (eg. &lt;colgroup
>)</para
></listitem
> </varlistentry
> <varlistentry
> <term
>returnType</term
> <listitem
><para
>para as linguagens de 'scripting' é o tipo devolvido pela função, se válido (p.ex. int)</para
></listitem
> </varlistentry
> </variablelist
> </para>

<para
> A definição &lt;attr
> pode ter os seguintes atributos: <variablelist
> <varlistentry
> <term
>defaultValue</term
><listitem
><para
>o valor poro omissão da 'tag' ???</para
></listitem
> </varlistentry
> <varlistentry
> <term
>status</term
> <listitem
><para
>pode ser <quote
>optional</quote
>, <quote
>required</quote
>, <quote
>implied</quote
></para
></listitem
> </varlistentry
> </variablelist
> </para>
</sect3>
<sect3>
<sect3info>
<author
> <firstname
></firstname
> <surname
></surname
> </author>
</sect3info>
<title
></title>
<para
> Para funções de linguagens de 'scripting', defina ficheiros de marcas do tipo: <informalexample
> <literallayout>
&lt;!DOCTYPE tags>
&lt;tags>

&lt;tag name=<quote
>[nome-da-função]</quote
> type=<quote
>function</quote
> returnType=<quote
>[tipo de retorno]</quote
>>
  &lt;attr name=<quote
>[argumento1]></quote
> type=<quote
>[tipo-do-argumento1]</quote
>
>&lt;/attr>
  &lt;attr name=<quote
>[argumento2]</quote
> type=<quote
>[tipo-do-argumento2]</quote
> status=<quote
>optional</quote
>
>&lt;/attr>
    ...
&lt;/tag>
&lt;tag ...
...
&lt;/tag>
 ...
&lt;/tags>
</literallayout
> </informalexample
> </para>
<para
> O items entre [] devem ser substituídos. No exemplo acima o argumento1 é obrigatório e o argumento2 é opcional. </para>
<para
> Um ficheiro de 'tags' para o qual deseja ter uma janela de edição deverá ser semelhante ao seguinte: <informalexample
> <programlisting>
<markup>
&lt;!DOCTYPE tags>
&lt;tags>
  &lt;tag name="[name] [hasCore="[01]" hasI18n="[01]" hasScript="[01]"]>
    &lt;attr name="[attribute1]" type="[check|color|input|list|text|url]">
      &lt;text
>&lt;/text>
      &lt;textlocation col="0" row="0" />
      &lt;tooltip
>&lt;/tooltip>
      &lt;location col="1" row="0" colspan="3"/>
    &lt;/attr>
  ...
  &lt;/tag>
  ...
&lt;/tags>
</markup>
</programlisting
> </informalexample
> </para>

<para
> &lt;text
>&lt;/text
> define um texto resumido que decreve o objecto. </para>
<para
> &lt;textlocation ... /> define a disposição em linhas e columas da marca &lt;text
>. </para>
<para
> O &lt;tooltip
>&lt;/tooltip
> é a descrição do texto para um utilizador que passa por cima. </para>
<para
> O &lt;location ../> define a localização do objecto para aquele atributo. </para>
<para
> 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' &lt;location
>, p.ex. &lt;attr ...
> &lt;/attr
> </para>
</sect3>
</sect2>
</sect1>

</chapter>

