# De &DCOP;-interface van &k3b;

&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.

Om deze &DCOP;-functies te gebruiken kunt u het commando `dcop` gebruiken, of het eenvoudiger te gebruiken programma Kdcop. Beide leveren dezelfde functionaliteit aan. Het is dus een kwestie van smaak en het doel dat u voor ogen heeft welke u gaat gebruiken.

Dit hoofdstuk gaat er vanuit dat u gebruik maakt van het commando `dcop`. Voor toegang tot de &DCOP;-functies van &k3b; moet het programma draaien. Voer vervolgens een commando als dit in in een console:

    # dcop k3b K3bInterface [function]

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

## De standaard K3bInterface

De standaard K3b-DCOP-interface levert functies aan zoals copyCD, formatDVD en methoden voor het aanmaken van nieuwe projecten.

    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)

Als resultaat van een van de createXXXProject-methoden krijgt u een DCOP-referentie naar het nieuw-aangemaakte project:

    DCOPRef(k3b,K3bProject-0)

Daarnaast kunt u een project aanmaken vanaf de commandoregel:

    # k3b --audiocd

en dan een referentie naar dit project ophalen met

    # dcop k3b K3bInterface currentProject

Met deze referentie is het mogelijk om het project te manipuleren met behulp van de K3bProjectInterface.

## K3bProjectInterface

    void addUrls(KURL::List urls)
    void addUrl(KURL url)
    void burn()

K3b levert de K3bProjectInterface zoals hierboven of de krachtigere K3bDataProjectInterface, welke alleen van toepassing is op dataprojecten (cd en dvd):

    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)

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:

    #!/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