No announcement yet.

Wasabi Engine Changelog

  • Filter
  • Time
  • Show
Clear All
new posts

  • Wasabi Engine Changelog

    here is a list of all changes to the wasabi engine since winamp 5.2.

    Please don't reply in this thread. It's purpose is only to show you the recent changes in winamp's wasabi engine and will be filled when new changes are made.

    The home for Winamp Modern Skins. This is where art and code clash! If you get stuck with your Maki (Nullsoft's scripting language) or XML, come on over! If you figure out a clever way to do something, post your solution here!


    Winamp 5.2

    * Fixed: [gen_ff] regions on components don't work
    You can now put a region over a component:
    PHP Code:
    <component id="avs" region="region.avs" ... /> 
    -> create a avs wnd which is round for example.

    * Improved: [gen_ff] new vis modes available to skinners
    A cool addition, the <vis> object has now the same options as the winamp classic vis!
    PHP Code:
    x="24" y="43"
    w="72" h="16"
    bandwidth="thin"      (or "wide")
    falloff="4"           (0-4)
    peakfalloff="4"       (0-4)
    fps="60"              (any number you want)
    coloring="normal"     (also, ="fire", ="line")
    peaks="0"             (0=off1=on)
    oscstyle="solid"      (also, ="dots", ="lines")

    Winamp 5.21

    including XML files with *.xml won't work anymore

    Winamp 5.22

    Changes to the wac loader had been made - You need to upgrade to ColorEditor 2.0.3 if you wanna use it!

    Checkboxes with radiogroups and ONE linked ConfigAttribute won't show it's state

    new xml object <images>
    <images> is something like an animated layer, but shows frames according to a source!

    PHP Code:
        <images id="volumewa2" source="volume" 
    x="0" y="0"
    w="68" h="13"
    images="main.volpan.volume" imagesspacing="15" 
    source = volume, pan, seek (perhaps there will come more)
    images = your image (all frames in one image like animated layer)
    imagesspacing = height of one single frame

    that's all

    instead of using images with source="seek" i would use the <ProgressGrid> object or an real animated layer.

    -No special maki functions till now

    Winamp 5.23

    The green placeholder for wrong defined images in layers is back! - Take note that in all your old skins with wrong imageIDs this green Image not found icon will be shown!
    According to this if you load a nonexisting image in a map and wanna get its h/w it will return 64 instead of 0!

    * Fixed: [gen_ff] Map.getHeight() maki script function returning width instead
    self explaining...'s possible to get the dimension of a image with Map.getHeight()/Map.getWidth()

    * Fixed: [gen_ff] Wasabi XML font-related fixes from Martin Poehlmann
    Wasabi:Text, CheckBoxes, etc. have the right fontsize (14) again.

    Winamp 5.3

    * Fixed: [gen_ff] gradient drawing glitch and crash
    Gradients are now drawn correctly on resize and won't crash!

    * Fixed: [gen_ff] layerfx not being redrawn on colortheme change
    self explaining...

    * Improved: [gen_ff] better sample rate display
    PHP Code:
        <text display="SONGINFO"/> 
    and System.getSongInfoText()
    will display 44.1kHz instead of 44kHz

    note: Not working if you use
    PHP Code:
        <text display="SONGSAMPLERATE"/> 
    <Wasabi:VSlider> object working again without screwed thumbs
    WebSite: - Community for Userinterface Design & Coding
    Skins: Click Here

  • #2
    Winamp 5.31

    The wacloader in gen_ff.dll had been altered to load the recompiled console.wac (Wasabi Debug Console - Can be downloaded from Winamp - Plugins, or the development thread in the modern skin forum), therefore you must switch to a new ColorEditor (v2.1.0) because the old won't work anymore. Moreover the new ColorEditor has got a few new functions; downloadable from Winamp - Plugins, or the development thread in the modern skin forum!

    * New: You can load files from the internet

    PHP Code:
        <layer image=""/> 
    PHP Code:
        <element file=""/> 
    Will load files from the internet.
    note: This may cause a much slower skinloading with old dial-up connections!

    * Fixed: [gen_ff] System.playFile not working on URLs
    System.playFile(string url) can load now:
    +file://... files
    +http://... files
    +linein:// -> direct connection to the lineIn plugin (you can create a record or aux button in your skin)
    +various other urls/streams

    * Fixed: Thinger icons for old wa3 skins (filereader.w5s missing)
    Broken in Winamp5.3, now working again!

    * New: GUID for Station Info Window
    Here it is: {25CE50EF-3EE2-4356-A638-6E495C44BFB8}
    WebSite: - Community for Userinterface Design & Coding
    Skins: Click Here


    • #3
      Winamp 5.33

      * Fixed: system.getPublicString(string param, string defvalue)
      Broken since - i don't know - but works now again
      WebSite: - Community for Userinterface Design & Coding
      Skins: Click Here


      • #4
        Winamp 5.5

        We're using a new skin version from now on: 1.3
        Defining it as 1.3 causes also that wasabi.scrollbar.[] images are used for ml scrollbars.

        * New Object <PlaylistDirectory />
        This Object holds all Playlists stored in the ML.
        You can also bring this view up using the old Winamp 3 Playlist Side car
        PHP Code:
        <Wasabi:TabSheet id="pls.sidecar" windowtype="plsc" type="2" fitparent="1"/> 
        * New Object <AlbumArt />
        This is the new build in Album Art view.
        PHP Code:
        <AlbumArt notFoundImage="someImg"/> 
        * Altering Media Library Album Art Image
        PHP Code:
        <bitmap id="winamp.cover.notfound" file="notfound.png"/> 
        * New Object <SongTicker />
        This is a new Songticker, which uses less resources on scrolling.
        It uses most of the params <text/> uses. The param ticker is now different:
        ticker="off" --> no scrolling
        ticker="bounce" --> modern scrolling
        ticker="scroll" --> good ol' wa2 ticker
        to change the ticker style on the fly, load this object as a GuiObject in your script and use setXmlParam()!

        * New params for <Wasabi:Frame> object
        PHP Code:
            <Wasabi:Frame maxwidth="-100" minwidth="100"/> 
        Wasabi:Frame now supports maxwidth="" and minwidth="" to change the range over which the divider operates

        * New param for <Container> object
        PHP Code:
            <Container primarycomponent="guid:player"/> 
        Defining the primarycomponent will help to get the keyboardfocus back from playlist, medialibrary to default player ones in sui skins.

        * New params for <button> object
        PHP Code:
            <button action="ML_SendTo" /> 
        show send-to menu (uses currently playing track as the sent item when clicked)

        * New param for <text> object
        PHP Code:
            <button antialias="0"/> 
        was already included in wa3, now it is back!

        * New functions in std.mi
        PHP Code:
            extern Boolean System.onOpenURL(string url); 
        called everytime winamp wants to open a website in an extern browser, return 1 to cancel opening (usefull to show pages in skin's browser)
        PHP Code:
            extern Int System.getCurrentTrackRating(); 
        PHP Code:
            extern System.onCurrentTrackRated(int rating); 
        PHP Code:
            extern System.setCurrentTrackRating(int rating); 
        hehe, now we have the track rating via maki
        We also have a new script object Frame which refers to Wasabi:Frame in XML.
        PHP Code:
            extern Int Frame.getPosition(); 
        PHP Code:
            extern Frame.setPosition(Int position); 
        PHP Code:
            extern browser.scrape(); 
        PHP Code:
            extern browser.onMediaLink(string url); 
        PHP Code:
            extern System.enqueueFile(String playitem); 
        PHP Code:
            extern System.clearPlaylist(); 
        PHP Code:
            extern Boolean Layer.isInvalid(); 
        PHP Code:
            extern Int System.getMonitorWidth(); 
        PHP Code:
            extern Int System.getMonitorWidthFromPoint(int xint y); 
        PHP Code:
            extern Int System.getMonitorHeight(); 
        PHP Code:
            extern Int System.getMonitorHeightFromPoint(int xint y); 
        * New library winampconfig.mi
        With this library we have access to almost all winamp config settings. See attached package.

        * New supported file formats
        Now it is also possible to load .bmp and .gif files via the skinning engine. Of course support for .png and .jpg is still included!

        * Fixed: Transparent docked toolbars for skins using alpha-blending

        * Fixed: "Can't unload script while in script" error when switching skins

        * Fixed: Some tooltip bugs

        ... I am sure there is something i forgot
        WebSite: - Community for Userinterface Design & Coding
        Skins: Click Here


        • #5
          Winamp 5.51

          New skin version from now on: 1.31

          * Reanimated old pldir.mi lib from Winamp3
          See pldir.mi bundled with WaSDP (which can be downloaded from the forums) for all the new functions.

          * std.mi updates
          PHP Code:
          extern String Browser.getDocumentTitle();
          extern String System.getWinampVersion();
          extern Int System.getBuildNumber();
          extern int System.getFileSize(String fullfilename);
          extern System.onEqFreqChanged(int isiso); 
          * Added total time column for </PlaylistDirecory> object

          * <Winamp:Browser/> is now a separate XUI object
          But you need to add some things to your skin in order to use it, see plugins/freeform/xml/wasabi/xml/xui/browser/browser.xml for details

          * new action & param for buttons, etc:
          PHP Code:
              action="WA5:Prefs" param="42" 
          42 represents the number of the prefs page (in this case playback prefs) - perhaps there will be a more complete list in wa_ipc.cpp

          * better handling of dblclickaction and rclickaction
          I have added support for the new param "dblclickparam" to layer and text object, "rclickparam" is supported only for textobject.
          If there are any more objects using dblclickaction/rclickaction lemme know, but i thought these ones were all.
          the normal "param" parameter is not recognized by dbl/rclickaction, tbh they were never recognized by gen_ff
          so you can call
          PHP Code:
              <layer dblclickaction="WA5:Prefs" dblclickparam="42"/> 
          * better guru documentation
          guru.log is now saved in the same directory as winamp.ini (for vista: c:\users\%username%\appdata\roaming\winamp)
          And the output saves now the failing script as well:
          PHP Code:
          Mon Nov 12 15:28:03 2007 (Bento/xml/xui/browser/browser.maki) - Ignoring call #001C.00570848.39 Null object called 
          * OS cursor support
          you can define os cursors via cursor="IDC_*" as param for button, layer, ...
          moreover, <layer/> object should now also respect the cursor= param

          * Accelerator Definitions (5.51 Final)
          You can define Accelerators now within the skin the same way as within language packs. Listen to them via system.onAccelerator(...).
          PHP Code:
          <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

          <WinampAbstractionLayer version="1.31">
                  <version>1.0 #117</version>
                  <name>Big Bento</name>
                  <author>Martin Poehlmann</author>
                  <comment>Graphics by Taber Buhl - Wasabi Development by Ben Allison and Martin Poehlmann</comment>
                  <email>[email protected]</email>

              <accelerators section="main">
                  <accelerator bind="Alt+F" action="MENUHOTKEY_FILE" />
                  <accelerator bind="Alt+P" action="MENUHOTKEY_PLAY" />
                  <accelerator bind="Alt+O" action="MENUHOTKEY_OPTIONS" />
                  <accelerator bind="Alt+I" action="MENUHOTKEY_VIEW" />
                  <accelerator bind="Alt+H" action="MENUHOTKEY_HELP" />
          * reading ARGB from Bitmaps
          PHP Code:
          extern Int Map.getARGBValue(int xint yint channel); 
          If your bitmap has no alpha channel the rgb values are 100% correct. If the bitmap has an alpha channel the alpha value is reported right but RGB must be estimated a lil bit.

          Check also for the updates in pldir.mi
          WebSite: - Community for Userinterface Design & Coding
          Skins: Click Here


          • #6
            Winamp 5.52

            New skin version from now on: 1.32

            * Fixed <Menu/> object is not instanciable in make
            It was time to fix this! Moreover, there is a bunch of functions now available in maki (for the newest std.mi goto WaSDP Thread)
            PHP Code:
            extern Menu.setMenuGroup(String groupId);
            extern String Menu.getMenuGroup();
            extern Menu.setMenu(String menuId);
            extern String Menu.getMenu();
            extern Menu.spawnMenu(int monitor);
            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(); 
            * <Winamp:Browser/>
            adding the param home="" will load on startup if the user hasn't configured ones own default home
            WebSite: - Community for Userinterface Design & Coding
            Skins: Click Here


            • #7
              Winamp 5.53

              New skin version from now on: 1.33
              Here are the updated libs:
              I'll compile a new WaSDP as soon i've time.

              * New Library: fileio.mi
              Some basic functions for Files and a XML Parser

              * New Library: application.mi
              Wrapperobject around api_application

              * std.mi updates:
              PHP Code:
              extern String System.getMetaDataString(String filenameString metadataname);
              extern String System.getDownloadPath();
              extern System.setDownloadPath(String new_path);
              extern String System.selectFolder(String wnd_titleString wnd_infoString default_path);

              extern String Container.getName();
              extern String Container.getGuid();
              //This one is fixed as well:
              extern String WindowHolder.getGuid();

              extern Browser.onDocumentReady(String url);
              extern Browser.onNavigateError(String urlint code);
              extern Browser.setCancelIEErrorPage(boolean cancel); 
              * PlDir.mi updtaes
              PHP Code:
               You need to instanciate a PlEdit object first. so basically it goes like this:

               Global PlEdit PeListener;

               System.onScriptLoaded ()
                  PeListener = new PlEdit;

               PeListener.onPleditModified ()
                  // Do some crazy stuff
              extern        PlEdit.onPleditModified    (); 
              * New <AlbumArt/> Params

              * Enhanced <Wasabi:Frame/>
              new params:
              -minheight, maxheight (as alias for minwidth, maxwidth)
              -whereas you can add 'null' as value for maxheight/maxwidth to remove any resizing restriction
              Fixed: child can be resized 'out of the frame'

              * Altered XML Stringreplacements
              @[email protected] is no longer supported since it has pointed to Skins/default which isn't included in Winamp5 anymore.

              * Fixed: loading of *.xml files

              * Improved: gen_ml AlbumArt views
              The ML uses now three different albumart nor found images - depending on the preview size:
              PHP Code:
              <bitmap id="winamp.cover.notfound" file="xml/winamp/cover/notfound.png" gammagroup="DisplayText"/>
              bitmap id="winamp.cover.notfound.60" file="xml/winamp/cover/notfound60.png" gammagroup="DisplayText"/>
              bitmap id="winamp.cover.notfound.90" file="xml/winamp/cover/notfound90.png" gammagroup="DisplayText"/> 
              And I'm sorry i had not time to focus on any of the reports from Plague - but will keep this in mind!
              WebSite: - Community for Userinterface Design & Coding
              Skins: Click Here


              • #8
                Winamp 5.54

                New skin version from now on: 1.34

                * New: Stringtable Support
                You can define Strings now in XML like this:

                <StringTable id="nullsoft.browser">
                <StringEntry id="0" string="Hide"/>

                and insert it in textobjects like this

                <text translate="2" text="@nullsoft.browser#0"/>

                This is also working for tooltips etc. See Plugins/freeform/.../browser/ for a working implementation

                * New <AlbumArt/> Params
                -stretch: always use the skin-defined dimensions if 1

                * New <List/> Params
                These params apply also for derived list classes, like colorthemes list and downloads list
                -background: use a userdefined background image
                -tile: use background tiling (default: on)
                -nocolheader: hide the column header

                * New <Text/> Params
                -translate: set to 0 in order to turn off translation, 1 to turn keep translation as it is (wa3 based locale files) or 2 for Stringtable usage.

                * New: Icon Support for GuiList
                PHP Code:
                extern GuiList.setItemIcon(Int posString bitmapId);
                extern String GuiList.getItemIcon(Int pos);
                extern GuiList.setShowIcons(int showThem);
                extern Int GuiList.getShowIcons();
                extern Int GuiList.setIconWidth(int width);
                extern Int GuiList.setIconHeight(int width);
                extern GuiList.getIconWidth();
                extern GuiList.getIconHeight();
                extern Int GuiList.onIconLeftClick(int itemnumint xint y); // Return 1 to prevent other actions to be called (eg onLeftClick()) 
                * New: AlbumArtLayer is a new script object, so you can create albumart layers on the fly within maki

                * New: std.mi functions
                PHP Code:
                System.urlDecode(String url);
                extern System.downloadMedia(String urlString destinationPathboolean wantAddToMLboolean notifyDownloadsList); // Replacement for downloadUrl()

                // The next two are just working on layouts atm (but proove me wrong)
                GuiObject.onMouseWheelUp(int clicked int lines);
                GuiObject.onMouseWheelDown(int clicked int lines);


                 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);

                 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 tableint id);

                 Returns the Language Identifier (en-us or de-de).

                 @ret        Language Identifier.
                extern String System.getLanguageId(); // Requires 5.54 
                * Fixed: std.mi functions
                PHP Code:
                Menu.disableCommand(int entryint disabled); 
                * Fixed: <text/> Time
                Previously adding TIMEREMAINING or TIMEELAPSED as display contant for text objects kept the text still in sync w/ timers of this layout. This has been improved! Defining any of those two params will let start the timer in the defined mode and the current mode gets saved separate from other time objects (You need to specify an unique ID).
                Moreover the timehour mode is now fixed to show "-" if in remaining mode.

                * Added: antialias param to dropdownlist/combobox/historyeditbox
                WebSite: - Community for Userinterface Design & Coding
                Skins: Click Here


                • #9
                  Winamp 5.55

                  New skin version from now on: 1.36

                  * New: Colormanager Library - Set, alter and change colorthemes with maki
                  See new WaSDP for more info.

                  * New: Layout params
                  -move: can be set to "0" to disable user moving
                  -resizable: can be set to "0" to disable user resizing
                  -scalable: can be set to "0" to disable user scaling

                  Improved: slider thumbs can now be stretched so they have the same h/w like barmiddle/-left/-right via stretchThumb="1"

                  * Fixed: Gradient Object not updated w/ Colorthemes Changing

                  * Fixed: SONGTITLE shown on startup for SONGINFO textlines
                  WebSite: - Community for Userinterface Design & Coding
                  Skins: Click Here