VSTGUI  4.4
Graphical User Interface Framework not only for VST plugins
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Groups Pages
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=0)
 
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)
 
- 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 ()
 
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 ()
 
- Public Member Functions inherited from IMouseObserver
virtual ~IMouseObserver ()
 
- Public Member Functions inherited from IKeyboardHook
virtual ~IKeyboardHook ()
 

Protected Types

typedef std::map< int32_t,
ParameterChangeListener * > 
ParameterChangeListenerMap
 

Protected Member Functions

 ~VST3Editor ()
 
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)
 
void PLUGIN_API close ()
 
void beginEdit (int32_t index)
 
void endEdit (int32_t index)
 
CViewcreateView (const UIAttributes &attributes, const IUIDescription *description)
 
CViewverifyView (CView *view, const UIAttributes &attributes, const IUIDescription *description)
 
IControllercreateSubController (UTF8StringPtr name, const IUIDescription *description)
 
CMessageResult notify (CBaseObject *sender, IdStringPtr message)
 
bool beforeSizeChange (const CRect &newSize, const CRect &oldSize)
 
Steinberg::tresult PLUGIN_API onSize (Steinberg::ViewRect *newSize)
 
Steinberg::tresult PLUGIN_API canResize ()
 
Steinberg::tresult PLUGIN_API checkSizeConstraint (Steinberg::ViewRect *rect)
 
Steinberg::tresult PLUGIN_API findParameter (Steinberg::int32 xPos, Steinberg::int32 yPos, Steinberg::Vst::ParamID &resultTag)
 
virtual void valueChanged (CControl *pControl)
 
virtual void controlBeginEdit (CControl *pControl)
 
virtual void controlEndEdit (CControl *pControl)
 
virtual void controlTagWillChange (CControl *pControl)
 
virtual void controlTagDidChange (CControl *pControl)
 
void onViewAdded (CFrame *frame, CView *view)
 
void onViewRemoved (CFrame *frame, CView *view)
 
void onMouseEntered (CView *view, CFrame *frame)
 
void onMouseExited (CView *view, CFrame *frame)
 
CMouseEventResult onMouseMoved (CFrame *frame, const CPoint &where, const CButtonState &buttons)
 a mouse move event happend on the frame at position where. If the observer handles this, the event won't be propagated further More...
 
CMouseEventResult onMouseDown (CFrame *frame, const CPoint &where, const CButtonState &buttons)
 a mouse down event happend on the frame at position where. If the observer handles this, the event won't be propagated further More...
 
int32_t onKeyDown (const VstKeyCode &code, CFrame *frame)
 should return 1 if no further key down processing should apply, otherwise -1 More...
 
int32_t onKeyUp (const VstKeyCode &code, CFrame *frame)
 should return 1 if no further key up processing should apply, otherwise -1 More...
 

Protected Attributes

UIDescriptiondescription
 
VST3EditorDelegatedelegate
 
IControlleroriginalController
 
ParameterChangeListenerMap paramChangeListeners
 
std::string viewName
 
std::string xmlFile
 
bool tooltipsEnabled
 
bool doCreateView
 
bool editingEnabled
 
bool requestResizeGuard
 
double contentScaleFactor
 
double zoomFactor
 
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

typedef std::map<int32_t, ParameterChangeListener*> ParameterChangeListenerMap
protected

Constructor & Destructor Documentation

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

Member Function Documentation

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

Reimplemented from IControlListener.

void controlEndEdit ( CControl pControl)
protectedvirtual

Reimplemented from IControlListener.

void controlTagDidChange ( CControl pControl)
protectedvirtual

Reimplemented from IControlListener.

void controlTagWillChange ( CControl pControl)
protectedvirtual

Reimplemented from IControlListener.

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

Reimplemented from IController.

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

Reimplemented from IController.

bool enableEditing ( bool  state)
protected
void enableTooltips ( bool  state)
void endEdit ( int32_t  index)
protected
bool exchangeView ( UTF8StringPtr  templateName)
Steinberg::tresult PLUGIN_API findParameter ( Steinberg::int32  xPos,
Steinberg::int32  yPos,
Steinberg::Vst::ParamID &  resultTag 
)
protected
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 
)
protected
int32_t onKeyDown ( const VstKeyCode code,
CFrame frame 
)
protectedvirtual

should return 1 if no further key down processing should apply, otherwise -1

Implements IKeyboardHook.

int32_t onKeyUp ( const VstKeyCode code,
CFrame frame 
)
protectedvirtual

should return 1 if no further key up processing should apply, otherwise -1

Implements IKeyboardHook.

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

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 
)
inlineprotectedvirtual

Implements IMouseObserver.

void onMouseExited ( CView view,
CFrame frame 
)
inlineprotectedvirtual

Implements IMouseObserver.

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

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)
protected
void onViewAdded ( CFrame frame,
CView view 
)
protectedvirtual
void onViewRemoved ( CFrame frame,
CView view 
)
protectedvirtual
bool PLUGIN_API open ( void *  parent,
const PlatformType &  type 
)
protected
Steinberg::tresult PLUGIN_API queryInterface ( const ::Steinberg::TUID  iid,
void **  obj 
)
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
void valueChanged ( CControl pControl)
protectedvirtual

Implements IControlListener.

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

Reimplemented from IController.

Member Data Documentation

std::vector<double> allowedZoomFactors
protected
double contentScaleFactor
protected
VST3EditorDelegate* delegate
protected
UIDescription* description
protected
bool doCreateView
protected
bool editingEnabled
protected
CPoint maxSize
protected
CPoint minSize
protected
CRect nonEditRect
protected
IController* originalController
protected
ParameterChangeListenerMap paramChangeListeners
protected
bool requestResizeGuard
protected
bool tooltipsEnabled
protected
std::string viewName
protected
std::string xmlFile
protected
double zoomFactor
protected

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