VSTGUI  4.9
Graphical User Interface Framework not only for VST plugins
VST3Editor Class Reference

VST3 Editor with automatic parameter binding. More...

+ Inheritance diagram for VST3Editor:

Public Member Functions

 VST3Editor (Steinberg::Vst::EditController *controller, UTF8StringPtr templateName, UTF8StringPtr xmlFile)
 
 VST3Editor (UIDescription *desc, Steinberg::Vst::EditController *controller, UTF8StringPtr templateName, UTF8StringPtr xmlFile=nullptr)
 
bool exchangeView (UTF8StringPtr templateName)
 
void enableTooltips (bool state)
 
bool setEditorSizeConstrains (const CPoint &newMinimumSize, const CPoint &newMaximumSize)
 
void getEditorSizeConstrains (CPoint &minimumSize, CPoint &maximumSize) const
 
bool requestResize (const CPoint &newSize)
 
void setZoomFactor (double factor)
 
double getZoomFactor () const
 
void setAllowedZoomFactors (std::vector< double > zoomFactors)
 
Steinberg::tresult PLUGIN_API queryInterface (const ::Steinberg::TUID iid, void **obj) override
 
- Public Member Functions inherited from IController
virtual int32_t getTagForName (UTF8StringPtr name, int32_t registeredTag) const
 
virtual IControlListenergetControlListener (UTF8StringPtr controlTagName)
 
- Public Member Functions inherited from IControlListener
virtual ~IControlListener () noexcept=default
 
virtual int32_t controlModifierClicked (CControl *pControl, CButtonState button)
 return 1 if you want the control to not handle it, otherwise 0 More...
 
- Public Member Functions inherited from IViewAddedRemovedObserver
virtual ~IViewAddedRemovedObserver () noexcept=default
 
- Public Member Functions inherited from IMouseObserver
virtual ~IMouseObserver () noexcept=default
 
- Public Member Functions inherited from IReference
virtual void forget ()=0
 decrease refcount and delete object if refcount == 0 More...
 
virtual void remember ()=0
 increase refcount More...
 

Protected Types

using ParameterChangeListenerMap = std::map< int32_t, ParameterChangeListener * >
 

Protected Member Functions

 ~VST3Editor () override
 
void init ()
 
double getAbsScaleFactor () const
 
ParameterChangeListenergetParameterChangeListener (int32_t tag) const
 
void recreateView ()
 
void syncParameterTags ()
 
void save (bool saveAs=false)
 
bool enableEditing (bool state)
 
bool PLUGIN_API open (void *parent, const PlatformType &type) override
 
void PLUGIN_API close () override
 
void beginEdit (int32_t index) override
 
void endEdit (int32_t index) override
 
CViewcreateView (const UIAttributes &attributes, const IUIDescription *description) override
 
CViewverifyView (CView *view, const UIAttributes &attributes, const IUIDescription *description) override
 
IControllercreateSubController (UTF8StringPtr name, const IUIDescription *description) override
 
CMessageResult notify (CBaseObject *sender, IdStringPtr message) override
 
bool beforeSizeChange (const CRect &newSize, const CRect &oldSize) override
 
Steinberg::tresult PLUGIN_API onSize (Steinberg::ViewRect *newSize) override
 
Steinberg::tresult PLUGIN_API canResize () override
 
Steinberg::tresult PLUGIN_API checkSizeConstraint (Steinberg::ViewRect *rect) override
 
Steinberg::tresult PLUGIN_API findParameter (Steinberg::int32 xPos, Steinberg::int32 yPos, Steinberg::Vst::ParamID &resultTag) override
 
virtual void valueChanged (CControl *pControl) override
 
virtual void controlBeginEdit (CControl *pControl) override
 
virtual void controlEndEdit (CControl *pControl) override
 
virtual void controlTagWillChange (CControl *pControl) override
 
virtual void controlTagDidChange (CControl *pControl) override
 
void onViewAdded (CFrame *frame, CView *view) override
 
void onViewRemoved (CFrame *frame, CView *view) override
 
void onMouseEntered (CView *view, CFrame *frame) override
 
void onMouseExited (CView *view, CFrame *frame) override
 
CMouseEventResult onMouseMoved (CFrame *frame, const CPoint &where, const CButtonState &buttons) override
 a mouse move event happend on the frame at position where. More...
 
CMouseEventResult onMouseDown (CFrame *frame, const CPoint &where, const CButtonState &buttons) override
 a mouse down event happend on the frame at position where. More...
 
bool validateCommandMenuItem (CCommandMenuItem *item) override
 called before the item is shown to validate its state More...
 
bool onCommandMenuItemSelected (CCommandMenuItem *item) override
 called when the item was selected More...
 

Protected Attributes

KeyboardHook * keyboardHook {nullptr}
 
UIDescriptiondescription {nullptr}
 
VST3EditorDelegatedelegate {nullptr}
 
IControlleroriginalController {nullptr}
 
ParameterChangeListenerMap paramChangeListeners
 
std::string viewName
 
std::string xmlFile
 
bool tooltipsEnabled {true}
 
bool doCreateView {false}
 
bool editingEnabled {false}
 
bool requestResizeGuard {false}
 
double contentScaleFactor {1.}
 
double zoomFactor {1.}
 
std::vector< double > allowedZoomFactors
 
CPoint minSize
 
CPoint maxSize
 
CRect nonEditRect
 

Detailed Description

VST3 Editor with automatic parameter binding.

The VST3Editor class represents the view for a VST3 plug-in. It automatically binds the VST3 parameters to VSTGUI control tags and it includes an inline UI editor for rapid development.

Setup

Add the following code to your Steinberg::Vst::EditController class:

IPlugView* PLUGIN_API MyEditController::createView (FIDString name)
{
if (strcmp (name, ViewType::kEditor) == 0)
{
return new VST3Editor (this, "view", "myEditor.uidesc");
}
return 0;
}

To activate the inline editor you need to define the preprocessor definition "VSTGUI_LIVE_EDITING=1". Rebuild your plug-in, start your prefered host, instanciate your plug-in, open the context menu inside your editor and choose "Enable Editing". Now you can define tags, colors, fonts, bitmaps and add views to your editor.

See Inline UI Editing for VST3 (WYSIWYG)

Member Typedef Documentation

◆ ParameterChangeListenerMap

using ParameterChangeListenerMap = std::map<int32_t, ParameterChangeListener*>
protected

Constructor & Destructor Documentation

◆ VST3Editor() [1/2]

VST3Editor ( Steinberg::Vst::EditController *  controller,
UTF8StringPtr  templateName,
UTF8StringPtr  xmlFile 
)

◆ VST3Editor() [2/2]

VST3Editor ( UIDescription desc,
Steinberg::Vst::EditController *  controller,
UTF8StringPtr  templateName,
UTF8StringPtr  xmlFile = nullptr 
)

◆ ~VST3Editor()

~VST3Editor ( )
overrideprotected

Member Function Documentation

◆ beforeSizeChange()

bool beforeSizeChange ( const CRect newSize,
const CRect oldSize 
)
overrideprotected

◆ beginEdit()

void beginEdit ( int32_t  index)
overrideprotected

◆ canResize()

Steinberg::tresult PLUGIN_API canResize ( )
overrideprotected

◆ checkSizeConstraint()

Steinberg::tresult PLUGIN_API checkSizeConstraint ( Steinberg::ViewRect *  rect)
overrideprotected

◆ close()

void PLUGIN_API close ( )
overrideprotected

◆ controlBeginEdit()

void controlBeginEdit ( CControl pControl)
overrideprotectedvirtual

Reimplemented from IControlListener.

◆ controlEndEdit()

void controlEndEdit ( CControl pControl)
overrideprotectedvirtual

Reimplemented from IControlListener.

◆ controlTagDidChange()

void controlTagDidChange ( CControl pControl)
overrideprotectedvirtual

Reimplemented from IControlListener.

◆ controlTagWillChange()

void controlTagWillChange ( CControl pControl)
overrideprotectedvirtual

Reimplemented from IControlListener.

◆ createSubController()

IController* createSubController ( UTF8StringPtr  name,
const IUIDescription description 
)
overrideprotectedvirtual

Reimplemented from IController.

◆ createView()

CView* createView ( const UIAttributes attributes,
const IUIDescription description 
)
overrideprotectedvirtual

Reimplemented from IController.

◆ enableEditing()

bool enableEditing ( bool  state)
protected

◆ enableTooltips()

void enableTooltips ( bool  state)

◆ endEdit()

void endEdit ( int32_t  index)
overrideprotected

◆ exchangeView()

bool exchangeView ( UTF8StringPtr  templateName)

◆ findParameter()

Steinberg::tresult PLUGIN_API findParameter ( Steinberg::int32  xPos,
Steinberg::int32  yPos,
Steinberg::Vst::ParamID &  resultTag 
)
overrideprotected

◆ getAbsScaleFactor()

double getAbsScaleFactor ( ) const
protected

◆ getEditorSizeConstrains()

void getEditorSizeConstrains ( CPoint minimumSize,
CPoint maximumSize 
) const

◆ getParameterChangeListener()

ParameterChangeListener * getParameterChangeListener ( int32_t  tag) const
protected

◆ getZoomFactor()

double getZoomFactor ( ) const
inline

◆ init()

void init ( )
protected

◆ notify()

CMessageResult notify ( CBaseObject sender,
IdStringPtr  message 
)
overrideprotected

◆ onCommandMenuItemSelected()

bool onCommandMenuItemSelected ( CCommandMenuItem item)
overrideprotectedvirtual

called when the item was selected

Reimplemented from CommandMenuItemTargetAdapter.

◆ onMouseDown()

CMouseEventResult onMouseDown ( CFrame frame,
const CPoint where,
const CButtonState buttons 
)
overrideprotectedvirtual

a mouse down event happend on the frame at position where.

If the observer handles this, the event won't be propagated further

Reimplemented from IMouseObserver.

◆ onMouseEntered()

void onMouseEntered ( CView view,
CFrame frame 
)
inlineoverrideprotectedvirtual

Implements IMouseObserver.

◆ onMouseExited()

void onMouseExited ( CView view,
CFrame frame 
)
inlineoverrideprotectedvirtual

Implements IMouseObserver.

◆ onMouseMoved()

CMouseEventResult onMouseMoved ( CFrame frame,
const CPoint where,
const CButtonState buttons 
)
inlineoverrideprotectedvirtual

a mouse move event happend on the frame at position where.

If the observer handles this, the event won't be propagated further

Reimplemented from IMouseObserver.

◆ onSize()

Steinberg::tresult PLUGIN_API onSize ( Steinberg::ViewRect *  newSize)
overrideprotected

◆ onViewAdded()

void onViewAdded ( CFrame frame,
CView view 
)
overrideprotectedvirtual

◆ onViewRemoved()

void onViewRemoved ( CFrame frame,
CView view 
)
overrideprotectedvirtual

◆ open()

bool PLUGIN_API open ( void *  parent,
const PlatformType &  type 
)
overrideprotected

◆ queryInterface()

Steinberg::tresult PLUGIN_API queryInterface ( const ::Steinberg::TUID  iid,
void **  obj 
)
override

◆ recreateView()

void recreateView ( )
protected

◆ requestResize()

bool requestResize ( const CPoint newSize)

◆ save()

void save ( bool  saveAs = false)
protected

◆ setAllowedZoomFactors()

void setAllowedZoomFactors ( std::vector< double >  zoomFactors)
inline

◆ setEditorSizeConstrains()

bool setEditorSizeConstrains ( const CPoint newMinimumSize,
const CPoint newMaximumSize 
)

◆ setZoomFactor()

void setZoomFactor ( double  factor)

◆ syncParameterTags()

void syncParameterTags ( )
protected

◆ validateCommandMenuItem()

bool validateCommandMenuItem ( CCommandMenuItem item)
overrideprotectedvirtual

called before the item is shown to validate its state

Reimplemented from CommandMenuItemTargetAdapter.

◆ valueChanged()

void valueChanged ( CControl pControl)
overrideprotectedvirtual

Implements IControlListener.

◆ verifyView()

CView* verifyView ( CView view,
const UIAttributes attributes,
const IUIDescription description 
)
overrideprotectedvirtual

Reimplemented from IController.

Member Data Documentation

◆ allowedZoomFactors

std::vector<double> allowedZoomFactors
protected

◆ contentScaleFactor

double contentScaleFactor {1.}
protected

◆ delegate

VST3EditorDelegate* delegate {nullptr}
protected

◆ description

UIDescription* description {nullptr}
protected

◆ doCreateView

bool doCreateView {false}
protected

◆ editingEnabled

bool editingEnabled {false}
protected

◆ keyboardHook

KeyboardHook* keyboardHook {nullptr}
protected

◆ maxSize

CPoint maxSize
protected

◆ minSize

CPoint minSize
protected

◆ nonEditRect

CRect nonEditRect
protected

◆ originalController

IController* originalController {nullptr}
protected

◆ paramChangeListeners

ParameterChangeListenerMap paramChangeListeners
protected

◆ requestResizeGuard

bool requestResizeGuard {false}
protected

◆ tooltipsEnabled

bool tooltipsEnabled {true}
protected

◆ viewName

std::string viewName
protected

◆ xmlFile

std::string xmlFile
protected

◆ zoomFactor

double zoomFactor {1.}
protected

The documentation for this class was generated from the following files: