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


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

<para
>&amarok; bruger tastaturgenveje ligesom de fleste andre programmer. Nedenfor er der en liste af disse genveje og deres respektive handlinger. De globale genveje kan indstilles ved at højreklikke i afspillervinduet og vælge <guimenuitem
>Indstil globale genveje...</guimenuitem
> &amarok;'s genveje kan indstilles ved at højreklikke i afspillerevinduet og vælge <guimenuitem
>Indstil genveje...</guimenuitem
></para>

<tip
><para
>Du kan knytte dine multimedie-taster til at virke som genveje for &amarok; og derved gøre dit tastatur til et kontrolcenter for &amarok;.</para
></tip>

<para
>De globale genveje er:</para>

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

<row>
<entry
>Tastekombination</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>X</keycap
></keycombo
></entry>
<entry
>Spil</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>C</keycap
></keycombo
></entry>
<entry
>Pause</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>V</keycap
></keycombo
></entry>
<entry
>Stop</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>B</keycap
></keycombo
></entry>
<entry
>Næste spor</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Forrige spor</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>KP_Add</keycap
></keycombo
></entry>
<entry
>Højere lydstyrke</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>KP_Subtract</keycap
></keycombo
></entry>
<entry
>Lavere lydstyrke</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Shift</keycap
><keycap
>KP_Add</keycap
></keycombo
></entry>
<entry
>Søg fremad</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Shift</keycap
><keycap
>KP_Subtract</keycap
></keycombo
></entry>
<entry
>Søg tilbage</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>A</keycap
></keycombo
></entry>
<entry
>Tilføj medie</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>P</keycap
></keycombo
></entry>
<entry
>Slå spilleliste til og fra</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>O</keycap
></keycombo
></entry>
<entry
>Vis OSD</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>M</keycap
></keycombo
></entry>
<entry
>Slå lyd fra</entry>
</row>

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

<para
>&amarok;'s genveje er:</para>

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

<row>
<entry
>Tastekombination</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>C</keycap
></keycombo
></entry>
<entry
>Kopiér</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>KP_Enter</keycap
></keycombo
></entry>
<entry
>Gå til nuværende</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>D</keycap
></keycombo
></entry>
<entry
>Sæt markerede spor i kø</entry>
</row>

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

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Shift</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Annullér fortryd</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>S</keycap
></keycombo
></entry>
<entry
>Gem spilleliste</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>A</keycap
></keycombo
></entry>
<entry
>Markér alle</entry>
</row>

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>M</keycap
></keycombo
></entry>
<entry
>Vis menulinje</entry>
</row>

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

<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Fortryd</entry>
</row>


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


<para
>Spilleliste-browserens genveje er:</para>

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

<row>
<entry
>Tastekombination</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>

<row>
<entry
><keycap
>Mellemrum</keycap
></entry>
<entry
>Indlæs spilleliste</entry>
</row>

<row>
<entry
><keycap
>F2</keycap
></entry>
<entry
>Omdøb spilleliste</entry>
</row>

<row>
<entry
><keycap
>Backspace</keycap
></entry>
<entry
>Fjern spilleliste</entry>
</row>

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

</sect1>

<sect1 id="the-dcop-interface">
<title
>DCOP-Grænsefladen</title>

<para
>Amarok's DCOP-grænseflade giver dig en nem måde at kontrollere Amarok med dine hjemmelavede scripter.</para>

<para
>DCOP-grænsefladen for Amarok har mange generiske kald der kan findes i andre af  KDE's programmer. Dette afsnit er opdelt i seks tabeller og er beregnet til at beskrive DCOP-kald for samling, sammenhængsbrowser,  afspiller, spilleliste, spillelistebrowser og scripter. Et eksempel på <quote
>pause</quote
> dcop-kaldet ville se sådan ud:</para>

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

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

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

<row>
<entry
>DCOP-kald</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>

<row>
<entry
>int totalAlbums()</entry>
<entry
>Returnerer det totale antal albummer i samlingen.</entry>
</row>

<row>
<entry
>int totalArtists()</entry>
<entry
>Returnerer det totale antal artister i samlingen.</entry>
</row>

<row>
<entry
>int totalCompilations()</entry>
<entry
>Returnerer det totale antal samlingsalbummer i samlingen.</entry>
</row>

<row>
<entry
>int totalGenres()</entry>
<entry
>Returnerer det totale antal genrer i samlingen.</entry>
</row>

<row>
<entry
>int totalTracks()</entry>
<entry
>Returnerer det totale antal spor i samlingen.</entry>
</row>

<row>
<entry
>QString query( QString sql)</entry>
<entry
>Sender en forespørgsel til databasen via SQL.</entry>
</row>

<row>
<entry
>QStringList similarArtists( int artister )</entry>
<entry
>Returnerer lignende artister som det nuværende spor, begrænset til antal givet af artister.</entry>
</row>

<row>
<entry
>void migrateFile( QString gammel_url, QString ny_url )</entry>
<entry
>Flyt en fil i samlingen, og behold statistikken intakt.</entry>
</row>

<row>
<entry
>void scanCollection()</entry>
<entry
>Gennemsøg samlingen.</entry>
</row>

<row>
<entry
>void scanCollectionChanges()</entry>
<entry
>Søg kun gennem samlingen efter ændringer.</entry>
</row>


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

</sect2>

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

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

<row>
<entry
>DCOP-kald</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>

<row>
<entry
>void showCurrentTrack()</entry>
<entry
>Vis det nuværende spor i sammenhængsbrowseren.</entry>
</row>

<row>
<entry
>void showLyrics()</entry>
<entry
>Vis sangtekstfanebladet i sammenhængsbrowseren.</entry>
</row>

<row>
<entry
>void showWiki()</entry>
<entry
>Vis Wikipedia-fanebladet i sammenhængsbrowseren.</entry>
</row>

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

</sect2>

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

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

<row>
<entry
>DCOP-kald</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>

<row>
<entry
>bool dynamicModeStatus()</entry>
<entry
>Returnér status for dynamisk tilstand.</entry>
</row>

<row>
<entry
>bool equalizerEnabled()</entry>
<entry
>Returnér status for equalizeren.</entry>
</row>

<row>
<entry
>bool isPlaying()</entry>
<entry
>Returnér sand hvis noget spilles nu.</entry>
</row>

<row>
<entry
>bool randomModeStatus()</entry>
<entry
>Returnér status for tilfældig tilstand</entry>
</row>

<row>
<entry
>bool repeatPlaylistStatus()</entry>
<entry
>Returnér status for gentagelse af spillelisten.</entry>
</row>

<row>
<entry
>bool repeatTrackStatus()</entry>
<entry
>Returnér status for gentagelse af spor.</entry>
</row>

<row>
<entry
>int getVolume()</entry>
<entry
>Returnér lydstyrke i intervallet 0 - 100 %.</entry>
</row>

<row>
<entry
>int sampleRate()</entry>
<entry
>Returnerer samplingsfrekvensen for sporet som for øjeblikket spilles.</entry>
</row>

<row>
<entry
>int score()</entry>
<entry
>Returnér scoring for sporet som for øjeblikket spilles.</entry>
</row>

<row>
<entry
>int status()</entry>
<entry
>Returnér afspilningsstatus: 0 - stoppet, 1 - pause, 2 - spiller.</entry>
</row>

<row>
<entry
>int trackCurrentTime()</entry>
<entry
>Returnerer nuværende afspilningsposition i sekunder.</entry>
</row>

<row>
<entry
>int trackPlayCounter()</entry>
<entry
>Returnerer afspilningstælleren for nuværende sang.</entry>
</row>

<row>
<entry
>int trackTotalTime()</entry>
<entry
>Returnerer sporlængden i sekunder.</entry>
</row>

<row>
<entry
>QString album()</entry>
<entry
>Returnerer albummet for sporet som for øjeblikket spilles.</entry>
</row>

<row>
<entry
>QString artist()</entry>
<entry
>Returnerer artisten for sporet som for øjeblikket spilles.</entry>
</row>

<row>
<entry
>QString bitrate()</entry>
<entry
>Returnér bithastigheden for sporet som for øjeblikket spilles (i kilobit pr sekund).</entry>
</row>

<row>
<entry
>QString comment()</entry>
<entry
>Returnerer kommentaren for sporet som for øjeblikket spilles.</entry>
</row>

<row>
<entry
>QString coverImage()</entry>
<entry
>Returnerer den kodede URL for nuværende spors omslag </entry>
</row>

<row>
<entry
>QString currentTime()</entry>
<entry
>Returnér positionen for sporet som for øjeblikket spilles (i formatet [t:]mm:ss).</entry>
</row>

<row>
<entry
>QString encodedURL()</entry>
<entry
>Returnér den indkodede url for sporet som for øjeblikket spilles.</entry>
</row>

<row>
<entry
>QString engine()</entry>
<entry
>Returnerer nuværende lydgrænseflade.</entry>
</row>

<row>
<entry
>QString genre()</entry>
<entry
>Returnerer genren for sporet som for øjeblikket spilles.</entry>
</row>

<row>
<entry
>QString lyrics()</entry>
<entry
>Returnerer sangteksten for sporet som for øjeblikket spilles.</entry>
</row>

<row>
<entry
>QString lyricsByPath( QString søgesti )</entry>
<entry
>Returnér sangtekst for et spor ifølge søgesti.</entry>
</row>

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

<row>
<entry
>QString path()</entry>
<entry
>Returnér den ikke-indkodede søgesti for sporet som for øjeblikket spilles.</entry>
</row>

<row>
<entry
>QString setContekstStyle( QString )</entry>
<entry
>Indstil CSS-stilen for sammenhængsbrowseren.</entry>
</row>

<row>
<entry
>QString title()</entry>
<entry
>Returnerer titlen for sporet som for øjeblikket spilles.</entry>
</row>

<row>
<entry
>QString totalTime()</entry>
<entry
>Returnér den totale længde for sporet som for øjeblikket spilles (i formatet [t:]mm:ss).</entry>
</row>

<row>
<entry
>QString track()</entry>
<entry
>Returnér spornummeret.</entry>
</row>

<row>
<entry
>QString type()</entry>
<entry
>Returnér filtypen.</entry>
</row>

<row>
<entry
>QString year()</entry>
<entry
>Returnerer året for sporet som for øjeblikket spilles.</entry>
</row>

<row>
<entry
>void configEqualizer()</entry>
<entry
>Skift equalizerens indstillingsdialog.</entry>
</row>

<row>
<entry
>void enableDynamicMode(bool aktivere)</entry>
<entry
>Slå dynamisk tilstand til og fra.</entry>
</row>

<row>
<entry
>void enableOSD(bool aktivér)</entry>
<entry
>Slå skærmmeddelelser til og fra.</entry>
</row>

<row>
<entry
>void enableRandomMode(bool aktivere)</entry>
<entry
>Slå tilfældigt tilstand til og fra.</entry>
</row>

<row>
<entry
>void enableRepeatPlaylist(bool aktivere)</entry>
<entry
>Slå gentagelse af spilleliste til og fra.</entry>
</row>

<row>
<entry
>void enableRepeatTrack(bool aktivere)</entry>
<entry
>Slå gentagelse af spor til og fra.</entry>
</row>

<row>
<entry
>void mediaDeviceMount()</entry>
<entry
>Indstiller kommandoen som bruges til at montere medieenheder.</entry>
</row>

<row>
<entry
>void mediaDeviceUmount()</entry>
<entry
>Indstiller kommandoen som bruges til at afmontere medieenheder.</entry>
</row>

<row>
<entry
>void mute()</entry>
<entry
>Slå lyd til og fra.</entry>
</row>

<row>
<entry
>void next()</entry>
<entry
>Svarer til at klikke på knappen "Næste".</entry>
</row>

<row>
<entry
>void pause()</entry>
<entry
>Svarer til at klikke på knappen "Pause".</entry>
</row>

<row>
<entry
>void play()</entry>
<entry
>Svarer til at klikke på knappen "Spil".</entry>
</row>

<row>
<entry
>void playPause()</entry>
<entry
>Skift tilstand mellem at spille og holde pause (godt for brugere af multimedietastatur) </entry>
</row>

<row>
<entry
>void prev()</entry>
<entry
>Svarer til at klikke på knappen "Foregående".</entry>
</row>

<row>
<entry
>void queueForTransfer( KURL url )</entry>
<entry
>Sæt filer i kø for overførsel til medieenheden.</entry>
</row>

<row>
<entry
>void seek(int s)</entry>
<entry
>Søg i sporet til positionen i sekunder.</entry>
</row>

<row>
<entry
>void seekRelative(int s)</entry>
<entry
>Søg til en position i forhold til sporets nuværende position.</entry>
</row>

<row>
<entry
>void setEqualizer(int, int, int, int, int, int, int, int, int, int, int)</entry>
<entry
>Indstil equalizerens bånd </entry>
</row>

<row>
<entry
>void setEqualizerEnabled( bool active )</entry>
<entry
>Skift equalizeren.</entry>
</row>

<row>
<entry
>void setEqualizerPreset( QString navn )</entry>
<entry
>Indstil equalizerens forudindstilling </entry>
</row>

<row>
<entry
>void setLyricsByPath( QString url, QString sangtekst )</entry>
<entry
>Indstil sangtekst for et spor ifølge dets søgesti.</entry>
</row>

<row>
<entry
>void setScore( int scoring )</entry>
<entry
>Indstil scoring for sporet som for øjeblikket spilles.</entry>
</row>

<row>
<entry
>void setScoreByPath( QString url, int scoring )</entry>
<entry
>Indstil scoring for et spor ifølge dets søgesti.</entry>
</row>

<row>
<entry
>void setVolume(int lydstyrke)</entry>
<entry
>Indstil lydstyrke i intervallet 0 - 100 %</entry>
</row>

<row>
<entry
>void showBrowser( QString browser )</entry>
<entry
>Viser browserne i spillelistens vindue.</entry>
</row>

<row>
<entry
>void showOSD()</entry>
<entry
>Vis skærmmeddelelser på skærmen.</entry>
</row>

<row>
<entry
>void stop()</entry>
<entry
>Svarer til at klikke på knappen "Stop".</entry>
</row>

<row>
<entry
>void transferDeviceFiles()</entry>
<entry
>Overfør filer til medieenheden.</entry>
</row>

<row>
<entry
>void volumeDown()</entry>
<entry
>Mindsk lydstyrke med et rimeligt skridt.</entry>
</row>

<row>
<entry
>void volumeUp()</entry>
<entry
>Øg lydstyrke med et rimeligt skridt.</entry>
</row>

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

</sect2>

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

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

<row>
<entry
>DCOP-kald</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>

<row>
<entry
>int getActiveIndex()</entry>
<entry
>Returnér indeks for sporet som for øjeblikket er aktivt. -1 hvis intet.</entry>
</row>

<row>
<entry
>int getTotalTrackCount()</entry>
<entry
>Returnér antal spor i spillelisten. 0 hvis ingen.</entry>
</row>

<row>
<entry
>QString saveCurrentPlaylist()</entry>
<entry
>Gemmer den nuværende spilleliste i nuværende.xml og og returnerer dens søgesti.</entry>
</row>

<row>
<entry
>void addMedia( KURL )</entry>
<entry
>Tilføj lydmedium angivet af url'en.</entry>
</row>

<row>
<entry
>void addMediaList( KURL::List )</entry>
<entry
>Tilføj et lydmedie angivet af url'en.</entry>
</row>

<row>
<entry
>void clearPlaylist()</entry>
<entry
>Rydder spillelisten.</entry>
</row>

<row>
<entry
>void playByIndex(int)</entry>
<entry
>Begynder at afspille sporet med angivet indeks.</entry>
</row>

<row>
<entry
>void playMedia( KURL )</entry>
<entry
>Tilføj lydmedium angivet af url'en.</entry>
</row>

<row>
<entry
>void popupMessage( QString)</entry>
<entry
>Viser en midlertidig skærmmeddelelse.</entry>
</row>

<row>
<entry
>void removeCurrentTrack()</entry>
<entry
>Fjerner nuværende spor fra spillelisten.</entry>
</row>

<row>
<entry
>void repopulate()</entry>
<entry
>Fyld i spillelisten ind igen med tilfældige spor.</entry>
</row>

<row>
<entry
>void saveM3u( QString søgesti, bool relativ_søgesti)</entry>
<entry
>Gemmer nuværende spilleliste som m3u.</entry>
</row>

<row>
<entry
>void setStopAfterCurrent( bool )</entry>
<entry
>Aktiverer eller deaktiverer funktionen "Stop efter dette spor".</entry>
</row>

<row>
<entry
>void shortStatusMessage( QString)</entry>
<entry
>Viser en midlertidig meddelelse på statuslinjen.</entry>
</row>

<row>
<entry
>void shufflePlaylist()</entry>
<entry
>Blander spillelisten.</entry>
</row>

<row>
<entry
>void togglePlaylist()</entry>
<entry
>Slå spillelistens vindue til og fra.</entry>
</row>

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

</sect2>

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

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

<row>
<entry
>DCOP-kald</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>

<row>
<entry
>void addPodcast( QString )</entry>
<entry
>Tilføj en podradioudsendelse til spillelistebrowseren.</entry>
</row>

<row>
<entry
>void scanPodcasts()</entry>
<entry
>Søg gennem alle podradioudsendelser efter opdateringer.</entry>
</row>

<row>
<entry
>void addPlaylist( QString )</entry>
<entry
>Tilføj en spilleliste til spillelistebrowseren.</entry>
</row>

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

</sect2>

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


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

<row>
<entry
>DCOP-kald</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>

<row>
<entry
>bool runScript( QString navn)</entry>
<entry
>Starter scriptet med angivet navn. Returnerer sandt hvis det lykkes.</entry>
</row>

<row>
<entry
>bool stopScript( QString navn)</entry>
<entry
>Stopper scriptet med angivet navn. Returnerer sandt hvis det lykkes.</entry>
</row>

<row>
<entry
>QStringList listRunningScripts()</entry>
<entry
>Returnerer en liste med scripter som for øjeblikket kører.</entry>
</row>

<row>
<entry
>void addCustomMenuItem(QString undermenu, QString punkttitel )</entry>
<entry
>Aktiverer og indstiller titlen for eget menupunkt.</entry>
</row>

<row>
<entry
>void removeCustomMenuItem(QString undermenu, QString punkttitel )</entry>
<entry
>Fjerner det egne menupunkt.</entry>
</row>

<row>
<entry
>QString readConfig( QString nøgle)</entry>
<entry
>Returnerer værdien af en indstillingsindgang fra AmarokConfig for angiven nøgle.</entry>
</row>

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


</sect2>

</sect1>

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

<para
>Amarok understøtter brug af de sædvanlige Qt- og KDE-kommandolinjeflag. Amarok har også sine egne programspecifikke flag.</para>

<para
>Qt og kde flag:</para>

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

<row>
<entry
>Tilvalg</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>

<row>
<entry
>--help</entry>
<entry
>Vis hjælp om flag.</entry>
</row>

<row>
<entry
>--help-qt</entry>
<entry
>Vis Qt-specifikke flag.</entry>
</row>

<row>
<entry
>--help-kde</entry>
<entry
>Vis KDE-specifikke flag.</entry>
</row>

<row>
<entry
>--help-all</entry>
<entry
>is alle flag.</entry>
</row>

<row>
<entry
>--author</entry>
<entry
>Vis udviklerinformation.</entry>
</row>

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

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

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

<para
>Amarok-flag:</para>

<note
><para
>amarok's flag er designet til at blive brugt mens Amarok kører.</para
></note>

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

<row>
<entry
>Tilvalg</entry>
<entry
>Handling</entry>
</row>
</thead>
<tbody>

<row>
<entry
>-r, --previous</entry>
<entry
>Spring over forrige spor på spillelisten.</entry>
</row>

<row>
<entry
>-p, --play</entry>
<entry
>Start med af spille den nuværende spilleliste.</entry>
</row>

<row>
<entry
>-s, --stop</entry>
<entry
>Stop afspilning.</entry>
</row>

<row>
<entry
>--pause</entry>
<entry
>Hold pause i afspilning.</entry>
</row>

<row>
<entry
>-f, --next</entry>
<entry
>Spring over det næste spor på spillelisten.</entry>
</row>

<row>
<entry
>-a, --append</entry>
<entry
>Vedlæg filer/URL'er i spillelisten.</entry>
</row>

<row>
<entry
>-e, --enqueue</entry>
<entry
>Se append, tilgængelig for bagudkompatibilitet.</entry>
</row>

<row>
<entry
>--queue</entry>
<entry
>Sætter filer/URL'er i kø efter det spor der afspilles nu.</entry>
</row>

<row>
<entry
>-m, --toggle-playlist-window</entry>
<entry
>Slå spillelistens vindue til og fra.</entry>
</row>

<row>
<entry
>--wizard</entry>
<entry
>Start førstekørselsguide.</entry>
</row>

<row>
<entry
>--engine "navn"</entry>
<entry
>Start &amarok; med "navn"-motoren.</entry>
</row>

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

</sect1>


<sect1 id="script-writing">
<title
>Skrive scripter</title>

<para
>At skrive scripter tillader dig nemt at udvide &amarok; uden at ændre den egentlige kodebase. Scripter ligner plugin, men i stedet for en særlig programmeringsgrænseflade bruger de &amarok;s DCOP-grænseflade til kommunikation. Det gør det muligt at skrive scripter i næsten hvilket som helst programsprog, såsom Ruby, Python eller PHP. Du kan ikke kun oprette scripter med klassiske scriptsprog, men også med kompilerede sprog såsom C++ eller almindelig C. Desuden kan &amarok; underrette scripter om særlige begivenheder og få dem til at reagere i overensstemmelse med dem. Systemet med underretninger forklares senere i afsnittet.</para>

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

<para
>Det er muligt at skrive enkle scripter som ikke kræver indblanding af brugeren, og det er også muligt at oprette scripter med bekvemme grafiske grænseflader som fungerer som små program i sig selv. For programmering af den grafiske grænseflade kan en af de mange bindinger som KDE sørger for bruges, for eksempel RubyQt, en binding til Qt-biblioteket for Ruby. Det er dog værd at notere at ikke alle brugere har installeret alle tilgængelige bindinger. Hvis du bestemmer dig for at bruge en binding, så forsøg at bruge en af dem som er relativt udbredte (f.eks. RubyQt eller PyQt).</para>

<para
>For at give nogen tilbagemelding når et script mislykkes at køre på grund af en afhængighed som mangler, skal du kontrollere i scriptet om modulet du vil inkludere virkelig findes. Hvis afhængigheder mangler, bør du fange fejlen og vise en informationsdialog med kommandolinjeværktøjet "kdialog", så brugeren får rede på hvorfor scriptet mislykkes at køre.</para>

<para
>Følgende eksempel viser hvordan en afhængighed som mangler kan fanges i Ruby:</para>

<programlisting
>begin
       require 'Korundum'
rescue LoadError
       error = 'Korundum (KDE-bindinger for Ruby) fra tdebindings v3.4 kræves af dette script.'
       `kdialog --sorry '#{error}'`
       exit
end
</programlisting>

</sect2>

<sect2 id="script-templates">
<title
>Kom i gang: Skabelonerne</title>

<para
>&amarok; sørger for skabelonscripter for flere sprog i mappen <filename class="directory"
>scripts/templates/</filename
>. Du kan bruge disse scripter som en basis for dine egne, og udvide dem med funktioner du behøver. Du vil bemærke at det i virkeligheden er ganske ligetil at skrive scripter. Hvis du for eksempel véd en del om hvordan man programmerer i Python, tager det ikke lang tid at oprette dit eget script.</para>

</sect2>

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

<para
>Scripter kan styre Amarok ved at kalde visse af dets DCOP-funktioner. Den enkleste måde at udføre en DCOP-funktion er ved at bruge kommandolinjeværktøjet "dcop", som indgår i alle distributioner af KDE.</para>

<para
>Her er et eksempel på hvordan hovedlydstyrken øges:</para>

<programlisting
>dcop amarok player volumeUp</programlisting>

<para
>De fleste scriptsprog tillader at eksterne programmer køres, med en funktion såsom exec(). På den måde kan værktøjet "dcop" nemt kaldes. Her er et enkelt eksempel i Python:</para>

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

</sect2>

<sect2 id="script-notifications">
<title
>Underretninger</title>

<para
>&amarok; sender underretninger til alle scripter som kører ved at skrive strenge til deres standardindtastning. Scripterne bør derfor hele tiden overvåge standardindtastningen og reagere på passende måde på hver af de mulige begivenheder. Scripter kan også vælge at ignorere alle begivenheder de ikke har nogen nytte af.</para>

<para
>Følgende underretninger sendes af &amarok;:</para>

<programlisting
><cmdsynopsis
><command
>configure</command
></cmdsynopsis>
Fortæller scriptet at dets indstillingsdialog skal vises. Scriptet
skal håndtere lagring og indlæsning af indstillingstilvalg selv.
Når et script startes, indstiller Amarok dets arbejdsmappe til mappen
hvor al data skal opbevares.
</programlisting>

<programlisting
><cmdsynopsis
><command
>engineStateChange:</command
><arg
>empty|idle|paused|playing</arg
></cmdsynopsis>
Signalerer en ændring af grænsefladens tilstand.
</programlisting>

<programlisting
><cmdsynopsis
><command
>trackChange</command
></cmdsynopsis>
Signalerer start af et nyt spor. Scriptet kan derefter bruge DCOP-funktioner
til at spørge efter yderligere information om sporet, f.eks. metadata og længde.
</programlisting>

<programlisting
><cmdsynopsis
><command
>volumeChange</command
><arg
>ny-volym</arg
></cmdsynopsis>
Signalerer en ændring af hovedlydstyrken. Lydstyrken er et heltal med
intervallet 0 - 100.
</programlisting>

<programlisting
><cmdsynopsis
><command
>customMenuClicked:</command
><arg
>undermenu objektnavn søgestier</arg
></cmdsynopsis>
Returnerer søgestier til markerede filer i spillelisten når det egne tilvalg
i spillelistens sammenhængsafhængige menu klikkes. Undermenuen og objektnavnet returneres
også i identifieringsformål i tilfældet hvor et script lytter efter flere underretninger.
Brug DCOP-kaldet 'dcop amarok script addCustomMenuItem( undermenu objektnavn )'
til at indsætte et objekt i den sammenhængsafhængige menu. Anvend
DCOP-kaldet 'dcop amarok script removeCustomMenuItem( undermenu objektnavn )'
til at fjerne et objekt fra den sammenhængsafhængige menu.
</programlisting>

</sect2>

<sect2 id="script-termination">
<title
>Afslutning af script</title>

<para
>Inden &amarok; afsluttes, eller når brugeren stopper et script i scripthåndteringen, sender &amarok; signalet SIGTERM til scriptet. Signalet kan indfanges for at udføre oprensningsarbejde, såsom at gemme data eller indstillinger.</para>

</sect2>

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

<para
>Scripthåndteringen i &amarok; kan installere scriptpakker som brugeren har hentet ned fra en webserver. Pakker er blot sædvanlige arkiver (.tar), valgfrit komprimerede med bzip2 (.bz2). Vi anbefaler stærkt at bruge et filnavn såsom mit-script.amarokscript.tar.bz2, så brugeren læt kan identificere pakken som et script for Amarok.</para>

<note
><para
>&amarok; 1.3 accepterer kun scriptpakker med filendelsen amarokscript, det er altså bedre at bruge det lige fra begyndelsen.</para
></note>

<para
>Filens indhold skal være organiseret på følgende vis:</para>

<programlisting
>mit-script/
   README
   mit-script.py (kørbar fil)
   en-modul.py
   fil.data
   ...
</programlisting>

</sect2>

<sect2 id="script-permissions">
<title
>Filrettigheder</title>

<para
>Hovedscriptet skal have kørerettigheder (+x) indstillede,mens yderligere moduler som scriptet indlæser ikke skal have kørerettigheder. For at bevare filrettigheder i arkivet, skal du bruge tar med flaget -p.</para>

<programlisting
>tar -cf mitt-script.amarokscript.tar -p mit-script</programlisting>

<note
><para
>&amarok; kan ikke installere scriptet hvis filrettighederne ikke er rigtigt indstillede.</para
></note>

</sect2>

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

<para
>Når pakken er klar, kan du overføre den til <ulink url="http://www.kde-apps.org"
>www.kde-apps.org</ulink
> og tilføje linket på &amarok;s <ulink url="http://amarok.kde.org/amarokwiki/index.php/Scripts"
>Wiki scriptside</ulink
>. For indgangen i kde-apps skal du bruge kategorien <ulink url="http://kde-apps.org/index.php?xcontentmode=56"
>&amarok; Scripter</ulink
>.</para>

</sect2>

</sect1>


</chapter>

