VSTGUI  4.9
Graphical User Interface Framework not only for VST plugins
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
VST3Editor Class Reference

VST3 Editor with automatic parameter binding. More...

+ Inheritance diagram for VST3Editor:

Classes

struct  KeyboardHook
 

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

KeyboardHookkeyboardHook {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

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

Constructor & Destructor Documentation

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

Member Function Documentation

bool beforeSizeChange ( const CRect newSize,
const CRect oldSize 
)
overrideprotected
void beginEdit ( int32_t  index)
overrideprotected
Steinberg::tresult PLUGIN_API canResize ( )
overrideprotected
Steinberg::tresult PLUGIN_API checkSizeConstraint ( Steinberg::ViewRect *  rect)
overrideprotected
void PLUGIN_API close ( )
overrideprotected
void controlBeginEdit ( CControl pControl)
overrideprotectedvirtual

Reimplemented from IControlListener.

void controlEndEdit ( CControl pControl)
overrideprotectedvirtual

Reimplemented from IControlListener.

void controlTagDidChange ( CControl pControl)
overrideprotectedvirtual

Reimplemented from IControlListener.

void controlTagWillChange ( CControl pControl)
overrideprotectedvirtual

Reimplemented from IControlListener.

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

Reimplemented from IController.

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

Reimplemented from IController.

bool enableEditing ( bool  state)
protected
void enableTooltips ( bool  state)
void endEdit ( int32_t  index)
overrideprotected
bool exchangeView ( UTF8StringPtr  templateName)
Steinberg::tresult PLUGIN_API findParameter ( Steinberg::int32  xPos,
Steinberg::int32  yPos,
Steinberg::Vst::ParamID &  resultTag 
)
overrideprotected
double getAbsScaleFactor ( ) const
protected
void getEditorSizeConstrains ( CPoint minimumSize,
CPoint maximumSize 
) const
ParameterChangeListener * getParameterChangeListener ( int32_t  tag) const
protected
double getZoomFactor ( ) const
inline
void init ( )
protected
CMessageResult notify ( CBaseObject sender,
IdStringPtr  message 
)
overrideprotected
bool onCommandMenuItemSelected ( CCommandMenuItem item)
overrideprotectedvirtual

called when the item was selected

Reimplemented from CommandMenuItemTargetAdapter.

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.

void onMouseEntered ( CView view,
CFrame frame 
)
inlineoverrideprotectedvirtual

Implements IMouseObserver.

void onMouseExited ( CView view,
CFrame frame 
)
inlineoverrideprotectedvirtual

Implements IMouseObserver.

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.

Steinberg::tresult PLUGIN_API onSize ( Steinberg::ViewRect *  newSize)
overrideprotected
void onViewAdded ( CFrame frame,
CView view 
)
overrideprotectedvirtual
void onViewRemoved ( CFrame frame,
CView view 
)
overrideprotectedvirtual
bool PLUGIN_API open ( void *  parent,
const PlatformType &  type 
)
overrideprotected
Steinberg::tresult PLUGIN_API queryInterface ( const ::Steinberg::TUID  iid,
void **  obj 
)
override
void recreateView ( )
protected
bool requestResize ( const CPoint newSize)
void save ( bool  saveAs = false)
protected
void setAllowedZoomFactors ( std::vector< double >  zoomFactors)
inline
bool setEditorSizeConstrains ( const CPoint newMinimumSize,
const CPoint newMaximumSize 
)
void setZoomFactor ( double  factor)
void syncParameterTags ( )
protected
bool validateCommandMenuItem ( CCommandMenuItem item)
overrideprotectedvirtual

called before the item is shown to validate its state

Reimplemented from CommandMenuItemTargetAdapter.

void valueChanged ( CControl pControl)
overrideprotectedvirtual

Implements IControlListener.

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

Reimplemented from IController.

Member Data Documentation

std::vector<double> allowedZoomFactors
protected
double contentScaleFactor {1.}
protected
VST3EditorDelegate* delegate {nullptr}
protected
UIDescription* description {nullptr}
protected
bool doCreateView {false}
protected
bool editingEnabled {false}
protected
KeyboardHook* keyboardHook {nullptr}
protected
CPoint maxSize
protected
CPoint minSize
protected
CRect nonEditRect
protected
IController* originalController {nullptr}
protected
ParameterChangeListenerMap paramChangeListeners
protected
bool requestResizeGuard {false}
protected
bool tooltipsEnabled {true}
protected
std::string viewName
protected
std::string xmlFile
protected
double zoomFactor {1.}
protected

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