| sidebar_position | 3 |
|---|
An EditAddIn panel is a persistent, non-blocking UI strip that's auto-docked in Studio Pro's panel area, beneath the main or editor surface toolbar. Its open/closed state persists in saved files.
classfactory.xml— declares the script ascategory="EditAddIn"withsubCategorymatching the intended context andgroupNamefor panel location.skin/skin.xml— a<Form>defines the panel controls, referenced by theformNameattribute.scriptname.js— implementsIComponentwithinitialize()andterminate()callbacks.
<ScriptClass
classID="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"
metaClassID="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"
category="EditAddIn"
subCategory="Engine"
name="My Panel"
sourceFile="main.js"
functionName="createInstance">
<Attribute id="groupName" value="Song.AddInPanel"/>
<Attribute id="formName" value="MyPanelForm"/>
</ScriptClass>
<ScriptMetaClass classID="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}">
<ScriptClassResource id="Class:ImageResource" url="theme://$package/ToolbarIcon"/>
</ScriptMetaClass>subCategoryspecifies the Studio Pro environment context:Engine(Song),Project,Show.groupNamecontrols docking location. Values:"Song.AddInPanel","Project.AddInPanel","Show.AddInPanel","MusicOnly.AddInPanel","AudioOnly.AddInPanel","SongOnly.AddInPanel".formNamereferences a<Form name="MyPanelForm">inskin.xml.metaClassIDandScriptMetaClassbind an icon to the script for a toolbar button. See classfactory.xml - ScriptMetaClass for icon resource details.
<Form name="MyPanelForm" attach="all fitsize" windowstyle="panelstyle">
<!-- panel controls here -->
</Form>function MyPanel()
{
this.interfaces = [
Host.Interfaces.IComponent // Required for EditAddIn lifecycle
]
this.initialize = function(context)
{
}
this.terminate = function()
{
}
}
// Function name matches classfactory.xml functionName.
function createInstance() {
return new MyPanel()
}