home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 June / 06_02.iso / bonus / winamp3 / wa3install_beta3.exe / Skins / Default.wal / Scripts / sysfunc.m < prev    next >
Encoding:
Text File  |  2002-02-07  |  6.5 KB  |  229 lines

  1. /*--------------------------------------------------------------------
  2.  System functions.
  3.  
  4.  This scripts handles various system functions, like toggling of some
  5.  configuration options (crossfading for example), and temporary output
  6.  in the song ticker (volume, seek, clicks on the player buttons).
  7. --------------------------------------------------------------------*/
  8.  
  9. #include </lib/std.mi>
  10. #include </lib/config.mi>
  11.  
  12. Function setTempText(String txt);
  13. Function emptyTempText();
  14.  
  15. Global Text Songticker;
  16. Global Slider Volbar, Seeker, SeekGhost;
  17. Global Timer Songtickertimer, Wobbler;
  18. Global Int WobblerWay;
  19.  
  20. Class GuiObject HintObject;
  21. Class ToggleButton HintToggleButton;
  22.  
  23. Global HintObject Play, Stop, Previous, Next, Pause, Thinger, Open, Eq, Ml, Pl;
  24. Global HintToggleButton ToggleXFade, ToggleShuffle, ToggleRepeat;
  25.  
  26. Class ConfigAttribute ToggleConfigAttribute;
  27. Global ToggleConfigAttribute attr_repeat, attr_shuffle, attr_crossfade;
  28.  
  29. System.onScriptUnloading() {
  30.   delete Songtickertimer;
  31.   delete Wobbler;
  32. }
  33.  
  34. System.onScriptLoaded() {
  35.  
  36.   // Timers won't start until .start(); is called
  37.   Songtickertimer = new Timer;
  38.   Songtickertimer.setDelay(1000);
  39.  
  40.   Layout mainnormal = getContainer("Main").getLayout("Normal");
  41.  
  42.   // Get buttons
  43.   ToggleXFade = mainnormal.getObject("Crossfade");
  44.   ToggleShuffle = mainnormal.getObject("Shuffle");
  45.   ToggleRepeat = mainnormal.getObject("Repeat");
  46.  
  47.   // Get songticker, Volbar & Seeker
  48.   Songticker = mainnormal.getObject("Songticker");
  49.   Volbar = mainnormal.getObject("Volume");
  50.   Seeker = mainnormal.getObject("Seeker");
  51.   SeekGhost = mainnormal.getObject("SeekerGhost");
  52.  
  53.   // Get Various buttons
  54.   Play = mainnormal.getObject("Play");
  55.   Pause = mainnormal.getObject("Pause");
  56.   Stop = mainnormal.getObject("Stop");
  57.   Next = mainnormal.getObject("Next");
  58.   Previous = mainnormal.getObject("Previous");
  59.   Thinger = mainnormal.getObject("Thinger");
  60.   Open = mainnormal.getObject("Eject");
  61.  
  62.   Eq = mainnormal.getObject("Eq");
  63.   Ml = mainnormal.getObject("Ml");
  64.   Pl = mainnormal.getObject("Pl");
  65.  
  66.   // Set buttons status
  67.   ConfigItem item;
  68.   item = Config.getItem("Playlist editor");
  69.   if (item != NULL) {
  70.     attr_repeat = item.getAttribute("repeat");
  71.     attr_shuffle = item.getAttribute("shuffle");
  72.   }
  73.   item = Config.getItem("Crossfader");
  74.   if (item != NULL) {
  75.     attr_crossfade = item.getAttribute("Enabled");
  76.   } 
  77.   
  78.   if (ToggleXFade != NULL && attr_crossfade != NULL) ToggleXFade.setActivated(StringToInteger(attr_crossfade.getData()));
  79.   if (ToggleShuffle != NULL && attr_shuffle != NULL) ToggleShuffle.setActivated(StringToInteger(attr_shuffle.getData()));
  80.   if (ToggleRepeat != NULL && attr_repeat != NULL) ToggleRepeat.setActivated(StringToInteger(attr_repeat.getData()));
  81.  
  82.   if (SeekGhost != NULL)
  83.     SeekGhost.setAlpha(0);
  84.  
  85.   if (Thinger != NULL) {
  86.     Wobbler = new Timer;
  87.     Wobbler.setDelay(50);
  88.   }
  89.  
  90. }
  91.  
  92. Songtickertimer.onTimer() {
  93.   Songticker.setText("");
  94.   stop();
  95. }
  96.  
  97. Volbar.onSetPosition(int p) {
  98.   Float f;
  99.   f = p;
  100.   f = f / 255 * 100;
  101.   setTempText("Volume: " + System.integerToString(f) + "%");
  102. }
  103.  
  104. Volbar.onSetFinalPosition(int p) {
  105.   Songticker.setText("");
  106. }
  107.  
  108. Seeker.onSetPosition(int p) {
  109.   if (!SeekGhost) {
  110.     Float f;
  111.     f = p;
  112.     f = f / 255 * 100;
  113.     Float len = getPlayItemLength();
  114.     if (len != 0) {
  115.       int np = len * f / 100;
  116.       setTempText("Seek to " + integerToTime(np) + " / " + integerToTime(len) + " (" + integerToString(f) + "%)");
  117.     }
  118.   }
  119. }
  120.  
  121. SeekGhost.onSetPosition(int p) {
  122.   if (getalpha() == 0) setAlpha(128);
  123.   Float f;
  124.   f = p;
  125.   f = f / 255 * 100;
  126.   Float len = getPlayItemLength();
  127.   if (len != 0) {
  128.     int np = len * f / 100;
  129.     setTempText("Seek to " + integerToTime(np) + " / " + integerToTime(len) + " (" + integerToString(f) + "%)");
  130.   }
  131. }
  132.  
  133. SeekGhost.onsetfinalposition(int p) {
  134.   Songticker.setText("");
  135.   SeekGhost.setAlpha(0);
  136. }
  137.  
  138. HintToggleButton.onLeftButtonDown(int x, int y) {
  139.   if (HintToggleButton == ToggleXFade) setTempText("Toggle crossfade");
  140.   else if (HintToggleButton == ToggleRepeat) setTempText("Toggle repeat");
  141.   else if (HintToggleButton == ToggleShuffle) setTempText("Toggle shuffle");
  142. }
  143.  
  144. HintToggleButton.onLeftButtonUp(int x, int y) {
  145.   emptyTempText();
  146. }
  147.  
  148. HintToggleButton.onToggle(int onoff) {
  149.   String cmd, txt;
  150.   Wac dest;
  151.   ConfigAttribute item;
  152.   item = NULL;
  153.   if (HintToggleButton == ToggleXFade) {
  154.     item = attr_crossfade;
  155.     txt = "Crossfade";
  156.   } else if (HintToggleButton == ToggleRepeat) {
  157.     item = attr_repeat;
  158.     txt = "Repeat";
  159.   } else if (HintToggleButton == ToggleShuffle) {
  160.     item = attr_shuffle;
  161.     txt = "Shuffle";
  162.   }
  163.   if (item != NULL) {
  164.     item.setData(IntegerToString(onoff));
  165.     String s;
  166.     if (onoff) s = "on"; else s = "off";
  167.     setTempText(txt + " now " + s);
  168.   }
  169. }
  170.  
  171. HintObject.onLeftButtonDown(int x, int y) {
  172.   if (HintObject == Play) setTempText("Play");
  173.   else if (HintObject == Stop) setTempText("Stop");
  174.   else if (HintObject == Pause) setTempText("Pause");
  175.   else if (HintObject == Next) setTempText("Next");
  176.   else if (HintObject == Previous) setTempText("Previous");
  177.   else if (HintObject == Thinger) setTempText("Thinger");
  178.   else if (HintObject == Open) setTempText("Open");
  179.   else if (HintObject == Eq) setTempText("Equalizer");
  180.   else if (HintObject == ML) setTempText("Media Library");
  181.   else if (HintObject == Pl) setTempText("Playlist Editor");
  182. }
  183.  
  184. HintObject.onLeftButtonUp(int x, int y) {
  185.   emptyTempText();
  186. }
  187.  
  188. Thinger.onEnterArea() {
  189.  WobblerWay = 1;
  190.  Wobbler.start();
  191. }
  192.  
  193. Thinger.onLeaveArea() {
  194.  Wobbler.stop();
  195.  setAlpha(255);
  196. }
  197.  
  198. Wobbler.onTimer() {
  199.   int curalpha = Thinger.getAlpha() + WobblerWay * 24;
  200.   if (curalpha <= 96) { curalpha = 96; WobblerWay = -WobblerWay; }
  201.   if (curalpha > 255) { curalpha = 255; WobblerWay = -WobblerWay; }
  202.   Thinger.setAlpha(curalpha);
  203. }
  204.  
  205. setTempText(String txt) {
  206.   Songtickertimer.stop();
  207.   Songticker.setText(txt);
  208.   Songtickertimer.start();
  209. }
  210.  
  211. emptyTempText() {
  212.   Songticker.setText("");
  213.   Songtickertimer.stop();
  214. }
  215.  
  216. Songticker.onNotify(String s1, String s2, int i1, int i2) {
  217.   setTempText(s1);
  218. }
  219.  
  220. ToggleConfigAttribute.onDataChanged() {
  221.   ToggleButton t = NULL;
  222.   if (ToggleConfigAttribute == attr_crossfade) t = ToggleXFade;
  223.   else if (ToggleConfigAttribute == attr_shuffle) t = ToggleShuffle;
  224.   else if (ToggleConfigAttribute == attr_repeat) t = ToggleRepeat;
  225.   if (t != NULL)
  226.     t.setActivated(StringToInteger(getData()));
  227. }
  228.  
  229.