<chapter id="dcop">
<title>The &k3b; &DCOP; Interface</title>
<para>&k3b; features, like many other &tde; applications as well, a
&DCOP; interface which makes it possible to control a part of it's
functionality from ⪚ a shellscript.</para>
<para>To use these &DCOP; functions you can either use the
<command>dcop</command> commandline program or the more convenient
<application>Kdcop</application> application. Both provide the same
functionality so it's mostly a matter of taste and context of usage when
deciding which way to choose.</para>
<para>This chapter assumes that you're using the <command>dcop</command>
commandline program. To access &k3b;'s &DCOP; functions, make sure that
&k3b; is started and then enter something like this at a console:
<screen>
<prompt>#</prompt> <command>dcop</command> <option>k3b</option> <option>K3bInterface</option> <replaceable>[function]</replaceable>
</screen>
</para>
<para>Besides the generic &DCOP; functions available to all &tde;
applications, &k3b;'s DCOP interface mainly consists of two parts as described below.</para>
<sect1>
<title>The default K3bInterface</title>
<para>The default K3b DCOP interface provides functionality like copyCD, formatDVD, and methods for creating new projects.</para>
<programlisting>
DCOPRef createDataCDProject()
DCOPRef createAudioCDProject()
DCOPRef createMixedCDProject()
DCOPRef createVideoCDProject()
DCOPRef createMovixCDProject()
DCOPRef createDataDVDProject()
DCOPRef createVideoDVDProject()
DCOPRef createMovixDVDProject()
DCOPRef openProject(KURL url)
QValueList<DCOPRef> projects()
DCOPRef currentProject()
void copyCd()
void copyDvd()
void eraseCdrw()
void formatDvd()
void burnCdImage(KURL url)
void burnDvdImage(KURL url)
</programlisting>
<para>As result from one of the createXXXProject methods one gets a DCOP reference to the newly created project:
<programlisting>DCOPRef(k3b,K3bProject-0)</programlisting>
Alternatively you may create a project using the command line:
<screen>
<prompt>#</prompt> <command>k3b</command> <replaceable>--audiocd</replaceable>
</screen>
and then retrieve a reference to this project with
<screen>
<prompt>#</prompt> <command>dcop</command> <option>k3b</option> <option>K3bInterface</option> <replaceable>currentProject</replaceable>
</screen>
Using this reference it is possible to manipulate the project using the <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 offers the K3bProjectInterface as listed above or the more powerful K3bDataProjectInterface which only applies to data projects (CD and DVD):
<programlisting>
void createFolder(TQString name)
void createFolder(TQString name,TQString parent)
void addUrl(KURL url,TQString parent)
void addUrls(KURL::List urls,TQString parent)
void removeItem(TQString path)
void renameItem(TQString path,TQString newName)
void setVolumeID(TQString id)
</programlisting>
</para>
<para>Using this it is possible to fill a data project with files and folders from a script.
The following script for example creates a new data project, adds several folders to the project, and adds files to the newly created folders:
<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>