<?xml version="1.0"  encoding="UTF-8" ?>

<sect1 id="specials">
<sect1info>
<title
>Especiais e Variáveis Globais Embutidas</title>
<authorgroup>
<author
><firstname
></firstname
> <surname
></surname
> <affiliation
><address
> <email
></email>
</address
></affiliation>
</author>

<othercredit role="translator"
><firstname
>Marcus</firstname
><surname
>Gama</surname
><affiliation
><address
><email
>marcus_gama@uol.com.br</email
></address
></affiliation
><contrib
>Tradução</contrib
></othercredit
> 

</authorgroup>
</sect1info>

<title
>Especiais e Variáveis Globais Embutidas</title>

<para
>Os especiais são funções que são processadas pelo &kommander;. Você deverá saber que, até o &kommander; ter um processador completo, todos os especiais do &kommander; serão executados primeiro e só então o programa será executado. Na maioria dos casos isto não será um problema, mas em alguns deles será. </para>

<variablelist>
<varlistentry>
<term
><function
>@dcop(<parameter
>idApl</parameter
>, <parameter
>objeto</parameter
>, <parameter
>função</parameter
>, <parameter
>argumentos</parameter
>)</function
></term>
<listitem>
<para
>Faz uma chamada de &DCOP;. @dcop(<quote
>kmail</quote
>, <quote
>KMailIface</quote
>, <quote
>checkMail()</quote
>, <quote
></quote
>) </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@dcopid</function
></term>
<listitem>
<para
>O ID de &DCOP; do processo. (kmdr-executor-@pid) </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@dialog(<parameter
>diálogo</parameter
>[,<parameter
>parâmetros</parameter
>])</function
></term>
<listitem>
<para
>Lança o diálogo do Kommander indicado. O diálogo é visto na pasta do diálogo e na pasta atual - nesta ordem. Isto antecede a chamada ao executor e muda a pasta padrão para a pasta onde o arquivo do Kommander se encontra. Os parâmetros podem ser passados da forma normal do Unix ou você poderá passar parâmetros com nomes no formato <quote
>variavel=valor</quote
>. Você poderá então encontrar os parâmetros passados na lista de variáveis globais. O @global(variavel) iria devolver <quote
>valor</quote
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@env(<parameter
>variavelAmbiente</parameter
>)</function
></term>
<listitem>
<para
>Expande-se para a variável de ambiente. O @env(PWD) expande-se para o $PWD. Lembre-se que o <quote
>$</quote
> faz parte da linha de comando e não deverá ser usado. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@exec(<parameter
>comando</parameter
>)</function
></term>
<listitem>
<para
>devolve o resultado da execução do comando indicado. @exec(ls -l). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@execBegin ... @execEnd</function
></term>
<listitem>
<para
>o mesmo que o <function
>@exec</function
>, mas suporta o 'shebang' e 'scripts' de várias linhas. Isto serve para várias linguagens de programação, declarando-as ou utilizando um 'shebang'. </para>
<itemizedlist>
<listitem
><para
><function
>@execBegin(php)</function
></para
></listitem>
<listitem
><para
><function
>@execBegin</function
>#!/usr/bin/php</para
></listitem>
</itemizedlist>
<para
>O primeiro usa o nome do executável do <acronym
>PHP</acronym
>. O &kommander; procura na PATH pelo <application
>php</application
> e, se não for encontrado, verifica se está registrado no &kommander; numa localização fora da sua PATH. Se não estiver, diz ao usuário que não pôde ser encontrado. O segundo exemplo usa o clássico <quote
>shebang</quote
>, que poderá ter alguns benefícios, assim como alguns problemas. Se você tiver uma versão beta do <acronym
>PHP5</acronym
>, por exemplo, no <filename
>/usr/local/bin</filename
>, ela não seria encontrada porque iria obter primeiro a versão em <filename
>/usr/bin</filename
>. Se, por outro lado, você distribuir o diálogo para alguém que tenha o <acronym
>PHP</acronym
> no <filename
>/usr/local/bin</filename
> apenas, ela não seria encontrada com o 'shebang' usado. Por isso, usar 'shebangs' deverá necessitar de cuidado e a utilização do executável é recomendada se estiver compartilhando arquivos.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@global(<parameter
>variável</parameter
>)</function
></term>
<listitem>
<para
>expande para o valor da variável global indicada. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@null</function
></term>
<listitem>
<para
>Devolve um valor nulo. Agora que o Kommander verifica pelo 'widgetText' vazio durante a execução, isto irá evitar erros no caso de um estado indefinido de um elemento.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@parentPid</function
></term>
<listitem>
<para
>O &PID; do processo-pai. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@pid</function
></term>
<listitem>
<para
>O &PID; do processo. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@readSetting(<parameter
>chave</parameter
>, <parameter
>valorPadrão</parameter
>)</function
></term>
<listitem>
<para
>lê um valor do <filename
>kommanderrc</filename
> </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@selectedWidgetText</function
></term>
<listitem>
<para
>O conteúdo selecionado de um elemento gráfico que possa mostrar mais de um valor, como por exemplo as listas </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@setGlobal(<parameter
>variável</parameter
>, <parameter
>valor</parameter
>)</function
></term>
<listitem>
<para
>Configura a variável global para o valor indicado. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@widgetText</function
></term>
<listitem>
<para
>o conteúdo de um elemento </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@writeSetting(<parameter
>chave</parameter
>, <parameter
>valor</parameter
>)</function
></term>
<listitem>
<para
>grava o valor no <filename
>kommanderrc</filename
> </para>
</listitem>
</varlistentry>
</variablelist>

<sect2 id="arrays">
<title
>Grupo de Funções de Listas</title>

<variablelist>
<varlistentry>
<term
><function
>@Array.values(<parameter
>lista</parameter
>)</function
></term>
<listitem>
<para
>Devolve uma lista separada por EOL's de todos os valores da lista. Pode ser usada para percorrer uma lista.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.keys(<parameter
>lista</parameter
>)</function
></term>
<listitem>
<para
>Devolve uma lista separada por EOL's de todas as chaves da lista.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.setValue(<parameter
>lista</parameter
>, <parameter
>chave</parameter
>, <parameter
>valor</parameter
>)</function
></term>
<listitem>
<para
>Define um chave e um valor para um elemento da lista. Se não existir nenhuma lista, ela é criada.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.clear(<parameter
>lista</parameter
>)</function
></term>
<listitem>
<para
>Remove todos os elementos da lista.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.count(<parameter
>lista</parameter
>)</function
></term>
<listitem>
<para
>Devolve o número de elementos na lista.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.value(<parameter
>lista</parameter
>,<parameter
>chave</parameter
>)</function
></term>
<listitem>
<para
>Devolve o valor associado à chave indicada.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.remove(<parameter
>lista</parameter
>,<parameter
>chave</parameter
>)</function
></term>
<listitem>
<para
>Remove o elemento com a chave indicada da lista.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.fromString(<parameter
>lista</parameter
>,<parameter
>texto</parameter
>)</function
></term>
<listitem>
<para
>Adiciona todos os elementos do texto na lista. O texto deverá ter o formato <emphasis
>chave\tvalor\n</emphasis
>.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.toString(<parameter
>lista</parameter
>,<parameter
>texto</parameter
>)</function
></term>
<listitem>
<para
>Devolve todos os elementos na lista num formato <emphasis
>chave\tvalor\n</emphasis
>.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="files">
<title
>Grupo de Funções de Arquivos</title>
<variablelist>

<varlistentry>
<term
><function
>@File.read(<parameter
>arquivo</parameter
>)</function
></term>
<listitem>
<para
>Devolve o conteúdo do arquivo indicado.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@File.write(<parameter
>arquivo</parameter
><parameter
>texto</parameter
>)</function
></term>
<listitem>
<para
>Escreve o texto indicado num arquivo.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@File.append(<parameter
>arquivo</parameter
><parameter
>texto</parameter
>)</function
></term>
<listitem>
<para
>Adiciona o texto indicado ao fim de um arquivo.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="strings">
<title
>Grupo de Funções de Cadeias de Caracteres</title>
<variablelist>

<varlistentry>
<term
><function
>@String.length(<parameter
>texto</parameter
>)</function
></term>
<listitem>
<para
>Devolve o número de caracteres no texto.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.contains(<parameter
>texto</parameter
>,<parameter
>sub-texto</parameter
>)</function
></term>
<listitem>
<para
>Verifica se o texto contém o sub-texto indicado.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.find(<parameter
>texto</parameter
>)</function
></term>
<listitem>
<para
>Devlve a posição de um sub-texto no texto ou -1 se não for encontrado.</para>
<note
><para
>Isto terá um parâmetro opcional de posição inicial para procurar as próximas instâncias na versão Alpha 6.</para
></note>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.left(<parameter
>texto</parameter
>, <parameter
>num</parameter
>)</function
></term>
<listitem>
<para
>Devolve os primeiros 'num' caracteres do texto.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.right(<parameter
>texto</parameter
>, <parameter
>num</parameter
>)</function
></term>
<listitem>
<para
>Devolve os últimos 'num' caracteres do texto.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.mid(<parameter
>texto</parameter
>, <parameter
>inicio</parameter
>, <parameter
>fim</parameter
>)</function
></term>
<listitem>
<para
>Devolve uma sub-sequência do texto, delimitada pelas posições indicadas.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.remove(<parameter
>texto</parameter
>, <parameter
>sub-texto</parameter
>)</function
></term>
<listitem>
<para
>Remove todas as ocorrências de um determinado sub-texto.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.replace(<parameter
>texto</parameter
>, <parameter
>original</parameter
>, <parameter
>substituicao</parameter
>)</function
></term>
<listitem>
<para
>Substitui todas as ocorrências de um determinado sub-texto por outro de substituição.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.upper(<parameter
>texto</parameter
>)</function
></term>
<listitem>
<para
>Converte o texto para maiúsculas.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.lower(<parameter
>texto</parameter
>)</function
></term>
<listitem>
<para
>Converte o texto para minúsculas.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.compare(<parameter
>texto1</parameter
>, <parameter
>texto2</parameter
>)</function
></term>
<listitem>
<para
>Compara dois textos. Devolve 0 se forem iguais, -1 se o primeiro texto for menor ou 1 se o primeiro texto for maior</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.isEmpty(<parameter
>texto</parameter
>)</function
></term>
<listitem>
<para
>Verifica se o texto está vazio.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.isNumber(<parameter
>texto</parameter
>)</function
></term>
<listitem>
<para
>Verifica se o texto é um número válido.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="builtins">
<title
>Globais Embutidos</title>
<para
>Os globais embutidos são acessados como se fossem variáveis globais normais com o <function
>@global</function
>.</para>
<variablelist>
<varlistentry>
<term
><function
>@global(_KDDIR)</function
></term>
<listitem>
<para
>A pasta onde o diálogo atual se encontra.</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><function
>@global(_NAME)</function
></term>
<listitem
><para
>O nome do diálogo</para
></listitem>
</varlistentry>
</variablelist>
</sect2>

</sect1>
