<chapter id="dcop">
  <title
>L'interfaccia &DCOP; di &k3b;</title>
  <para
>&k3b; caratterizza, come pure molte altre applicazioni di &kde;, una interfaccia &DCOP; che permette di controllare parte delle proprie funzionalità per esempio con uno script di shell.</para>
  <para
>Per usare queste funzioni di &DCOP; si può o utilizzare il programma <command
>dcop</command
> dalla riga di comando, oppure più convenientemente l'applicazione <application
>Kdcop</application
>. Entrambi hanno le medesime funzionalità, perciò è un fatto di gusto o di contesto decidere quale scegliere.</para>
  <para
>Questo capitolo suppone che si stia utilizzando il programma <command
>dcop</command
> dalla riga di comando. Per accedere alle funzionalità &DCOP; di &k3b;, assicurasi che &k3b; sia avviato e poi inserire un comando tipo questo in una console: <screen
><prompt
>#</prompt
> <command
>dcop</command
> <option
>k3b</option
> <option
>K3bInterface</option
> <replaceable
>[funzione]</replaceable
>
</screen>
</para>

<para
>Oltre alle funzioni generiche di &DCOP; disponibili per tutti i programmi di &kde;, l'interfaccia DCOP di &k3b; consiste di due parti descritte sotto.</para>

<sect1>
<title
>L'interfaccia di K3b predefinita</title>

<para
>L'interfaccia DCOP di K3b predefinita fornisce funzionalità tipo copia CD, formatta CD, e metodi per creare nuovi progetti.</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
>Come risultato da uno dei metodi di createXXXProject si ottiene un riferimento DCOP al nuovo progetto creato: <programlisting
>DCOPRef(k3b,K3bProject-0)</programlisting
> In alternativa si può creare un progetto utilizzando la linea di comando: <screen>
<prompt
>#</prompt
> <command
>k3b</command
> <replaceable
>--audiocd</replaceable>
</screen
> e poi reperire un riferimento al progetto con <screen>
<prompt
>#</prompt
> <command
>dcop</command
> <option
>k3b</option
> <option
>K3bInterface</option
> <replaceable
>currentProject</replaceable>
</screen
> Utilizzando questo riferimento, è possibile manipolare il progetto attraverso <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 offre la K3bProjectInterface come elencata sopra oppure la più potente K3bDataProjectInterface per i progetti dati (CD e 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
>Usando questo è possibile riempire un progetto con file e cartelle da uno script. Lo script che segue, per esempio, crea un nuovo progetto, aggiunge numerose cartelle al progetto e file alle nuove cartelle. <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>
