<chapter id="dcop"> <title >Справочник по &DCOP;-командам</title> <para >&k3b; предоставляет, как и большинство других программ &kde;, интерфейс &DCOP;, позволяющий управлять частью функций программы извне (например, из сценария оболочки).</para> <para >Для использования функций &DCOP;, вы можее использовать консольную программу <command >dcop</command > или более удобное приложение <application >Kdcop</application >.</para> <para >Далее подразумевается, что вы используете <command >dcop</command >. Для начала, запустите &k3b; и введите что-то типа: <screen ><prompt >#</prompt > <command >dcop</command > <option >k3b</option > <option >K3bInterface</option > <replaceable >[function]</replaceable > </screen> </para> <para >Кроме стандартных &DCOP;-функций, &k3b; предоставляет следующие функции, которые разделены на две группы.</para> <sect1> <title >Стандартный интерфейс K3b</title> <para >Стандартный интерфейс K3b предоставляет такую функциональность как copyCD, formatDVD, создание новых проектов.</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 >Методы createXXXProject возвращают ссылку на созданный проект: <programlisting >DCOPRef(k3b,K3bProject-0)</programlisting > Также, проект можно создать из командной строки: <screen> <prompt >#</prompt > <command >k3b</command > <replaceable >--audiocd</replaceable> </screen > и получить ссылку на него так: <screen> <prompt >#</prompt > <command >dcop</command > <option >k3b</option > <option >K3bInterface</option > <replaceable >currentProject</replaceable> </screen > Далее, по полученной ссылке можно манипулировать проектом с помощью <link linkend="k3bprojectinterface" >K3bProjectInterface</link >.</para> </sect1> <sect1 id="k3bprojectinterface"> <title >Интерфейс проекта K3b</title> <programlisting >void addUrls(KURL::List urls) void addUrl(KURL url) void burn() </programlisting> <para >K3b предоставляет интерфейс K3bProjectInterface для всех типов проектов и K3bDataProjectInterface для проекта CD/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 >Используя это можно автоматизировать добавление данных в проект. Следующий сценарий создаёт новый проект с данными, добавляет в него несколько папок, и добавляет файлы в последние: <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>