Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==PREPROCESSOR==
- // @import "%fb2k_profile_path%scripts\common.js"
- // @name "Album Art"
- // ==/PREPROCESSOR==
- var g_img;
- var g_text = '';
- var artist = '';
- var album = '';
- var title = '';
- var lfm_img = gdi.Image(images_path + "lastfm_red_small.gif");
- var g_tooltip = window.CreateTooltip();
- g_tooltip.Text = "last.fm track page";
- var g_textrender = gdi.CreateStyleTextRender();
- window.GetProperty("scale", "max");
- window.GetProperty("playinginfo", true);
- window.GetProperty("lastfminfo", true);
- window.GetProperty("id",0);
- on_item_focus_change();
- function on_size() {
- ww = window.Width;
- wh = window.Height;
- }
- function on_notify_data(name, data) {
- if (name == "playingtrack") {
- g_text = data;
- window.RepaintRect(0, wh - 70, ww, 70);
- }
- }
- function on_paint(gr) {
- gr.FillSolidRect(0, 0, ww, wh, g_backcolor);
- if (g_img) {
- scale(gr, g_img, 0, 0, ww, wh, window.GetProperty("scale"));
- } else {
- gr.GdiDrawText(g_metadb ? "[no image]" : "[no selection]", g_font, g_textcolor, 0, 0, ww, wh, DT_VCENTER | DT_CENTER | DT_WORDBREAK | DT_CALCRECT | DT_NOPREFIX);
- }
- if (!fb.IsPlaying) return;
- y_off = 16;
- g_textrender.OutLineText(g_textcolor, g_backcolor, 3);
- gr.SetTextRenderingHint(0);
- gr.SetSmoothingMode(4);
- gr.SetInterpolationMode(7);
- if (window.GetProperty("lastfminfo")) gr.DrawImage(lfm_img, ww-60, 8, 50, 18, 0, 0, 50, 18);
- if (g_text != "") {
- y_off = 0;
- g_textrender.RenderStringRect(gr, g_text, gdi.Font(font, 12, 1), 5, wh-22, ww-10, 14, 0x10305000);
- }
- if (window.GetProperty("playinginfo")) {
- g_textrender.RenderStringRect(gr, title, gdi.Font(font, 12, 1), 5, wh-70+y_off, ww-10, 14, 0x10305000);
- g_textrender.RenderStringRect(gr, album, gdi.Font(font, 12, 1), 5, wh-54+y_off, ww-10, 14, 0x10305000);
- g_textrender.RenderStringRect(gr, artist, gdi.Font(font, 12, 1), 5, wh-38+y_off, ww-10, 14, 0x10305000);
- }
- }
- function scale(gr, img, pos_x, pos_y, width, height, mth) {
- var s = mth == "max" ? Math.max(width / img.width, height / img.height) : Math.min(width / img.width, height / img.height);
- var nw = Math.round(img.width * s);
- var nh = Math.round(img.height * s);
- pos_x += Math.round((width - nw) / 2);
- pos_y += Math.round((height - nh) / 2);
- gr.DrawImage(img, pos_x, pos_y, nw, nh, 0, 0, img.width, img.height);
- }
- function on_playback_new_track() {
- g_metadb && g_metadb.Dispose();
- on_item_focus_change();
- artist = fb.TitleFormat("%artist%").EvalWithMetadb(g_metadb);
- album = fb.TitleFormat("%album%").EvalWithMetadb(g_metadb);
- title = fb.TitleFormat("%title%").EvalWithMetadb(g_metadb);
- if (window.GetProperty("lastfminfo")) window.NotifyOthers("getplayinginfo", [artist, title]);
- update_image();
- }
- function on_metadb_changed() {
- if(fb.IsPlaying) return;
- update_image();
- }
- function on_playback_stop(reason) {
- if (reason != 2) window.Repaint();
- }
- function update_image() {
- if(!g_metadb) return;
- is_embedded = null;
- g_img && g_img.Dispose();
- type = window.GetProperty("id");
- g_img = utils.GetAlbumArtEmbedded(g_metadb.rawpath, type);
- if(g_img) {
- is_embedded = true;
- window.Repaint();
- } else {
- utils.GetAlbumArtAsync(window.ID, g_metadb, type);
- }
- }
- function on_get_album_art_done(metadb, art_id, im, ip) {
- g_img_path = ip;
- g_img = im;
- window.Repaint();
- }
- function on_mouse_move(x,y) {
- if (window.GetProperty("playinginfo") && x > ww-60 && x < ww-10 && y > 8 && y < 26) {
- g_tooltip.Activate();
- window.SetCursor(IDC_HAND);
- } else {
- g_tooltip.Deactivate();
- window.SetCursor(IDC_ARROW);
- }
- }
- function on_mouse_lbtn_up(x, y) {
- if (window.GetProperty("playinginfo") && x > ww-60 && x < ww-10 && y > 8 && y < 26) {
- WshShell.run("http://www.last.fm/music/" + encodeURIComponent(artist) + "/_/" + encodeURIComponent(title));
- }
- }
- function on_mouse_lbtn_dblclk() {
- if(!g_metadb || !g_img) return;
- if(is_embedded) {
- fb.RunContextCommandWithMetadb("Open Containing Folder", g_metadb);
- } else {
- try {WshShell.Run("\"" + g_img_path + "\""); } catch(e) {}
- }
- }
- function on_mouse_rbtn_up(x, y) {
- var _menu = window.CreatePopupMenu();
- var idx;
- _menu.AppendMenuItem(MF_STRING, 1, "Refresh");
- _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
- _menu.AppendMenuItem(MF_STRING, 2, "Front cover");
- _menu.AppendMenuItem(MF_STRING, 3, "Back cover");
- _menu.AppendMenuItem(MF_STRING, 4, "Disc");
- _menu.AppendMenuItem(MF_STRING, 5, "Icon");
- _menu.AppendMenuItem(MF_STRING, 6, "Artist");
- _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
- _menu.AppendMenuItem(MF_STRING, 7, "Fill");
- _menu.CheckMenuItem(7, window.GetProperty("scale") == "max");
- _menu.AppendMenuItem(MF_STRING, 8, "Playing track info");
- _menu.CheckMenuItem(8, window.GetProperty("playinginfo"));
- _menu.AppendMenuItem(MF_STRING, 9, "Last.fm track info");
- _menu.CheckMenuItem(9, window.GetProperty("lastfminfo"));
- if(utils.IsKeyPressed(0x10)) {
- _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
- _menu.AppendMenuItem(MF_STRING, 99, "Properties");
- _menu.AppendMenuItem(MF_STRING, 100, "Configure...");
- }
- _menu.CheckMenuRadioItem(2, 6, window.GetProperty("id")+2);
- idx = _menu.TrackPopupMenu(x, y);
- switch(idx) {
- case 1:
- update_image();
- break;
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- window.SetProperty("id", idx-2);
- update_image();
- break;
- case 7:
- window.SetProperty("scale", window.GetProperty("scale") == "max" ? "min" : "max");
- window.Repaint();
- break;
- case 8:
- window.SetProperty("playinginfo", !window.GetProperty("playinginfo"));
- window.RepaintRect(0, wh - 70, ww, 70);
- break;
- case 9:
- window.SetProperty("lastfminfo", !window.GetProperty("lastfminfo"));
- if (fb.IsPlaying && window.GetProperty("lastfminfo")) window.NotifyOthers("getplayinginfo", [artist, title]);
- if (!window.GetProperty("lastfminfo")) g_text = "";
- window.Repaint();
- break;
- case 99:
- window.ShowProperties();
- break;
- case 100:
- window.ShowConfigure();
- break;
- }
- _menu.Dispose();
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement