VSTGUI 4.10
Graphical User Interface Framework not only for VST plugins
Loading...
Searching...
No Matches
VST3Editor Class Reference

VST3 Editor with automatic parameter binding. More...

#include <vst3editor.h>

+ 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)
 
void setDelegate (IVST3EditorDelegate *delegate)
 set the delegate of the editor.
 
IVST3EditorDelegategetDelegate () const
 
UIDescriptiongetUIDescription () const
 
bool inEditMode () const
 
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
 
- 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
 
virtual void remember ()=0
 increase refcount
 

Protected Types

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

Protected Member Functions

 ~VST3Editor () override
 
void init ()
 
double getAbsScaleFactor () const
 
double getContentScaleFactor () const
 
ParameterChangeListenergetParameterChangeListener (int32_t tag) const
 
void recreateView ()
 
void requestRecreateView ()
 
void syncParameterTags ()
 
void save (bool saveAs=false)
 
bool enableEditing (bool state)
 
void saveScreenshot ()
 
bool enableShowEditButton () const
 
void enableShowEditButton (bool state)
 
void showEditButton (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
 
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
 
void onMouseEvent (MouseEvent &event, CFrame *frame) override
 
bool validateCommandMenuItem (CCommandMenuItem *item) override
 called before the item is shown to validate its state
 
bool onCommandMenuItemSelected (CCommandMenuItem *item) override
 called when the item was selected
 

Protected Attributes

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

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;
}
VST3Editor(Steinberg::Vst::EditController *controller, UTF8StringPtr templateName, UTF8StringPtr xmlFile)
Definition vst3editor.cpp:408

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 Editor 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

◆ enableShowEditButton() [1/2]

bool enableShowEditButton ( ) const
protected

◆ enableShowEditButton() [2/2]

void enableShowEditButton ( 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

◆ getContentScaleFactor()

double getContentScaleFactor ( ) const
protected

◆ getDelegate()

IVST3EditorDelegate * getDelegate ( ) const

◆ getEditorSizeConstrains()

void getEditorSizeConstrains ( CPoint & minimumSize,
CPoint & maximumSize ) const

◆ getParameterChangeListener()

ParameterChangeListener * getParameterChangeListener ( int32_t tag) const
protected

◆ getUIDescription()

UIDescription * getUIDescription ( ) const

◆ getZoomFactor()

double getZoomFactor ( ) const

◆ inEditMode()

bool inEditMode ( ) const

◆ init()

void init ( )
protected

◆ onCommandMenuItemSelected()

bool onCommandMenuItemSelected ( CCommandMenuItem * item)
overrideprotectedvirtual

called when the item was selected

Reimplemented from CommandMenuItemTargetAdapter.

◆ onMouseEntered()

void onMouseEntered ( CView * view,
CFrame * frame )
inlineoverrideprotectedvirtual

Implements IMouseObserver.

◆ onMouseEvent()

void onMouseEvent ( MouseEvent & event,
CFrame * frame )
overrideprotectedvirtual

Implements IMouseObserver.

◆ onMouseExited()

void onMouseExited ( CView * view,
CFrame * frame )
inlineoverrideprotectedvirtual

Implements 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

◆ requestRecreateView()

void requestRecreateView ( )
protected

◆ requestResize()

bool requestResize ( const CPoint & newSize)

◆ save()

void save ( bool saveAs = false)
protected

◆ saveScreenshot()

void saveScreenshot ( )
protected

◆ setAllowedZoomFactors()

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

◆ setDelegate()

void setDelegate ( IVST3EditorDelegate * delegate)

set the delegate of the editor.

no reference counting is happening here.

◆ setEditorSizeConstrains()

bool setEditorSizeConstrains ( const CPoint & newMinimumSize,
const CPoint & newMaximumSize )

◆ setZoomFactor()

void setZoomFactor ( double factor)

◆ showEditButton()

void showEditButton ( bool state)
protected

◆ 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

IVST3EditorDelegate* 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

◆ openUIEditorController

IControlListener* openUIEditorController {nullptr}
protected

◆ originalController

IController* originalController {nullptr}
protected

◆ paramChangeListeners

ParameterChangeListenerMap paramChangeListeners
protected

◆ sizeRequest

Optional<CPoint> sizeRequest
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: