<chapter id="dcop">
  <title
>A Interface de &DCOP; do &k3b;</title>
  <para
>O &k3b; possui, tal como muitas outras aplicações do &kde;, uma interface &DCOP; que torna possível controlar parte das suas funcionalidades a partir, por exemplo, de um 'shellscript'.</para>
  <para
>Para utilizar estas funções &DCOP; pode utilizar o programa de linha de comandos <command
>dcop</command
> ou a aplicação <application
>Kdcop</application
>. Ambos fornecem a mesma funcionalidade por isso é uma questão de gosto e de contexto de utilização ao escolher qual utilizar.</para>
  <para
>Este capítulo assume que está a utiliza o programa de linha de comando <command
>dcop</command
>. Para aceder às funções &DCOP; do &k3b;'s &DCOP;, verifique se o &k3b; está a correr e depois escreva algo deste género na consola: <screen
><prompt
>#</prompt
><command
>dcop</command
> <option
>k3b</option
> <option
>K3bInterface</option
> <replaceable
>[função]</replaceable
>
</screen>
</para>

<para
>Para além das funções &DCOP; genéricas disponíveis em todos os programas do &kde;, o &k3b; consiste em duas partes principais, como é descrito em baixo.</para>

<sect1>
<title
>A interface por omissão do K3b</title>

<para
>A interface de DCOP por omissão do DCOP oferece funcionalidades do tipo 'copyCD', 'formatDVD', bem como métodos para criar projectos novos.</para>

<programlisting
>DCOPRef createDataCDProject()
DCOPRef createAudioCDProject()
DCOPRef createMixedCDProject()
DCOPRef createVideoCDProject()
DCOPRef createMovixCDProject()
DCOPRef createDataDVDProject()
DCOPRef createVideoDVDProject()
DCOPRef createMovixDVDProject()
DCOPRef openProject(KURL url)
QValueList&lt;DCOPRef&gt; projects()
DCOPRef currentProject()
void copyCd()
void copyDvd()
void eraseCdrw()
void formatDvd()
void burnCdImage(KURL url)
void burnDvdImage(KURL url)
</programlisting>

<para
>Como resultado de um dos métodos 'createXXXProject', obtém-se uma referência de DCOP ao projecto acabado de criar: <programlisting
>DCOPRef(k3b,K3bProject-0)</programlisting
> Em alternativa, poderá criar um projecto com a linha de comandos: <screen>
<prompt
>#</prompt
> <command
>k3b</command
> <replaceable
>--audiocd</replaceable>
</screen
> e então obter uma referência para este projecto com <screen>
<prompt
>#</prompt
> <command
>dcop</command
> <option
>k3b</option
> <option
>K3bInterface</option
> <replaceable
>currentProject</replaceable>
</screen
> Se usar esta referência, é possível manipular o project com a <link linkend="k3bprojectinterface"
>K3bProjectInterface</link
>.</para>

</sect1>

<sect1 id="k3bprojectinterface">
<title
>K3bProjectInterface</title>

<programlisting
>void addUrls(KURL::List urls)
void addUrl(KURL url)
void burn()
</programlisting>

<para
>O K3b oferece a K3bProjectInterface listada acima, ou então a K3bDataProjectInterface, mais poderosa, que só se aplica aos projectos de dados (CD e DVD): <programlisting
>void createFolder(QString nome)
void createFolder(QString nome,QString pai)
void addUrl(KURL url,QString pai)
void addUrls(KURL::List urls,QString pai)
void removeItem(QString localização)
void renameItem(QString localização,QString novoNome)
void setVolumeID(QString id)
</programlisting>
</para>

<para
>Se usar estes métodos, é possível preencher um projecto de dados com os ficheiros e pastas de um programa. O exemplo a seguir cria um novo projecto de dados, adiciona várias pastas ao projecto e adiciona ficheiros às pastas acabadas de criar: <programlisting
>#!/bin/bash
PROJECT=$(dcop k3b K3bInterface createDataCDProject)
dcop $PROJECT createFolder teste
dcop $PROJECT createFolder xpto
dcop $PROJECT createFolder xpto2 /xpto
dcop $PROJECT addUrl /home/ze/umFicheiro.txt /xpto/xpto2
</programlisting>

</para>

</sect1>
</chapter>
