<chapter id="dcop">
  <title
>De &DCOP;-interface van &k3b;</title>
  <para
>&k3b; heeft, net als de meeste andere &kde;-programma's, een &DCOP;-interface. Dit maakt het onder andere mogelijk om delen van &k3b; te besturen vanuit een shellscript.</para>
  <para
>Om deze &DCOP;-functies te gebruiken kunt u het commando <command
>dcop</command
> gebruiken, of het eenvoudiger te gebruiken programma <application
>Kdcop</application
>. Beide leveren dezelfde functionaliteit aan. Het is dus een kwestie van smaak en het doel dat u voor ogen heeft welke u gaat gebruiken.</para>
  <para
>Dit hoofdstuk gaat er vanuit dat u gebruik maakt van het commando <command
>dcop</command
>. Voor toegang tot de  &DCOP;-functies van &k3b; moet het programma draaien. Voer vervolgens een commando als dit in in een console: <screen
><prompt
>#</prompt
> <command
>dcop</command
> <option
>k3b</option
> <option
>K3bInterface</option
> <replaceable
>[function]</replaceable
>
</screen>
</para>

<para
>Naast de generieke &DCOP;-functies die voor alle &kde;-programma's beschikbaar zijn bestaat &k3b;'s DCOP-interface uit de twee hieronder beschreven delen.</para>

<sect1>
<title
>De standaard K3bInterface</title>

<para
>De standaard K3b-DCOP-interface levert functies aan zoals copyCD, formatDVD en methoden voor het aanmaken van nieuwe projecten.</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
>Als resultaat van een van de createXXXProject-methoden krijgt u een DCOP-referentie naar het nieuw-aangemaakte project: <programlisting
>DCOPRef(k3b,K3bProject-0)</programlisting>
Daarnaast kunt u een project aanmaken vanaf de commandoregel: <screen>
<prompt
>#</prompt
> <command
>k3b</command
> <replaceable
>--audiocd</replaceable>
</screen
> en dan een referentie naar dit project ophalen met <screen>
<prompt
>#</prompt
> <command
>dcop</command
> <option
>k3b</option
> <option
>K3bInterface</option
> <replaceable
>currentProject</replaceable>
</screen
> Met deze referentie is het mogelijk om het project te manipuleren met behulp van de <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
>K3b levert de K3bProjectInterface zoals hierboven of de krachtigere K3bDataProjectInterface, welke alleen van toepassing is op dataprojecten (cd en dvd): <programlisting
>void createFolder(QString name)
void createFolder(QString name,QString parent)
void addUrl(KURL url,QString parent)
void addUrls(KURL::List urls,QString parent)
void removeItem(QString path)
void renameItem(QString path,QString newName)
void setVolumeID(QString id)
</programlisting>
</para>

<para
>Hiermee is het mogelijk om een dataproject te vullen met bestanden en mappen vanuit een script. Het volgende scriptvoorbeeld maakt bijvoorbeeld een nieuw dataproject, voegt meerdere mappen toe aan het project en voegt bestanden toe aan de nieuw-aangemaakte mappen: <programlisting
>#!/bin/bash
PROJECT=$(dcop k3b K3bInterface createDataCDProject)
dcop $PROJECT createFolder test
dcop $PROJECT createFolder foo
dcop $PROJECT createFolder bar /foo
dcop $PROJECT addUrl /home/trueg/eenbestand.txt /foo/bar
</programlisting>

</para>

</sect1>
</chapter>
