# Die &k3b; &DCOP;-Schnittstelle

&k3b; ist, wie viele andere &kde;-Anwendungen auch, mit einer &DCOP; Schnittstelle ausgestattet. Mit Hilfe dieser Schnittstelle können Teile der Funktionalität z. B. über ein Shell-Skript gesteuert werden.

Um die &DCOP;-Funktionen zu benutzen, können Sie entweder das Kommandozeilenprogramm `dcop`, oder das etwas komfortablere Programm `Kdcop` verwenden. Beide Programme sind im Funktionsumfang gleich, daher ist eher Ihr Geschmack und die Art Ihrer Aufgabenstellung entscheidend dafür, welcher der beiden Möglichkeiten Sie den Vorzug geben.

In diesem Kapitel nehmen wir an, dass Sie das `dcop` Kommandozeilenprogramm verwenden. Um die &DCOP;-Funktionen nutzen zu können, müssen Sie vorher sicherstellen, dass &k3b; gestartet ist. Dann geben Sie etwas wie das folgende an der Konsole ein:

    % dcop k3b K3bInterface [Funktion]

Neben den allgemeinen &DCOP;-Funktionen die alle &kde;-Programm gemein haben, unterstützt &k3b; hauptsächlich zwei weitere Teile, die unten beschrieben sind.

## Das Standard K3bInterface

Die Standard K3b-DCOP-Schnittstelle stellt Funktionen wie copyCD, formatDVD und weitere Funktionen zum Erzeugen von neuen Projekten zur Verfügung.

    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 Ergebnis solch einer createXXXProject-Methode erhält man eine DCOP-Referenz auf das neu erzeugte Projekt:

    DCOPRef(k3b,K3bProject-0)

Alternativ kann man ein Projekt über die Befehlszeile erzeugen:

    # k3b --audiocd

und dann eine Referenz auf das Projekt erhalten mittels

    # dcop k3b K3bInterface currentProject

Durch Verwenden dieser Referenz ist es möglich, das Projekt über K3bProjectInterface zu verändern.

## K3bProjectInterface

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

K3b bietet das oben gelistete K3bProjectInterface und das leistungsstarke K3bDataProjectInterface, welches nur auf Daten-Projekte anwendbar ist (CD und 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)

Damit ist es möglich, ein Daten-Projekt mit Dateien und Ordnern aus einem Skript heraus zu füllen. Zum Beispiel erzeugt das folgende Skript ein Daten-Projekt, mehrere Ordner und fügt dann Dateien in die neuen Ordner ein:

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