>Este capítulo debruça-se sobre as características avançadas do &quantaplus;, e como as utilizar. </para>
<sect1 id="xml-tools-3-2">
<title
>Ferramentas &XML;</title>
<para
>A versão 3.2 do &quantaplus; traz com ele muitas ferramentas e funcionalidades novas de &XML;. As ferramentas são únicas na sua integração dentro do &quantaplus;. Todas essas ferramentas usam o <application
>Kommander</application
> como uma interface e a <application
>libxml2</application
> e a <application
>libxslt</application
> como infra-estruturas. A combinação de ambos cria ferramentas rápidas, eficientes, produtivas e completas. </para>
<sect2 id="kde-db-3-2">
<title
>Ferramentas de Documentação do &kde;</title>
<para
>O &quantaplus; suporta as duas ferramentas principais de documentação do &kde;: o <command
>meinproc</command
> e o <command
>checkXML</command
>. </para>
<sect3 id="meinproc-3-2">
<title
><command
>meinproc</command
></title>
<para
>Todos os que já trabalharam com a documentação do &kde; conhecem o <command
>meinproc</command
> e quão bom é este. Bem, dê-lhe uma vista de olhos com uma interface gráfica óptima! Não precisa mais de se restringir a uma linha de comandos; basta carregar no ícone semelhante a um processador e está pronto! </para>
<variablelist>
<varlistentry>
<term
><guilabel
>Pasta de Trabalho Actual</guilabel
></term>
<listitem>
<para
>Esta aplicação está à espera de um ficheiro <filename
>index.docbook</filename
> dentro de uma pasta. Se o <filename
>index.docbook</filename
> estiver na pasta de trabalho actual, então basta deixar seleccionada a <guilabel
>Pasta de Trabalho Actual</guilabel
>. Se não estiver, então desligue a opção <guilabel
>Pasta de Trabalho Actual</guilabel
> e indique a pasta que deseja processar no campo <guilabel
>Outra Pasta</guilabel
>. </para>
</listitem>
</varlistentry>
</variablelist>
<note>
<para
>Os ficheiros de resultado são colocados na mesma pasta que os ficheiros de código. Todos os ficheiros de &HTML; são removidos de cada vez que o <command
>meinproc</command
> é executado. </para>
</note>
</sect3>
<sect3 id="checkxml-3-2">
<title
><command
>checkXML</command
></title>
<para
>Mais uma vez, as pessoas que já usaram a documentação do &kde; conhecem esta aplicação útil. De novo, o &quantaplus; oferece uma pequena grande interface gráfica para este utilitário. </para>
<variablelist>
<varlistentry>
<term
><guilabel
>Pasta de Trabalho Actual</guilabel
></term>
<listitem>
<para
>Se o ficheiro aberto no momento for o <filename
>index.docbook</filename
>, então poderá deixar a opção <guilabel
>Pasta de Trabalho Actual</guilabel
>. Se não for, então desligue a opção <guilabel
>Pasta de Trabalho Actual</guilabel
> e indique a pasta onde o <filename
>index.docbook</filename
> poderá ser encontrado. </para>
</listitem>
</varlistentry>
</variablelist>
<note>
<title
>Resultado</title>
<para
>Se existir algum resultado, então é porque o seu ficheiro é inválido. Corrija por favor os erros indicados e tente de novo. </para>
</note>
</sect3>
</sect2>
<sect2 id="xmlval-3-2">
<title
>Validação de &XML;</title>
<para
>O &quantaplus; tem uma óptima ferramenta de validação de &XML;, a qual utiliza a infra-estrutura do <command
>xmllint</command
>. </para>
<variablelist>
<varlistentry>
<term
><guilabel
>Ficheiro Actual</guilabel
></term>
<listitem>
<para
>Se o ficheiro a validar estiver de momento em primeiro plano no &quantaplus;, então basta deixar o <guilabel
>Ficheiro Actual</guilabel
> assinalado. Se não estiver, então desligue a opção <guilabel
>Ficheiro Actual</guilabel
> e seleccione o ficheiro a validar no selector de ficheiros Outro Ficheiro. </para>
</listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>Verificação de Formatação Válida</guilabel
></term>
<listitem>
<para
>Se só deseja ver se o ficheiro está bem formatado, carregue na opção <guilabel
>Apenas Verificação de Boa-Formação</guilabel
>. </para>
</listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>&URI; da Definição</guilabel
></term>
<listitem>
<para
>Se você estiver a usar um &DTD; e se este estiver indicado no ficheiro &XML;, então seleccione o &DTD; (Interno) (por omissão), caso contrário seleccione o &DTD; (Externo) e indique qual é o &DTD; com o selector de ficheiros do &URI; de Definição. Tanto o &XML; Schema do &W3C; como a validação do RelaxNG são obrigados a serem definidos externamente no selector de ficheiros do <guilabel
>&URI; de Definição</guilabel
>. </para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="xsltproc-3-2">
<title
>Processamento de &XSL;</title>
<para
>Sim, o &quantaplus; tem uma ferramenta de processamento de &XSL;, também! Isto usa a ferramenta <command
>xsltproc</command
> que vem com a <application
>libxml2</application
>. </para>
<variablelist>
<varlistentry>
<term
><guilabel
>Ficheiro Actual</guilabel
></term>
<listitem>
<para
>Se o ficheiro a ser processado está em primeiro plano no &quantaplus; neste momento, então basta deixar a opção <guilabel
>Ficheiro Actual</guilabel
> assinalada. Se não estiver, então desligue a opção <guilabel
>Ficheiro Actual</guilabel
> e seleccione o ficheiro a processar no selector <guilabel
>Outro Ficheiro</guilabel
>. </para>
</listitem>
</varlistentry>
<varlistentry>
<term
>Folha de estilo</term>
<listitem>
<para
>Seleccione o ficheiro &XSL; que deseja usar. </para>
</listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>Nome do ficheiro do resultado</guilabel
></term>
<listitem>
<para
>Indique o nome do ficheiro com que deseja denominar o ficheiro com o resultado. O ficheiro é colocado na sua pasta pessoal por omissão. </para>
</listitem>
</varlistentry>
</variablelist>
<note>
<para
>Esta aplicação é limitada em flexibilidade. Desculpe-nos, tentaremos fazer melhor da próxima vez. </para>
>O &quantaplus; é capaz de carregar 'plugins', os quais são KParts. A plataforma de KPart é outra funcionalidade bastante poderosa do &kde;. Uma KPart é um contentor de funcionalidades relativamente pequeno e reutilizável. Permite aos programadores do &kde; programarem facilmente com o trabalho de outros programadores. Um exemplo disto é o próprio &quantaplus;. O editor que o &quantaplus; usa é a KPart do &kate;. A KPart do &kate; já contém muita da funcionalidade que o &quantaplus; necessitava, como o realce de sintaxe. A integração do mesmo com o &quantaplus; permitiu aos programadores do &quantaplus; focarem-se no que o &quantaplus; deveria ser capaz de fazer, em vez de se preocuparem com os vários problemas que teria a criação de um novo componente/KPart de edição do zero. </para>
<para
>Os 'plugins' que o &quantaplus; carrega poderão não ter nada a ver com o próprio &quantaplus;. Isto torna-o um sistema bastante poderoso de 'plugins'. Você poderá tirar partido de várias funcionalidades extra e não é preciso esperar até alguém o integrar com o &quantaplus;! Os 'plugins' podem ser carregados num conjunto de elementos de &GUI;. Poderá ver mais sobre isto em baixo. </para>
</sect2>
<sect2 id="plugin-dialog-3-2">
<title
>Compreender a Janela de Edição do 'Plugin'</title>
<para
>Para instalar um 'Plugin' ou KPart você irá aceder a <menuchoice
>Esta janela permite-lhe gerir todos os 'plugins' definidos e permite-lhe adicionar novos. Nós iremos descrever cada um dos elementos gráficos aqui: <variablelist>
<varlistentry>
<term
><guilabel
>Locais de pesquisa</guilabel
></term>
<listitem>
<para
>Aqui você poderá indicar um local de pesquisa. Ao adicionar um 'plugin' sem <guilabel
>Localização</guilabel
>, o &quantaplus; irá procurar nas pastas aqui indicadas de modo a encontrar o 'plugin'. </para>
</listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>Adicionar</guilabel
></term>
<listitem>
<para
>Isto fará aparecer uma janela que lhe permitirá adicionar um novo 'plugin'. </para>
</listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>Configurar</guilabel
></term>
<listitem>
<para
>Isto permitir-lhe-á alterar a configuração de um dado 'plugin'. </para>
</listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>Remover</guilabel
></term>
<listitem>
<para
>Remove o 'plugin' seleccionado no momento. </para>
</listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>Actualizar</guilabel
></term>
<listitem>
<para
>Actualiza o conteúdo da janela. </para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para
>Leia a secção <xref linkend="configure-plugins"/> para aprender mais sobre os 'plugins'.</para>
</sect2>
</sect1>
<sect1 id="team-members">
<title
>Desenvolvimento em Equipa</title>
<para
>Muitas vezes, um projecto tem mais que uma pessoa a trabalhar nele e existe alguma espécie de relação hierárquica entre eles. O &quantaplus; suporta a noção de membros do projecto, podendo estes ser configurados na janela em <menuchoice
> é o nome alternativo para o utilizador e actua como um identificado único. </para>
<para
>O <guilabel
>Papel</guilabel
> define o papel do membro no projecto e poderá ser um dos seguintes: <itemizedlist>
<listitem
><para>
<guilabel
>Líder da Equipa</guilabel>
</para
></listitem>
<listitem
><para>
<guilabel
>Líder do Subprojecto</guilabel>
</para
></listitem>
<listitem
><para>
<guilabel
>Líder da Tarefa</guilabel>
</para
></listitem>
<listitem
><para>
<guilabel
>Membro Normal</guilabel>
</para
></listitem>
</itemizedlist>
</para>
<para
>A <guilabel
>Tarefa</guilabel
> é uma descrição da tarefa atribuída a este membro.</para>
<para
><guilabel
>Sub-projecto</guilabel
>: poderá seleccionar uma lista de sub-projectos. Estes poderão ser configurados e criados se carregar no botão <guilabel
>Editar os sub-projectos</guilabel
>. Cada subprojecto tem um nome visível de utilizador e um item de localização, correspondo o último a uma localização relativa de uma pasta sob a árvore do projecto. Isto significa que um subprojecto é uma pasta sob o projecto principal. Por exemplo, o projecto principal poderá ser a página Web da sua companhia, enquanto um subprojecto poderá ser a página Web da Intranet, localizada sob a pasta <filename path="intranet"
>intranet</filename
> do projecto.</para>
<para
>Um membro poderá ter mais que um papel no projecto, como ser líder da equipa e do subprojecto.</para>
<para
>O utilizador deverá seleccionar quem é na lista de membros da equipa. Isto é possível, se seleccionar um membro da lista e carregar no botão <guilabel
>Atribuir a Si</guilabel
>. O membro seleccionado de momento (a sua identidade) irá aparecer a negrito após o texto <guilabel
>Você é:</guilabel
>.</para>
<para
>As alcunhas e a configuração da identidade própria é importante, no que respeita às mensagens e às anotações. Veja em <xref linkend="annotations"/> para aprender mais sobre as anotações.</para>
<para
>Para além de manter um registo da sua equipa, existe um benefício na configuração dos membros da equipa: você poderá configurar um evento para informar os líderes da equipa quando acontecer alguma acção. Veja em <xref linkend="event-actions"/> como fazê-lo.</para>
</sect1>
<sect1 id="event-actions">
<title
>Acções do Evento</title>
<para
>As acções de eventos são acções que são executadas quando algum evento ocorre no projecto. Um desses exemplos poderá ser o registo de quando o projecto foi aberto e fechado da última vez, para que possa ser analisado posteriormente quanto é que cada um trabalhou ou para enviar uma mensagem de e-mail quando for gravado um ficheiro, ou ainda para adicionar o ficheiro ao CVS com a ajuda de um programa, quando desejar adicionar o ficheiro ao projecto; esta lista poderá continuar.</para>
<para
>Na página de <guilabel
>Configuração do Evento</guilabel
> na janela de <menuchoice
> <shortcut
> <keycombo action="simul"
>&Shift;<keycap
>F7</keycap
></keycombo
> </shortcut
> <guimenu
>Projecto</guimenu
> <guimenuitem
>Propriedades do Projecto</guimenuitem
> </menuchoice
>, você poderá criar, editar e remover as acções do evento. </para>
>a acção é executada quando ocorrer o evento seleccionado na lista. Os nomes dos eventos são suficientemente claros.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>Acção</guilabel
></term>
<listitem
><para
>o tipo da acção executada. As escolhas possíveis são </para>
<variablelist>
<varlistentry>
<term
><guilabel
>Acção sem programa</guilabel
></term>
<listitem
><para
>uma acção que não é uma acção de um programa definido pelo utilizador. Veja as acções do utilizador em <xref linkend="user-actions"/>. </para>
<para
><guilabel
>Nome da acção</guilabel
> indica a acção a executar quando ocorrer o evento.</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>Enviar um e-mail</guilabel
></term>
<listitem
><para
>é enviado um e-mail quando ocorrer a acção para o destinatário seleccionado na lista do <guilabel
>Destinatário</guilabel
>. Este poderá ser um líder de equipa ou de um subprojecto. Veja em <xref linkend="team-members"/> a definição destes líderes. </para
>
</listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>Registar o evento</guilabel
></term>
<listitem
><para
>o evento é registado num ficheiro. Os argumentos desta acção são: </para>
<variablelist>
<varlistentry>
<term
><guilabel
>Ficheiro de registo</guilabel
></term>
<listitem
><para
>o nome completo e a localização do ficheiro</para
></listitem>
</varlistentry>
<varlistentry>
<term
>Detalhe</term>
<listitem
><para
>Quanta informação irá conter este registo</para
></listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>Comportamento</guilabel
></term>
<listitem
><para
>Se deve criar/sobrepor o ficheiro de registo existente ou adicionar o novo evento a ele.</para
></listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>Acção de programa</guilabel
></term>
<listitem
><para
>uma acção de um programa definido pelo utilizador. Veja em <xref linkend="user-actions"/> as acções do utilizador. </para>
<para
><guilabel
>Nome da acção</guilabel
> indica a acção a executar quando ocorrer o evento.</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
</variablelist>
<para
>Os outros itens dependem do tipo de <guilabel
>Acção</guilabel
> com que foram descritos. </para>
</sect1>
<sect1 id="annotations">
<title
>Anotações</title>
<para
>As anotações são comentários especiais nos documentos. Diferem dos comentários normais na seguinte medida: <itemizedlist>
<listitem
><para
>a informação é recolhida pelo Quanta e é mostrado na área de <guilabel
>Anotações</guilabel
>. </para
></listitem>
<listitem
><para
>a informação poderá ser endereçada a um membro da equipa </para
></listitem>
</itemizedlist>
</para>
<para
>A introdução de anotações é simples. Poderá tanto usar o item <guilabel
>Anotar</guilabel
> do menu de contexto do editor como introduzir a palavra-chave <emphasis
>@annotation</emphasis
> numa área de comentário, seguida do texto de anotação. <example
><title
>Exemplo de anotação em XML</title
><screen
><!-- @annotation É possível que este código esteja errado. --></screen>
<screen
><!-- @annotation
Anotação em
várias linhas.
--></screen
></example>
<example
><title
>Exemplo de anotação em PHP</title
><screen
>/* @annotation
Usar os comentários em PHP ao anotar uma área em PHP
*/</screen>
</example>
</para>
<para
>As anotações poderão ser endereçadas para um dado membro da sua equipa. A sintaxe, neste caso, é <emphasis
>@annotation(alcunha)</emphasis
> ou <emphasis
>@annotation(papel)</emphasis
>, onde a <emphasis
>alcunha</emphasis
> é o nome atribuído a um membro de equipa, enquanto o <emphasis
>papel</emphasis
> é um papel do projecto dos seguintes itens: <itemizedlist
> <listitem
><para
> team leader </para
></listitem
> <listitem
><para
> o chefe de projecto </para
></listitem
> <listitem
><para
> chefe sub-projecto </para
></listitem
> </itemizedlist
> Os chefes das tarefas e dos sub-projectos deverão ser seguidos do nome da tarefa e sub-projecto correspondentes, como aparece nos exemplos abaixo. </para>
<para>
<example
><title
>Fazer uma nota para um membro da equipa chamado <emphasis
>ze</emphasis
></title>
<screen
><-- @annotation(ze) Zé, olha para isto por favor. Pedro --></screen>
</example>
<example
><title
>Informar o líder da equipa</title>
<screen
><-- @annotation(chefe da equipa) Isto é bastante importante para a equipa --></screen>
</example>
<example
><title
>Informar o chefe do sub-projecto de <emphasis
>PHP</emphasis
></title>
<screen
>// @annotation(chefe sub-projecto:PHP) O que pensa disto?</screen>
</example>
</para>
<para
>As alcunhas e nomes dos papéis não fazem distinção entre maiúsculas e minúsculas, mas os espaços entre os parêntesis e o <emphasis
>:</emphasis
> tornam a anotação inválida.</para>
<para
>Poderá encontrar mais sobre os membros da equipa, os papéis e as alcunhas em <xref linkend="team-members"/>.</para>
<para
>As anotações encontradas no projecto poderão ser inspeccionadas na área de <guilabel
>Anotações</guilabel
>. Consiste em três páginas: <variablelist
> <varlistentry
> <term
><guilabel
>Ficheiro Actual</guilabel
></term
> <listitem
><para
> A anotação encontrada no ficheiro actual.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><guilabel
>Para Si</guilabel
></term
> <listitem
><para
> As anotações no projecto endereçado a si. Os itens são agrupados por ficheiro.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><guilabel
>Todos os Ficheiros</guilabel
></term
> <listitem
><para
> As anotações são encontradas em todos os ficheiros do projecto, e são agrupadas por ficheiros </para
></listitem
> </varlistentry
> </variablelist
> São percorridas as anotações no carregamento dos ficheiros e do projecto, à procura de modificações externas. Desta forma, mesmo que alguém adicione uma anotação fora do &quantaplus;, ela será reconhecida. Dado que a pesquisa poderá levar algum tempo, a janela de informação sobre as anotações novas endereçadas a si poderá aparecer ao fim de alguns segundos após o carregamento do projecto. </para>