>&amarok; kasutab kiirklahve nagu iga muu korralik rakendus. Allpool on ära toodud kiirklahvid ja nendega käivitatavad toimingud. Globaalseid kiirklahve saab seadistada, kui klõpsata hiire parema nupuga mängija aknas ja valida <guimenuitem
> &amarok;i enda kiirklahve saab seadistada, kui klõpsata hiire parema nupuga mängija aknas ja valida <guimenuitem
>Kiirklahvide seadistamine...</guimenuitem
></para>
<tip
><para
>Oma multimeediaklahvide kasutamiseks &amarok;i kiirklahvidena tuleb määrata klaviatuur &amarok;i juhtimiskeskuses.</para
></tip>
<para
>Globaalsed kiirklahvid:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Klahvikombinatsioon</entry>
<entry
>Toiming</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>X</keycap
></keycombo
></entry>
<entry
>Esitus</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>C</keycap
></keycombo
></entry>
<entry
>Paus</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>V</keycap
></keycombo
></entry>
<entry
>Stopp</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>B</keycap
></keycombo
></entry>
<entry
>Järgmine pala</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Eelmine pala</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>KP_Add</keycap
></keycombo
></entry>
<entry
>Heli juurde</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>KP_Subtract</keycap
></keycombo
></entry>
<entry
>Heli maha</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Shift</keycap
><keycap
>KP_Add</keycap
></keycombo
></entry>
<entry
>Palas edasiliikumine</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Shift</keycap
><keycap
>KP_Subtract</keycap
></keycombo
></entry>
<entry
>Palas tagasiliikumine</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>A</keycap
></keycombo
></entry>
<entry
>Lisa andmekandja</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>P</keycap
></keycombo
></entry>
<entry
>Esitusnimekirja lülitamine</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>O</keycap
></keycombo
></entry>
<entry
>OSD näitamine</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>M</keycap
></keycombo
></entry>
<entry
>Heli välja</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>&amarok;i kiirklahvid:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Klahvikombinatsioon</entry>
<entry
>Toiming</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>C</keycap
></keycombo
></entry>
<entry
>Kopeeri</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>KP_Enter</keycap
></keycombo
></entry>
<entry
>Mine praegusele</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>D</keycap
></keycombo
></entry>
<entry
>Valitud palad järjekorda</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Q</keycap
></keycombo
></entry>
<entry
>Välju</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Shift</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Tee uuesti</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>S</keycap
></keycombo
></entry>
<entry
>Salvesta esitusnimekiri</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>A</keycap
></keycombo
></entry>
<entry
>Vali kõik</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>M</keycap
></keycombo
></entry>
<entry
>Menüüriba näitamine</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>H</keycap
></keycombo
></entry>
<entry
>Segatud</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Võta tagasi</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>Esitusnimekirja sirvija kiirklahvid:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Klahvikombinatsioon</entry>
<entry
>Toiming</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycap
>Tühikuklahv</keycap
></entry>
<entry
>Esitusnimekirja laadimine</entry>
</row>
<row>
<entry
><keycap
>F2</keycap
></entry>
<entry
>Esitusnimekirja ümbernimetamine</entry>
</row>
<row>
<entry
><keycap
>Backspace</keycap
></entry>
<entry
>Esitusnimekirja eemaldamine</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
<sect1 id="the-dcop-interface">
<title
>DCOP-liides</title>
<para
>Amaroki DCOP-liides võimaldab imelihtsalt juhtida Amaroki tööd enda loodud skriptidega.</para>
<para
>Amaroki DCOP-liides pakub mitmeid üldisi funktsioone, mida kasutavad ka muud KDE rakendused. Käesolevas osas kirjeldame kuues tabelis nii muusikakogu, kontekstisirvija, mängija, esitusnimekirja, esitusnimekirja sirvija kui ka skriptide DCOP-funktsioone. Näiteks DCOP-funktsioon <quote
>Seab failid/URL-id järjekorda parajasti mängitava pala järele.</entry>
</row>
<row>
<entry
>-m, --toggle-playlist-window</entry>
<entry
>Esitusnimekirja akna lülitamine.</entry>
</row>
<row>
<entry
>--wizard</entry>
<entry
>Käivitab esimese korra nõustaja.</entry>
</row>
<row>
<entry
>--engine "nimi"</entry>
<entry
>Käivitab &amarok;i mootoriga "nimi".</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
<sect1 id="script-writing">
<title
>Skriptide kirjutamine</title>
<para
>Skriptid võimaldavad &amarok;ki väga lihtsalt laiendada ilma selle põhikoodi muutmata. Skriptid sarnanevad selles mõttes pluginatele, kuid erinevalt spetsiaalsest pluginate API-st kasutavad nad kommunikatsiooniks &amarok;i DCOP-liidest. Nii on skripte võimalik kirja panna peaaegu mis tahes programmeerimiskeeles (nt. Ruby, Python, PHP). Skripte saab luua mitte ainult klassikalistes skriptikeeltes, vaid ka keerukamates keeltes, näiteks C++ või puhas C. Lisaks võib &amarok; edastada skriptidele teatud sündmuste korral märguande, mis paneb neid midagi tegema. Seda selgitame käesolevas osas edaspidi.</para>
<sect2 id="script-bindings">
<title
>Seosed</title>
<para
>Võimalik on kirjutada nii lihtsaid skripte, mis ei vaja kasutaja sekkumist, kui ka graafilise kasutajaliidesega skripte, mis tegutsevad justkui omaette väikesed rakendused. Viimaste korral saab kasutada mõnda arvukatest seostes, mida KDE pakub, näiteks Qt teegi seost Ruby jaoks RubyQt. Tuleb siiski märkida, et mitte kõigil kasutajatel ei pruugi kõik seosed paigaldatud olla. Kui otsustad mõnda seost kasutada, ürita pruukida mõnda levinumat (nt. RubyQt või PyQt).</para>
<para
>Tagasiside saamiseks, kui skripti töö peaks ebaõnnestuma puuduva sõltuvuse tõttu, lisa palun skripti kontroll, kas moodul, mida soovid kasutada, on ka tegelikult olemas. Kui seda pole, peaks skript veast aru saama ning näitama infodialoogi (käsureatööriista "kdialog" abil), et kasutaja saaks teada, miks skript ei töötanud.</para>
<para
>Üks näide, kuidas tuvastada puuduv sõltuvus Ruby korral:</para>
>&amarok; pakub mitmes keeles skriptimalle kataloogis <filename class="directory"
>scripts/templates/</filename
>. Neid saab kasutada alusena enda skripti loomisel. Küllap märkad, et skriptide loomine on üsna lihtne: kui sa tunned näiteks vähegi programmeerimist Pythoni keeles, ei ole vastava skripti loomine kuigi pikk tegevus.</para>
</sect2>
<sect2 id="script-controlling-amarok">
<title
>&amarok;i juhtimine DCOP-i abil</title>
<para
>Skriptidega saab Amaroki tegevust juhtida, kutsudes välja selle DCOP-funktsioone. Lihtsaim viis DCOP-funktsiooni väljakutsumiseks on kasutada käsureautiliiti "dcop", mis kuulub alati KDE koosseisu.</para>
>Enamik skriptikeeli võimaldab käivitada väliseid programme (näiteks funktsiooniga exec()). Nii saab utiliiti "dcop" üsna lihtsalt välja kutsuda. Toome ühe lihtsa näite Pythoni keeles:</para>
<programlisting
>import os
os.system("dcop amarok player volumeDown")
</programlisting>
</sect2>
<sect2 id="script-notifications">
<title
>Märguanded</title>
<para
>&amarok; võib saata kõigile töötavatele skriptidele märguandeid, kirjutades vastava stringi nende standardsisendi kanalisse. Seepärast peab skript pidevalt jälgima oma standardsisendit ja võimalike märguannete puhul vajalikult tegutsema. Skriptid võivad küll ka mitte tegutseda teatud sündmuste puhul, kui need neid ei puuduta.</para>
<para
>&amarok; saadab järgmisi märguandeid:</para>
<programlisting
><cmdsynopsis
><command
>configure</command
></cmdsynopsis>
Annab skriptile korralduse näidata oma seadistustedialoogi.
Skript peab seadistusvalikute salvestamise ja laadimisega ise toime tulema.
Skripti käivitamisel määrab Amarok selle töökataloogi kataloogiks,
kuhu salvestada kõik andmed.
</programlisting>
<programlisting
><cmdsynopsis
><command
>engineStateChange:</command
><arg
>empty|idle|paused|playing</arg
></cmdsynopsis>
Annab märku mootori oleku muutumisest.
</programlisting>
<programlisting
><cmdsynopsis
><command
>trackChange</command
></cmdsynopsis>
Annab märku uue pala algusest. Skript võib seejärel kasutada DCOP-funktsioone
pala kohta täiendava info hankimiseks (nt. metaandmed, pikkus).
</programlisting>
<programlisting
><cmdsynopsis
><command
>volumeChange</command
><arg
>newVolume</arg
></cmdsynopsis>
Annab märku peamise helitugevuse muutumisest.
Helitugevus on täisarv vahemikus 0 kuni 100.
</programlisting>
<programlisting
><cmdsynopsis
><command
>customMenuClicked:</command
><arg
>submenu itemTitle paths</arg
></cmdsynopsis>
Tagastab esitusnimekirja valitud failide asukohad,
kui klõpsatakse kohandatud esitusnimekirja kontekstimenüü mõnda kirjet.
Tagastatakse ka alammenüü ja elemendi nimi, mida läheb vaja juhul,
kui skript jälgib mitmeid märguandeid.
Elemendi lisamiseks kontekstimenüüsse kasuta DCOP-väljakutset
>Enne seda, kui &amarok; töö lõpetab või kui kasutaja peatab skripti skriptihalduris, saadab &amarok; skriptile signaali SIGTERM. Selle signaali saamisel peab skript ette võtma vajalikud toimingud, näiteks salvestama andmed või seadistused.</para>
>&amarok;i skriptihaldur oskab paigaldada skriptipakke, mida kasutaja on veebist alla laadinud. Pakid on pakitud tavaliselt (.tar), lisaks on võimalik tihendada neid ka bzip2-ga (.bz2). Me soovitame tungivalt kasutada failinime kujul minuskript.amarokscript.tar.bz2, et kasutajad saaksid kohe aru, et tegemist on just Amaroki skriptiga.</para>
>Põhiskriptil peab olema käivitamise õigus (+x), teised moodulid aga, mida skript laeb, ei tohi olla käivitamisõigusega. Failiõiguste säilitamiseks pakis tuleks see pakkida võtmega -p:</para>