Methods
-
inner on_always_on_top_changed(state)
-
Called when "Always On Top" state changes: from using the menu, Alt + A, fb.AlwaysOnTop and etc.
Parameters:
Name Type Description stateboolean -
inner on_char(code)
-
Note: in order to use this callback, use window.DlgCode(DLGC_WANTCHARS).
See Flags.js > DLGC_WANTCHARS.Parameters:
Name Type Description codenumber UTF16 encoded char -
inner on_colours_changed()
-
Called when colours are changed via default UI/columns UI preferences.
Note: use window.GetColourCUI/window.GetColourDUI to get new colours. -
inner on_cursor_follow_playback_changed(state)
-
Called when "cursor follow playback" state is changed.
Parameters:
Name Type Description stateboolean current "cursor follow playback" value -
inner on_drag_drop(action, x, y, mask)
-
See fb.DoDragDrop documentation and samples/basic/DragnDrop.txt
Parameters:
Name Type Description actionDropTargetAction xnumber ynumber masknumber see Flags.js > Mask -
inner on_drag_enter(action, x, y, mask)
-
See fb.DoDragDrop documentation and samples/basic/DragnDrop.txt
Parameters:
Name Type Description actionDropTargetAction xnumber ynumber masknumber see Flags.js > Mask -
inner on_drag_leave()
-
See fb.DoDragDrop documentation and samples/basic/DragnDrop.txt
-
inner on_drag_over(action, x, y, mask)
-
See fb.DoDragDrop documentation and samples/basic/DragnDrop.txt
Parameters:
Name Type Description actionDropTargetAction xnumber ynumber masknumber see Flags.js > Mask -
inner on_dsp_preset_changed()
-
Called when DSP preset changes.
Note: this callback is only available in foobar2000 v1.4 and later.
Note2: does not get called when presets are added or removed. -
inner on_focus(is_focused)
-
Called when the panel gets or loses focus.
Parameters:
Name Type Description is_focusedboolean New focus state -
inner on_font_changed()
-
Called when fonts are changed via DUI or CUI preferences. Note: you can retrieve fonts using window.GetFontDUI/window.GetFontCUI.
-
inner on_get_album_art_done(handle, art_id, imagenullable, image_path)
-
Called when thread created by utils.GetAlbumArtAsync is done.
Parameters:
Name Type Attributes Description handleFbMetadbHandle art_idnumber See Flags.js > AlbumArtId imageGdiBitmap <nullable>
null on failure image_pathstring path to image file (or music file if image is embedded) -
inner on_item_focus_change(playlistIndex, from, to)
-
Called when focused item in playlist has been changed.
Parameters:
Name Type Description playlistIndexnumber fromnumber index of the previous focused item or -1 if there was no focused item. tonumber index of the new focued item -
inner on_item_played(handle)
-
Called when at least one minute of the track has been played or the track has reached its end after at least 1/3 of it has been played through.
Parameters:
Name Type Description handleFbMetadbHandle -
inner on_key_down(vkey)
-
Requires "Grab focus" enabled in the Configuration window.
In order to use arrow keys, use window.DlgCode(DLGC_WANTARROWS) (see Flags.js > DLGC_WANTARROWS).
Note: keyboard shortcuts defined in the main preferences are always executed first and are not passed to the callback.Parameters:
Name Type Description vkeynumber Virtual Key Code, refer to http://msdn.microsoft.com/en-us/library/ms927178.aspx -
inner on_key_up(vkey)
-
Requires "Grab focus" enabled in the Configuration window.
In order to use arrow keys, use window.DlgCode(DLGC_WANTARROWS) (see Flags.js > DLGC_WANTARROWS).Parameters:
Name Type Description vkeynumber Virtual Key Code, refer to http://msdn.microsoft.com/en-us/library/ms927178.aspx -
inner on_library_items_added(handle_list)
-
Parameters:
Name Type Description handle_listFbMetadbHandleList -
inner on_library_items_changed(handle_list)
-
Parameters:
Name Type Description handle_listFbMetadbHandleList -
inner on_library_items_removed(handle_list)
-
Parameters:
Name Type Description handle_listFbMetadbHandleList -
inner on_load_image_done(cookie, imagenullable, image_path)
-
Called when thread created by gdi.LoadImageAsync is done.
Parameters:
Name Type Attributes Description cookienumber the return value from the gdi.LoadImageAsync call imageGdiBitmap <nullable>
null on failure (invalid path/not an image) image_pathstring the path that was originally supplied to gdi.LoadImageAsync -
inner on_main_menu(index)
-
On the main menu>File>Spider Monkey Panel, there are 10 menu items and whichever number is selected is sent as the "index" to this callback.
Being main menu items now means you can bind them to global keyboard shortcuts, standard toolbar buttons, panel stack splitter buttons, etc.
Remember to think carefully about where you use this code as you probably only want it to run once and so don't include it in common files and scripts where you might have multiple instances.
Important: you should avoid sharing scripts containing this code so as not to conflict with what other users may already be using. Deprecated: use on_main_menu_dynamic instead.Parameters:
Name Type Description indexnumber - Deprecated:
- Yes
Example
function on_main_menu(index) { switch (index) { case 1: // triggered when File>Spider Monkey Panel>1 is run do_something(); break; case 2: // triggered when File>Spider Monkey Panel>2 is run do_something_else(); break; } } -
inner on_main_menu_dynamic(command_id)
-
Called whe one of the commands corresponding to this panel from `main menu`>`File`>`Spider Monkey Panel`>`Script commands` is executed.
Related methods: fb.RegisterMainMenuCommand, fb.UnregisterMainMenuCommandParameters:
Name Type Description command_idnumber Id of the associated command -
inner on_metadb_changed(handle_list, fromhook)
-
Called when metadb contents change.
Parameters:
Name Type Description handle_listFbMetadbHandleList affected items fromhookboolean true if notification is not from tag update, but a component that provides tag-like data from a database. E.g. foo_playcount and FbMetadbHandle#RefreshStats -
inner on_mouse_lbtn_dblclk(x, y, mask)
-
Parameters:
Name Type Description xnumber ynumber masknumber see Flags.js > Mask -
inner on_mouse_lbtn_down(x, y, mask)
-
Parameters:
Name Type Description xnumber ynumber masknumber see Flags.js > Mask -
inner on_mouse_lbtn_up(x, y, mask)
-
Parameters:
Name Type Description xnumber ynumber masknumber see Flags.js > Mask -
inner on_mouse_leave()
-
-
inner on_mouse_mbtn_dblclk(x, y, mask)
-
Parameters:
Name Type Description xnumber ynumber masknumber see Flags.js > Mask -
inner on_mouse_mbtn_down(x, y, mask)
-
Parameters:
Name Type Description xnumber ynumber masknumber see Flags.js > Mask -
inner on_mouse_mbtn_up(x, y, mask)
-
Parameters:
Name Type Description xnumber ynumber masknumber see Flags.js > Mask -
inner on_mouse_move(x, y, mask)
-
Parameters:
Name Type Description xnumber ynumber masknumber see Flags.js > Mask -
inner on_mouse_rbtn_dblclk(x, y, mask)
-
Parameters:
Name Type Description xnumber ynumber masknumber see Flags.js > Mask -
inner on_mouse_rbtn_down(x, y, mask)
-
Parameters:
Name Type Description xnumber ynumber masknumber see Flags.js > Mask -
inner on_mouse_rbtn_up(x, y, mask)
-
You must return true, if you want to suppress the default context menu.
Note: left shift + left windows key will bypass this callback and will open default context menu.Parameters:
Name Type Description xnumber ynumber masknumber see Flags.js > Mask -
inner on_mouse_wheel(step)
-
Scroll up/down
Parameters:
Name Type Description stepnumber scroll direction: -1 or 1 -
inner on_mouse_wheel_h(step)
-
Scroll left/right
Parameters:
Name Type Description stepnumber scroll direction: -1 or 1 -
inner on_notify_data(name, info)
-
Called in other panels after window.NotifyOthers is executed.
!!! Beware !!!
1. Data from `info` argument is only accessible inside `on_notify_data` callback: if stored and accessed outside of the callback it will throw JS error.
This also applies to the data produced from that `info`: e.g. storing `info.Path` directly (if `info` is FbMetadbHandle).
2. If you want to store the data from `info` you have to perform a deep copy:
- `String(info)` for strings.
- `JSON.parse(JSON.stringify(info))` for serializable objects.
- `new ObjectType(info)` for objects that have an approppriate constructor available, e.g. `new GdiBitmap(info)` or `new FbMetadbHandleList(info)`.
3. `info` argument is shared between panels, so it should NOT be modified in any way.Parameters:
Name Type Description namestring info* -
inner on_output_device_changed()
-
Called when output device changes. Use fb.GetOutputDevices to retrieve settings.
Note: available only in foobar2000 v1.4 and later. -
inner on_paint(gr)
-
Called when window is ready to draw.
Parameters:
Name Type Description grGdiGraphics -
inner on_playback_dynamic_info()
-
Called when dynamic info (VBR bitrate etc) changes.
-
inner on_playback_dynamic_info_track()
-
Called when Per-track dynamic info (stream track titles etc) changes. Happens less often than on_playback_dynamic_info.
-
inner on_playback_edited(handle)
-
Called when currently playing file gets edited.
It's also called by components that provide tag-like data such as foo_playcount.Parameters:
Name Type Description handleFbMetadbHandle -
inner on_playback_follow_cursor_changed(state)
-
Called when "playback follow cursor" state is changed.
Parameters:
Name Type Description stateboolean current "playback follow cursor" value -
inner on_playback_new_track(handle)
-
Playback advanced to the new track.
Parameters:
Name Type Description handleFbMetadbHandle -
inner on_playback_order_changed(new_order_index)
-
Called when playback order is changed.
Parameters:
Name Type Description new_order_indexany - 0 Default
- 1 Repeat (Playlist)
- 2 Repeat (Track)
- 3 Random
- 4 Shuffle (tracks)
- 5 Shuffle (albums)
- 6 Shuffle (folders) -
inner on_playback_pause(state)
-
Parameters:
Name Type Description stateboolean true when paused, false when unpaused. -
inner on_playback_queue_changed(origin)
-
Parameters:
Name Type Description originnumber - 0 User added
- 1 User removed
- 2 Playback advance -
inner on_playback_seek(time)
-
Parameters:
Name Type Description timefloat new position in seconds -
inner on_playback_starting(cmd, is_paused)
-
Playback process is being initialized.
on_playback_new_track should be called soon after this when first file is successfully opened for decoding.Parameters:
Name Type Description cmdnumber - 0 Default
- 1 Play
- 2 Plays the next track from the current playlist according to the current playback order
- 3 Plays the previous track from the current playlist according to the current playback order
- 4 settrack (internal fb2k value)
- 5 Plays a random track from the current playlist
- 6 resume (internal fb2k value)is_pausedboolean Current paused state -
inner on_playback_stop(reason)
-
Parameters:
Name Type Description reasonnumber - 0 Invoked by user
- 1 End of file
- 2 Starting another track
- 3 Fb2k is shytting down -
inner on_playback_time(time)
-
Called every second, for time display.
Parameters:
Name Type Description timefloat current playback time in seconds -
inner on_playlist_item_ensure_visible(playlistIndex, playlistItemIndex)
-
Parameters:
Name Type Description playlistIndexnumber playlistItemIndexnumber -
inner on_playlist_items_added(playlistIndex)
-
Parameters:
Name Type Description playlistIndexnumber -
inner on_playlist_items_removed(playlistIndex, new_count)
-
Parameters:
Name Type Description playlistIndexnumber new_countnumber -
inner on_playlist_items_reordered(playlistIndex)
-
Changes selection too. Doesn't actually change the set of items that are selected or item having focus, just changes their order.
Parameters:
Name Type Description playlistIndexnumber -
inner on_playlist_items_selection_change()
-
Workaround for some 3rd party playlist viewers not working with on_selection_changed.
-
inner on_playlist_stop_after_current_changed(state)
-
Called when "stop after current" is enabled/disabled.
Parameters:
Name Type Description stateboolean "stop after current" value -
inner on_playlist_switch()
-
-
inner on_playlists_changed()
-
Called when:
- Playlists are added/removed/reordered/renamed.
- A playlist's lock status changes through the use of plman.SetPlaylistLockedActions or components such as `foo_utils` or `foo_playlist_attributes`. -
inner on_replaygain_mode_changed(new_mode)
-
Note: available only in foobar2000 v1.4 and later.
Parameters:
Name Type Description new_modenumber - 0 None
- 1 Track
- 2 Album
- 3 Track/Album by Playback Order -
inner on_script_unload()
-
Called when:
- Panel script is reloaded via context menu > Reload.
- Panel script is changed via panel menu > Configure.
- fb2k is exiting normally.
Not called when:
- Script fails with error.
- fb2k closed externally (e.g. killed with process manager).
- fb2k fails with exception. -
inner on_selection_changed()
-
Called when selection changes based on "File>Preferences>Display>Selection viewers".
-
inner on_size(width, height)
-
Called when panel is resized.
Note: width and height arguments have the same values as window.Width and window.Height.
IMPORTANT: do NOT call window.Repaint from this callback!Parameters:
Name Type Description widthnumber heightnumber -
inner on_volume_change(val)
-
Parameters:
Name Type Description valfloat volume level in dB. Minimum is -100. Maximum is 0.