<chapter id="dcop">
  <title
>&DCOP;-grænsefladen i &k3b;</title>
  <para
>&k3b; tilbyder, som mange andre &kde;-programmer, en &DCOP;-grænseflade som gør det muligt at styre den del af dets funktioner fra f.eks. et skalscript.</para>
  <para
>For at bruge &DCOP;-funktionerne, kan du enten bruge kommandolinjeprogrammet <command
>dcop</command
>, eller det bekvemmere program <application
>Kdcop</application
>. Begge sørger for samme funktioner, så det er mest et spørgsmål om smag og brugsområde hvad der vælges.</para>
  <para
>Dette kapitel antager at du bruger kommandolinjeprogrammet <command
>dcop</command
>. For at få adgang til &k3b;s &DCOP;-funktioner, skal du sørge for at &k3b; er startet og skriv derefter noget i retning  af dette i en terminal: <screen
><prompt
>#</prompt
> <command
>dcop</command
> <option
>k3b</option
> <option
>K3bInterface</option
> <replaceable
>[funktion]</replaceable
>
</screen>
</para>

<para
>Foruden de generelle &DCOP;-funktioner som er tilgængelige i alle &kde;-programmer, består DCOP-grænsefladen i &k3b; hovedsageligt af to dele som beskrives nedenfor.</para>

<sect1>
<title
>Standard K3bInterface</title>

<para
>Standard K3b DCOP-grænsefladen sørger for funktioner såsom copyCD, formatDVD og metoder til at oprette nye projekter.</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 fra en af metoderne createXXXProject, får man en DCOP-reference til det nyoprettede projekt: <programlisting
>DCOPRef(k3b,K3bProject-0)</programlisting
> Som et alternativ kan du oprette et projekt fra kommandolinjen: <screen>
<prompt
>#</prompt
> <command
>k3b</command
> <replaceable
>--audiocd</replaceable>
</screen
> og derefter hente en reference til projektet med <screen>
<prompt
>#</prompt
> <command
>dcop</command
> <option
>k3b</option
> <option
>K3bInterface</option
> <replaceable
>currentProject</replaceable>
</screen
> Ved at bruge referencen er det muligt at manipulere 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 tilbyder K3bProjectInterface som listes ovenfor eller det kraftfuldere K3bDataProjectInterface, som kun gælder dataprojekter (cd og 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
>Ved at bruge det er det muligt at fylde et dataprojekt med filer og mapper fra et script. Følgende script laver for eksempel et nyt dataprojekt,  tilføjer flere mapper til projektet, og tilføjer filer i de nyoprettede mapper. <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>
