<chapter id="dcop">
  <title
>&DCOP;-gränssnittet i &k3b;</title>
  <para
>&k3b; erbjuder, som många andra &kde;-program, ett &DCOP;-gränssnitt som gör det möjligt att styra en del av dess funktioner t.ex. från ett skalskript.</para>
  <para
>För att använda &DCOP;-funktionerna, kan du antingen använda kommandoradsprogrammet <command
>dcop</command
>, eller det bekvämare programmet <application
>Kdcop</application
>. Båda tillhandahåller samma funktioner, så det är mest en fråga om smak och användningsområde vilket som väljes.</para>
  <para
>Det här kapitlet antar att du använder kommandoradsprogrammet <command
>dcop</command
>. För att komma åt &k3b;s &DCOP;-funktioner, försäkra dig om att &k3b; har startats och skriv därefter in någonting som liknar detta i en terminal: <screen
><prompt
>#</prompt
> <command
>dcop</command
> <option
>k3b</option
> <option
>K3bInterface</option
> <replaceable
>[funktion]</replaceable
>
</screen>
</para>

<para
>Förutom de allmänna &DCOP;-funktionerna som är tillgängliga i alla &kde;-program, består DCOP-gränssnittet i &k3b; i huvudsak av två delar som beskrivs nedan.</para>

<sect1>
<title
>Det förvalda K3bInterface</title>

<para
>Det förvalda K3b DCOP-gränssnittet tillhandahåller funktioner som copyCD, formatDVD och metoder för att skapa nya projekt.</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
>Som resultat från någon av metoderna createXXXProject, får man en DCOP-referens till det nyskapade projektet: <programlisting
>DCOPRef(k3b,K3bProject-0)</programlisting
> Som ett alternativ kan du skapa ett projekt från kommandoraden: <screen>
<prompt
>#</prompt
> <command
>k3b</command
> <replaceable
>--audiocd</replaceable>
</screen
> och därefter hämta en referens till projektet med <screen>
<prompt
>#</prompt
> <command
>dcop</command
> <option
>k3b</option
> <option
>K3bInterface</option
> <replaceable
>currentProject</replaceable>
</screen
> Genom att använda referensen är det möjligt att manipulera projektet med <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 erbjuder K3bProjectInterface som listas ovan eller det kraftfullare K3bDataProjectInterface, som bara gäller dataprojekt (cd och 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
>Genom att använda det är det möjligt att fylla ett dataprojekt med filer och kataloger från ett skript. Följande skript skapar till exempel ett nytt dataprojekt, lägger till flera kataloger i projektet, och lägger till filer i de nyskapade katalogerna. <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/somefile.txt /foo/bar
</programlisting>

</para>

</sect1>
</chapter>
