User Tools

Site Tools


ui_extension:ui_extension

This is an old revision of the document!


UI Extensions

Introduction

What's all this about UI Extensions?

A UI Extension generally refers to a component that implements the ui_extension API. They are also commonly refered to as panels.

Right, so what's this ui_extension thingywhatsit?

Its an API that allows a component (a UI Extension Host) to insert a window created by another component (UI Extension) into one of its windows as a child window. UI Extensions come in two forms: multiple instance extensions, of which allow hosts to make as many instances of its window as they want. Single instance windows only have one instance of its window created at any one time.

Developers

Creating UI Extensions

In order to create UI Extension aware components, you will need:

Also recommended is the current Microsoft Platform SDK.

If you are unaware of how to set up the foobar2000 SDK, and create foobar2000 components, please read the foobar2000 FAQ first. Reading the plugin development tutorial is also worthwhile.

You should extract the UI Extension archive to the foobar2000\ui_extension sub-directory of your SDK root folder. You should then proceed to insert the ui_extension project into your workspace, and add it as a dependency of your project.

You should include the header “../ui_extension_with_helpers.h” as appropriate in your code.

UI Extension hosts must implement the ui_extension_host interface, whilst panels should implement the ui_extension interface.

View doxygen generated documentation of the interfaces

Some example components you can look at are:
Album list panel
ASCII playback buttons
History
Simple spectrum panel
Track info panel
Static control panel
Extended search panel

Known shortcomings in UI Extension API version 5

  • ui_extension_host::override_status_text, ui_extension_host::restore_status_text have no HWND parameter. This hinders the functionality of panel-hosts.
  • No method to retrieve whether a component supports multiple instances or not.
ui_extension/ui_extension.1106605737.txt.gz · Last modified: 2007/08/25 22:58 (external edit)