VST 3 Interfaces: IComponentHandler2 Class Reference
Author: Steinberg

VST 3 Interfaces VST 3.8 SDK for developing VST plug-in

Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | List of all members
IComponentHandler2 Class Referenceabstract

Extended host callback interface for an edit controller: Vst::IComponentHandler2. More...

`#include <ivsteditcontroller.h>`

Inheritance diagram for IComponentHandler2:

## Public Member Functions
virtual tresult | setDirty (TBool state)=0
| Tells host that the plug-in is dirty (something besides parameters has changed since last save), if true the host should apply a save before quitting.
virtual tresult | requestOpenEditor (FIDString name=ViewType::kEditor)=0
| Tells host that it should open the plug-in editor the next time it's possible.
virtual tresult | startGroupEdit ()=0
| Starts the group editing (call before a beginEdit), the host will keep the current timestamp at this call and will use it for all beginEdit, performEdit, endEdit calls until a finishGroupEdit ().
virtual tresult | finishGroupEdit ()=0
| Finishes the group editing started by a startGroupEdit (call after a endEdit).
Public Member Functions inherited from FUnknown
virtual tresult | queryInterface (const TUID _iid, void **obj)=0
virtual uint32 | addRef ()=0
virtual uint32 | release ()=0

## Static Public Attributes
static const FUID | iid
Static Public Attributes inherited from FUnknown
static const FUID | iid

## Detailed Description

Extended host callback interface for an edit controller: Vst::IComponentHandler2.

- [host imp]
- [extends IComponentHandler]
- [released: 3.1.0]
- [optional]

One part handles:

- Setting dirty state of the plug-in
- Requesting the host to open the editor

The other part handles parameter group editing from the plug-in UI. It wraps a set of beginEdit / performEdit / endEdit functions (see IComponentHandler) which should use the same timestamp in the host when writing automation. This allows for better synchronizing of multiple parameter changes at once.

# Examples of different use cases

//--------------------------------------
// we are in the editcontroller...
// in case of multiple switch buttons (with associated ParamID 1 and 3)
// on mouse down :
hostHandler2->startGroupEdit ();
hostHandler->beginEdit (1);
hostHandler->beginEdit (3);
hostHandler->performEdit (1, 1.0);
hostHandler->performEdit (3, 0.0); // the opposite of paramID 1 for example
....
// on mouse up :
hostHandler->endEdit (1);
hostHandler->endEdit (3);
hostHandler2->finishGroupEdit ();
....
....
//--------------------------------------
// in case of multiple faders (with associated ParamID 1 and 3)
// on mouse down :
hostHandler2->startGroupEdit ();
hostHandler->beginEdit (1);
hostHandler->beginEdit (3);
hostHandler2->finishGroupEdit ();
....
// on mouse move :
hostHandler2->startGroupEdit ();
hostHandler->performEdit (1, x); // x the wanted value
hostHandler->performEdit (3, x);
hostHandler2->finishGroupEdit ();
....
// on mouse up :
hostHandler2->startGroupEdit ();
hostHandler->endEdit (1);
hostHandler->endEdit (3);
hostHandler2->finishGroupEdit ();

See also
  IComponentHandler, IEditController

## Member Function Documentation

## ◆ setDirty()

virtual tresult setDirty | ( | TBool | state | ) |
| pure virtual

Tells host that the plug-in is dirty (something besides parameters has changed since last save), if true the host should apply a save before quitting.

Note
  [UI-thread & Connected]

## ◆ requestOpenEditor()

virtual tresult requestOpenEditor | ( | FIDString | name = ViewType::kEditor | ) |
| pure virtual

Tells host that it should open the plug-in editor the next time it's possible.

You should use this instead of showing an alert and blocking the program flow (especially on loading projects).

Note
  [UI-thread & Connected]

## ◆ startGroupEdit()

virtual tresult startGroupEdit | ( |  | ) |
| pure virtual

Starts the group editing (call before a beginEdit), the host will keep the current timestamp at this call and will use it for all beginEdit, performEdit, endEdit calls until a finishGroupEdit ().

Note
  [UI-thread & Connected]

## ◆ finishGroupEdit()

virtual tresult finishGroupEdit | ( |  | ) |
| pure virtual

Finishes the group editing started by a startGroupEdit (call after a endEdit).

Note
  [UI-thread & Connected]

## Member Data Documentation

## ◆ iid

const FUID iid
| static

Empty

Copyright © Steinberg Media Technologies GmbH. All Rights Reserved. This documentation is under this license.