>&amarok; maakt, net als vele andere programma's, gebruik van sneltoetsen. Hier onder ziet u een lijst met sneltoetsen en de bijhorende acties. De globale sneltoetsen kunnen worden ingesteld door met de rechter muisknop op het afspelervenster te klikken en <guimenuitem
>Globale sneltoetsen instellen...</guimenuitem
> te selecteren. De sneltoetsen van &amarok; kunt u instellen door met de rechter muisknop op het afspelervenster te klikken en <guimenuitem
>Sneltoetsen instellen...</guimenuitem
> te selecteren.</para>
<tip
><para
>U kunt uw multimediatoetsen van uw toetsenbord gebruiken om &amarok; te bedienen.</para
></tip>
<para
>De globale sneltoetsen zijn:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Toetsencombinatie</entry>
<entry
>Actie</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>X</keycap
></keycombo
></entry>
<entry
>Afspelen</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>C</keycap
></keycombo
></entry>
<entry
>Pauze</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>V</keycap
></keycombo
></entry>
<entry
>Stoppen</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>B</keycap
></keycombo
></entry>
<entry
>Volgende track</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Vorige track</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>KP_Add</keycap
></keycombo
></entry>
<entry
>Volume verhogen</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>KP_Subtract</keycap
></keycombo
></entry>
<entry
>Volume verlagen</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Shift</keycap
><keycap
>KP_Add</keycap
></keycombo
></entry>
<entry
>Vooruit zoeken</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Shift</keycap
><keycap
>KP_Subtract</keycap
></keycombo
></entry>
<entry
>Achteruit zoeken</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>A</keycap
></keycombo
></entry>
<entry
>Medium toevoegen</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>P</keycap
></keycombo
></entry>
<entry
>Afspeellijst aan/uit</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>O</keycap
></keycombo
></entry>
<entry
>On Screen Display tonen</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>M</keycap
></keycombo
></entry>
<entry
>Volume dempen</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>De &amarok;-sneltoetsen zijn:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Toetsencombinatie</entry>
<entry
>Actie</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>C</keycap
></keycombo
></entry>
<entry
>Kopiëren</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>KP_Enter</keycap
></keycombo
></entry>
<entry
>Ga naar huidige</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>D</keycap
></keycombo
></entry>
<entry
>Geselecteerde tracks in een wachtrij plaatsen</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Q</keycap
></keycombo
></entry>
<entry
>Afsluiten</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Shift</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Opnieuw</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>S</keycap
></keycombo
></entry>
<entry
>Afspeellijst opslaan</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>A</keycap
></keycombo
></entry>
<entry
>Alles selecteren</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>M</keycap
></keycombo
></entry>
<entry
>Menubalk tonen</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>H</keycap
></keycombo
></entry>
<entry
>Schudden (tracks in de afspeellijst door elkaar husselen)</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Ongedaan maken</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>De sneltoetsen voor de afspeellijstbrowser zijn:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Toetsencombinatie</entry>
<entry
>Actie</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycap
>Spatie</keycap
></entry>
<entry
>Afspeellijst laden</entry>
</row>
<row>
<entry
><keycap
>F2</keycap
></entry>
<entry
>Afspeellijst hernoemen</entry>
</row>
<row>
<entry
><keycap
>Backspace</keycap
></entry>
<entry
>Afspeellijst verwijderen</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
<sect1 id="the-dcop-interface">
<title
>De DCOP-interface</title>
<para
>De DCOP-interface van Amarok biedt u een eenvoudige manier om Amarok met behulp van uw eigen aangepaste scripts te besturen.</para>
<para
>De DCOP-interface van Amarok heeft vele algemene aanroepen die ook in andere KDE-programma's gevonden kunnen worden. Deze sectie is opgedeeld in zes tabellen en bedoeld om de DCOP-aanroepen van de collectie, contextbrowser, speler, afspeellijst, afspeellijstbrowser en scripts te beschrijven. Een voorbeeld van de DCOP-aanroep voor <quote
>pauzeren</quote
> ziet er als volgt uit:</para>
<para
><prompt
>%</prompt
>dcop amarok player pause</para>
<sect2 id="dcop-collection">
<title
>dcop amarok collection</title>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>DCOP-aanroep</entry>
<entry
>Actie</entry>
</row>
</thead>
<tbody>
<row>
<entry
>int totalAlbums()</entry>
<entry
>Geeft het totaal aantal albums in de collectie terug.</entry>
</row>
<row>
<entry
>int totalArtists()</entry>
<entry
>Geeft het totaal aantal artiesten in de collectie terug.</entry>
</row>
<row>
<entry
>int totalCompilations()</entry>
<entry
>Geeft het totaal aantal verzamelalbums in de collectie terug.</entry>
</row>
<row>
<entry
>int totalGenres()</entry>
<entry
>Geeft het totaal aantal genres in de collectie terug.</entry>
</row>
<row>
<entry
>int totalTracks()</entry>
<entry
>Geeft het totaal aantal tracks in de collectie terug.</entry>
</row>
<row>
<entry
>QString query( QString sql)</entry>
<entry
>Voert een query op de database uit via SQL.</entry>
</row>
<row>
<entry
>QStringList similarArtists( int artists )</entry>
<entry
>Geeft vergelijkbare artiesten terug voor de huidige tracks, beperkt tot int artists.</entry>
>Geeft de waarde van een AmarokConfig configuratie-item terug van de opgegeven toets.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2>
</sect1>
<sect1 id="cmd-line-options">
<title
>Commandoprompt-opties</title>
<para
>Naast de standaard-commando's van Qt en KDE heeft Amarok ook zijn eigen opties.</para>
<para
>Opties van Qt en KDE:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Optie</entry>
<entry
>Actie</entry>
</row>
</thead>
<tbody>
<row>
<entry
>--help</entry>
<entry
>Toont een samenvatting van opties die vanaf de prompt kunnen worden meegegeven aan het commando.</entry>
</row>
<row>
<entry
>--help-qt</entry>
<entry
>Toont een lijst met Qt-specifieke opties.</entry>
</row>
<row>
<entry
>--help-kde</entry>
<entry
>Toont een lijst met KDE-specifieke opties.</entry>
</row>
<row>
<entry
>--help-all</entry>
<entry
>Toont een lijst met alle opties.</entry>
</row>
<row>
<entry
>--author</entry>
<entry
>Toont informatie over de auteur.</entry>
</row>
<row>
<entry
>-v, --version</entry>
<entry
>Toont versie-informatie.</entry>
</row>
<row>
<entry
>--license</entry>
<entry
>Toont informatie over de licentie.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>De opties van Amarok:</para>
<note
><para
>De &amarok;-opties kunnen ook worden gebruikt als &amarok; al draait.</para
></note>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Optie</entry>
<entry
>Actie</entry>
</row>
</thead>
<tbody>
<row>
<entry
>-r, --previous</entry>
<entry
>Gaat naar de vorige track in de afspeellijst.</entry>
</row>
<row>
<entry
>-p, --play</entry>
<entry
>Start het afspelen van de huidige afspeellijst.</entry>
</row>
<row>
<entry
>-s, --stop</entry>
<entry
>Stopt het afspelen.</entry>
</row>
<row>
<entry
>--pause</entry>
<entry
>Pauzeert het afspelen.</entry>
</row>
<row>
<entry
>-f, --next</entry>
<entry
>Gaat naar de volgende track in de afspeellijst.</entry>
</row>
<row>
<entry
>-a, --append</entry>
<entry
>Voegt bestanden/URL-adressen toe aan de afspeellijst.</entry>
</row>
<row>
<entry
>-e, --enqueue</entry>
<entry
>Zie append, beschikbaar voor neerwaartse compatibiliteit.</entry>
</row>
<row>
<entry
>--queue</entry>
<entry
>Plaatst bestanden/URL-adressen in de wachtrij achter de huidige afgespeelde track.</entry>
</row>
<row>
<entry
>-m, --toggle-playlist-window</entry>
<entry
>Opent/sluit het afspeellijstvenster.</entry>
</row>
<row>
<entry
>--wizard</entry>
<entry
>Start de Configuratie-assistent.</entry>
</row>
<row>
<entry
>--engine "naam"</entry>
<entry
>Start &amarok; met de engine "naam".</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
<sect1 id="script-writing">
<title
>Scripts schrijven</title>
<para
>Met scripting kunt u &amarok; op eenvoudige wijze uitbreiden zonder dat u de broncode van het programma zelf hoeft te wijzigen. Scripts kunt u vergelijken met plugins, met als verschil dat er geen gebruik wordt gemaakt van een 'dedicated plugin API', maar van &amarok;'s DCOP-interface voor de communicatie. Dit maakt het mogelijk om scripts te schrijven in vrijwel elke programmeertaal, zoals Ruby, Python of PHP. U kunt niet alleen scripts schrijven in klassieke scripttalen, maar ook in gecompileerde talen zoals C++ of C. Aanvullend kan &amarok; de scripts waarschuwen bij speciale gebeurtenissen en ze hierop laten reageren. Dit waarschuwingssysteem zal later in deze sectie worden uitgelegd.</para>
<sect2 id="script-bindings">
<title
>Bindingen</title>
<para
>U kunt eenvoudige scripts schrijven die geen interactie van de gebruiker nodig hebben, en scripts schrijven met comfortabele GUI's die zelf als een volwaardig programma reageren. Voor het programmeren van een GUI kunt u gebruik maken van één van de vele bindingen die KDE levert, zoals RubyQt, een Qt-bibliotheekbinding voor Ruby. Een nadeel van bindingen is dat niet iedere gebruiker ze allemaal hebben geïnstalleerd. Als u dus een binding wilt gebruiken, kies er dan een die vrij goed verspreid is, zoals RubyQt of PyQt.</para>
<para
>Om enige informatie te ontvangen als een script niet kan draaien vanwege een ontbrekende afhankelijkheid, laat uw script controleren of de module die u wilt insluiten echt bestaat. Als de afhankelijkheid ontbreekt, dan moet u de foutmelding opvangen en met behulp van het commandoregelprogramma "kdialog" in een informatiedialoog laten weergeven. De gebruiker kan dan zien waarom het script niet wil draaien.</para>
<para
>Dit voorbeeld laat zien hoe u een ontbrekende afhankelijkheid in Ruby kunt opvangen:</para>
> van &amarok; vindt u enkele scriptsjablonen voor diverse talen. U kunt deze scripts gebruiken als basis voor uw eigen scripts en ze uitbreiden met de functionaliteit die u nodig hebt. U zult merken dat het schrijven van scripts vrij eenvoudig is. Bijvoorbeeld als u een beetje weet van programmeren in Python, dan zal het schrijven van uw eigen script niet veel moeite kosten.</para>
</sect2>
<sect2 id="script-controlling-amarok">
<title
>&amarok; besturen met DCOP</title>
<para
>Scripts kunnen Amarok besturen door enkel van zijn DCOP-functies aan te roepen. De eenvoudigste manier om een DCOP-functie aan te roepen is met behulp van het commandoregelprogramma "dcop". Dit programma is onderdeel van elke KDE-distributie.</para>
<para
>Hier is een voorbeeld voor het verhogen van het hoofdvolume:</para>
<programlisting
>dcop amarok player volumeUp</programlisting>
<para
>Met de meeste scripttalen kunt u externe programma's uitvoeren met een functie als exec(). Op deze manier kan het programma "dcop" eenvoudig worden aangeroepen. Hier is een klein voorbeeld in Python:</para>
<programlisting
>import os
os.system("dcop amarok player volumeDown")
</programlisting>
</sect2>
<sect2 id="script-notifications">
<title
>Waarschuwingen</title>
<para
>&amarok; stuurt waarschuwingen naar alle draaiende scripts door tekenreeksen naar hun stdin-kanaal te schrijven. Het script moet daarom constant stdin volgen, en reageren op elke mogelijke gebeurtenis. Scripts kunnen er ook voor kiezen om gebeurtenissen die ze niet kunnen gebruiken te negeren.</para>
<para
>De volgende waarschuwingen worden door &amarok; verzonden:</para>
<programlisting
><cmdsynopsis
><command
>configure</command
></cmdsynopsis>
vertelt het script om zijn configuratiedialoog te tonen. Het script moet
de configuratie-opties zelf opslaan en laden. Als een script wordt gestart
zet Amarok de werkmap ervan op de map waarin alle gegevens moeten
worden opgeslagen.
</programlisting>
<programlisting
><cmdsynopsis
><command
>engineStateChange:</command
><arg
>empty|idle|paused|playing</arg
></cmdsynopsis>
signaleert een wijziging in de status van de engine.
</programlisting>
<programlisting
><cmdsynopsis
><command
>trackChange</command
></cmdsynopsis>
signaleert de start van een nieuwe track. Het script kan dan de DCOP-functies
gebruiken om verdere informatie over de track op te vragen, zoals metadata
en de lengte.
</programlisting>
<programlisting
><cmdsynopsis
><command
>volumeChange</command
><arg
>newVolume</arg
></cmdsynopsis>
signaleert een wijziging in het niveau van het hoofdvolume. Het volume is een heel getal in het bereik
van 0-100.
</programlisting>
<programlisting
><cmdsynopsis
><command
>customMenuClicked:</command
><arg
>submenu itemTitle paths</arg
></cmdsynopsis>
geeft het pad naar de geselecteerde bestanden in de afspeellijst als de
aangepaste optie in het contextmenu van de afspeellijst wordt aangeklikt. Het submenu
en item-titel worden ook gegeven voor identificatiedoeleinden in het geval een script naar
meerdere notificaties luistert.
Om een aangepaste optie toe te voegen aan het contextmenu gebruikt u de DCOP-aanroep
'dcop amarok script addCustomMenuItem( submenu itemTitle ). Om een optie uit het contextmenu
>Voordat &amarok; afsluit, of als de gebruiker een script stopt met de Scriptbeheerder, stuurt &amarok; het signaal SIGTERM naar het script. Dit signaal kan worden opgevangen om wat schoonmaakwerk uit te voeren, zoals het opslaan van gegevens of configuratie-instellingen.</para>
>&amarok;'s Scriptbeheerder kan scriptpakketten installeren die de gebruiker heeft gedownload van een webserver. Pakketten zijn gewoon normale tar-archieven (.tar), optioneel gecomprimeerd met bzip2 (.bz2). Wij adviseren het gebruik van bestandsnamen als myscript.amarokscript.tar.bz2, zodat de gebruiker het pakket meteen kan identificeren als een amarok-script.</para>
>De inhoud van de tar-archieven moet als volgt zijn georganiseerd:</para>
<programlisting
>myscript/
README
myscript.py (executable)
somemodule.py
foo.data
...
</programlisting>
</sect2>
<sect2 id="script-permissions">
<title
>Bestandstoegangsrechten</title>
<para
>Het hoofdscript moet de uitvoerrechten ingesteld hebben (+x), terwijl aanvullende modules die het script laat niet uitvoerbaar moeten zijn. Om de bestandstoegangsrechten in het tar-archieven te behouden gebruikt u tar met de vlag '-p':</para>