<chapter id="advanced-features">
<title
>Avancerade funktioner i Amarok</title>


<sect1 id="keybd-shortcuts">
<title
>Snabbtangenter</title>

<para
>&amarok; använder snabbtangenter som de flesta andra program. Nedan finns en lista över dessa snabbtangenter och deras olika funktioner. De globala snabbtangenterna kan ställas in genom att högerklicka i spelarfönstret och välja <guimenuitem
>Anpassa globala genvägar...</guimenuitem
> Snabbtangenterna i &amarok; kan anpassas genom att högerklicka i spelarfönstret och välja <guimenuitem
>Anpassa genvägar...</guimenuitem
></para>

<tip
><para
>Du kan tilldela multimediatangenter att fungera som snabbtangenter i &amarok;, för att låta tangentbordet styra &amarok;.</para
></tip>

<para
>De globala genvägarna är:</para>

<informaltable>
<tgroup cols="2">
<thead>

<row>
<entry
>Tangentkombination</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>X</keycap
></keycombo
></entry>
<entry
>Spela</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
>Stanna</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>B</keycap
></keycombo
></entry>
<entry
>Nästa spår</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Föregående spår</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Numeriskt tangentbord +</keycap
></keycombo
></entry>
<entry
>Öka volym</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Numeriskt tangentbord -</keycap
></keycombo
></entry>
<entry
>Minska volym</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Skift</keycap
><keycap
>numeriskt +</keycap
></keycombo
></entry>
<entry
>Sök framåt</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Skift</keycap
><keycap
>numeriskt -</keycap
></keycombo
></entry>
<entry
>Sök bakåt</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>A</keycap
></keycombo
></entry>
<entry
>Lägg till media</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>P</keycap
></keycombo
></entry>
<entry
>Växla spellista</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>O</keycap
></keycombo
></entry>
<entry
>Aktivera skärmvisning</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>M</keycap
></keycombo
></entry>
<entry
>Tysta volym</entry>
</row>

</tbody>
</tgroup>
</informaltable>

<para
>Genvägarna i &amarok; är:</para>

<informaltable>
<tgroup cols="2">
<thead>

<row>
<entry
>Tangentkombination</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>C</keycap
></keycombo
></entry>
<entry
>Kopiera</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Numeriskt tangentbord Enter</keycap
></keycombo
></entry>
<entry
>Gå till nuvarande</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>D</keycap
></keycombo
></entry>
<entry
>Köa markerade spår</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Q</keycap
></keycombo
></entry>
<entry
>Avsluta</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Skift</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Gör om</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>S</keycap
></keycombo
></entry>
<entry
>Spara spellista</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>A</keycap
></keycombo
></entry>
<entry
>Markera alla</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>M</keycap
></keycombo
></entry>
<entry
>Visa menyrad</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>H</keycap
></keycombo
></entry>
<entry
>Blanda</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Ångra</entry>
</row>


</tbody>
</tgroup>
</informaltable>


<para
>Spellistebläddrarens genvägar är:</para>

<informaltable>
<tgroup cols="2">
<thead>

<row>
<entry
>Tangentkombination</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>

<row>
<entry
><keycap
>Mellanslag</keycap
></entry>
<entry
>Ladda spellista</entry>
</row>

<row>
<entry
><keycap
>F2</keycap
></entry>
<entry
>Byt namn på spellista</entry>
</row>

<row>
<entry
><keycap
>Backsteg</keycap
></entry>
<entry
>Ta bort spellista</entry>
</row>

</tbody>
</tgroup>
</informaltable>

</sect1>

<sect1 id="the-dcop-interface">
<title
>DCOP-gränssnittet</title>

<para
>Amaroks DCOP-gränssnitt tillhandahåller ett enkelt sätt att styra Amarok med dina egna skript.</para>

<para
>DCOP-gränssnittet i Amarok har många generella funktioner som också finns i andra KDE-program. Det här avsnittet är uppdelat i sex tabeller och är avsett att beskriva DCOP-anrop för samlingen, sammanhangsbläddraren, spelaren, spellistan, spellistebläddraren och skript. Ett exempel på DCOP-funktionen <quote
>pause</quote
> skulle se ut så här:</para>

<para
><prompt
>&percnt;</prompt
>dcop amarok player pause</para>

<sect2 id="dcop-collection">
<title
>dcop amarok collection</title>

<informaltable>
<tgroup cols="2">
<thead>

<row>
<entry
>DCOP-anrop</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>

<row>
<entry
>int totalAlbums()</entry>
<entry
>Returnerar det totala antalet album i samlingen.</entry>
</row>

<row>
<entry
>int totalArtists()</entry>
<entry
>Returnerar det totala antalet artister i samlingen.</entry>
</row>

<row>
<entry
>int totalCompilations()</entry>
<entry
>Returnerar det totala antalet samlingsalbum i samlingen.</entry>
</row>

<row>
<entry
>int totalGenres()</entry>
<entry
>Returnerar det totala antalet genrer i samlingen.</entry>
</row>

<row>
<entry
>int totalTracks()</entry>
<entry
>Returnerar det totala antalet spår i samlingen.</entry>
</row>

<row>
<entry
>QString query( QString sql)</entry>
<entry
>Skickar en fråga till databasen via SQL.</entry>
</row>

<row>
<entry
>QStringList similarArtists( int artister )</entry>
<entry
>Returnera liknande artister som det nuvarande spåret, begränsat till antal givet av artister.</entry>
</row>

<row>
<entry
>void migrateFile( QString gammal_webbadress, QString ny_webbadress )</entry>
<entry
>Flytta en fil i samlingen, och behåll statistiken intakt.</entry>
</row>

<row>
<entry
>void scanCollection()</entry>
<entry
>Sök igenom samlingen.</entry>
</row>

<row>
<entry
>void scanCollectionChanges()</entry>
<entry
>Sök enbart igenom samlingen efter ändringar.</entry>
</row>


</tbody>
</tgroup>
</informaltable>

</sect2>

<sect2 id="dcop-context">
<title
>dcop amarok contextbrowser</title>

<informaltable>
<tgroup cols="2">
<thead>

<row>
<entry
>DCOP-anrop</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>

<row>
<entry
>void showCurrentTrack()</entry>
<entry
>Visa det nuvarande spåret i sammanhangsbläddraren.</entry>
</row>

<row>
<entry
>void showLyrics()</entry>
<entry
>Visa sångtextfliken i sammanhangsbläddraren.</entry>
</row>

<row>
<entry
>void showWiki()</entry>
<entry
>Visa Wikipedia-fliken i sammanhangsbläddraren.</entry>
</row>

</tbody>
</tgroup>
</informaltable>

</sect2>

<sect2 id="dcop-player">
<title
>dcop amarok player</title>

<informaltable>
<tgroup cols="2">
<thead>

<row>
<entry
>DCOP-anrop</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>

<row>
<entry
>bool dynamicModeStatus()</entry>
<entry
>Returnera status för dynamiskt läge.</entry>
</row>

<row>
<entry
>bool equalizerEnabled()</entry>
<entry
>Returnera status för equalizern.</entry>
</row>

<row>
<entry
>bool isPlaying()</entry>
<entry
>Returnera sant om något spelas nu.</entry>
</row>

<row>
<entry
>bool randomModeStatus()</entry>
<entry
>Returnera status för slumpmässigt läge</entry>
</row>

<row>
<entry
>bool repeatPlaylistStatus()</entry>
<entry
>Returnera status för upprepning av spellistan.</entry>
</row>

<row>
<entry
>bool repeatTrackStatus()</entry>
<entry
>Returnera status för upprepning av spår.</entry>
</row>

<row>
<entry
>int getVolume()</entry>
<entry
>Returnera volymen i intervallet 0 - 100 %.</entry>
</row>

<row>
<entry
>int sampleRate()</entry>
<entry
>Returnera samplingsfrekvensen för spåret som för närvarande spelas.</entry>
</row>

<row>
<entry
>int score()</entry>
<entry
>Returnera poängen för spåret som för närvarande spelas.</entry>
</row>

<row>
<entry
>int status()</entry>
<entry
>Returnera uppspelningsstatus: 0 - stoppad, 1 - paus, 2 - spelar.</entry>
</row>

<row>
<entry
>int trackCurrentTime()</entry>
<entry
>Returnerar nuvarande uppspelningsposition i sekunder.</entry>
</row>

<row>
<entry
>int trackPlayCounter()</entry>
<entry
>Returnerar uppspelningsräknaren för nuvarande sång.</entry>
</row>

<row>
<entry
>int trackTotalTime()</entry>
<entry
>Returnerar spårlängden i sekunder.</entry>
</row>

<row>
<entry
>QString album()</entry>
<entry
>Returnera albumet för spåret som för närvarande spelas.</entry>
</row>

<row>
<entry
>QString artist()</entry>
<entry
>Returnera artisten för spåret som för närvarande spelas.</entry>
</row>

<row>
<entry
>QString bitrate()</entry>
<entry
>Returnera bithastigheten för spåret som för närvarande spelas (i kilobit per sekund).</entry>
</row>

<row>
<entry
>QString comment()</entry>
<entry
>Returnera kommentaren för spåret som för närvarande spelas.</entry>
</row>

<row>
<entry
>QString coverImage()</entry>
<entry
>Returnera den kodade webbadressen till nuvarande spårs skivomslag </entry>
</row>

<row>
<entry
>QString currentTime()</entry>
<entry
>Returnera positionen för spåret som för närvarande spelas (på formatet [t:]mm:ss).</entry>
</row>

<row>
<entry
>QString encodedURL()</entry>
<entry
>Returnera den kodade webbadressen för spåret som för närvarande spelas.</entry>
</row>

<row>
<entry
>QString engine()</entry>
<entry
>Returnera nuvarande ljudgränssnitt.</entry>
</row>

<row>
<entry
>QString genre()</entry>
<entry
>Returnera genren för spåret som för närvarande spelas.</entry>
</row>

<row>
<entry
>QString lyrics()</entry>
<entry
>Returnera sångtexten för spåret som för närvarande spelas.</entry>
</row>

<row>
<entry
>QString lyricsByPath( QString sökväg )</entry>
<entry
>Returnera sångtext för ett spår enligt sökväg.</entry>
</row>

<row>
<entry
>QString nowPlaying()</entry>
<entry
>Titeln på det medium som nu spelas.</entry>
</row>

<row>
<entry
>QString path()</entry>
<entry
>Returnera den okodade sökvägen för spåret som för närvarande spelas.</entry>
</row>

<row>
<entry
>QString setContextStyle( QString )</entry>
<entry
>Ställ in CSS-stilen för sammanhangsbläddraren.</entry>
</row>

<row>
<entry
>QString title()</entry>
<entry
>Returnera titeln för spåret som för närvarande spelas.</entry>
</row>

<row>
<entry
>QString totalTime()</entry>
<entry
>Returnera totala längden för spåret som för närvarande spelas (på formatet [t:]mm:ss).</entry>
</row>

<row>
<entry
>QString track()</entry>
<entry
>Returnera spårnumret.</entry>
</row>

<row>
<entry
>QString type()</entry>
<entry
>Returnera filtypen.</entry>
</row>

<row>
<entry
>QString year()</entry>
<entry
>Returnera året för spåret som för närvarande spelas.</entry>
</row>

<row>
<entry
>void configEqualizer()</entry>
<entry
>Växla equalizerns inställningsdialogruta.</entry>
</row>

<row>
<entry
>void enableDynamicMode(bool aktivera)</entry>
<entry
>Sätt på eller stäng av dynamiskt läge.</entry>
</row>

<row>
<entry
>void enableOSD(bool aktivera)</entry>
<entry
>Sätt på eller stäng av skärmmeddelanden.</entry>
</row>

<row>
<entry
>void enableRandomMode(bool aktivera)</entry>
<entry
>Sätt på eller stäng av slumpmässigt läge.</entry>
</row>

<row>
<entry
>void enableRepeatPlaylist(bool aktivera)</entry>
<entry
>Sätt på eller stäng av upprepa spellista.</entry>
</row>

<row>
<entry
>void enableRepeatTrack(bool aktivera)</entry>
<entry
>Sätt på eller stäng av upprepa spår.</entry>
</row>

<row>
<entry
>void mediaDeviceMount()</entry>
<entry
>Ställer in kommandot som används för att montera mediaenheter.</entry>
</row>

<row>
<entry
>void mediaDeviceUmount()</entry>
<entry
>Ställer in kommandot som används för att avmontera mediaenheter.</entry>
</row>

<row>
<entry
>void mute()</entry>
<entry
>Växla tyst.</entry>
</row>

<row>
<entry
>void next()</entry>
<entry
>Motsvarar att klicka på knappen "Nästa".</entry>
</row>

<row>
<entry
>void pause()</entry>
<entry
>Motsvarar att klicka på knappen "Paus".</entry>
</row>

<row>
<entry
>void play()</entry>
<entry
>Motsvarar att klicka på knappen "Spela".</entry>
</row>

<row>
<entry
>void playPause()</entry>
<entry
>Växla tillstånd mellan spela och paus (bra för användare av multimediatangentbord) </entry>
</row>

<row>
<entry
>void prev()</entry>
<entry
>Motsvarar att klicka på knappen "Föregående".</entry>
</row>

<row>
<entry
>void queueForTransfer( KURL webbadress )</entry>
<entry
>Köa filer för överföring till mediaenheten.</entry>
</row>

<row>
<entry
>void seek(int s)</entry>
<entry
>Sök i spåret till positionen i sekunder.</entry>
</row>

<row>
<entry
>void seekRelative(int s)</entry>
<entry
>Sök till en position i förhållande till spårets nuvarande position.</entry>
</row>

<row>
<entry
>void setEqualizer(int, int, int, int, int, int, int, int, int, int, int)</entry>
<entry
>Ställ in equalizerns band </entry>
</row>

<row>
<entry
>void setEqualizerEnabled( bool active )</entry>
<entry
>Växla equalizern.</entry>
</row>

<row>
<entry
>void setEqualizerPreset( QString namn )</entry>
<entry
>Ställ in equalizerns förinställning </entry>
</row>

<row>
<entry
>void setLyricsByPath( QString webbadress, QString sångtext )</entry>
<entry
>Ställ in sångtext för ett spår enligt dess sökväg.</entry>
</row>

<row>
<entry
>void setScore( int poäng )</entry>
<entry
>Ställ in poäng för spåret som för närvarande spelas.</entry>
</row>

<row>
<entry
>void setScoreByPath( QString webbadress, int poäng )</entry>
<entry
>Ställ in poäng för ett spår enligt dess sökväg.</entry>
</row>

<row>
<entry
>void setVolume(int volym)</entry>
<entry
>Ställ in volymen i intervallet 0 - 100 %</entry>
</row>

<row>
<entry
>void showBrowser( QString bläddrare )</entry>
<entry
>Visar bläddrarna i spellistans fönster.</entry>
</row>

<row>
<entry
>void showOSD()</entry>
<entry
>Visa skärmmeddelanden på skärmen.</entry>
</row>

<row>
<entry
>void stop()</entry>
<entry
>Motsvarar att klicka på knappen "Stopp".</entry>
</row>

<row>
<entry
>void transferDeviceFiles()</entry>
<entry
>Överför filer till mediaenheten.</entry>
</row>

<row>
<entry
>void volumeDown()</entry>
<entry
>Minska volymen med ett rimligt steg.</entry>
</row>

<row>
<entry
>void volumeUp()</entry>
<entry
>Öka volymen med ett rimligt steg.</entry>
</row>

</tbody>
</tgroup>
</informaltable>

</sect2>

<sect2 id="dcop-playlist">
<title
>dcop amarok playlist</title>

<informaltable>
<tgroup cols="2">
<thead>

<row>
<entry
>DCOP-anrop</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>

<row>
<entry
>int getActiveIndex()</entry>
<entry
>Returnera index för spåret som för närvarande är aktivt. -1 om inget.</entry>
</row>

<row>
<entry
>int getTotalTrackCount()</entry>
<entry
>Returnera antal spår i spellistan. 0 om inga.</entry>
</row>

<row>
<entry
>QString saveCurrentPlaylist()</entry>
<entry
>Sparar den nuvarande spellistan i nuvarande.xml och och returnerar dess sökväg.</entry>
</row>

<row>
<entry
>void addMedia( KURL )</entry>
<entry
>Lägg till ljudmedium angivet av webbadressen.</entry>
</row>

<row>
<entry
>void addMediaList( KURL::List )</entry>
<entry
>Lägg till några ljudmedia angivna av webbadressen.</entry>
</row>

<row>
<entry
>void clearPlaylist()</entry>
<entry
>Rensar spellistan.</entry>
</row>

<row>
<entry
>void playByIndex(int)</entry>
<entry
>Börjar spela spåret vid angivet index.</entry>
</row>

<row>
<entry
>void playMedia( KURL )</entry>
<entry
>Lägg till ljudmedium angivet av webbadressen.</entry>
</row>

<row>
<entry
>void popupMessage( QString)</entry>
<entry
>Visar ett tillfälligt skärmmeddelande.</entry>
</row>

<row>
<entry
>void removeCurrentTrack()</entry>
<entry
>Tar bort nuvarande spår från spellistan.</entry>
</row>

<row>
<entry
>void repopulate()</entry>
<entry
>Fyll i spellistan igen med slumpmässiga spår.</entry>
</row>

<row>
<entry
>void saveM3u( QString sökväg, bool relativ_sökväg)</entry>
<entry
>Sparar nuvarande spellista som m3u.</entry>
</row>

<row>
<entry
>void setStopAfterCurrent( bool )</entry>
<entry
>Aktiverar eller inaktiverar funktionen "Stoppa efter aktuellt spår".</entry>
</row>

<row>
<entry
>void shortStatusMessage( QString)</entry>
<entry
>Visar ett tillfälligt meddelande på statusraden.</entry>
</row>

<row>
<entry
>void shufflePlaylist()</entry>
<entry
>Blandar spellistan.</entry>
</row>

<row>
<entry
>void togglePlaylist()</entry>
<entry
>Växla spellistans fönster.</entry>
</row>

</tbody>
</tgroup>
</informaltable>

</sect2>

<sect2 id="dcop-playlistbrowser">
<title
>dcop amarok playlistbrowser</title>

<informaltable>
<tgroup cols="2">
<thead>

<row>
<entry
>DCOP-anrop</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>

<row>
<entry
>void addPodcast( QString )</entry>
<entry
>Lägg till en podradiosändning i spellistebläddraren.</entry>
</row>

<row>
<entry
>void scanPodcasts()</entry>
<entry
>Sök igenom alla podradiosändningar efter uppdateringar.</entry>
</row>

<row>
<entry
>void addPlaylist( QString )</entry>
<entry
>Lägg till en spellista i spellistebläddraren.</entry>
</row>

</tbody>
</tgroup>
</informaltable>

</sect2>

<sect2 id="dcop-script">
<title
>dcop amarok script</title>


<informaltable>
<tgroup cols="2">
<thead>

<row>
<entry
>DCOP-anrop</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>

<row>
<entry
>bool runScript( QString namn)</entry>
<entry
>Startar skriptet med angivet namn. Returnerar sant om det lyckas.</entry>
</row>

<row>
<entry
>bool stopScript( QString namn)</entry>
<entry
>Stoppar skriptet med angivet namn. Returnerar sant om det lyckas.</entry>
</row>

<row>
<entry
>QStringList listRunningScripts()</entry>
<entry
>Returnerar en lista med skript som för närvarande kör.</entry>
</row>

<row>
<entry
>void addCustomMenuItem(QString undermeny, QString objekttitel )</entry>
<entry
>Aktiverar och ställer in titeln för eget menyalternativ.</entry>
</row>

<row>
<entry
>void removeCustomMenuItem(QString undermeny, QString objekttitel )</entry>
<entry
>Tar bort det egna menyalternativet.</entry>
</row>

<row>
<entry
>QString readConfig( QString nyckel)</entry>
<entry
>Returnerar värdet av en inställningspost från AmarokConfig för angiven nyckel.</entry>
</row>

</tbody>
</tgroup>
</informaltable>


</sect2>

</sect1>

<sect1 id="cmd-line-options">
<title
>Kommandoradsalternativ</title>

<para
>Amarok stöder användning av de vanliga Qt- och KDE-kommandoradsväljarna. Amarok har också sina egna programspecifika väljare.</para>

<para
>Väljarna för Qt och KDE:</para>

<informaltable>
<tgroup cols="2">
<thead>

<row>
<entry
>Väljare</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>

<row>
<entry
>--help</entry>
<entry
>Visa hjälp om väljare.</entry>
</row>

<row>
<entry
>--help-qt</entry>
<entry
>Visa Qt-specifika väljare.</entry>
</row>

<row>
<entry
>--help-kde</entry>
<entry
>Visa KDE-specifika väljare.</entry>
</row>

<row>
<entry
>--help-all</entry>
<entry
>Visa alla väljare.</entry>
</row>

<row>
<entry
>--author</entry>
<entry
>Visa information om upphovsman.</entry>
</row>

<row>
<entry
>-v, --version</entry>
<entry
>Visa versionsinformation.</entry>
</row>

<row>
<entry
>--license</entry>
<entry
>Visa licensinformation.</entry>
</row>

</tbody>
</tgroup>
</informaltable>

<para
>Amarok-väljare:</para>

<note
><para
>&amarok;-väljarna är avsedda att användas medan &amarok; kör.</para
></note>

<informaltable>
<tgroup cols="2">
<thead>

<row>
<entry
>Väljare</entry>
<entry
>Åtgärd</entry>
</row>
</thead>
<tbody>

<row>
<entry
>-r, --previous</entry>
<entry
>Gå till föregående spår i spellistan.</entry>
</row>

<row>
<entry
>-p, --play</entry>
<entry
>Börja spela nuvarande spellista.</entry>
</row>

<row>
<entry
>-s, --stop</entry>
<entry
>Stoppa uppspelning.</entry>
</row>

<row>
<entry
>--pause</entry>
<entry
>Gör paus i uppspelning.</entry>
</row>

<row>
<entry
>-f, --next</entry>
<entry
>Gå till nästa spår i spellistan.</entry>
</row>

<row>
<entry
>-a, --append</entry>
<entry
>Lägg till filer eller webbadresser sist i spellistan.</entry>
</row>

<row>
<entry
>-e, --enqueue</entry>
<entry
>Se append, tillgänglig för att fungera ihop med tidigare versioner.</entry>
</row>

<row>
<entry
>--queue</entry>
<entry
>Köa filer eller webbadresser efter spåret som för närvarande spelas.</entry>
</row>

<row>
<entry
>-m, --toggle-playlist-window</entry>
<entry
>Växla spellistans fönster.</entry>
</row>

<row>
<entry
>--wizard</entry>
<entry
>Kör startguiden.</entry>
</row>

<row>
<entry
>--engine "namn"</entry>
<entry
>Starta &amarok; med gränssnittet "namn".</entry>
</row>

</tbody>
</tgroup>
</informaltable>

</sect1>


<sect1 id="script-writing">
<title
>Skriva skript</title>

<para
>Att skriva skript låter dig enkelt utöka &amarok; utan att ändra den huvudsakliga kodbasen. Skript liknar insticksprogram, men istället för ett särskilt programmeringsgränssnitt använder de &amarok;s DCOP-gränssnitt för kommunikation. Det gör det möjligt att skriva skript i nästan vilket programspråk som helst, som Ruby, Python eller PHP. Du kan inte bara skapa skript med klassiska skriptspråk, utan också med kompilerade språk som C++ eller vanlig C. Dessutom kan &amarok; underrätta skript om särskilda händelser och få dem att reagera i enlighet med dem. Systemet med underrättelser förklaras senare i avsnittet.</para>

<sect2 id="script-bindings">
<title
>Kopplingar</title>

<para
>Det är möjligt att skriva enkla skript som inte kräver inblandning av användaren, och det är också möjligt att skapa skript med bekväma grafiska gränssnitt som fungerar som små program i sig själv. För programmering av det grafiska gränssnittet kan en av de många kopplingarna som KDE tillhandahåller användas, till exempel RubyQt, en koppling till Qt-biblioteket för Ruby. Det är dock värt att notera att inte alla användare har installerat alla tillgängliga kopplingar. Om du bestämmer dig för att använda en koppling, försök att använda någon av dem som är relativt spridda (t.ex. RubyQt eller PyQt).</para>

<para
>För att ge något gensvar när ett skript misslyckas köra på grund av ett beroende som saknas, kontrollera i skriptet om modulen du vill inkludera verkligen finns. Om beroendet saknas, bör du fånga felet och visa en informationsdialogruta med kommandoradverktyget "kdialog", så att användaren får reda på varför skriptet misslyckas med att köra.</para>

<para
>Följande exempel visar hur ett beroende som saknas kan fångas i Ruby:</para>

<programlisting
>begin
       require 'Korundum'
rescue LoadError
       error = 'Korundum (KDE-kopplingar för Ruby) från kdebindings v3.4 krävs för det här skriptet.'
       `kdialog --sorry '#{error}'`
       exit
end
</programlisting>

</sect2>

<sect2 id="script-templates">
<title
>Komma igång: Mallarna</title>

<para
>&amarok; tillhandahåller mallskript för flera språk i katalogen <filename class="directory"
>scripts/templates/</filename
>. Du kan använda dessa skript som en bas för dina egna, och utöka dem med funktioner du behöver. Du kommer att märka att det i själva verket är ganska rättframt att skriva skript. Om du till exempel vet en del om hur man programmerar i Python, tar det inte lång tid att skapa ditt eget skript.</para>

</sect2>

<sect2 id="script-controlling-amarok">
<title
>Styra &amarok; med DCOP</title>

<para
>Skript kan styra Amarok genom att anropa vissa av dess DCOP-funktioner. Det enklaste sättet att utföra en DCOP-funktion är genom att använda kommandoradsverktyget "dcop", som ingår i alla distributioner av KDE.</para>

<para
>Här är ett exempel på hur huvudvolymen ökas:</para>

<programlisting
>dcop amarok player volumeUp</programlisting>

<para
>De flesta skriptspråk tillåter att yttre program körs, med en funktion som exec(). På så sätt kan verktyget "dcop" enkelt anropas. Här är ett enkelt exempel i Python:</para>

<programlisting
>import os
 os.system("dcop amarok player volumeDown")
</programlisting>

</sect2>

<sect2 id="script-notifications">
<title
>Underrättelser</title>

<para
>&amarok; skickar underrättelser till alla skript som kör genom att skriva strängar till deras standardinmatning. Skripten bör därför hela tiden bevaka standardinmatningen och reagera på lämpligt sätt på var och en av de möjliga händelserna. Skript kan också välja att ignorera alla händelser de inte har någon nytta av.</para>

<para
>Följande underrättelser skickas av &amarok;:</para>

<programlisting
><cmdsynopsis
><command
>configure</command
></cmdsynopsis>
Talar om för skriptet att dess inställningsdialogruta ska visas. Skriptet
måste hantera lagring och inläsning av inställningsalternativ självt.
När ett skript startas, ställer Amarok in dess arbetskatalog till katalogen
där all data ska lagras.
</programlisting>

<programlisting
><cmdsynopsis
><command
>engineStateChange:</command
><arg
>empty|idle|paused|playing</arg
></cmdsynopsis>
Signalerar en ändring i gränssnittets tillstånd.
</programlisting>

<programlisting
><cmdsynopsis
><command
>trackChange</command
></cmdsynopsis>
Signalerar start av ett nytt spår. Skriptet kan därefter använda DCOP-funktioner
för att fråga efter ytterligare information om spåret, t.ex. metadata och längd.
</programlisting>

<programlisting
><cmdsynopsis
><command
>volumeChange</command
><arg
>ny-volym</arg
></cmdsynopsis>
Signalerar en ändring av huvudvolymen. Volymen är ett heltal med
intervallet 0 - 100.
</programlisting>

<programlisting
><cmdsynopsis
><command
>customMenuClicked:</command
><arg
>undermeny objektnamn sökvägar</arg
></cmdsynopsis>
Returnerar sökvägar till markerade filer i spellistan när det egna alternativet
i spellistans sammanhangsberoende meny klickas. Undermenyn och objektnamnet returneras
också i identifieringssyfte i fallet då ett skript lyssnar på flera underrättelser.
Använd DCOP-anropet 'dcop amarok script addCustomMenuItem( undermeny objektnamn )'
för att infoga ett objekt i den sammanhangsberoende menyn. Använd
DCOP-anropet 'dcop amarok script removeCustomMenuItem( undermeny objektnamn )'
för att ta bort ett objekt från den sammanhangsberoende menyn.
</programlisting>

</sect2>

<sect2 id="script-termination">
<title
>Avslutning av skript</title>

<para
>Innan &amarok; avslutas, eller när användaren stoppar ett skript i skripthanteringen, skickar &amarok; signalen SIGTERM till skriptet. Signalen kan fångas för att utföra upprensningsarbete, som att spara data eller inställningar.</para>

</sect2>

<sect2 id="script-packaging">
<title
>Paketering</title>

<para
>Skripthanteringen i &amarok; kan installera skriptpaket som användaren har laddat ner från en webbserver. Paketen är bara normala arkiv (.tar), valfritt komprimerade med bzip2 (.bz2). Vi rekommenderar starkt att använda ett filnamn som mitt-skript.amarokscript.tar.bz2, så att användaren lätt kan identifiera paketet som ett skript för Amarok.</para>

<note
><para
>&amarok; 1.3 accepterar bara skriptpaket med filändelsen amarokscript, det är alltså bättre att använda det ända från början.</para
></note>

<para
>Arkivets innehåll måste vara organiserat på följande sätt:</para>

<programlisting
>mitt-skript/
   README
   mitt-skript.py (körbar fil)
   en-modul.py
   fil.data
   ...
</programlisting>

</sect2>

<sect2 id="script-permissions">
<title
>Filrättigheter</title>

<para
>Huvudskriptet måste har körrättigheter (+x) inställda,medan ytterligare moduler som skriptet laddar inte ska ha körrättigheter. För att bevara filrättigheter i arkivet, ska du använda tar med väljaren -p.</para>

<programlisting
>tar -cf mitt-skript.amarokscript.tar -p mitt-skript</programlisting>

<note
><para
>&amarok; kan inte installera skriptet om inte filrättigheterna är riktigt inställda.</para
></note>

</sect2>

<sect2 id="script-distributing">
<title
>Distribution</title>

<para
>När paketet är klart, kan du ladda upp det till <ulink url="http://www.kde-apps.org"
>www.kde-apps.org</ulink
> och lägga till länken på &amarok;s <ulink url="http://amarok.kde.org/amarokwiki/index.php/Scripts"
>Wiki skriptsida</ulink
>. För posten kde-apps ska du använda kategorin <ulink url="http://kde-apps.org/index.php?xcontentmode=56"
>&amarok; Scripts</ulink
>.</para>

</sect2>

</sect1>


</chapter>

