diff options
Diffstat (limited to 'Src/Wasabi/Lib/std.mi')
-rw-r--r-- | Src/Wasabi/Lib/std.mi | 2778 |
1 files changed, 2778 insertions, 0 deletions
diff --git a/Src/Wasabi/Lib/std.mi b/Src/Wasabi/Lib/std.mi new file mode 100644 index 00000000..dac8d122 --- /dev/null +++ b/Src/Wasabi/Lib/std.mi @@ -0,0 +1,2778 @@ +//---------------------------------------------------------------------------------------------------------------- +// std.mi +// +// standard definitions for internal objects +//---------------------------------------------------------------------------------------------------------------- + +#ifndef __STD_MI +#define __STD_MI + +#define MC_TARGET "Winamp 5.66 (skin version 1.36)" +#define VCPU_VERSION 2 + +#define deprecated // + +// GUIDS +extern class @{51654971-0D87-4a51-91E3-A6B53235F3E7}@ @{00000000-0000-0000-0000-000000000000}@ Object; +extern class @{D6F50F64-93FA-49b7-93F1-BA66EFAE3E98}@ Object _predecl System; +extern class @{E90DC47B-840D-4ae7-B02C-040BD275F7FC}@ Object Container; +deprecated extern class @{00C074A0-FEA2-49a0-BE8D-FABBDB161640}@ Object Wac; +extern class @{B2023AB5-434D-4ba1-BEAE-59637503F3C6}@ Object &List; +extern class @{87C65778-E743-49fe-85F9-09CC532AFD56}@ Object &BitList; +extern class @{38603665-461B-42a7-AA75-D83F6667BF73}@ Object ⤅ +extern class @{F4787AF4-B2BB-4ef7-9CFB-E74BA9BEA88D}@ Object &PopupMenu; +extern class @{3A370C02-3CBF-439f-84F1-86885BCF1E36}@ Object &Region; +extern class @{5D0C5BB6-7DE1-4b1f-A70F-8D1659941941}@ Object &Timer; +deprecated extern class @{A5376FA1-4E94-411a-83F6-05EC5EEA5F0A}@ Object &FeedWatcher; +extern class @{4EE3E199-C636-4bec-97CD-78BC9C8628B0}@ Object &GuiObject; +extern class @{45BE95E5-2072-4191-935C-BB5FF9F117FD}@ GuiObject &Group; +extern class @{60906D4E-537E-482e-B004-CC9461885672}@ Group &Layout; +extern class @{403ABCC0-6F22-4bd6-8BA4-10C829932547}@ GuiObject &WindowHolder; +extern class @{97AA3E4D-F4D0-4fa8-817B-0AF22A454983}@ GuiObject &ComponentBucket; +extern class @{64E4BBFA-81F4-49d9-B0C0-A85B2EC3BCFD}@ GuiObject &Edit; +extern class @{62B65E3F-375E-408d-8DEA-76814AB91B77}@ GuiObject &Slider; +extern class @{CE4F97BE-77B0-4e19-9956-D49833C96C27}@ GuiObject &Vis; +extern class @{A8C2200D-51EB-4b2a-BA7F-5D4BC65D4C71}@ GuiObject &Browser; +extern class @{8D1EBA38-489E-483e-B960-8D1F43C5C405}@ GuiObject &EqVis; +extern class @{0F08C940-AF39-4b23-80F3-B8C48F7EBB59}@ GuiObject &Status; +extern class @{EFAA8672-310E-41fa-B7DC-85A9525BCB4B}@ GuiObject &Text; +extern class @{7DFD3244-3751-4e7c-BF40-82AE5F3ADC33}@ GuiObject &Title; +extern class @{5AB9FA15-9A7D-4557-ABC8-6557A6C67CA9}@ GuiObject &Layer; +extern class @{698EDDCD-8F1E-4fec-9B12-F944F909FF45}@ GuiObject &Button; +extern class @{6B64CD27-5A26-4c4b-8C59-E6A70CF6493A}@ Layer &AnimatedLayer; +extern class @{6DCB05E4-8AC4-48c2-B193-49F0910EF54A}@ Layer &AlbumArtLayer; +extern class @{B4DCCFFF-81FE-4bcc-961B-720FD5BE0FFF}@ Button &ToggleButton; +extern class @{01E28CE1-B059-11d5-979F-E4DE6F51760A}@ GuiObject &GroupList; +extern class @{80F0F8BD-1BA5-42a6-A093-3236A00C8D4A}@ Group &CfgGroup; +deprecated extern class @{CDCB785D-81F2-4253-8F05-61B872283CFA}@ GuiObject &QueryList; +extern class @{9B2E341B-6C98-40fa-8B85-0C1B6EE89405}@ GuiObject &MouseRedir; +extern class @{36D59B71-03FD-4af8-9795-0502B7DB267A}@ GuiObject &DropDownList; +extern class @{7FD5F210-ACC4-48df-A6A0-5451576CDC76}@ GuiObject &LayoutStatus; +extern class @{B5BAA535-05B3-4dcb-ADC1-E618D28F6896}@ GuiObject &TabSheet; +extern class @{6129FEC1-DAB7-4d51-9165-01CA0C1B70DB}@ GuiObject &GuiList; +extern class @{D59514F7-ED36-45e8-980F-3F4EA0522CD9}@ GuiObject &GuiTree; +extern class @{9B3B4B82-667A-420e-8FFC-794115809C02}@ Object &TreeItem; +deprecated extern class @{1D8631C8-80D0-4792-9F98-BD5D36B49136}@ GuiObject &MenuButton; +extern class @{C7ED3199-5319-4798-9863-60B15A298CAA}@ GuiObject &CheckBox; +deprecated extern class @{2D2D1376-BE0A-4CB9-BC0C-57E6E4C999F5}@ GuiObject &Form; +extern class @{E2BBC14D-84F6-4173-BDB3-B2EB2F665550}@ GuiObject &Frame; // Winamp 5.5 +extern class @{73C00594-961F-401B-9B1B-672427AC4165}@ GuiObject &Menu; // Winamp 5.52 + +deprecated define Component WindowHolder + +#ifndef true +#define true 1 +#endif +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef false +#define false 0 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +// class tree member functions & events + +//***************************************************************************** +// Object CLASS +//***************************************************************************** +/** + Object Class. + + @short This is the base class from which all other classes inherit. + @author Nullsoft Inc. + @ver 1.0 +*/ + +/** + getClassName() + + Returns the class name for the object. + + @ret The class name. +*/ +extern String Object.getClassName(); + +/** + getId() + +*/ +extern String Object.getId(); + +/** + onNotify() + + @ret + @param command + @param param + @param a + @param b +*/ +extern Int Object.onNotify(String command, String param, int a, int b); + +//***************************************************************************** +// System CLASS +//***************************************************************************** +/** + System Class. + + @short The system class are basic system functions accessible to all. + @author Nullsoft Inc. + @ver 1.0 +*/ + +/** + onScriptLoaded() + + Hookable. Event happens when script has just finished being loaded. + No params. +*/ +extern System.onScriptLoaded(); + +/** + onScriptUnloading() + + Hookable. Event happens when script is going to be unloaded. + No params. +*/ +extern System.onScriptUnloading(); + +/** + onQuit() + + Hookable. Event happens when the user quits the application. + No params. +*/ +extern System.onQuit(); + +/** + onSetXuiParam(String param, String value) + + Hookable. Event happens when the script is in a group implementing + an xuiobject and a parameter has not been recognized by the group or + the embedded object. + + No params. +*/ +extern System.onSetXuiParam(String param, String value); + +/** + onKeyDown() + + Hookable. Event happens when the user presses a key on the keyboard. + + @param key The key that was pressed. +*/ +extern System.onKeyDown(String key); + +/** + onAccelerator() + + Hookable. Event happens when the user presses an accelerator key. + + @param action The action to perform (from locales) + @param section The locales section for the accelerator. + @param key The key, ie: "tab", "ctrl+a". +*/ +extern System.onAccelerator(String action, String section, String key); + +/** + onCreateLayout() + + Hookable. Event happens when a layout is created. + + @param _layout The layout that was just created. +*/ +extern System.onCreateLayout(Layout _layout); + +/** + onShowLayout() + + Hookable. Event happens when a layout is about to be shown. + This even only happens if the layout was previously hidden. + + @param _layout The layout that's about to be shown. +*/ +extern System.onShowLayout(Layout _layout); + +/** + onHideLayout() + + Hookable. + + @param _layout The layout that's about to be hidden. +*/ +extern System.onHideLayout(Layout _layout); + +/** + onViewPortChanged() + + Hookable. Event happens when the Windows viewport has changed. + Note: The monitor Winamp is currently on may not be related to + the Windows message which led to generating this event. + + @param width The new viewport width or -1 if not given by the OS. + @param height The new viewport height or -1 if not given by the OS. +*/ +extern System.onViewPortChanged(int width, int height); + +/** + onStop() + + Hookable. Event happens when Winamp3 stops playing a file. + No params. +*/ +extern System.onStop(); + +/** + onPlay() + + Hookable. Event happens when Winamp3 starts playing a file. + No params. +*/ +extern System.onPlay(); + +/** + onPause() + + Hookable. Event happens when Winamp3 pauses playback. + No params. +*/ +extern System.onPause(); + +/** + onResume() + + Hookable. Event happens when Winamp3 resumes playback. + Event only happens when the song was previously set in a paused state. + No params. +*/ +extern System.onResume(); + +/** + onTitleChange() + + Hookable. Event happens when the song title changes. +*/ +extern System.onTitleChange(String newtitle); + +extern System.onTitle2Change(String newtitle2); +extern System.onUrlChange(String url); +extern System.onInfoChange(String info); +extern System.onStatusMsg(String msg); + +/** + onEqBandChanged() + + Hookable. Event happens when an equalizer band changes values. + The bands are numbered from 0 to 9 (0 being 60Hz and 9 being 16kHz) + and their values range from -127 to +127. + + @param band The frequency band that has changed. + @param newvalue The new value of the frequency band. +*/ +extern System.onEqBandChanged(int band, int newvalue); + +/** + onEqPreampChanged() + + Hookable. Event happens when the equalizer pre-amp has changed + values. Range of the value is from -127 to +127. + + @param newvalue The new pre-amp value. +*/ +extern System.onEqPreampChanged(int newvalue); + +/** + onEqChanged() + + Hookable. Event happens when the EQ is switched on or off. + 0 means the EQ was turned off. 1 means it was turned on. + You might want to use true and false to verify this, it's a bit + more elegant. :) + + @param newstatus The new status of the EQ. +*/ +extern System.onEqChanged(int newstatus); + +extern System.onEqFreqChanged(int isiso); //Requires 5.51 + +/** + onVolumeChanged() + + Hookable. Event happens when the volume was changed. + The range of the volume is from 0 to 255. + + @param newvol The new volume value. +*/ +extern System.onVolumeChanged(int newvol); + +/** + onSeek() + + Hookable. Event happens when the user seeks + to a position in the track. + + @param newpos The seekers new position. +*/ +extern System.onSeek(int newpos); + +/** + getContainer() + + @ret The requested container. + @param container_id The containers identifier string. +*/ +extern Container System.getContainer(String container_id); + +/** + newDynamicContainer() + + @ret The new container. + @param container_id The identifier for the container you want to create. +*/ +extern Container System.newDynamicContainer(String container_id); + +/** + newGroup() + + @ret The new group. + @param group_id The identifier for the group you want to create. +*/ +extern Group System.newGroup(String group_id); + +extern Layout System.newGroupAsLayout(String group_id); + +/** + getNumContainers() + + Get the number of containers currently created. + + @ret The number of containers. +*/ +extern Int System.getNumContainers(); + +/** + enumContainer() + + Returns the name of the container associated with it's number. + Use getNumContainers() to fetch the number of containers present. + The containers are numbered from 0 to the value returned by getNumContainers(). + + @ret The name of the specified container. + @param num The container's number for which you want to know the name. +*/ +extern Container System.enumContainer(Int num); + +extern String system.enumEmbedGUID(int num); //TODO + +/** + getWac() + + Gets the reference to the wac identified by the guid sent. + + @ret The requested WAC. + @param wac_guid The WAC's GUID. +*/ +deprecated extern Wac System.getWac(String wac_guid); + +/** + messageBox() + + Creates a message box. + The flag paramater lets you set the style of the message box. + Just use the OR bitwise operator to set the style you want. + Here's a list of the flags you can use: + + MSGBOX_OK Adds an OK button. (1) + MSGBOX_CANCEL Adds a CANCEL button. (2) + MSGBOX_YES Adds a YES button. (4) + MSGBOX_NO Adds a NO button. (8) + MSGBOX_ALL Adds ALL buttons. (16) + MSGBOX_NEXT Adds a NEXT button. (32) + MSGBOX_PREVIOUS Adds a PREVIOUS button. (64) + + Note that the notanymore_id parameter stores the users answer in the + configuration file with the entry name specified by it's value. + + @ret The value of the button that was pressed (example: if OK is pressed, 1 is returned). + @param message The message you want to display. + @param msgtitle The title of the message box. + @param flag The message box style you want. + @param notanymore_id Configuration item name in which to store the users answer. +*/ +extern Int System.messageBox(String message, String msgtitle, Int flag, String notanymore_id); + +/** + getPlayItemString() + + @ret The name of what is playing. +*/ +extern String System.getPlayItemString(); + +/** + getPlayItemLength() + + Get the length of the track currently playing, in milliseconds. + + @ret Length of the track, in seconds. +*/ +extern Int System.getPlayItemLength(); + +/** + getPlayItemMetaDataString() + + Get metadata for the track currently playing. The metadata field names that + are available are the following: + + title + album + artist + albumartist + comment + year + composer + bitrate + srate + stereo + vbr + replaygain_track_gain + replaygain_album_gain + replaygain_track_peak + replaygain_album_peak + gain + genre + track + length + disc + bpm + conductor + key + mood + subtitle + lyricist + ISRC + media + remixer + encoder + publisher + tool + pregap + postgap + numsamples + + + @ret The requested metadata. + @param metadataname The name of the metadata field you want to read. +*/ +extern String System.getPlayItemMetaDataString(String metadataname); +extern String System.getMetaDataString(String filename, String metadataname); // Requires 5.53 +extern String System.getPlayItemDisplayTitle(); + +extern Int System.getCurrentTrackRating(); //Requires 5.5 +extern System.onCurrentTrackRated(int rating); //Requires 5.5 +extern System.setCurrentTrackRating(int rating); //Requires 5.5 + +/** + getExtFamily() + + This one still return the same as getDecoderName() + + //Gets registered family for given extension (i.e. mp3 -> "Audio") + + @ret The registered family for given extension. + @param ext The extension in question. +*/ +extern String System.getExtFamily(String ext); + +extern String system.getDecoderName(string playitem); + +/** + playFile() + + Play the requested file. Path and filename are required + with proper extension (example: playFile("c:\music\mp3\file.mp3"); ). + It also works with URL's (example: playFile("http://myshoutcast.com:8000"); ). + + @param playitem The path and filename to play. +*/ +extern System.playFile(String playitem); + +extern Int System.getAlbumArt(String playitem); //Requires 5.5 // Will return 1 if an album art has been downloaded, otherwise 0 + +/** + downloadMedia() + + Hookable. Downloads a file from url and saves it as destination_filename. + If destinationPath is "" it will be saved in CD Ripping dir (=getDownloadPath()). + + @param url the file to be downloaded + @param destinationPath the path you want to store the file + @param wantAddToML set true if you wnt to add the file to ML database + @param notifyDownloadsList set true in order to list the download in <DownloadsLis/> Object +*/ +extern System.downloadMedia(String url, String destinationPath, boolean wantAddToML, boolean notifyDownloadsList); // Requires 5.54 +deprecated extern System.downloadURL(String url, String destination_filename, String progress_dialog_title); //Requires 5.5 // destination_filename is just a dummy parameter as well as progress_dialog_title - use download() instead + +extern System.onDownloadFinished(String url, boolean success, String filename); // Requires 5.53 +extern String System.getDownloadPath(); // Requires 5.53 // returns the CD Ripping Directory +extern System.setDownloadPath(String new_path); // Requires 5.53 // Sets the CD Ripping Directory + +/** + enqueueFile() + + Enqueque the requested file. Path and filename are required + with proper extension (example: playFile("c:\music\mp3\file.mp3"); ). + It also works with URL's (example: playFile("http://myshoutcast.com:8000"); ). + + @param playitem The path and filename to play. +*/ +extern System.enqueueFile(String playitem); //Requires 5.5 + +/** + getLeftVuMeter() + + Get the value of the left vu meter. + Range is from 0 to 255. Linear. + + @ret The value of the left vu meter. +*/ +extern Int System.getLeftVuMeter(); + +/** + getRightVuMeter() + + Get the value of the right vu meter. + Range is from 0 to 255. Linear. + + @ret The value of the left vu meter. +*/ +extern Int System.getRightVuMeter(); + +/** + getVolume() + + Get the current volume. Range is from 0 to 255. + + @ret The current volume. +*/ +extern Int System.getVolume(); + +/** + setVolume() + + Set the volume to the desired value. + Range is from 0 to 255. + + @param vol The desired volume value. +*/ +extern System.setVolume(Int vol); + +/** + play() + + Trigger the play event. +*/ +extern System.play(); + +/** + stop() + + Trigger the stop event. +*/ +extern System.stop(); + +/** + pause() + + Trigger the pause event. +*/ +extern System.pause(); + +/** + next() + + Trigger the next event. +*/ +extern System.next(); + +/** + previous() + + Trigger the previous event. +*/ +extern System.previous(); + +/** + eject() + + Trigger the eject event. +*/ +extern System.eject(); + +/** + seekTo() + + Seek to the desired position in the track. Range is from + 0 to SONG LENGTH (in milliseconds). +*/ +extern System.seekTo(Int pos); + +/** + getPosition() + + Get the current position in the track currently playing, + in milliseconds. + + @ret The current position in the track. +*/ +extern Int System.getPosition(); + +/** + setEqBand() + + Sets the requested equalizer band to the specified value. + The bands are numbered from 0 (60Hz) to 9 (16kHz) and + each range from -127 to +127. + + @param band The EQ band to set. + @param value The desired value for the specified band. +*/ +extern System.setEqBand(int band, Int value); + +/** + setEqPreamp() + + Set the equalizer pre-amp to the desired value. + Range is from -127 to +127 (0 means no preamp). + + @param value The desired value for the pre-amp. +*/ +extern System.setEqPreamp(Int value); + +/** + Set the equalizer to the desired state. On or off. + 0 is off, 1 is on. + + @param onoff The desired state for the eq. +*/ +extern System.setEq(Int onoff); + +/** + getEqBand() + + Get the value of an equalizer band. The bands + are numbered from 0 (60Hz) to 9 (16kHz). The return + value range is from -127 to +127. + + @ret The value of the band. + @param band The eq band number you want to get. +*/ +extern Int System.getEqBand(int band); + +/** + getEqPreamp() + + Get the equalizer preamp value. The value range is + from -127 to +127 (0 means no preamp). + + @ret The preamp's current value. +*/ +extern int System.getEqPreamp(); + +/** + getEq() + + Get the equalizer state. 0 for off, 1 for on. + Remember to compare return value to true and false. + + @ret The EQ's state. +*/ +extern int System.getEq(); + +/** + getMousePosX() + + This returns the X position of the mouse in the screen, + using the screen coordinate system. + + @ret The mouse's current X pos. +*/ +extern int System.getMousePosX(); + +/** + getMousePosY() + + This returns the Y position of the mouse in the screen, + using the screen coordinate system. + + @ret The mouse's current Y pos. +*/ +extern int System.getMousePosY(); + +/** + integerToString() + + Get the string representation of an integer. + + @ret The string equivalent of the integer. + @param value The integer to change into a string. +*/ +extern String System.integerToString(Int value); + +/** + StringToInteger() + + Get the integer representation of a string. + + @ret The integer equivalent of the string. + @param str The string to change into an integer. +*/ +extern Int System.StringToInteger(String str); + +/** + floatToString() + + Get the string representation of a floating point number. + + @ret The string representation of the float number. + @param value The float to convert. + @param ndigits Number of digits after the decimal point you want. +*/ +extern String System.floatToString(float value, int ndigits); + +/** + stringToFloat() + + Get the floating point representation of a string. + + @ret The float representation of the string. + @param str The string to convert. +*/ +extern Float System.stringToFloat(String str); + +/** + integerToLongTime() + + Convert a time in seconds to a HH:MM:SS value. + + @ret The string representation of the time (HH:MM:SS). + @param value Timestamp to use. +*/ +extern String System.integerToLongTime(Int value); + +/** + integerToTime() + + Convert a time in seconds to a MM:SS value. + + @ret The string representation of the time (MM:SS). + @param value Timestamp to use. +*/ +extern String System.integerToTime(Int value); + +extern String System.dateToTime(Int datetime); // prints the time from a date with the same format as integerToTime +extern String System.dateToLongTime(Int datetime); // prints the time from a date with the same format as integerToLongTime +extern String System.formatDate(Int datetime); // formats the date according to the locales - short date format +extern String System.formatLongDate(Int datetime); // formats the date according to the locales - long date format +extern Int System.getDateYear(Int datetime); // returns the datetime's year since 1900 +extern Int System.getDateMonth(Int datetime); // returns the datetime's month (0-11) +extern Int System.getDateDay(Int datetime); // returns the datetime's day of the month (1-31) +extern Int System.getDateDow(Int datetime); // returns the datetime's day of the week (0-6) +extern Int System.getDateDoy(Int datetime); // returns the datetime's day of the year (0-365) +extern Int System.getDateHour(Int datetime); // returns the datetime's hour (0-23) +extern Int System.getDateMin(Int datetime); // returns the datetime's minutes (0-59) +extern Int System.getDateSec(Int datetime); // returns the datetime's seconds (0-59) +extern Int System.getDateDst(Int datetime); // returns the datetime's daylight savings flag +extern Int System.getDate(); // returns the datetime, use with the above functions + +/** + strmid() + + Get a substring from a string. + + @ret The substring. + @param str The string. + @param start The start position. + @param len The length of the string to extract, from start position. +*/ +extern String System.strmid(String str, Int start, Int len); + +/** + strleft() + + Get a substring from a string, starting from the left. + + @ret The substring. + @param str The string. + @param nchars The length of the string to extract, from the left. +*/ +extern String System.strleft(string str, int nchars); + +/** + strright() + + Get a substring from a string, starting from the right. Since + the start point is the right of the string (or the end). It will + extract the string starting from the END going towards the BEGINNING. + + @ret The substring. + @param str The string. + @param nchars The length of the string to extract, from the right. +*/ +extern string System.strright(string str, int nchars); + +/** + strsearch() + + Search a string for any occurance of substring. If the substring was + found in the string, it will return the position of the substring in + the string searched. If the substring is not found, the return value + is -1. + + @ret Position at which the substring was found. + @param str The string to search in. + @param substr The substring to find. +*/ +extern int System.strsearch(string str, string substr); + +/** + strlen() + + Returns the length of the string. + + @ret The length of the string. + @param str The string. +*/ +extern int System.strlen(string str); + +/** + strupper() + + Convert a string to all uppercase. + + @ret The uppercase string. + @param str The string to uppercase. +*/ +extern string System.strupper(string str); + +/** + strlower() + + Convert a string to all lowercase. + + @ret The lowercase string. + @param str The string to lowercase. +*/ +extern string System.strlower(string str); + +/** + urlEncode() + + URL Encode a string. Characters that are NOT encoded + are: All letters, All digits, underscore (_), dash (-) and + period (.). + + @ret The URL encoded string. + @param url The string to URL encode. +*/ +extern string System.urlEncode(string url); + +extern string System.urlDecode(string url); // Requires 5.54 + +/** + parseATF() + + Pass a string through the ATF parser + + @ret The ATF encoded string. + @param topass The string to ATF encode. +*/ +//extern string System.parseATF(string topass); // To be done + +/** + removePath() + + Remove the path from a full filename. (example: + c:\music\mp3\test.mp3 -> test.mp3) + Also works on URLs. + + @ret The filename with the path removed. + @param str The fullpath of a file. +*/ +extern string System.removePath(string str); + +/** + getPath() + + Gets the path from a full filename. (example: + c:\music\mp3\test.mp3 -> c:\music\mp3) + Also works on URLs. + + @ret The path with the filename removed. + @param str The fullpath of a file. +*/ +extern string System.getPath(string str); + +/** + getExtension() + + Gets the extension from a filename. (example: + c:\music\mp3\test.mp3 -> mp3) + Also works on URLs. + + @ret The extension of the filename. + @param str The fullpath of a file. +*/ +extern string System.getExtension(string str); + +/** + getToken() + + Retreive a token from a list of tokens seperated by separator. + The index starts at 0, not 1, so be careful. + Here's a short example: + getToken("1,2,3,4,5", ",", 3); + Would return, 3. If the token you ask for doesn't exist, an + empty string is returned. + + @ret The token requested. + @param str The tokenenized string. + @param separator The separator to use. + @param tokennum The token to retreive. +*/ +extern string System.getToken(string str, string separator, int tokennum); + +/** + sin() + + Takes an angle in radians and returns the ratio of two sides of a right triangle. + The ratio is the length of the side opposite the angle divided by the length + of the hypotenuse. The result range is from -1 to 1. + + Converting from degrees to radians can be done by multiplying degrees by PI/180. + + @ret The sine value of the angle. + @param value The angle for which you want to know the sine value. +*/ +extern double System.sin(double value); + +/** + cos() + + Takes an angle in radians and returns the ratio of the two sides of a right triangle. + The ratio is the length of the side adjacent to the angle divided by the length of the + hypotenuse. The result is range is from -1 to 1. + + @ret The cosine value of the angle. + @param value The angle for which you want to know the cosine value. +*/ +extern double System.cos(double value); + +/** + tan() + + Takes an angle in radians and returns the ratio between two sides of a right triangle. + The ratio is sin(x) divided by cos(x). + + @ret The tangent value of the angle. + @param value The angle for which you want to know the tangent value. +*/ +extern double System.tan(double value); + +/** + asin() + + Takes a sine value ranging from -1 to 1 and returns the angle in radians. + The return value ranges from -PI/2 to +PI/2. + + @ret The angle in radians. + @param value The sine value for which you want to know the angle. +*/ +extern double System.asin(double value); + +/** + acos() + + Takes a cosine value ranging from -1 to 1 and returns the angle in radians. + The return value ranges from -PI/2 to +PI/2. + + @ret The angle in radians. + @param value The cosine value for which you want to know the angle. +*/ +extern double System.acos(double value); + +/** + atan() + + Takes an angle in radians and returns the ration between two sides of a right triangle. + The ratio is cos(x) divided by sin(x). + + @ret The arc tangent value of the angle. +*/ +extern double System.atan(double value); + +/** + atan2() + + @ret The arctangent of y/x. +*/ +extern double System.atan2(double y, double x); + + +/** + pow() + + Elevate a number to the N'th power. + + @ret The number + @param value The number you want to elevate to the N power. + @param pvalue The power to which you want to elevate the number. +*/ +extern double System.pow(double value, double pvalue); + +/** + sqr() + + Get the square of a number. + + @ret The number, squared. + @param value The number for which you want the square value. +*/ +extern double System.sqr(double value); + +extern double System.log10(double value); +extern double System.ln(double value); + +/** + sqrt() + + Get the square root of a number. + + @ret The square root of the number. + @param value The number for which you want the square root value. +*/ +extern double System.sqrt(double value); + +/** + random() + + Get a randomely generated number. The random number will not + be bigger than the max value indicated. Smallest value is 0. + + @ret The random number. + @param max The maximum value of the random number to return. +*/ +extern int System.random(int max); + +/** + setPrivateString() + + Create a private config entry for your script, of String type. + + @param section The section for the entry. + @param item The item name for the entry. + @param value The value of the entry. +*/ +extern System.setPrivateString(string section, string item, string value); + +/** + setPrivateInt() + + Create a private config entry for your script, of Int type. + + @param section The section for the entry. + @param item The item name for the entry. + @param value The value of the entry. +*/ +extern System.setPrivateInt(string section, string item, int value); + +/** + getPrivateString() + + Read a private config entry of String type. Returns + the specified default value if the section and item isn't + found. + + @ret The value of the config entry. + @param section The section from which to read the entry. + @param item The name of the item to read. + @param defvalue The default value to return if no item is found. +*/ +extern String System.getPrivateString(String section, String item, String defvalue); + +/** + getPrivateInt() + + Read a private config entry of Integer type. Returns + the specified default value if the section and item isn't + found. + + @ret The value of the config entry. + @param section The section from which to read the entry. + @param item The name of the item to read. + @param defvalue The defautl value to return if no item is found. +*/ +extern Int System.getPrivateInt(String section, String item, Int defvalue); + +/** + setPublicString() + + Create a public config entry for your script, of String type. + + @param item The item name for the entry. + @param value The value of the entry. +*/ +extern System.setPublicString(String item, String value); + +/** + setPublicInt() + + Create a public config entry for your script, of Int type. + + @param item The item name of the entry. + @param value The value of the entry. +*/ +extern System.setPublicInt(String item, Int value); + +/** + getPublicString() + + Read a public config entry of String type. Returns + the specified default value if the item isn't found. + + @ret The value of the config entry. + @param item The item name to read. + @param defvalue The default value to return if no item is found. +*/ +extern String System.getPublicString(String item, String defvalue); + +/** + getPublicInt() + + Read a public config entry of Integer type. Returns + the specified default value if the item isn't found. + + @ret The value of the config entry. + @param item The item name to read. + @param defvalue The default value to return if no item is found. +*/ +extern Int System.getPublicInt(String item, Int defvalue); + +/** + getParam() + + Get the parameters with which the script is called. + This is the 'param="..."' attribute in the <script ...> + skin XML tag. + + @ret The parameter for the script. +*/ +extern String System.getParam(); + +/** + getScriptGroup() + + Get the group in which the script is instantiated. Returns + Null if it's not instantiated in a group. + + @ret +*/ +extern Group System.getScriptGroup(); + +/** + getViewPortWidth() + + Get the user's screen width in pixels. + + @ret The width of the user's screen. +*/ +extern Int System.getViewportWidth(); +extern Int System.getViewportWidthFromGuiObject(GuiObject g); //Requires 5.5 +extern Int System.getViewportWidthFromPoint(int x, int y); + +extern Int System.getMonitorWidth(); //Requires 5.5 +extern Int System.getMonitorWidthFromPoint(int x, int y); //Requires 5.5 +extern Int System.getMonitorWidthFromGuiObject(GuiObject g); //Requires 5.631 + +//todo/ extern System.onMouseMove(int x, int y); + +/** + getViewPortHeight() + + Get the user's screen height in pixels. + + @ret The height of the user's screen. +*/ +extern Int System.getViewportHeight(); +extern Int System.getViewportHeightFromGuiObject(GuiObject g); //Requires 5.5 +extern Int System.getViewportHeightFromPoint(int x, int y); + +extern Int System.getMonitorHeight(); //Requires 5.5 +extern Int System.getMonitorHeightFromPoint(int x, int y); //Requires 5.5 +extern Int System.getMonitorHeightFromGuiObject(GuiObject g); //Requires 5.631 + +extern Int System.getMonitorLeft(); //Requires 5.631 +extern Int System.getMonitorLeftFromGuiObject(GuiObject g); //Requires 5.5 +extern Int System.getMonitorLeftFromPoint(int x, int y); //Requires 5.5 + +extern Int System.getMonitorTop(); //Requires 5.631 +extern Int System.getMonitorTopFromGuiObject(GuiObject g); //Requires 5.631 +extern Int System.getMonitorTopFromPoint(int x, int y); //Requires 5.631 + +extern Int System.getViewportLeft(); +extern Int System.getViewportLeftFromGuiObject(GuiObject g); //Requires 5.5 +extern Int System.getViewportLeftFromPoint(int x, int y); + +extern Int System.getViewportTop(); +extern Int System.getViewportTopFromGuiObject(GuiObject g); //Requires 5.5 +extern Int System.getViewportTopFromPoint(int x, int y); + +/** + debugString() + + Send a debug message to the Wasabi Console. + The severity ranges from 0 (not serious) to 9 (very serious). + + @param str The debug message. + @param severity The severity of the error. +*/ +extern System.debugString(String str, Int severity); + +/** + ddeSend() + + Send a DDE message to an application. The minimum + interval between messages is specified in milliseconds. + Here's an example: + + ddeSend("mIRC", "/msg #channel I'm using Winamp3", 300); + + @param application The DDE server name of the application. + @param command The command to send. + @param mininterval The minimum interval to respect between messages (in ms). +*/ +extern System.ddeSend(String application, String command, Int mininterval); + +/** + onLookForComponent() + + Hookable. Event happens when the component with the + specified GUID is going to be shown. Don't forget + to return the component when you're done doing what + you want to do (example: animate something). + + @ret The component requested. + @param guid The requested components GUID. + +*/ +extern WindowHolder System.onLookForComponent(String guid); + +/** + getCurAppLeft() + + Get the applications current left coordinate in the screen, + using the screen coordinate system. + + @ret The left coordinate of the application. +*/ +extern Int System.getCurAppLeft(); + +/** + getCurAppTop() + + Get the applications current top coordinate in the screen, + using the screen coordinate system. + + @ret The top coordinate of the application. +*/ +extern Int System.getCurAppTop(); + +/** + getCurAppWidth() + + Get the applications current window width, in pixels. + + @ret The width of the application window. +*/ +extern Int System.getCurAppWidth(); + +/** + getCurAppHeight() + + Get the applications current window height, in pixels. + + @ret The height of the application window. +*/ +extern Int System.getCurAppHeight(); + +/** + isAppActive() + + Get the current status of the application. If it's active, + it means the application has focus. True is active, false is + inactive. + + @ret The application's status. +*/ +extern Boolean System.isAppActive(); + +/** + getSkinName() + + Get the skin name for the loaded skin. + + @ret The skin's name. +*/ +extern String System.getSkinName(); +extern System.switchSkin(String skinname); +extern Int System.isLoadingSkin(); // 1 if loading, -1 if UNloading, 0 otherwise +extern System.lockUI(); +extern System.unlockUI(); + +/** + getMainBrowser() + + Get a reference to the main browser object. + This is the browser object that's defined with + mainmb="1" in the skin XML. + + @ret A reference to the main browser object. +*/ +extern Browser System.getMainBrowser(); +extern System.popMainBrowser(); +extern System.navigateUrl(String url); +extern System.navigateUrlBrowser(String url); //Requires 5.53 // will call an onOpenUrl requuest and then navigate to an extern browser, can also be used to open nowplaying + +extern Boolean System.onOpenURL(string url); //Requires 5.5 // called everytime winamp wants to open a website in an extern browser, return 1 to cancel this opening and open in your browser + +/** + isObjectValid() + + Verifies if an object is valid. You can also verify + this using the Null object. True means the object is valid, + false means it isn't. + + @ret The validity of the object. + @param o The object you want to verify. +*/ +extern Boolean System.isObjectValid(Object o); + +/** + integer() + + Takes a Double and returns the closest integer representation. + + @ret The integer representation of the double. + @param d The double for which you want an integer representation. +*/ +extern Int System.integer(Double d); +extern Double System.frac(Double d); + +/** + getTimeOfDay() + + Read the current time of the day. Returns a number that's + the number of milliseconds since the start of the day (0:00). + + @ret The number of milliseconds since midnight. +*/ +extern Int System.getTimeOfDay(); + +/** + setMenuTransparency() + + Set the menu's transparency value (alpha blending). Ranges + from 0 to 255. 0 being totally transparent and 255 being + totally opaque. + + @param alphavalue The transparency value to set. +*/ +extern System.setMenuTransparency(int alphavalue); + +extern Boolean System.onGetCancelComponent(String guid, boolean goingvisible); + +#define STATUS_PAUSED -1 +#define STATUS_STOPPED 0 +#define STATUS_PLAYING 1 + +/** + getStatus() + + returns the status of the main player core. + + @ret STATUS_PAUSED (-1) if paused, STATUS_STOPPED (0) if stopped, STATUS_PLAYING (1) if playing. +*/ +extern Int System.getStatus(); + +#define VK_SHIFT 16 +#define VK_CONTROL 17 +#define VK_ALT 18 + +/** + Int isKeyDown(int vk_code) + + Checks if a virtual key (like VK_CONTROL, VK_SHIFT, VK_ALT) is pressed. + + @ret 1 if key is pressed, 0 if not. +*/ + +extern Int System.isKeyDown(int vk_code); + +/** + setClipboardText(String text) + + Sets the given text to the clipboard. +*/ + +extern System.setClipboardText(String _text); + +/** + String Chr(Int charnum) + + Returns a string the ascii char. +*/ + +extern String System.Chr(Int charnum); + + +/** + translate + + Takes a passed string and attempts to find a matching translation + of the skin as specified in wasabi.xml (if this is present). + + @ret The translated string or the passed string if no translation present. + @param str The string to be compared for translation. + +e.g. int wasabi.xml we have <translation from="Volume:" to="Volume: Happy" /> + so on calling translate("Volume:") would give us "Volume: Happy" +*/ +extern String System.translate(String str); // Requires 5.54 + +/** + getString + Returns a String from wasabi StringTable + + @ret The translated string or "" if no translation present. + @param table The StringTable identifier, eg "nullsoft.bento" + @param id The id of the String (starting with 0) +*/ +extern String System.getString(String table, int id); // Requires 5.54 + +/** + getLanguageId + Returns the Language Identifier (en-us or de-de). + + @ret Language Identifier. +*/ +extern String System.getLanguageId(); // Requires 5.54 + + +// extlist should be like "jpeg files|*.jpg|all files|*.*||" +// note the extra | on the end +deprecated extern String System.selectFile(String extlist, String id, String prev_filename); +extern String System.selectFolder(String wnd_title, String wnd_info, String default_path); // Requires 5.53 // use wnd_title="" in order to display default system caption +extern System.systemMenu(); +extern System.windowMenu(); +extern System.triggerAction(GuiObject context, String actionname, String actionparam); +extern GuiObject System.showWindow(String guidorgroupid, String preferedcontainer, Boolean transient); // "" = default container, returns the hosted window +extern System.hideWindow(GuiObject hw); // hw = hosted window, returned by showWindow +extern System.hideNamedWindow(String guidorgroup); // hides the last created wnd with this guid/groupname +extern Boolean System.isNamedWindowVisible(String guidorgroup); +//extern System.setAtom(String atomname, Object object); +//extern Object System.getAtom(String atomname); +extern System.invokeDebugger(); +extern int System.hasVideoSupport(); // requires 5.666 - returns 1 if video support is enabled in Winamp +extern Int System.isVideo(); +extern Int System.isVideoFullscreen(); +extern System.setVideoFullscreen(Boolean fullscreen); // requires 5.8 +extern Int System.getIdealVideoWidth(); // -1 if video has never been open this session, otherwise the ideal width of the currently (or last) video played +extern Int System.getIdealVideoHeight(); // -1 if video has never been open this session, otherwise the ideal height of the currently (or last) video played +extern Int System.isMinimized(); +extern System.minimizeApplication(); +extern System.restoreApplication(); +extern System.activateApplication(); +extern Int System.getPlaylistLength(); // number of items in the playlist +extern Int System.getPlaylistIndex(); // currently playing item in the playlist (or next to play if stopped) +extern System.clearPlaylist(); //Requires 5.5 +extern Boolean System.isDesktopAlphaAvailable(); +extern Boolean System.isTransparencyAvailable(); +extern Int System.onShowNotification(); // return 1 if you implement it +extern String System.getSongInfoText(); // same as what gets in a text object with display="SONGINFO" +extern String System.getSongInfoTextTranslated(); // same as what gets in a text object with display="SONGINFO_LOCALISE" +extern Int System.getVisBand(int channel, int band); // 0,1 / 0..75 +extern Double System.getRuntimeVersion(); // returns the maki runtime version, up to 5.01 = 0.0, 5.02+ = 1.0 + +//extern Int System.isWa2ComponentVisible(String guid); +//extern System.hideWa2Component(String guid); + +extern boolean system.isProVersion(); //Requires 5.5 +extern String System.getWinampVersion(); //Requires 5.51 +extern Int System.getBuildNumber(); //Requires 5.51 + +extern int System.getFileSize(String fullfilename); //Requires 5.51 + +//***************************************************************************** +// Container CLASS +//***************************************************************************** +/** + Container Class. + + @short The container class enables you to control current containers and also create them. + @author Nullsoft Inc. + @ver 1.0 +*/ + +/** + onSwitchToLayout() + + Hookable. Event happens when a container is going to switch + from the currently active layout to another layout (newlayout). + + @param newlayout The new layout that will be used. +*/ +extern Container.onSwitchToLayout(Layout newlayout); +extern Container.onBeforeSwitchToLayout(Layout oldlayout, Layout newlayout); +extern Container.setXmlParam(String param, String value); +/** + onHideLayout() + + Hookable. Event happens when a container is about to hide + the currently active layout (_layout). + + @param _layout The layout that's going to be hidden. +*/ +extern Container.onHideLayout(Layout _layout); + +/** + onShowLayout() + + Hookable. Event happens when a container is about to + show a layout (_layout). + + @param _layout The layout about to be shown +*/ +extern Container.onShowLayout(Layout _layout); + +/** + getLayout() + + Get the layout associated with the an id. + This corresponds to the "id=..." attribute in + the XML tag <layout .. />. + + @ret The layout associated with the id. + @param layout_id The id of the layout you wish to retrieve. +*/ +extern Layout Container.getLayout(String layout_id); + +/** + getNumLayouts() + + Get the number of layouts contained in the + container. + + @ret The number of layouts. +*/ +extern Int Container.getNumLayouts(); + +/** + enumLayout() + + Get the layout by it's index number. + Range is from 0 to the value returned + by getNumLayouts() - 1. + + @ret The layout. + @param num The index number of the layout you want. +*/ +extern Layout Container.enumLayout(Int num); + +/** + switchToLayout() + + Switch to a perticular layout by using the + desired layout's id. This corresponds to the + "id=..." attribute in the XML tag <layout .. />. + + @param layout_id The id of the layout to which you want to switch. +*/ +extern Container.switchToLayout(String layout_id); + +/** + show() + + Trigger the show event. +*/ +extern Container.show(); + +/** + hide() + + Trigger the hide event. +*/ +extern Container.hide(); +// this one destroys it if the container is dynamic, or hides otherwise +extern Container.close(); + +/** + toggle() + + Toggle the containers state between Shown / Hidden. +*/ +extern Container.toggle(); + +/** + isDynamic() + + Tells you if the current container is a dynamic + container or not. Values are true (1) for dynamic + false (0) for static. + + @ret The container type (dynamic or static). +*/ +extern Int Container.isDynamic(); + +extern Container.setName(String name); +extern String Container.getName(); //requires Winamp 5.53 +extern String Container.getGuid(); //requires Winamp 5.53 +extern Layout Container.getCurLayout(); +extern Container.onAddContent(GuiObject wnd, String id, String guid); //requires Winamp 5.51 + +//***************************************************************************** +// WAC CLASS +//***************************************************************************** +/** + WAC Class. + Not used in Winamp5. + + @short . + @author Nullsoft Inc. + @ver 1.0 +*/ + +/** + getGuid() + + Get the GUID of the WAC. + + @ret The GUID of the WAC. +*/ +deprecated extern String Wac.getGuid(); + +/** + getName() + + Get the name of the WAC. + + @ret The name of the WAC. +*/ +deprecated extern String Wac.getName(); + +/** + sendCommand() + + +*/ +deprecated extern Int Wac.sendCommand(String cmd, Int param1, Int param2, String param3); + +/** + show() + + Trigger the show event. +*/ +deprecated extern Wac.show(); + +/** + hide() + + Trigger the hide event. +*/ +deprecated extern Wac.hide(); + +/** + isVisible() + + +*/ +deprecated extern Boolean Wac.isVisible(); + +/** + onNotify() + + +*/ +deprecated extern Wac.onNotify(String notifstr, Int a, Int b); + +/** + onShow() + + Hookable. The event happens when the WAC is about + to be shown. +*/ +deprecated extern Wac.onShow(); + +/** + onHide() + + Hookable. The event happens when the WAC is about + to be hidden. +*/ +deprecated extern Wac.onHide(); + +/** + setStatusBar() + + Set the status bars visibility. + Sending true will make the status bar + visible while sending false will hide + it. + + @param onoff The status bars visibility. +*/ +deprecated extern Wac.setStatusBar(Boolean onoff); + +/** + getStatusBar() + + Get the status bars visibility. True means + it's visible, false means it's hidden. + + @ret The status bars visibility. +*/ +deprecated extern Boolean Wac.getStatusBar(); + +//***************************************************************************** +// GUIOBJECT CLASS +//***************************************************************************** +/** + GuiObject Class. + + @short . + @author Nullsoft Inc. + @ver 1.0 +*/ + +/** + show() + + Trigger the show event. +*/ +extern GuiObject.show(); + +/** + hide() + + Trigger the hide event. +*/ +extern GuiObject.hide(); + +/** + isVisible() + + Get the visibility status of the object. + False means it's hidden, true means it's + visible. + + @ret The visibility status of the object. +*/ +extern int GuiObject.isVisible(); + +/** + onSetVisible() + + Hookable. Event happens when the visibility + status of the object is changed from visible to + hidden or vice-versa. + + @param onoff The objects visibility status. +*/ +extern GuiObject.onSetVisible(Boolean onoff); + +/** + setAlpha() + + Set the alphablending value of the object. + Value ranges from 0 (fully transparent) to + 255 (fully opaque). + + @param alpha The alpha value. +*/ +extern GuiObject.setAlpha(int alpha); + +/** + getAlpha() + + Get the current alphablending value of + the object. Value ranges from 0 (fully + transparent) to 255 (fully opaque). + + @ret The alpha value. +*/ +extern int GuiObject.getAlpha(); + +/** + onLeftButtonUp() + + Hookable. Event happens when the left mouse + button was previously down and is now up. + + @param x The X position in the screen where the cursor was when the event was triggered. + @param y The Y position in the screen where the cursor was when the event was triggered. +*/ +extern GuiObject.onLeftButtonUp(int x, int y); + +/** + onLeftButtonDown() + + Hookable. Event happens when the left mouse button + is pressed. + + @param x The X position in the screen where the cursor was when the event was triggered. + @param y The Y position in the screen where the cursor was when the event was triggered. +*/ +extern GuiObject.onLeftButtonDown(int x, int y); + +/** + onRightButtonUp() + + Hookable. Event happens when the right mouse button + was previously down and is now up. + + @param x The X position in the screen where the cursor was when the event was triggered. + @param y The Y position in the screen where the cursor was when the event was triggered. +*/ +extern GuiObject.onRightButtonUp(int x, int y); + +/** + onRightButtonDown() + + Hookable. Event happens when the right mouse button + is pressed. + + @param x The X position in the screen where the cursor was when the event was triggered. + @param y The Y position in the screen where the cursor was when the event was triggered. +*/ +extern GuiObject.onRightButtonDown(int x, int y); + +/** + onRightButtonDlbClk() + + Hookable. Event happens when the right mouse button + is double clicked. + + @param x The X position in the screen where the cursor was when the event was triggered. + @param y The Y position in the screen where the cursor was when the event was triggered. +*/ +extern GuiObject.onRightButtonDblClk(int x, int y); + +/** + onLeftButtonDlbClk() + + Hookable. Event happens when the left mouse button + is double clicked. + + @param x The X position in the screen where the cursor was when the event was triggered. + @param y The Y position in the screen where the cursor was when the event was triggered. +*/ +extern GuiObject.onLeftButtonDblClk(int x, int y); + +extern int GuiObject.onMouseWheelUp(int clicked , int lines); // Requires 5.54 - return 1 if you don't want to send the handle to winamp +extern int GuiObject.onMouseWheelDown(int clicked , int lines); // Requires 5.54 - return 1 if you don't want to send the handle to winamp + +/** + onMouseMove() + + Hookable. Event happens when the mouse is moved. + + @param x The new X screen position of the mouse. + @param y The new Y screen position of the mouse. +*/ +extern GuiObject.onMouseMove(int x, int y); + +/** + onEnterArea() + + Hookable. Event happens when the mouse + enters the objects area. +*/ +extern GuiObject.onEnterArea(); + +/** + onLeaveArea() + + Hookable. Event happens when the mouse + leaves the objects area. +*/ +extern GuiObject.onLeaveArea(); + +/** + setEnabled() +*/ +extern GuiObject.setEnabled(boolean onoff); + +/** + getEnabled() +*/ +extern boolean GuiObject.getEnabled(); + +/** + onEnabled() +*/ +extern GuiObject.onEnable(boolean onoff); + +/** + resize() + + Resize the object to the desired size and position. + + @param x The X position where to anchor the object before resize. + @param y The Y position where to anchor the object before resize. + @param w The width you wish the object to have. + @param h The height you wish the object to have. +*/ +extern GuiObject.resize(int x, int y, int w, int h); + +/** + onResize() + + Hookable. Event happens when the object is about + to be resized. + + @param x The X position where the object will be anchored. + @param y The Y position where the object will be anchored. + @param w The width the object will have. + @param h The height the object will have. +*/ +extern GuiObject.onResize(int x, int y, int w, int h); + +/** + isMouseOver() + +*/ +extern boolean GuiObject.isMouseOver(int x, int y); + +/** + getLeft() + + Get the X position, in the screen, of the + left edge of the object. + + @ret The left edge's position (in screen coordinates). +*/ +extern int GuiObject.getLeft(); + +/** + getTop() + + Get the Y position, in the screen, of the + top edge of the object. + + @ret The top edge's position (in screen coordinates). +*/ +extern int GuiObject.getTop(); + +/** + getWidth() + + Get the width of the object, in pixels. + + @ret The width of the object. +*/ +extern int GuiObject.getWidth(); + +/** + getHeight() + + Get the height of the object, in pixels. + + @ret The height of the object. +*/ +extern int GuiObject.getHeight(); + +/** + setTargetX() + + Set a target X position, in the screen, for + the object. + + @param x The target X position of the object. +*/ +extern GuiObject.setTargetX(int x); + +/** + setTargetY() + + Set a target Y position, in the screen, for + the object. + + @param y The target Y position of the object. +*/ +extern GuiObject.setTargetY(int y); + +/** + setTargetW() + + Set a target width, in pixels, for the object. + + @param w The target width of the object. +*/ +extern GuiObject.setTargetW(int w); + +/** + setTargetH() + + Set a target height, in pixels, for the object. + + @param h The target height of the object. +*/ +extern GuiObject.setTargetH(int r); + +/** + setTargetA() + + Set a target alphablending value for the object. + The value range is from 0 (totally transparent) + to 255 (totally opaque). + + @param alpha The target alpha value. +*/ +extern GuiObject.setTargetA(int alpha); + +/** + setTargetSpeed() + + The amount of time in which you wish to arrive at + the target(s) previously set, in seconds. + + @param insecond The number of seconds in which to reach the target. +*/ +extern GuiObject.setTargetSpeed(float insecond); + +/** + gotoTarget() + + Begin transition to previously set target. +*/ +extern GuiObject.gotoTarget(); + +/** + onTargetReached() + + Hookable. Event happens when the object has reached + it's previously set target. +*/ +extern GuiObject.onTargetReached(); +extern GuiObject.cancelTarget(); +/** + isGoingToTarget() + +*/ +extern GuiObject.reverseTarget(int reverse); // modifies the x/y targets so that they compensate for gained width/height. useful to make drawers that open up without jittering +extern GuiObject.onStartup(); +extern boolean GuiObject.isGoingToTarget(); +extern GuiObject.setXmlParam(String param, String value); +extern String GuiObject.getXmlParam(String param); +extern GuiObject.init(Group parent); +extern GuiObject.bringToFront(); +extern GuiObject.bringToBack(); +extern GuiObject.bringAbove(GuiObject guiobj); +extern GuiObject.bringBelow(GuiObject guiobj); +extern Int GuiObject.getGuiX(); +extern Int GuiObject.getGuiY(); +extern Int GuiObject.getGuiW(); +extern Int GuiObject.getGuiH(); +extern Int GuiObject.getGuiRelatX(); +extern Int GuiObject.getGuiRelatY(); +extern Int GuiObject.getGuiRelatW(); +extern Int GuiObject.getGuiRelatH(); +extern Boolean GuiObject.isActive(); +extern GuiObject GuiObject.getParent(); +extern Layout GuiObject.getParentLayout(); +extern GuiObject GuiObject.getTopParent(); +extern int GuiObject.runModal(); +extern GuiObject.endModal(int retcode); +extern GuiObject GuiObject.findObject(String id); +extern GuiObject GuiObject.findObjectXY(int x, int y); +extern String GuiObject.getName(); +extern int GuiObject.clientToScreenX(int x); +extern int GuiObject.clientToScreenY(int y); +extern int GuiObject.clientToScreenW(int w); +extern int GuiObject.clientToScreenH(int h); +extern int GuiObject.screenToClientX(int x); +extern int GuiObject.screenToClientY(int y); +extern int GuiObject.screenToClientW(int w); +extern int GuiObject.screenToClientH(int h); +extern int GuiObject.getAutoWidth(); +extern int GuiObject.getAutoHeight(); +extern GuiObject.setFocus(); +extern GuiObject.onChar(String c); +extern GuiObject.onAccelerator(String accel); +extern Boolean GuiObject.isMouseOverRect(); +extern Object GuiObject.getInterface(String interface_guid); +extern GuiObject.onDragEnter(); +extern GuiObject.onDragOver(int x, int y); +extern GuiObject.onDragLeave(); + +#define VK_PRIOR 33 +#define VK_NEXT 34 +#define VK_END 35 +#define VK_HOME 36 +#define VK_LEFT 37 +#define VK_UP 38 +#define VK_RIGHT 39 +#define VK_DOWN 40 + +extern GuiObject.onKeyDown(int vk_code); +extern GuiObject.onKeyUp(int vk_code); +extern GuiObject.onGetFocus(); +extern GuiObject.onKillFocus(); +extern Int GuiObject.sendAction(String action, String param, Int x, int y, int p1, int p2); +extern Int GuiObject.onAction(String action, String param, Int x, int y, int p1, int p2, GuiObject source); + + // Group + +extern GuiObject Group.getObject(String object_id); +extern Int Group.getNumObjects(); +extern GuiObject Group.enumObject(Int num); +extern Group.onCreateObject(GuiObject newobj); +extern Int Group.getMousePosX(); +extern Int Group.getMousePosY(); +extern Boolean Group.isLayout(); + + + // Layout + +extern Layout.onDock(int side); +extern Layout.onUndock(); +extern Layout.onScale(Double newscalevalue); +extern Double Layout.getScale(); +extern Layout.setScale(Double scalevalue); +extern Layout.setDesktopAlpha(Boolean onoff); +extern Boolean Layout.getDesktopAlpha(); +extern Container Layout.getContainer(); +extern Layout.center(); +extern Layout.onMove(); +extern Layout.onEndMove(); +extern Layout.onUserResize(int x, int y, int w, int h); +extern Layout.snapAdjust(int left, int top, int right, int bottom); +extern Int Layout.getSnapAdjustTop(); +extern Int Layout.getSnapAdjustRight(); +extern Int Layout.getSnapAdjustLeft(); +extern Int Layout.getSnapAdjustBottom(); +extern Layout.setRedrawOnResize(int wantredrawonresize); +extern Layout.beforeRedock(); +extern Layout.redock(); +extern Boolean Layout.isTransparencySafe(); +extern Boolean Layout.isLayoutAnimationSafe(); +extern Layout.onMouseEnterLayout(); +extern Layout.onMouseLeaveLayout(); +extern Layout.onSnapAdjustChanged(); + + // List + +extern List.addItem(Any _object); +extern List.removeItem(int pos); +extern Any List.enumItem(int pos); +extern Int List.findItem(Any _object); +extern Int List.findItem2(Any _object, int startItem); +extern int List.getNumItems(); +extern List.removeAll(); + + // BitList + +extern boolean BitList.getItem(int n); +extern BitList.setItem(int n, boolean val); +extern BitList.setSize(int s); +extern int BitList.getSize(); + + // Map + +extern Int Map.getValue(int x, int y); +extern Int Map.getARGBValue(int x, int y, int channel); // requires wa 5.51 // channel: 0=Blue, 1=Green, 2=Red, 3=Alpha. if your img has a alpha channal the returned rgb value might not be exact +extern Boolean Map.inRegion(int x, int y); +extern Map.loadMap(String bitmapid); +extern Int Map.getWidth(); +extern Int Map.getHeight(); +extern Region Map.getRegion(); + + // PopupMenu + +extern PopupMenu.addSubMenu(PopupMenu submenu, String submenutext); +extern PopupMenu.addCommand(String cmdtxt, Int cmd_id, Boolean checked, Boolean disabled); +extern PopupMenu.addSeparator(); +extern Int PopupMenu.popAtXY(int x, int y); +extern Int PopupMenu.popAtMouse(); +extern Int PopupMenu.getNumCommands(); +extern PopupMenu.checkCommand(int cmd_id, boolean check); +extern PopupMenu.disableCommand(int cmd_id, boolean disable); + + // Region + +extern Region.add(Region reg); +extern Region.sub(Region reg); +extern Region.offset(int x, int y); +extern Region.stretch(double r); +extern Region.copy(Region reg); +extern Region.loadFromMap(Map regionmap, Int threshold, Boolean reversed); +extern Region.loadFromBitmap(String bitmapid); +extern Int Region.getBoundingBoxX(); +extern Int Region.getBoundingBoxY(); +extern Int Region.getBoundingBoxW(); +extern Int Region.getBoundingBoxH(); + + // Timer + +extern Timer.onTimer(); +extern Timer.setDelay(int millisec); +extern Int Timer.getDelay(); +extern Timer.start(); +extern Timer.stop(); +extern Timer.isRunning(); +extern Int Timer.getSkipped(); + + // FeedWatcher + +deprecated extern Int FeedWatcher.setFeed(String feed_id); +deprecated extern FeedWatcher.releaseFeed(); +deprecated extern FeedWatcher.onFeedChange(String new_feeddata); + + // WindowHolder + +extern WindowHolder.setRegionFromMap(Map regionmap, Int threshold, Boolean reverse); +extern WindowHolder.setRegion(Region reg); +extern GuiObject WindowHolder.getContent(); +extern String WindowHolder.getGuid(); // Fixed in Winamp 5.53 - returns the guid of the current window. If the WindowHolder is not visible the zero-guid is displayed +extern String WindowHolder.getComponentName(); // Requires 5.54 + +deprecated extern WindowHolder.onGetWac(Wac wacobj); +deprecated extern WindowHolder.onGiveUpWac(Wac wacobj); +deprecated extern Wac WindowHolder.getWac(); +deprecated extern WindowHolder.setAcceptWac(Boolean onoff); + + // Edit + +extern Edit.onEnter(); +extern Edit.onAbort(); +extern Edit.onIdleEditUpdate(); +extern Edit.onEditUpdate(); +extern Edit.setText(String txt); +extern Edit.setAutoEnter(boolean onoff); +extern Int Edit.getAutoEnter(); +extern String Edit.getText(); +extern Edit.selectAll(); +extern Edit.enter(); +extern Edit.setIdleEnabled(boolean onoff); +extern Int Edit.getIdleEnabled(); + + // Slider + +extern Slider.onSetPosition(int newpos); +extern Slider.onPostedPosition(int newpos); +extern Slider.onSetFinalPosition(int pos); +extern Slider.setPosition(int pos); +extern Int Slider.getPosition(); +extern Slider.lock(); // locks descendant core collbacks +extern Slider.unlock(); // unloads them + + // Vis + +extern Vis.onFrame(); +extern Vis.setRealtime(Boolean onoff); +extern Boolean Vis.getRealtime(); +extern Int Vis.getMode(); +extern Vis.setMode(Int mode); +extern Vis.nextMode(); + + // Browser + +extern Browser.navigateUrl(String url); +extern Browser.back(); +extern Browser.forward(); +extern Browser.stop(); +extern Browser.refresh(); +extern Browser.home(); +extern Browser.setTargetName(String targetname); +extern Boolean Browser.onBeforeNavigate(String url, Int flags, String targetframename); // return TRUE to cancel navigation +extern Browser.onDocumentComplete(String url); // Will be called for main site and inlineFrames +extern Browser.onDocumentReady(String url); // Requires 5.53 // Will be called after all inlineFrames & site is loaded +extern String Browser.getDocumentTitle(); +extern Browser.onNavigateError(String url, int code); // Requires 5.53 +extern Browser.setCancelIEErrorPage(boolean cancel); // Requires 5.53 + +/** + scrape() + + Starts to search the current document of browser for strings linking to playable madia. + Call best after onDocumenteComplete(); + No params. +*/ +extern browser.scrape(); //Requires 5.5 + +/** + onMediaLink() + + Called everytime the SiteScraper has found a media link + in the current document. + + @param url A string that contains the URL link to this file. +*/ +extern string browser.onMediaLink(string url); //Requires 5.5 + + + // Text + +extern Text.setText(String txt); // changes the display/text="something" param +extern Text.setAlternateText(String txt); // overrides the display/text parameter with a custom string, set "" to cancel +extern String Text.getText(); +extern int Text.getTextWidth(); +extern Text.onTextChanged(String newtxt); + + // Layer + +extern Layer.onBeginResize(int x, int y, int w, int h); +extern Layer.onEndResize(int x, int y, int w, int h); +extern Layer.fx_onInit(); +extern Layer.fx_onFrame(); +extern Double Layer.fx_onGetPixelR(double r, double d, double x, double y); +extern Double Layer.fx_onGetPixelD(double r, double d, double x, double y); +extern Double Layer.fx_onGetPixelX(double r, double d, double x, double y); +extern Double Layer.fx_onGetPixelY(double r, double d, double x, double y); +extern Double Layer.fx_onGetPixelA(double r, double d, double x, double y); +extern Layer.setRegionFromMap(Map regionmap, int threshold, boolean reverse); +extern Layer.setRegion(Region reg); +extern Layer.fx_setEnabled(boolean onoff); +extern Boolean Layer.fx_getEnabled(); +extern Layer.fx_setWrap(Boolean onoff); +extern Boolean Layer.fx_getWrap(); +extern Layer.fx_setRect(Boolean onoff); +extern Boolean Layer.fx_getRect(); +extern Layer.fx_setBgFx(Boolean onoff); +extern Boolean Layer.fx_getBgFx(); +extern Layer.fx_setClear(Boolean onoff); +extern Boolean Layer.fx_getClear(); +extern Layer.fx_setSpeed(Int msperframe); +extern Int Layer.fx_getSpeed(); +extern Layer.fx_setRealtime(Boolean onoff); +extern Boolean Layer.fx_getRealtime(); +extern Layer.fx_setLocalized(Boolean onoff); +extern Boolean Layer.fx_getLocalized(); +extern Layer.fx_setBilinear(Boolean onoff); +extern Boolean Layer.fx_getBilinear(); +extern Layer.fx_setAlphaMode(Boolean onoff); +extern Boolean Layer.fx_getAlphaMode(); +extern Layer.fx_setGridSize(Int x, Int y); +extern Layer.fx_update(); +extern Layer.fx_restart(); +extern Boolean Layer.isInvalid(); // Returns 1 if image load failed + + // Button + +extern Button.onActivate(int activated); +extern Button.onLeftClick(); +extern Button.onRightClick(); +extern Button.setActivated(Boolean onoff); +extern Button.setActivatedNoCallback(Boolean onoff); +extern Boolean Button.getActivated(); +extern Button.leftClick(); +extern Button.rightClick(); + + // AnimatedLayer + +extern AnimatedLayer.onPlay(); +extern AnimatedLayer.onPause(); +extern AnimatedLayer.onResume(); +extern AnimatedLayer.onStop(); +extern AnimatedLayer.onFrame(Int framenum); +extern AnimatedLayer.setSpeed(Int msperframe); +extern AnimatedLayer.gotoFrame(int framenum); +extern AnimatedLayer.setStartFrame(Int framenum); +extern AnimatedLayer.setEndFrame(int framenum); +extern AnimatedLayer.setAutoReplay(Boolean onoff); +extern AnimatedLayer.play(); +extern AnimatedLayer.stop(); +extern AnimatedLayer.pause(); +extern Boolean AnimatedLayer.isPlaying(); +extern Boolean AnimatedLayer.isPaused(); +extern Boolean AnimatedLayer.isStopped(); +extern Int AnimatedLayer.getStartFrame(); +extern Int AnimatedLayer.getEndFrame(); +extern Int AnimatedLayer.getLength(); +extern Int AnimatedLayer.getDirection(); +extern Boolean AnimatedLayer.getAutoReplay(); +extern Int AnimatedLayer.getCurFrame(); +extern AnimatedLayer.setRealtime(Boolean onoff); + + // AlbumArt + +extern AlbumArtLayer.refresh(); +extern AlbumArtLayer.isLoading(); +extern AlbumArtLayer.onAlbumArtLoaded(boolean success); + + // ToggleButton + +extern ToggleButton.onToggle(Boolean onoff); +extern int TOggleButton.getCurCfgVal(); + + // GroupList + +extern Group GroupList.instantiate(String group_id, int num_groups); +extern Int GroupList.getNumItems(); +extern Group GroupList.enumItem(int num); +extern GroupList.removeAll(); +extern GroupList.scrollToPercent(Int percent); +extern GroupList.setRedraw(int redraw); + + // CfgGroup + +extern Int CfgGroup.cfgGetInt(); +extern CfgGroup.cfgSetInt(Int intvalue); +extern String CfgGroup.cfgGetString(); +extern Float CfgGroup.cfgGetFloat(); +extern CfgGroup.cfgSetFloat(Float floatvalue); +extern CfgGroup.cfgSetString(String strvalue); +extern CfgGroup.onCfgChanged(); +extern String CfgGroup.cfgGetGuid(); +extern String CfgGroup.cfgGetName(); + + // QueryList + +deprecated extern QueryList.onResetQuery(); + + // MouseRedir + +extern MouseRedir.setRedirection(GuiObject o); +extern GuiObject MouseRedir.getRedirection(); +extern MouseRedir.setRegionFromMap(Map regionmap, Int threshold, Boolean reverse); +extern MouseRedir.setRegion(Region reg); + + // DropDownList + +extern String DropDownList.getItemSelected(); +extern DropDownList.onSelect(Int id, Int hover); +extern DropDownList.setListHeight(Int h); +extern DropDownList.openList(); +extern DropDownList.closeList(); +extern DropDownList.setItems(String lotsofitems); +extern Int DropDownList.addItem(String _text); +extern DropDownList.delItem(Int id); +extern Int DropDownList.findItem(String _text); +extern Int DropDownList.getNumItems(); +extern DropDownList.selectItem(Int id, Int hover); +extern String DropDownList.getItemText(Int id); +extern Int DropDownList.getSelected(); +extern String DropDownList.getSelectedText(); +extern String DropDownList.getCustomText(); +extern DropDownList.deleteAllItems(); +extern DropDownList.setNoItemText(String txt); + + + // LayoutStatus + +extern LayoutStatus.callme(String str); + + // TabSheet + +extern Int TabSheet.getCurPage(); +extern TabSheet.setCurPage(Int a); + + // GuiList + +// Columns +extern Int GuiList.addColumn(String name, Int width, Int numeric); +extern Int GuiList.getNumColumns(); +extern Int GuiList.getColumnWidth(Int column); +extern GuiList.setColumnWidth(Int column, Int newwidth); +extern String GuiList.getColumnLabel(Int column); +extern GuiList.setColumnLabel(Int column, String newlabel); +extern Int GuiList.getColumnNumeric(Int column); +extern GuiList.setColumnDynamic(Int column, Int isdynamic); +extern Int GuiList.isColumnDynamic(Int column); +extern GuiList.invalidateColumns(); +// Items +extern Int GuiList.getNumItems(); +extern Int GuiList.getItemCount(); +extern Int GuiList.addItem(String label); +extern Int GuiList.insertItem(Int pos, String label); +extern Int GuiList.getLastAddedItemPos(); +extern GuiList.setSubItem(Int pos, Int subpos, String txt); +extern GuiList.deleteAllItems(); +extern Int GuiList.deleteByPos(Int pos); +extern String GuiList.getItemLabel(Int pos, Int subpos); +extern String GuiList.getSubitemText(Int pos, Int subpos); +extern GuiList.setItemLabel(Int pos, String _text); +extern Int GuiList.invalidateItem(Int pos); +extern Int GuiList.getFirstItemVisible(); +extern Int GuiList.getLastItemVisible(); +extern GuiList.setItemIcon(Int pos, String bitmapId); // Requires 5.54 +extern String GuiList.getItemIcon(Int pos); // Requires 5.54 +// Attributes +extern GuiList.setMinimumSize(Int size); +extern Int GuiList.getWantAutoDeselect(); +extern GuiList.setWantAutoDeselect(Int want); +extern GuiList.onSetVisible(Int show); +extern GuiList.setAutoSort(Int dosort); +extern Int GuiList.setFontSize(Int size); +extern Int GuiList.getFontSize(); +extern Int GuiList.getHeaderHeight(); +extern Int GuiList.getPreventMultipleSelection(); +extern Int GuiList.setPreventMultipleSelection(Int val); +extern GuiList.setShowIcons(int showThem); // Requires 5.54 +extern Int GuiList.getShowIcons(); // Requires 5.54 +extern Int GuiList.setIconWidth(int width); // Requires 5.54 +extern Int GuiList.setIconHeight(int width); // Requires 5.54 +extern GuiList.getIconWidth(); // Requires 5.54 +extern GuiList.getIconHeight(); // Requires 5.54 +// Navigation +extern GuiList.next(); +extern GuiList.previous(); +extern GuiList.pagedown(); +extern GuiList.pageup(); +extern GuiList.home(); +extern GuiList.end(); +extern GuiList.reset(); +extern GuiList.ensureItemVisible(Int pos); +extern Int GuiList.scrollAbsolute(Int x); +extern Int GuiList.scrollRelative(Int x); +extern GuiList.scrollLeft(Int lines); +extern GuiList.scrollRight(Int lines); +extern GuiList.scrollUp(Int lines); +extern GuiList.scrollDown(Int lines); +extern GuiList.jumpToNext(Int c); +extern GuiList.scrollToItem(Int pos); +// Selecting +extern GuiList.selectCurrent(); +extern GuiList.selectFirstEntry(); +extern Int GuiList.getItemSelected(Int pos); +extern Int GuiList.isItemFocused(Int pos); +extern Int GuiList.getItemFocused(); +extern GuiList.setItemFocused(Int pos); +extern Int GuiList.getFirstItemSelected(); +extern Int GuiList.getNextItemSelected(Int lastpos); +extern Int GuiList.selectAll(); +extern Int GuiList.deselectAll(); +extern Int GuiList.invertSelection(); +extern GuiList.setSelectionStart(Int pos); +extern GuiList.setSelectionEnd(Int pos); +extern GuiList.setSelected(Int pos, Int selected); +extern GuiList.toggleSelection(Int pos, Int setfocus); +// Actions, Moving +extern GuiList.resort(); +extern Int GuiList.getSortDirection(); +extern Int GuiList.getSortColumn(); +extern GuiList.setSortColumn(Int col); +extern GuiList.setSortDirection(Int dir); +extern GuiList.moveItem(Int from, Int to); +// Callbacks +extern GuiList.onSelectAll(); +extern GuiList.onDelete(); +extern GuiList.onDoubleClick(Int itemnum); +extern GuiList.onLeftClick(Int itemnum); +extern GuiList.onSecondLeftClick(Int itemnum); +extern Int GuiList.onRightClick(Int itemnum); +extern Int GuiList.onColumnDblClick(Int col, Int x, Int y); +extern Int GuiList.onColumnLabelClick(Int col, Int x, Int y); +extern GuiList.onItemSelection(Int itemnum, Int selected); +extern Int GuiList.onIconLeftClick(int itemnum, int x, int y); // Return 1 to prevent other actions to be called (eg onLeftClick()) // Requires 5.54 + + + + // GuiTree + +extern Int GuiTree.onWantAutoContextMenu(); +extern Int GuiTree.onMouseWheelUp(Int clicked, Int lines); +extern Int GuiTree.onMouseWheelDown(Int clicked, Int lines); +extern Int GuiTree.onContextMenu(Int x, Int y); +extern Int GuiTree.onChar(Int c); +extern GuiTree.onItemRecvDrop(TreeItem item); +extern GuiTree.onLabelChange(TreeItem item); +extern GuiTree.onItemSelected(TreeItem item); +extern GuiTree.onItemDeselected(TreeItem item); + +extern Int GuiTree.getNumRootItems(); +extern TreeItem GuiTree.enumRootItem(Int which); +extern GuiTree.jumpToNext(Int c); +extern GuiTree.ensureItemVisible(TreeItem item); +extern Int GuiTree.getContentsWidth(); +extern Int GuiTree.getContentsHeight(); +extern TreeItem GuiTree.addTreeItem(TreeItem item, TreeItem par, Int sorted, Int haschildtab); +extern Int GuiTree.removeTreeItem(TreeItem item); +extern GuiTree.moveTreeItem(TreeItem item, TreeItem newparent); +extern GuiTree.deleteAllItems(); +extern Int GuiTree.expandItem(TreeItem item); +extern GuiTree.expandItemDeferred(TreeItem item); +extern Int GuiTree.collapseItem(TreeItem item); +extern GuiTree.collapseItemDeferred(TreeItem item); +extern GuiTree.selectItem(TreeItem item); +extern GuiTree.selectItemDeferred(TreeItem item); +extern GuiTree.delItemDeferred(TreeItem item); +extern GuiTree.hiliteItem(TreeItem item); +extern GuiTree.unhiliteItem(TreeItem item); +extern TreeItem GuiTree.getCurItem(); +extern TreeItem GuiTree.hitTest(Int x, Int y); +extern GuiTree.editItemLabel(TreeItem item); +extern GuiTree.cancelEditLabel(Int destroyit); +extern GuiTree.setAutoEdit(Int ae); +extern Int GuiTree.getAutoEdit(); +extern TreeItem GuiTree.getByLabel(TreeItem item, String name); +extern GuiTree.setSorted(Int dosort); +extern Int GuiTree.getSorted(); +extern GuiTree.sortTreeItems(); +extern TreeItem GuiTree.getSibling(TreeItem item); +extern GuiTree.setAutoCollapse(Int doautocollapse); +extern Int GuiTree.setFontSize(Int newsize); +extern Int GuiTree.getFontSize(); +extern Int GuiTree.getNumVisibleChildItems(TreeItem c); +extern Int GuiTree.getNumVisibleItems(); +extern TreeItem GuiTree.enumVisibleItems(Int n); +extern TreeItem GuiTree.enumVisibleChildItems(TreeItem c, Int n); +extern TreeItem GuiTree.enumAllItems(Int n); +extern Int GuiTree.getItemRectX(TreeItem item); +extern Int GuiTree.getItemRectY(TreeItem item); +extern Int GuiTree.getItemRectW(TreeItem item); +extern Int GuiTree.getItemRectH(TreeItem item); +// extern TreeItem GuiTree.getItemFromPoint(Int x, Int y); + + + + // TreeItem + +extern Int TreeItem.getNumChildren(); +extern TreeItem.setLabel(String label); +extern String TreeItem.getLabel(); +extern TreeItem.ensureVisible(); +extern TreeItem TreeItem.getNthChild(Int nth); +extern TreeItem TreeItem.getChild(); +extern TreeItem TreeItem.getChildSibling(TreeItem _item); +extern TreeItem TreeItem.getSibling(); +extern TreeItem TreeItem.getParent(); +extern TreeItem.editLabel(); +extern Int TreeItem.hasSubItems(); +extern TreeItem.setSorted(Int issorted); +extern TreeItem.setChildTab(Int haschildtab); +extern Int TreeItem.isSorted(); +extern Int TreeItem.isCollapsed(); +extern Int TreeItem.isExpanded(); +extern TreeItem.invalidate(); +extern Int TreeItem.isSelected(); +extern Int TreeItem.isHilited(); +extern TreeItem.setHilited(Int ishilited); +extern Int TreeItem.collapse(); +extern Int TreeItem.expand(); +extern GuiTree TreeItem.getTree(); +// return 1 to override default behaviour of stuff. +extern TreeItem.onTreeAdd(); +extern TreeItem.onTreeRemove(); +extern TreeItem.onSelect(); +extern TreeItem.onDeselect(); +extern Int TreeItem.onLeftDoubleClick(); +extern Int TreeItem.onRightDoubleClick(); +extern Int TreeItem.onChar(Int key); +extern TreeItem.onExpand(); +extern TreeItem.onCollapse(); +extern Int TreeItem.onBeginLabelEdit(); +extern Int TreeItem.onEndLabelEdit(String newlabel); +extern Int TreeItem.onContextMenu(Int x, Int y); + + + // MenuButton + +deprecated extern MenuButton.onOpenMenu(); +deprecated extern MenuButton.onCloseMenu(); +deprecated extern MenuButton.onSelectItem(String item); +deprecated extern MenuButton.openMenu(); +deprecated extern MenuButton.closeMenu(); + + + // CheckBox + +extern CheckBox.onToggle(int newstate); +extern CheckBox.setChecked(int checked); +extern Int CheckBox.isChecked(); +extern CheckBox.setText(String txt); +extern String CheckBox.getText(); + + + // Form + +deprecated extern Int Form.getContentsHeight(); +deprecated extern Form.newCell(String groupname); +deprecated extern Form.nextRow(); +deprecated extern Form.deleteAll(); + + + // ComponentBucket + +extern Int ComponentBucket.getMaxHeight(); // for vertical compbucks +extern Int ComponentBucket.getMaxWidth(); // for horizontal compbucks +extern Int ComponentBucket.setScroll(int x); +extern Int ComponentBucket.getScroll(); +extern Int ComponentBucket.getNumChildren(); +extern GuiObject ComponentBucket.enumChildren(int n); + + + // Frame (Requires 5.5) + +extern Int Frame.getPosition(); +extern Frame.setPosition(Int position); +extern Frame.onSetPosition(Int position); + + + // Menu (Requires 5.52) + +extern Menu.setMenuGroup(String groupId); +extern String Menu.getMenuGroup(); +extern Menu.setMenu(String menuId); +extern String Menu.getMenu(); +extern Menu.spawnMenu(int monitor); // monitor can be 1 or 0 - default 1. 0 doesn't trigger some keyboard timers... +extern Menu.cancelMenu(); +extern Menu.setNormalId(String id); +extern Menu.setDownId(String id); +extern Menu.setHoverId(String id); +extern Menu.onOpenMenu(); +extern Menu.onCloseMenu(); +extern Menu.nextMenu(); +extern Menu.previousMenu(); + +// predecl system symbols +.CODE + +// This function is called by System.onScriptLoaded() as the first thing it does. Subsequent events check +// __deprecated_runtime before continuing. If you have no System.onScriptLoaded(), you will have no version check. + +// This is to ensure that runtimes that do not have stack protection (that is wa3, wa5 and wa5.01) do +// not crash when trying to unexisting functions (with parameters, since parameterless functions would +// not crash), that is, functions that are meant for a higher version number than that of the runtime +// the script is running on. + +Function Int versionCheck(); +Int versionCheck() { + Double v = getRuntimeVersion(); + if (v < VCPU_VERSION || v > 65535) { + __deprecated_runtime = 1; + int last = getPrivateInt(getSkinName(), "runtimecheck", 0); + int now = getTimeOfDay(); + if (now - last < 5000 && last < now) return 0; + setPrivateInt(getSkinName(), "runtimecheck", getTimeOfDay()); + messageBox("This script requires " + MC_TARGET, "Error", 1, ""); + return 0; + } + return 1; +} + +// begin protecting the stack, anything below this requires a getRuntimeVersion() >= 1 and <= 65535 +.STACKPROT + +/*---------------*/ + +Function debug(string s); +debug(string s) { messagebox(s, "DEBUG", 0, ""); } + +Function debugInt(int s); +debugInt(int s) { messagebox(integerToString(s), "DEBUG", 0, ""); } + +#endif + |