2011年10月18日火曜日

WSH Panel Modで楽曲評価ボタン

   1:  var mouseOverState=fb.TitleFormat("%Rating%").Eval(true);
   2:  function on_playback_new_track(metadb){
   3:      mouseOverState=fb.TitleFormat("%Rating%").Eval(true);
   4:      window.repaint();
   5:  }
   6:  function on_size(){
   7:      ww = window.Width;
   8:      wh = window.Height;
   9:  }
  10:  function RGB(r, g, b) {
  11:      return (0xff000000 | (r << 16) | (g << 8) | (b));
  12:  }
  13:  function on_paint(gr) {
  14:      gr.SetTextRenderingHint(5);
  15:      var ww = window.Width;
  16:      var wh = window.Height;
  17:      if(ww/5<wh) var g_font = gdi.Font("Tahoma", ww/5, 0);
  18:      else var g_font = gdi.Font("Tahoma", wh, 0);
  19:      if(mouseOverState==0){
  20:          for(i=1; i<6; i++){
  21:              gr.DrawString("★", g_font, RGB(204,204,255), (ww/5.0)*(i-1), 0, ww/5, wh, 0x11005000);
  22:          }
  23:      }
  24:      else if(mouseOverState<=fb.TitleFormat("%Rating%").Eval(true)){
  25:          for(i=1; i<6; i++){
  26:              if(i<mouseOverState){
  27:                  gr.DrawString("★", g_font, RGB(255,204,0), (ww/5.0)*(i-1), 0, ww/5, wh, 0x11005000);
  28:              }
  29:              else if((mouseOverState<=i)&&(i<=fb.TitleFormat("%Rating%").Eval(true))&&(mouseOverState==fb.TitleFormat("%Rating%").Eval(true))){
  30:                  gr.DrawString("★", g_font, RGB(255,204,0), (ww/5.0)*(i-1), 0, ww/5, wh, 0x11005000);
  31:              }
  32:              else if((mouseOverState<=i)&&(i<=fb.TitleFormat("%Rating%").Eval(true))&&(mouseOverState!=fb.TitleFormat("%Rating%").Eval(true))){
  33:                  gr.DrawString("★", g_font, RGB(204,255,102), (ww/5.0)*(i-1), 0, ww/5, wh, 0x11005000);
  34:              }
  35:              else{
  36:                  gr.DrawString("★", g_font, RGB(102,153,204), (ww/5.0)*(i-1), 0, ww/5, wh, 0x11005000);
  37:              }
  38:          }
  39:      }
  40:      else{
  41:          for(i=1; i<6; i++){
  42:              if(i<=fb.TitleFormat("%Rating%").Eval(true)){
  43:                  gr.DrawString("★", g_font, RGB(255,204,0), (ww/5.0)*(i-1), 0, ww/5, wh, 0x11005000);
  44:              }
  45:              else if(i<=mouseOverState){
  46:                  gr.DrawString("★", g_font, RGB(255,255,0), (ww/5.0)*(i-1), 0, ww/5, wh, 0x11005000);
  47:              }
  48:              else{
  49:                  gr.DrawString("★", g_font, RGB(102,153,204), (ww/5.0)*(i-1), 0, ww/5, wh, 0x11005000);
  50:              }
  51:          }
  52:      }
  53:  }
  54:   
  55:  function on_mouse_lbtn_down(x, y) {
  56:      var WshShell = new ActiveXObject("WScript.Shell");
  57:      if (mouseOverState==0) WshShell.Run("foobar2000.exe \"/runcmd-playlist=Playback Statistics/Rating/<not set>\"");
  58:      else WshShell.Run("foobar2000.exe \"/runcmd-playlist=Playback Statistics/Rating/"+mouseOverState+"\"");
  59:  }
  60:   
  61:  function on_mouse_move(x, y) {
  62:      for(i=1; i<6; i++){
  63:          if(x<(ww/5.0)*i){
  64:              mouseOverState=i;
  65:              break;
  66:          }
  67:      }
  68:      if(x<ww/12.0) mouseOverState=0;
  69:      window.repaint();
  70:  }
  71:  function on_mouse_leave(){
  72:      mouseOverState=fb.TitleFormat("%Rating%").Eval(true);
  73:      window.repaint();
  74:  }

 

■動作例



0 件のコメント:

コメントを投稿