<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1-Based Variant V1.0//EN" "dtd/kdex.dtd" [
<!ENTITY % inst SYSTEM "install-dep.entities">
%inst;
]>

<book lang="&language;">
      
<bookinfo>
<title
>Guia das Bibliotecas do KDE</title>
<!-- Make jade happy with all required tags... -->
<authorgroup>
<author
> <firstname
>Bernd</firstname
><surname
>Gehrmann</surname
> <affiliation
><address
><email
>bernd@physik.hu-berlin.de</email
></address
></affiliation
> </author
> 
<othercredit role="translator"
><firstname
>Pedro</fistname
><surname
>Morais</surname
><affiliation
><address
><email
>morais@kde.org</email
></affilitation
><contrib
>Tradução</contrib
></othercredit>
</authorgroup>
<date
>2000-06-08</date>
<releaseinfo
>0.00.01</releaseinfo>
<abstract
><para
>Referência das Bibliotecas do KDE</para
></abstract>
<keywordset
><keyword
>KDE</keyword
></keywordset>
</bookinfo>
 
   <chapter id="libraries">
      <title
>Bibliotecas no pacote kdelibs</title>
      <para
> O pacote kdelibs consiste das seguintes bibliotecas: </para>
      <para
> A biblioteca <ulink url="kdecore/index.html"
>kdecore</ulink
> é o framework de base para todos os programas baseados no KDE. Fornece acesso ao sistema de configuração, gestão da linha de comandos, carregamento e manipulação de ícones, alguns tipos especiais de comunicação interprocessos, manipulação de ficheiros e outros utilitários variados. </para>
      <para
> A biblioteca <ulink url="kdeui/index.html"
>kdeui</ulink
> fornece muitos widgets e diálogos que o Qt não tem ou que têm mais funcionalidades do que os equivalentes do Qt. Também inclui vários widget que herdam de outros do Qt e que estão melhor integrados com o ambiente de trabalho, respeitando as preferências do utilizador. </para>
      <para
> A biblioteca <ulink url="kparts/index.html"
>kparts</ulink
> forma a fundação para o modelo de componentes embebidos do KDE. </para>
      <para
> A biblioteca <ulink url="kio/index.html"
>kio</ulink
> permite entradas/saidas (I/O) assíncronas e acesso à gestão de mimetypes. </para>
      <para
> A biblioteca <ulink url="kfile/index.html"
>kfile</ulink
> contém o diálogo de ficheiros do KDE e as suas classes de suporte. </para>
      <para
> A biblioteca <ulink url="khtml/index.html"
>khtml</ulink
> contém o componente KHTML, um widget de tratamento e navegação em HTML, incluindo interfaces para Java. </para>
      <para
> A biblioteca <ulink url="kjs/index.html"
>kjs</ulink
> fornece uma implementação de JavaScript. </para>
   </chapter>


   <chapter id="overview">
      <title
>Vista geral</title>


      <sect1 id="i18n-overview">
         <title
>Internacionalização de aplicações</title>
         <para
> Um objectivo importante do KDE é tornar as aplicações fáceis de usar pelas pessoas nos vários países. A internacionalização (muitas vezes referida como <abbrev
>i18n</abbrev
>, que significa &quot;I&quot; seguido de dezoito letras com um &quot;N&quot; no fim) compreende a preparação da tradução dos textos e mensagens que aparecem na interface do utilizador, o suporte para a introdução, manipulação e representação do texto em vários mapas de caracteres e o suporte para diferentes formatos de datas, numéricos e monetários. No fim, é suposto um programa correr <emphasis
>sem modificações</emphasis
> em qualquer ambiente linguístico com qualquer conjunto de convenções culturais. </para>

         <para
> Graças à infraestrutura de base do Qt 2.x, os programas do KDE utilizam por omissão a classe poderosa <classname
>QString</classname
> para todas as mensagens visíveis ao utilizador. Dado que a <classname
>QString</classname
> usa Unicode internamente, na maioria dos casos não tens que te preocupar com as codificações mais invulgares. Sempre que tiveres de usar uma codificação local (p. ex. para os nomes de ficheiros), o Qt disponibiliza a classe <classname
>QTextCodec</classname
> para a conversão. </para>

         <para
> A seguir discutiremos como deves preparar um programa para a tradução da sua interface de utilizador. Se és um programador duma aplicação do CVS do KDE tens sorte, dado que só tens de te preocupar em marcar todas as mensagens a traduzir. A tradução em si será tratada por um conjunto de entidades conhecidas como a Equipa de Tradução do KDE. Se estás tu próprio a manter uma aplicação, também deves ponderar alguns detalhes do ponto de vista do tradutor. </para>

         <sect2 id="i18n-programmer">
	 <title
>O ponto de vista do programador</title>

         <para
> Os programas do KDE utilizam normalmente um sistema de tradução baseado numa versão modificada do pacote gettext que faz parte da glibc nos sistemas Linux. Embora isto não seja obrigatório, é recomendado porque é muito simples de usar pelo programador e é <emphasis
>a</emphasis
> norma para os projectos 'open-source'. Se estás a ter cuidado em delimitar todas as mensagens a traduzir no código-fonte com uma chamada a <function
>i18n()</function
> (e incluis o ficheiro <filename
>klocale.h</filename
>), então está praticamente feito. Por exemplo, para criares uma zona de texto numa janela, escreve: </para>

         <para
> <programlisting>
#include &lt;klocale.h&gt;
...
QLabel *lbl = new QLabel(i18n("File name:"), this);
            </programlisting
> </para>

         <para
> A função <function
>i18n()</function
> tem dois aspectos: o primeiro é que recebe um argumento do tipo <type
>const char *</type
>, procura no seu dicionário - de acordo com a língua escolhida pelo utilizador, tal como definido no centro de controlo - e devolve uma <classname
>QString</classname
> com a tradução. Como detalhe técnico, repara que a pesquisa é na verdade muito rápida, e a sua utilização de memória é optimizada através do mapeamento do ficheiro binário com a tradução na memória. Para além disso, como o resultado da função é um objecto <classname
>QString</classname
> partilhado implicitamente, não tens que te preocupar com as cópias do texto que possam existir. </para>
         <para
> O outro aspecto desta função é que marca as mensagens que devem ser traduzidas no código-fonte, por isso podem ser extraídas automaticamente com o programa <application
>xgettext</application
>. De modo a usá-lo, põe esta regra no ficheiro <filename
>Makefile.am<filename
> do teu pacote <application
>foo</application
>: </para>

         <para
> <programlisting>
messages:
	$(XGETTEXT) -C -ki18n -x $(kde_includes)/kde.pot -o $(podir)/foo.pot $(foo_SOURCES)
            </programlisting
> </para>

         <para
> Ao executares este alvo do make crias um ficheiro <filename
>foo.pot</filename
>, normalmente na directoria <filename
>po</filename
> por baixo da directoria de topo do teu pacote. Este ficheiro contém entradas deste tipo: </para>

         <para
> <programlisting>
#: foo.cpp:3 
msgid "File name:" 
msgstr ""
            </programlisting
> </para>

         <para
> Por vezes queres utilizae texto que contém alguns elementos que só são conhecidos no momento da execução. A aproximação mais óbvia de internacionalização seria algo deste género: </para>

         <para
> <programlisting>
QString filename;
...
filename = ... // obter um ficheiro do utilizador ou de outro lado
if (!QFileInfo(filename).exists()) {
    QMessageBox::information(this, "Foo", i18n("File ") + filename + i18n(" does not exist.));
}
            </programlisting
> </para>

         <para
> Não faças charadas de palavras como esta! Isto dificulta bastante o trabalho do tradutor. É melhor utilizar frases que fazem sentido e substituir os elementos variáveis com o método <function
>arg()</function
> da <classname
>QString</classname
>: </para>

         <para
> <programlisting>
QString filename;
...
filename = ... // obter um ficheiro do utilizador ou de outro lado
if (!QFileInfo(filename).exists()) {
    QMessageBox::information(this, "Foo", i18n("File &percnt;1 does not exist.").arg(filename));
}
            </programlisting
> </para>

         <para
> O método <function
>arg()</function
> obtém sequências de texto na forma &quot;&percnt;n&quot;, em que <replaceable
>n</replaceable
> é um número entre 0 e 9, e substitui o que tem o número menor com o seu argumento. Por conveniência, este método sofre 'overload' para os inteiros e para os 'floats', por isso é mais seguro na tipificação que as funções do C como a <function
>sprintf()</function
>. Também tem a vantagem importante de que, quando introduzes várias sequências de texto numa cadeia de caracteres, o tradutor tem a liberdade de alterar a sua ordem. Por exemplo, considera a frase em inglês <blockquote
><para
>Printed &percnt;1 pages of &percnt;2 total.</para
></blockquote
> Um tradutor português pode usar assim como tradução <blockquote
><para
>Das &percnt;2 páginas já imprimi &percnt;1.</para
></blockquote
> </para>

         <para
> Às vezes pode acontecer que a tradução duma palavra possa ser ambígua, i.e., tem vários significados no original (que é normalmente o inglês). Por exemplo, podes ter um botão que diz &quot;Set&quot; nele. Um significado possível é &quot;A set of elements&quot; em que um tradutor português traduziria para &quot;Conjunto&quot;. Outro significado é &quot;Set an option&quot;, para o qual o tradutor passaria a &quot;Alterar&quot;. Obviamente, a função <function
>i18n()</function
> descrita anteriormente não pode dar resultados diferentes para a mesma frase em contextos diferentes. Uma solução para isto é uma versão de dois argumentos desta função. O segundo argumento a mensagem por traduzir, que é usada pelos utilizadores ingleses. O primeiro argumento só serve o fim de distinguir os diferentes significados para a mensagem por traduzir. No exemplo acima podes usar <blockquote
><para
> i18n("A set of", "Set") </para
></blockquote
> para uma ocorrência do &quot;Set&quot; e <blockquote
><para
> i18n("to set", "Set") </para
></blockquote
> para a outra. </para>

         </sect2>

         <sect2 id="i18n-translator">
	 <title
>O ponto de vista do tradutor</title>

         <para
> </para>

	 </sect2>

      </sect1>


      <sect1 id="xml-overview">
         <title
>Utilização de XML no KDE</title
> 
         <para
> Blubber blubber zisch - Motivação... <ulink url="http://www.w3.org/XML/1999/XML-in-10-points"
>XML em 10 pontos</ulink
> </para>


         <sect2 id="xml-format">
	 <title
>O aspecto do XML</title>

         <para
> Eis um exemplo de um ficheiro XML utilizado pela aplicação <application
>Columbo</application
> para descrever um motor de busca na Internet: </para>
         <para
> <programlistingco
> <areaspec
> <area id="xml.doctype" coords="1"/> <area id="xml.rootel" coords="2"/> <area id="xml.nestedel" coords="9"/> </areaspec
> <programlisting>
<![CDATA[<!DOCTYPE search>
<search 
   name="Altavista" 
   channel="web"
   method="get"
   action="http://www.altavista.com/cgi-bin/query"
>

   <input name="pg" value="q"/>
   <input name="sc" value="on"/>
   <input name="hl" value="on"/>
   <input name="kl" value="XX"/>
   <input name="stype" value="stext"/>
   <input name="q" user="true"/>

   <interpret
      resultListStart="&lt;dl&gt;"
      resultItemStart="&lt;dt&gt;"
      relevanceStart=""
      resultListEnd="&lt;/td&gt;"
      resultItemEnd="&lt;/dl&gt;"
      relevanceEnd=""
   />

</search
>]]>
               </programlisting
> <calloutlist
> <callout arearefs="xml.doctype"
> <para
> Esta instrução é normalmente utilizada para declarar o DTD do documento. Aqui não é utilizado nenhum DTD, e só aparece o nome do elemento raiz (<varname
>search</varname
>). </para
> </callout
> <callout arearefs="xml.rootel"
> <para
> <sgmltag class="starttag"
>search</sgmltag
> inicia o elemento raiz. Este elemento só termina no fim do documento (<sgmltag class="endtag"
>search</sgmltag
>). </para
> </callout
> <callout arearefs="xml.nestedel"
> <para
> Este é um exemplo de um elemento vazio. Os elementos vazios não precisam de uma marca a terminá-los (que seria neste caso <varname
>&lt;/input&gt;</varname). </para
> </callout
> </calloutlist
> </programlistingco
> </para>
         
         </sect2>
         
         <sect2 id="xml-domapi">
	 <title
>Aceder a ficheiros XML através da API QDom</title>

         <para
> Vamos agora examinar a forma como um ficheiro deste tipo é manipulado. A maneira mais fácil é criar um <classname
>QDomDocument</classname
>. Com o seu construtor <function
>QDomDocument(const QString&amp; name)</function
>, o ficheiro com o nome <varname
>name</varname
> é completamente processado, e podes navegar no seu conteúdo através de uma estrutura em forma de árvore. Como primeiro passo, verificamos se o ficheiro contém o tipo de documento correcto: </para>
         <para
> <programlisting>
QDomDocument doc(filename);
if (doc.doctype().name() != "search") {
    cout &lt;&lt; "Not the correct document type." &lt;&lt; endl;
    return;
}
            </programlisting
> </para>
         <para
> O elemento de base (que é uma instância da classe <classname
>QDomElement</classname
>) está disponível através do método <function
>QDomDocument::documentElement()</function
>. Podem ser pesquisados os atributos do elemento com o método <function
>QDomElement::attribute()</function
>, que devolve uma <classname
>QString</classname
>. Nós devolvemos como resultado os atributos &quot;name&quot; e &quot;method&quot;, que no ficheiro do exemplo anterior são &quot;Altavista&quot; e &quot;get&quot; respectivamente: </para>
         <para
> <programlisting>
QDomElement docel = doc.documentElement();
cout &lt;&lt; "Nome:   " &lt;&lt; docel.attribute("name").latin1() &lt;&lt; endl;
cout &lt;&lt; "Método: " &lt;&lt; docel.attribute("method").latin1() &lt;&lt; endl;
            </programlisting
> </para>
         <para
> O elemento raiz tem vários filhos <sgmltag class="starttag"
>input</sgmltag
>. Para os processares, podes iterar neles utilizando um pedaço de código como o seguinte: </para>
         <para
> <programlisting>
QDomElement childel = docel.firstChild().toElement()
while (!childel.isNull()) {
    if (childel.tagName() == "input") {
        // fazer algo com o elemento childel
    }
    childel = childel.nextSibling().toElement();
}
            </programlisting
> </para>
         <para
> A utilização do método <function
>toElement()</function
> é necessária porque <function
>QDomElement::firstChild()</function
> devolve um objecto da classe <classname
>QDomNode</classname
>, o qual tem que ser primeiro convertido para um elemento. </para>
         <para
> Nalgums casos, não queres iterar sobre os filhos de um elemento, mas sim aceder directamente a um elemento com um determinado nome. Continuando com o exemplo anterior, isto pode ser feito da seguinte forma: </para>
         <para
> <programlisting>
               QDomElement interpretel = docel.namedItem("interpret").toElement();
               if (!interpret.isNull()) {
               // fazer algo com o interpretel
               }
            </programlisting
> </para>
         
	 </sect2>

      </sect1>

   </chapter>


   <chapter id="structure">
      <title
>Estrutura</title>
      <para
> As classes nas bibliotecas podem ser classificadas do seguinte modo: <itemizedlist
> <listitem
> <para
> <link linkend="applicationskeleton"
>Esqueleto de aplicações</link
> - classes utilizadas por quase todas as aplicações. </para
> </listitem
> <listitem
> <para
> <link linkend="configurationsettings"
>Configuração</link
> - classes que acedem à base de dados hierarquica de configurações, configurações globais e recursos aplicacionais. </para
> </listitem
> <listitem
> <para
> <link linkend="keyboardaccelerators"
>Acelerados e atalhos de teclado</link
> - classes que auxiliam a manutenção de atribuições de teclas consistentes em todo o ambiente de trabalho. </para
> </listitem
> <listitem
> <para
> <link linkend="filehandling"
>Gestão de ficheiros e URLs</link
> - ficheiros temporários, descodificação de URLs, carregamento e manipulação de ícones. </para
> </listitem
> <listitem
> <para
> <link linkend="imageprocessing"
>Processamento de imagens</link
> - carregamento e manipulação de ícones. </para
> </listitem
> <listitem
> <para
> <link linkend="interprocess"
>Comunicação entre processos</link
> - subprocessos, classe auxiliares de DCOP. </para
> </listitem
> <listitem
> <para
> <link linkend="utilityclasses"
>Classes utilitárias</link
> - gestão de memória, números aleatórios, expressões regulares, manipulação de cadeiras de caractéres, conjuntos de caractéres, etc. </para
> </listitem
> <listitem
> <para
> <link linkend="widgets"
>Componente gráficos</link
> - classes para visualização de listas, réguas, seleção de cores,... </para
> </listitem
> <listitem
> <para
> <link linkend="dialogs"
>Diálogos</link
> - diálogos completo para seleção de ficheiros, cores e tipos de letra </para
> </listitem
> </itemizedlist
> </para>

      
      <sect1 id="applicationskeleton">
         <title
>O esqueleto de uma aplicação</title>
	 <para
> <variablelist
> <varlistentry
> <term
><ulink url="kdecore/KApplication.html"
>KApplication</ulink
></term
> <listitem
> <para
> Inicializa e controla uma aplicação KDE. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KUniqueApplication.html"
>KUniqueApplication</ulink
></term
> <listitem
> <para
> Garante que apenas uma instância da aplicação corre simultaneamente. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KAboutData.html"
>KAboutData</ulink
></term
> <listitem
> <para
> Contém informações para a caixa de créditos. </para
> </listitem
> </varlistentry
> </variablelist
> </para>
      </sect1>

      <sect1 id="configurationsettings">
         <title
>Parâmetros de configuração</title>
         <para
> <variablelist
> <varlistentry
> <term
><ulink url="kdecore/KConfig.html"
>KConfig</ulink
></term
> <listitem
> <para
> Fornece acesso à base de dados de configuração do KDE. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KConfigBase.html"
>KConfigBase</ulink
></term
> <listitem
> <para
> Classe abstracta para acesso a ficheiros de configuração. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KSimpleConfig.html"
>KSimpleConfig</ulink
></term
> <listitem
> <para
> Acesso a ficheiro de configuração simples e não hierárquicos. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KDesktopFile.html"
>KDesktopFile</ulink
></term
> <listitem
> <para
> Acesso a ficheiros <filename
>.desktop</filename
>. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KGlobalSettings.html"
>KGlobalSettings</ulink
></term
> <listitem
> <para
> Fornece acesso conveniente a parâmetros globais. </para
> </listitem
> </varlistentry
> </variablelist
> </para>
      </sect1>

      
      <sect1 id="keyboardaccelerators">
         <title
>Aceleradores e atalhos de teclado</title>
         <para
> <variablelist
> <varlistentry
> <term
>KAccel</term
> <listitem
><para
>Conjunto de atalhos de teclado.</para
></listitem
> </varlistentry
> <varlistentry
> <term
>KStdAccel</term
> <listitem
><para
>Acesso fácil aos atalhos de teclado mais comuns.</para
></listitem
> </varlistentry
> <varlistentry
> <term
>KGlobalAccel</term
> <listitem
><para
>Conjunto de atalhos de teclas globais ao sistema.</para
></listitem
> </varlistentry
> </variablelist
> </para>
      </sect1>
      

      <sect1 id="filehandling">
         <title
>Tratamento de ficheiros e URLs</title>
         <para
> <variablelist
> <varlistentry
> <term
><ulink url="kdecore/KTempFile.html"
>KTempFile</ulink
></term
> <listitem
><para
>Cria ficheiros únicos para dados temporários.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KSaveFile.html"
>KSaveFile</ulink
></term
> <listitem
><para
>Permite gravar ficheiros de uma forma atómica.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KURL.html"
>KURL</ulink
></term
> <listitem
><para
>Representa e trata URLs</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KProtocolHandler"
>KProtocolHandler</ulink
></term
> <listitem
><para
>Fornece informações acerca de protocolos de IO.</para
></listitem
> </varlistentry
> </variablelist
> </para>
      </sect1>


      <sect1 id="imageprocessing">
         <title
>Processamento de imagens</title>
            <para
> <variablelist
> <varlistentry
> <term
><ulink url="kdecore/KPixmap.html"
>KPixmap</ulink
></term
> <listitem
><para
>Uma classe para pixmaps com capacidades de dithering.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KPixmapEffect.html"
>KPixmapEffect</ulink
></term
> <listitem
><para
>Efeitos para pixmaps, tais como gradiantes e padrões.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KIconLoader.html"
>KIconLoader</ulink
></term
> <listitem
><para
>Carrega ícones de uma forma compatível com a utilização de temas.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KIconTheme.html"
>KIconTheme</ulink
></term
> <listitem
><para
>Classe de ajuda ao KIconLoader.</para
></listitem
> </varlistentry
> </variablelist
> </para>
      </sect1>


      <sect1 id="interprocess">
         <title
>Comunicação entre processos.</title>
            <para
> <variablelist
> <varlistentry
> <term
><ulink url="kdecore/KProcess.html"
>KProcess</ulink
></term
> <listitem
><para
>Invoca e controla processos filhos.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KShellProcess.html"
>KShellProcess</ulink
></term
> <listitem
><para
>Invoca processos filhos através de uma shell.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KIPC.html"
>KIPC</ulink
></term
> <listitem
><para
>Mecanismo simples de IPC utilizados ClientMessages do X11.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KDCOPPropertyProxy.html"
>KDCOPPropertyProxy</ulink
></term
> <listitem
><para
>Uma classe que publica propriedades do Qt através do DCOP.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdeui/KDCOPActionProxy.html"
>KDCOPActionProxy</ulink
></term
> <listitem
><para
>Uma classe que publica uma interface DCOP para acções.</para
></listitem
> </varlistentry
> </variablelist
> </para>
      </sect1>
      
      <sect1 id="utilityclasses">
         <title
>Classes utilitárias</title>
         <para
> <variablelist
> <varlistentry
> <term
><ulink url="kdecore/KRegExp.html"
>KRegExp</ulink
></term
> <listitem
><para
>Expressões regulares POSIX.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KStringHandler.html"
>KStringHandler</ulink
></term
> <listitem
><para
>Uma interface extravagante para manipulação de texto.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KCompletion.html"
>KCompletion</ulink
></term
> <listitem
><para
>Uma classe genéria para a completação de texto.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KZoneAllocator.html"
>KZoneAllocator</ulink
></term
> <listitem
><para
>Alocação eficiente de memória para conjuntos grandes de objectos pequenos.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdecore/KRandomSequence.html"
>KRandomSequence</ulink
></term
> <listitem
><para
>Gerador de número pseudo aleatórios.</para
></listitem
> </varlistentry
> </variablelist
> </para>
      </sect1>


      <sect1 id="widgets">
         <title
>Componentes gráficos</title>
         <para
> <variablelist
> <varlistentry
> <term
><ulink url="kdeui/KListView.html"
>KListView</ulink
></term
> <listitem
><para
>Uma variante da classe QListView que respeita as configurações do KDE.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdeui/KListBox.html"
>KListBox</ulink
></term
> <listitem
><para
>Uma variante da classe QListBox que respeita as configurações do KDE.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdeui/KIconView.html"
>KIconView</ulink
></term
> <listitem
><para
>Uma variante da classe QIconView que respeita as configurações do KDE.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdeui/KRuler.html"
>KRuler</ulink
></term
> <listitem
><para
>Uma régua.</para
></listitem
> </varlistentry
> </variablelist
> </para>
      </sect1>


      <sect1 id="dialogs">
         <title
>Diálogos</title>
         <para
> <variablelist
> <varlistentry
> <term
><ulink url="kdeui/KFileDialog.html"
>KFileDialog</ulink
></term
> <listitem
><para
>Um diálogo de seleção de ficheiros.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdeui/KColorDialog.html"
>KColorDialog</ulink
></term
> <listitem
><para
>Um diálogo de seleção de cores.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kdeui/KFontDialog.html"
>KFontDialog</ulink
></term
> <listitem
><para
>Um diálogo de seleção de tipos de letra.</para
></listitem
> </varlistentry
> </variablelist
> </para>
      </sect1>

   </chapter
>   


   <chapter id="screenshots">
      <title
>Ecrãs</title>
      <para
> O <ulink url="kfile/KFileDialog.html"
>KFileDialog</ulink
>: <screenshot
><mediaobject
><imageobject
> <imagedata fileref="kfile/kfiledialog.png" format="PNG"/> </imageobject
></mediaobject
></screenshot
> </para>
      <para
> O <ulink url="kfile/KColorDialog.html"
>KColorDialog</ulink
>: <screenshot
><mediaobject
><imageobject
> <imagedata fileref="kdeui/kcolordialog.png" format="PNG"/> </imageobject
></mediaobject
></screenshot
> </para>
      <para
> O <ulink url="kfile/KFontDialog.html"
>KFontDialog</ulink
>: <screenshot
><mediaobject
><imageobject
> <imagedata fileref="kdeui/kfontdialog.png" format="PNG"/> </imageobject
></mediaobject
></screenshot
> </para>
      <para
> O <ulink url="kfile/KEditToolbar.html"
>KEditToolbar</ulink
>: <screenshot
><mediaobject
><imageobject
> <imagedata fileref="kdeui/kedittoolbar.png" format="PNG"/> </imageobject
></mediaobject
></screenshot
> </para>
      <para
> O <ulink url="kfile/KKeyDialog.html"
>KKeyDialog</ulink
>: <screenshot
><mediaobject
><imageobject
> <imagedata fileref="kdeui/kkeydialog.png" format="PNG"/> </imageobject
></mediaobject
></screenshot
> </para>
      <para
> O <ulink url="&QTDOCDIR;/qcolordialog.html"
>QPrintDialog</ulink
>: <screenshot
><mediaobject
><imageobject
> <imagedata fileref="&QTDOCDIR;/qprintdlg-m.png" format="PNG"/> </imageobject
></mediaobject
></screenshot
> </para>
      <para
> ... </para>
   </chapter>


   <chapter id="standards">
      <title
>Normas</title>
      <para
> <variablelist
> <varlistentry
> <term
><ulink url="http://www.w3.org/XML/"
>XML</ulink
></term
> <listitem
> <para
> A Extensible Markup Language. O formato dos documentos do KOffice são aplicações desta. Também é utilizado como formato dos ficheiros de configuração de uma número crescente de aplicações do KDE. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="http://www.w3.org/DOM/"
>DOM</ulink
></term
> <listitem
> <para
> O Document Object Model, tal como definido pelo W3C. As classes do Qt
<classname
>QDom*</classname
> são modeladas a partir deste. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="http://www.cco.newplanetsoftware.com/xdnd/"
>XDND</ulink
></term
> <listitem
> <para
> A especificação do protocolo de drag and drop entre aplicações utilizado pelo Qt e pelo Gtk. Entretanto, várias outras aplicações a passaram a utilizar. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="http://www.freedesktop.org/standards/wm-spec.html"
>wm-spec</ulink
></term
> <listitem
> <para
> O protocolo para interacção com o gestor de janelas, suportado por muitos autors de gestores de janelas. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="kio/DESKTOP_ENTRY_STANDARD"
>Norma de Ficheiros Desktop</ulink
></term
> <listitem
> <para
> O formato dos ficheiros <filename
>.desktop</filename
>, suportado pelo KDE e pelo GNOME. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/"
>Tipos MIME</ulink
></term
> <listitem
> <para
> Lista de tipos de conteúdo registrados. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="http://www.ietf.org/rfc/rfc1738.txt"
>URL</ulink
></term
> <listitem
> <para
> "Uniform resource locators", definidos pelo RFC 1738. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><ulink url="ftp://ftp.x.org/pub/R6.4/xc/doc/hardcopy/SM"
>SM</ulink
></term
> <listitem
> <para
> O protocolo de gestão de sessões X11R6.4. Este é o protocolo de base para
as funcionalidades alto nível de gestão de sessão da <classname
>KTMainWindow</classname
>. O GNOME também suporta este protocolo. </para
> </listitem
> </varlistentry
> </variablelist
> </para>
   </chapter>

</book>
   
   
<!-- 
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:3
sgml-indent-data:t
sgml-parent-document:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
compile-command:"test -d HTML && rm -rf HTML ; kdb2html `pwd`/index.docbook.in"
fill-column:85
End:
-->

