Shoutcast WSH Pannel Mod Skript

Begonnen von Foo Foo, 16. August 2010, 22:17:39

Vorheriges Thema - Nächstes Thema

Foo Foo

Brauche Hilfe mit WSH Pannel Mod!

Habe mir das http://inappropriatenudging.deviantart.com/art/MonoLite-Plus-Mod-152653819
Skin mal angeschaut und ich würde gerne die Shoutcast Suchfunktion als eigenständigen Textbutton
umschreiben für das WSH Pannel!

etwa so...
RMT - Qualitätseinstellungen Genre Mood
LMT - Shoutcast Auswahl sowie Eingabefeld

Was muß ich alles rauslöschen?
Oder kann mir jemand das Skript umschreiben?


// ==PREPROCESSOR==
// @import "%fb2k_path%skin\mono_lite_2\scripts\common.js"
// @import "%fb2k_path%skin\mono_lite_2\scripts\tooltip_buttons.js"
// ==/PREPROCESSOR==

window.GetProperty("mode",1);
window.GetProperty("quality",5);
window.GetProperty("genre",1);
window.GetProperty("mood",0);

//Refresh on track change
on_item_focus_change();

function on_paint(gr){
var FP = fb.ComponentPath.replace("components","skin");
var icon = gdi.Image(FP+ "mono_lite_2/menu.png");
gr.FillSolidRect(0,0,ww,wh,RGB(220,220,220));
gr.DrawImage(icon,0,0,20,18,0,0,20,18);
}

//Preferences
function on_mouse_rbtn_down(x, y) {
var basemenu = window.CreatePopupMenu();
    var child1 = window.CreatePopupMenu();
    var ret;

    basemenu.AppendMenuItem(MF_STRING, 6, "Show toolbars");
    basemenu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    basemenu.AppendMenuItem(MF_STRING, 2, "Compact menu");
    basemenu.AppendMenuItem(MF_STRING, 1, "Full menu");
    basemenu.CheckMenuRadioItem(1, 2, window.GetProperty("mode"));
    basemenu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    basemenu.AppendMenuItem(MF_STRING | MF_POPUP, child1.ID, "Shoutcast");
   
    child1.AppendMenuItem(MF_STRING, 3, "Search by Genre");
    child1.AppendMenuItem(MF_STRING, 4, "Search by Mood");
    child1.CheckMenuItem(3, window.GetProperty("genre"));
    child1.CheckMenuItem(4, window.GetProperty("mood"));
    child1.AppendMenuItem(MF_SEPARATOR, 0, 0);
    child1.AppendMenuItem(MF_STRING, 5, "Any quality");
    child1.AppendMenuItem(MF_STRING, 999, "Broadband");
    child1.AppendMenuItem(MF_STRING, 128, "128 kpbs");
    child1.AppendMenuItem(MF_STRING, 56, "56 kpbs");
    child1.AppendMenuItem(MF_STRING, 28, "28 kpbs");
    child1.CheckMenuRadioItem(5, 128, window.GetProperty("quality"));
   
    var ret = basemenu.TrackPopupMenu(x, y);
if (ret == 0) return;
switch (ret) {
case 1:
        window.SetProperty("mode",1);
break;
case 2:
window.SetProperty("mode",2);
break;
    case 3:
        window.GetProperty("genre") == 0 ? window.SetProperty("genre", 1) : window.SetProperty("genre", 0);
break;
    case 4:
        window.GetProperty("mood") == 0 ? window.SetProperty("mood", 1) : window.SetProperty("mood", 0);
break;
case 5:
window.SetProperty("quality",5);
break;
    case 6:
        fb.RunMainMenuCommand("View/Show toolbars");
        break;
    case 999:
window.SetProperty("quality",999);
break;
    case 128:
window.SetProperty("quality",128);
break;
    case 56:
window.SetProperty("quality",56);
break;
    case 28:
window.SetProperty("quality",28);
break;
    }       
}

function on_mouse_mbtn_down(x, y) {
    window.ShowConfigure();
}

//Fixed coords for menu
function on_mouse_lbtn_down(x, y) {
    draw_menu(0,19)
}

function draw_menu(x, y) {
    if(window.GetProperty("mode") == 1) {
        var basemenu = window.CreatePopupMenu();
       
        var child1 = window.CreatePopupMenu(); //File
        var child2 = window.CreatePopupMenu(); //Edit
        var child3 = window.CreatePopupMenu(); //View
        var child4 = window.CreatePopupMenu(); //Playback
        var child5 = window.CreatePopupMenu(); //Library
        var child6 = window.CreatePopupMenu(); //Help

        var menuman1 = fb.CreateMainMenuManager();
        var menuman2 = fb.CreateMainMenuManager();
        var menuman3 = fb.CreateMainMenuManager();
        var menuman4 = fb.CreateMainMenuManager();
        var menuman5 = fb.CreateMainMenuManager();
        var menuman6 = fb.CreateMainMenuManager();

        basemenu.AppendMenuItem(MF_STRING | MF_POPUP, child1.ID, "File");
        basemenu.AppendMenuItem(MF_STRING | MF_POPUP, child2.ID, "Edit");
        basemenu.AppendMenuItem(MF_STRING | MF_POPUP, child3.ID, "View");
        basemenu.AppendMenuItem(MF_STRING | MF_POPUP, child4.ID, "Playback");
        basemenu.AppendMenuItem(MF_STRING | MF_POPUP, child5.ID, "Library");
        basemenu.AppendMenuItem(MF_STRING | MF_POPUP, child6.ID, "Help");

        menuman1.Init("file");
        menuman2.Init("edit");
        menuman3.Init("View");
        menuman4.Init("playback");
        menuman5.Init("library");
        menuman6.Init("help");

        menuman1.BuildMenu(child1, 1, 1000);
        menuman2.BuildMenu(child2, 1001, 1000);
        menuman3.BuildMenu(child3, 2001, 1000);
        menuman4.BuildMenu(child4, 3001, 1000);
        menuman5.BuildMenu(child5, 4001, 1000);
        menuman6.BuildMenu(child6, 5001, 1000);

        ret = 0;
        ret = basemenu.TrackPopupMenu(x, y);

        //fb.trace(ret);
        switch (true){
            case (ret >= 1 && ret <= 1000):
                menuman1.ExecuteByID(ret - 1);
                break;
            case (ret >= 1001 && ret <= 2000):
                menuman2.ExecuteByID(ret - 1001);
                break;
            case (ret >= 2001 && ret <= 3000):
                menuman3.ExecuteByID(ret - 2001);
                break;
            case (ret >= 3001 && ret <= 4000):
                menuman4.ExecuteByID(ret - 3001);
                break;
            case (ret >= 4001 && ret <= 5000):
                menuman5.ExecuteByID(ret - 4001);
                break;
            case (ret >= 5001 && ret <= 6000):
                menuman6.ExecuteByID(ret - 5001);
                break;
        }
        basemenu.Dispose();
        menuman1.Dispose();
        menuman2.Dispose();
        menuman3.Dispose();
        menuman4.Dispose();
        menuman5.Dispose();
        menuman6.Dispose();
    }

    else{
        //Compact menu
        var basemenu = window.CreatePopupMenu();
        var child1 = window.CreatePopupMenu();
        var child2 = window.CreatePopupMenu();
        var child3 = window.CreatePopupMenu();
        var child4 = window.CreatePopupMenu();
        var child5 = window.CreatePopupMenu();
        var child6 = window.CreatePopupMenu();
        var ret;
        var mood_array;
        var genre_array;
       
        //Split multiline tags into an array
        function split_tag(t) {
            var splitstrings = [", ",",","; "," - ","/"," "];
            var tag=fb.TitleFormat("$caps(%"+t+"%)").EvalWithMetadb(g_metadb);
            var foo = -1;
            do {
                foo++;
                var splitcheck = tag.indexOf(splitstrings[foo]);
            } while (splitcheck == -1 && foo <tag.length)
            return tag.split(splitstrings[foo]);
        }
       
        //Shoutcast stations to display when metadata unavailable
        function default_items(g,m){
            if (g || m) return;
            else {
            child4.AppendMenuItem(MF_STRING, 52, "Search for Pop stations");
            child4.AppendMenuItem(MF_STRING, 53, "Search for Hip-Hop stations");
            child4.AppendMenuItem(MF_STRING, 54, "Search for Indie stations");
            child4.AppendMenuItem(MF_STRING, 55, "Search for Rock stations");
            child4.AppendMenuItem(MF_SEPARATOR, 0, 0);
            }
        }
       
        //Builds a shoutcast menu entry for each value in a tag
        function scast_menu(tag,menuid) {
            if (g_metadb) {
                if (fb.TitleFormat("$caps(%"+tag+"%)").EvalWithMetadb(g_metadb) != "?") {
                    var s_tag = split_tag(tag);
                    var foo = -1;
                    do {
                        foo++;
                        child4.AppendMenuItem(MF_STRING,menuid++,"Search for "+s_tag[foo]+" stations");
                    } while (foo < s_tag.length-1)
                    child4.AppendMenuItem(MF_SEPARATOR, 0, 0);
                    return s_tag
                }
            }
        }
       
        //this is messy, but it works
        function scast_menu_run(t_array,id) {
            if(ret >= id && ret <= id+999){
                var shout;
                var url = "http://www.shoutcast.com/";
                var bitrate = "&searchCrit=advanced&maxbitrate="+window.GetProperty("quality")+"&mode=bitrate";
                if (t_array == genre_array) {
                    if(window.GetProperty("quality") == 5) {
                        shout = url+"radio/"+encodeURIComponent(t_array[ret-id]);
                    }
                    else {
                        shout = url+"directory/search_results.jsp?s=&sgenre="+encodeURIComponent(t_array[ret-id])+bitrate;
                    }
                }
                else {
                    if(window.GetProperty("quality") == 5) {
                        shout = url+"Internet-Radio/"+encodeURIComponent(t_array[ret-id]);
                    }
                    else {
                        shout = url+"directory/search_results.jsp?s="+encodeURIComponent(t_array[ret-id])+bitrate;
                    }
                }
                WshShell.Run(shout);
        }
    }

        basemenu.AppendMenuItem(MF_STRING, 1, "Play File...");
        if (utils.CheckComponent("foo_cdda", true)) {
            basemenu.AppendMenuItem(MF_STRING, 2, "Play Audio CD...");}
        basemenu.AppendMenuItem(MF_SEPARATOR, 0, 0);
        basemenu.AppendMenuItem(MF_STRING | MF_POPUP, child1.ID, "Library");
        basemenu.AppendMenuItem(MF_STRING | MF_POPUP, child2.ID, "Playlists");
        basemenu.AppendMenuItem(MF_SEPARATOR, 0, 0);
        if (utils.CheckComponent("foo_lastfm_radio", true)) {
            basemenu.AppendMenuItem(MF_STRING | MF_POPUP, child3.ID, "Last.fm");}
        basemenu.AppendMenuItem(MF_STRING | MF_POPUP, child4.ID, "Shoutcast");
        if (utils.CheckComponent("foo_dop", true)){
            basemenu.AppendMenuItem(MF_SEPARATOR, 0, 0);
            basemenu.AppendMenuItem(MF_STRING | MF_POPUP, child5.ID, "iPod");}

        child1.AppendMenuItem(MF_STRING, 10, "Add files...");
        child1.AppendMenuItem(MF_STRING, 11, "Add folder...");
        child1.AppendMenuItem(MF_STRING, 12, "Add location...");
        child1.AppendMenuItem(MF_SEPARATOR, 0, 0);
        child1.AppendMenuItem(MF_STRING, 13, "Music folders...");
       
        child2.AppendMenuItem(MF_STRING, 25, "Undo");
        child2.AppendMenuItem(MF_STRING, 26, "Redo");
        child2.AppendMenuItem(MF_SEPARATOR, 0, 0);
        child2.AppendMenuItem(MF_STRING, 20, "New playlist");
        child2.AppendMenuItem(MF_STRING, 21, "Load playlist...");
        child2.AppendMenuItem(MF_STRING, 22, "Save playlist...");
        child2.AppendMenuItem(MF_SEPARATOR, 0, 0);
        child2.AppendMenuItem(MF_STRING, 23, "Load XSPF playlist...");
        child2.AppendMenuItem(MF_STRING, 24, "Save XSPF playlist...");

        child3.AppendMenuItem(MF_STRING, 30, "Open a custom station...");
        child3.AppendMenuItem(MF_SEPARATOR, 0, 0);
        child3.AppendMenuItem(MF_STRING, 31, "Personal Last.fm radio");
        child3.AppendMenuItem(MF_STRING, 32, "Recommended Last.fm radio");
        child3.AppendMenuItem(MF_STRING, 33, "Neighbours' Last.fm radio");
        child3.AppendMenuItem(MF_STRING, 34, "Playlist Last.fm radio");
        child3.AppendMenuItem(MF_SEPARATOR, 0, 0);
        child3.AppendMenuItem(MF_STRING, 35, "Friends of Foobar2000 group radio");

        child5.AppendMenuItem(MF_STRING, 47, "Load library");
        child5.AppendMenuItem(MF_SEPARATOR, 0, 0);
        child5.AppendMenuItem(MF_STRING, 40, "Synchronize...");
        child5.AppendMenuItem(MF_STRING, 41, "Send playlists...");
        child5.AppendMenuItem(MF_STRING, 42, "Manage contents...");
        child5.AppendMenuItem(MF_SEPARATOR, 0, 0);
        child5.AppendMenuItem(MF_STRING, 43, "Properties...");
        child5.AppendMenuItem(MF_SEPARATOR, 0, 0);
        child5.AppendMenuItem(MF_STRING, 44, "Eject");

        child4.AppendMenuItem(MF_STRING, 50, "Open a custom station...");
        child4.AppendMenuItem(MF_SEPARATOR, 0, 0);
         if(window.GetProperty("genre") == 1) {
            g_id = 1001;
            genre_array = scast_menu("genre",g_id);
        }
        if(window.GetProperty("mood") == 1) {
            m_id = 2001;
            mood_array = scast_menu("mood",m_id);
        }
        default_items(genre_array,mood_array);
        child4.AppendMenuItem(MF_STRING, 51, "Most popular stations");

        var ret = basemenu.TrackPopupMenu(x, y);
        if (ret == 0) return;
        switch (ret) {
        case 1:
            fb.RunMainMenuCommand("File/Open...");
            break;
        case 2:
            fb.RunMainMenuCommand("File/Open Audio CD...");
            break;
        case 3:
            fb.RunMainMenuCommand("Library/Album List");
            break;       
        case 10:
            fb.RunMainMenuCommand("File/Add Files...");
            break;
        case 11:
            fb.RunMainMenuCommand("File/Add Folder...");
            break;
        case 12:
            fb.RunMainMenuCommand("File/Add Location...");
            break;
        case 13:
            fb.RunMainMenuCommand("Library/Configure");
            break;       
        case 20:
            fb.RunMainMenuCommand("File/New Playlist");
            break;
        case 21:
            fb.RunMainMenuCommand("File/Load Playlist...");
            break;
        case 22:
            fb.RunMainMenuCommand("File/Save Playlist...");
            break;
        case 23:
            fb.RunMainMenuCommand("Library/Load XSPF Playlist...");
            break;
        case 24:
            fb.RunMainMenuCommand("Library/Save to XSPF Playlist...");
            break;   
        case 25:
            fb.RunMainMenuCommand("Edit/Undo");
            break;
        case 26:
            fb.RunMainMenuCommand("Edit/Redo");
            break;   
        case 30:
            fb.RunMainMenuCommand("File/Open Last.fm Radio Station/A custom Last.fm station.");
            break;         
        case 31:
            fb.RunMainMenuCommand("File/Open Last.fm Radio Station/Open Your personal Last.fm radio.");
            break; 
        case 32:
            fb.RunMainMenuCommand("File/Open Last.fm Radio Station/Open Your recommended Last.fm radio.");
            break; 
        case 33:
            fb.RunMainMenuCommand("File/Open Last.fm Radio Station/Open Your neighbours' Last.fm radio.");
            break; 
        case 34:
            fb.RunMainMenuCommand("File/Open Last.fm Radio Station/Open Your playlist Last.fm radio.");
            break; 
        case 35:
            fb.RunMainMenuCommand("File/Open Last.fm Radio Station/Open Friends of foobar2000 Last.fm group.");
            break; 
        case 40:
            fb.RunMainMenuCommand("File/iPod/Synchronise...");
            break;
        case 41:
            fb.RunMainMenuCommand("File/iPod/Send playlists...");
            break;
        case 42:
            fb.RunMainMenuCommand("File/iPod/Manage contents");
            break;
        case 43:
            fb.RunMainMenuCommand("File/iPod/Properties");
            break;
        case 44:
            fb.RunMainMenuCommand("File/iPod/Eject");
            break;
        case 47:
            fb.RunMainMenuCommand("File/iPod/Load library");
            break;
        case 50:
            text_input_box2("Shoutcast Radio","Search for a Shoutcast station...")
            break; 
        case 51:   
            var shout = "http://www.shoutcast.com/most-popular-radio-stations";
            WshShell.Run(shout);
            break;
        case 52:
            var shout = "http://www.shoutcast.com/radio/pop";
            WshShell.Run(shout);
            break;
        case 53:
            var shout = "http://www.shoutcast.com/radio/hip-hop";
            WshShell.Run(shout);
            break;
        case 54:
            var shout = "http://www.shoutcast.com/radio/indie";
            WshShell.Run(shout);
            break;
        case 55:
            var shout = "http://www.shoutcast.com/radio/rock";
            WshShell.Run(shout);
            break;
        default:
            if(window.GetProperty("genre") == 1) {scast_menu_run(genre_array,g_id);}
            if(window.GetProperty("mood") == 1) {scast_menu_run(mood_array,m_id);}
            break;
        }
        basemenu.Dispose();
        child1.Dispose();
        child2.Dispose();
        child3.Dispose();
        child4.Dispose();
        child5.Dispose();
        child6.Dispose();
    }
}

function on_size() {
    ww = window.Width;
    wh = window.Height;
}

function on_playback_new_track() {
on_item_focus_change();
}