Skin.String und keymap.xml

  • Ich hab zwar keinen Plan was du da gerade versuchst, aber hast du dir mal die builtin-function Skin.SetString(string[,value])

    Zitat

    Pops up a keyboard dialog and allows the user to input a string which
    can be used in a label control elsewhere in the skin via the info tag
    Skin.String(string). If the value parameter is specified, then the
    keyboard dialog does not pop up, and the string is set directly.

    angeschaut?

  • vielleicht solte ich es erläutern.
    ich habe vor im skin eine playlist angeben zu können. das geht natürlich alles über skin. setfile und wird per skin.string abgerufen.
    nun ist es bei mir zu hause so, dass ich auf die tasten 0-9 auf der fb radiosender gelegt habe indem ich per [definition='3','0']keymap[/definition] und <one>PlayMedia(spezial://playlists/music/radio.m3u,playoffset=01)</one> (oder so ähnlich) den 1. bis 10. eintrag abspielen lasse. funktioniert auch sehr gut.
    jetzt dachte ich mir, wenn ich die playlist mal wechseln möchte, dann wäre es dich super, wenn man das direkt in xbmc einfach angibt und dann in der [definition='3','0']keymap[/definition] per PlayMedia($INFO(Skin.String(playlist),playoffset=01) abruft.
    ich hoffe das ist verständlich erklärt.
    bg

  • Hallo,

    Ginge das vielleicht mit:

    Zitat

    XBMC.ActivateWindow(windowid) Go a window specified by ''windowid. See the list of window IDs for the list of valid values. Not all ids will work on all themes.


    in der Keymap?
    Auf ein Custom Window und da mit onload ein Playmedia mit dem Sting?

    Grüße

  • Hallo,

    Auch wieder wahr. Aber da sollte ja ein leeres Dialogfenster reichen, wenns denn funktioniert.

    Ich würde da allerdings eher gleich ne Liste anlegen und dann halt das Fenster mit einer Taste starten und die Playliste auswählen.
    Aber meine Fernbedienung verdient auch den Namen dafür nicht :)

    Grüße

  • Zitat

    Hallo,

    Auch wieder wahr. Aber da sollte ja ein leeres Dialogfenster reichen, wenns denn funktioniert.

    Ich würde da allerdings eher gleich ne Liste anlegen und dann halt das Fenster mit einer Taste starten und die Playliste auswählen.
    Aber meine Fernbedienung verdient auch den Namen dafür nicht :)

    Grüße

    Mein Ziel ist es ja, dass man beim Musik hören so selten wie möglich den Fernseher braucht. Von daher fällt ne Liste flach, ausserdem hab ich ja ne Liste. Die Playlist! ;).
    Mal sehen was mir noch so einfällt.
    bg

  • Hallo,

    Viel mir auch noch ein als ich fertig war :) .
    Nur hab ich gaub immer noch nicht verstanden warum nicht einfach next Track auf eine Taste legst?

    Grüße

    das geht ja jetzt schon. wenn man aber schnell zur nummer 4 springen kann ist das für mich bedienkompfort! so kann ich meinen sohn sagen: möchtest du "radio teddy" hören, drückst du auf die 2.
    bg

  • Hallo,

    Zitat

    Von blauesgruen
    das geht ja jetzt schon. wenn man aber schnell zur nummer 4 springen kann ist das für mich bedienkompfort! so kann ich meinen sohn sagen: möchtest du "radio teddy" hören, drückst du auf die 2.

    Dachte ja nicht wirklich das es geht :) . Allerding das mit dem Offset kapier ich nicht so ganz (hab zwei einzelne genommen). Und komischerweise geht es auch nur mit einem Reload davor, sonst komme ich einmal zur zweiten aber nicht mehr zurück. Baue ich doch glatt vielleicht auch mal ein 8) .

    XML
    <?xml version="1.0" encoding="UTF-8"?>
    <window id="49" type="dialog">
    <onload>ReloadSkin()</onload>
    <onload>PlayMedia(special://skin/playlists/musicplaylists/ROCK-ANTENNE-Classic-Perlen.m3u)</onload>
    <controls>
    <visible>Player.HasAudio</visible>
    </controls>
    </window>


    Grüße

  • Wenn ich dich jetzt richtig verstanden habe, möchtest du also nur den Pfad zu der aktuellen Playlist ändern (damit du wie anschließend wie gewohnt über 0-9 in dieser neuen Playlist springen kannst)?! Und das ganze am Besten ohne eine größere Eingabe tätigen zu müssen bzw den Bildschirm eingeschaltet zu haben?! Kommt das so in etwa hin?

    Ich habe mal ganz kurz ein kleines Script geschrieben, bei dem man in einer beliebig langen Liste von Playlisten durchwechseln kann, die aktuelle Position durch eine Soundausgabe signalisiert wird und der Pfad zur Playlist in einen Skin.String geschrieben wird...

  • Wenn ich dich jetzt richtig verstanden habe, möchtest du also nur den Pfad zu der aktuellen Playlist ändern (damit du wie anschließend wie gewohnt über 0-9 in dieser neuen Playlist springen kannst)?! Und das ganze am Besten ohne eine größere Eingabe tätigen zu müssen bzw den Bildschirm eingeschaltet zu haben?! Kommt das so in etwa hin?

    Ich habe mal ganz kurz ein kleines Script geschrieben, bei dem man in einer beliebig langen Liste von Playlisten durchwechseln kann, die aktuelle Position durch eine Soundausgabe signalisiert wird und der Pfad zur Playlist in einen Skin.String geschrieben wird...

    das ist sehr nett! danke.
    wenn ich dich aber richtig verstanden habe, kann ich das auch per skin code realisieren. nicht ganz so schick und ohne den ton.
    mir geht es hauptsächlich darum, dass, wenn ich die playlist wechsle, dass ich das dann in der [definition='3','0']keymap[/definition].xml nicht anpassen muss. sondern, dass es dort durch angabe von skin.string automatisch übernommen wird.
    das funktioniert mit deinem script auch nicht oder?

    hier zum verständnis der code.
    button in den settings:

    Code
    <control type="button" id="1010">
    	<description>fb playlist for keyboard xml</description>
    	<width>840</width>
    	<align>left</align>
    	<label>Playlist</label>
    	<label2>$INFO[Skin.String(fb_playlist)]</label2>
    	<onclick>Skin.SetFile(fb_playlist,,special://MusicPlaylists/)</onclick>
    </control>


    auszug aus der [definition='3','0']keymap[/definition].xml:

    Code
    <one>PlayMedia(special://profile/playlists/music/radio1.m3u,playoffset=01)</one>
    <two>PlayMedia(special://profile/playlists/music/radio1.m3u,playoffset=02)</two>
    <three>PlayMedia(special://profile/playlists/music/radio1.m3u,playoffset=03)</three>
    <four>PlayMedia(special://profile/playlists/music/radio1.m3u,playoffset=04)</four>
    <five>PlayMedia(special://profile/playlists/music/radio1.m3u,playoffset=05)</five>
    <six>PlayMedia(special://profile/playlists/music/radio1.m3u,playoffset=06)</six>
    <seven>PlayMedia(special://profile/playlists/music/radio1.m3u,playoffset=07)</seven>
    <eight>PlayMedia(special://profile/playlists/music/radio1.m3u,playoffset=08)</eight>
    <nine>PlayMedia(special://profile/playlists/music/radio1.m3u,playoffset=09)</nine>
    <zero>PlayMedia(special://profile/playlists/music/radio1.m3u,playoffset=10)</zero>


    [infobox]hier sollte das special://profile/playlists/music/radio1.m3u durch $INFO[Skin.String(fb_playlist)] ersetzt werden können.[/infobox]


    Dachte ja nicht wirklich das es geht :) . Allerding das mit dem Offset kapier ich nicht so ganz (hab zwei einzelne genommen). Und komischerweise geht es auch nur mit einem Reload davor, sonst komme ich einmal zur zweiten aber nicht mehr zurück. Baue ich doch glatt vielleicht auch mal ein 8) .

    zb. playoffset=2 spielt den 2. eintrag aus der playlist ... usw.
    wenn ich dazu komme gucke ich mir das mit dem dialog mal genauer an.
    bg

  • wenn ich dich aber richtig verstanden habe, kann ich das auch per skin code realisieren. nicht ganz so schick und ohne den ton.

    mir geht es hauptsächlich darum, dass, wenn ich die playlist wechsle, dass ich das dann in der [definition='3','0']keymap[/definition].xml nicht anpassen muss. sondern, dass es dort durch angabe von skin.string automatisch übernommen wird.

    das funktioniert mit deinem script auch nicht oder?

    Das kann man mit Sicherheit auch direkt per Skinning bewerkstelligen... Davon habe ich allerdings nicht so die Peilung :D

    Ich hatte das jetzt so gedacht, das du das Script zB auf eine Taste legst, damit die Playlist wählst (kann man dann ja durch mehrere Tastendrücke durchschalten und die aktuelle Position wird durch einen Sound zurückgegeben) und du im Anschluss durch einen Tastendruck den durch das Script gesetzten Skin.String (also den Pfad zur Playlist) so in der Art...

    <four>PlayMedia(Skin.String(myPlaylistLabel),playoffset=04)</four>

    ...aufrufst. Ich weiß jetzt nicht, ob die obere Zeile so richtig ist... Das weißt du mit Sicherheit besser als ich...

    Den Sound habe ich nur eingebaut, damit man zB bei ausgeschaltetem Bildschirm direkt weiß, ob man nun Playlist 1,2,xyz gewählt hat... Den kannst du natürlich rausnehmen oder durch einen ansprechenderen Sound ersetzen... War nur so ne Idee...


    Gruß
    4

  • Ok, alles klar... Jetzt hab ichs dann auch verstanden :D

    Das würde ich dann auch einfach mit einem kleinen Script lösen... Mit der Playlist.py die jeweilige Playlist setzen und mit der call.py in der keyboard.xml die Nummer übergeben...

    <four>RunScript(C:\Users\...\call.py, 04)</four>
    <five>RunScript(C:\Users\...\call.py, 05)</five> usw...

    Das schöne bei der Verwendung von Skin.String ist, das die zuletzt gehörte Playlist auch nach einem Neustart erhalten bleibt da es ja in der gs.xml gespeichert wird...


    Du musst nur noch die call.txt in call.py ändern und in der Playlist.py die letzte Zeile einkommentieren damit das label gesetzt wird


    Ciao

  • cool danke!
    guck ich mir morgen mal an.
    bg

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!