VSTGUI  4.10
Graphical User Interface Framework not only for VST plugins
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
IViewCreator Class Referenceabstract

View creator interface. More...

+ Inheritance diagram for IViewCreator:

Public Types

enum  AttrType {
  kUnknownType, kBooleanType, kIntegerType, kFloatType,
  kStringType, kColorType, kFontType, kBitmapType,
  kPointType, kRectType, kTagType, kListType,
using string = std::string
using StringList = std::list< string >
using ConstStringPtrList = std::list< const string * >

Public Member Functions

virtual ~IViewCreator () noexcept=default
virtual IdStringPtr getViewName () const =0
virtual IdStringPtr getBaseViewName () const =0
virtual CViewcreate (const UIAttributes &attributes, const IUIDescription *description) const =0
virtual bool apply (CView *view, const UIAttributes &attributes, const IUIDescription *description) const =0
virtual bool getAttributeNames (StringList &attributeNames) const =0
virtual AttrType getAttributeType (const string &attributeName) const =0
virtual bool getAttributeValue (CView *view, const string &attributeName, string &stringValue, const IUIDescription *desc) const =0
virtual bool getPossibleListValues (const string &attributeName, ConstStringPtrList &values) const =0
virtual bool getAttributeValueRange (const string &attributeName, double &minValue, double &maxValue) const =0
virtual UTF8StringPtr getDisplayName () const =0

Detailed Description

View creator interface.

You can register your own custom views with the UIViewFactory by inheriting from this interface and register it with UIViewFactory::registerViewCreator().

Example for an imaginary view class called MyView which directly inherites from CView:

class MyViewCreator : public ViewCreatorAdapter
// register this class with the view factory
MyViewCreator () { UIViewFactory::registerViewCreator (*this); }
// return an unique name here
IdStringPtr getViewName () const { return "MyView"; }
// return the name here from where your custom view inherites.
// Your view automatically supports the attributes from it.
IdStringPtr getBaseViewName () const { return "CView"; }
// create your view here.
// Note you don't need to apply attributes here as the apply method will be called with this new view
CView* create (const UIAttributes& attributes, const IUIDescription* description) const { return new MyView (); }
// apply custom attributes to your view
bool apply (CView* view, const UIAttributes& attributes, const IUIDescription* description) const
MyView* myView = dynamic_cast<MyView*> (view);
if (myView == 0)
return false;
int32_t value;
if (attributes.getIntegerAttribute ("my-custom-attribute", value))
myView->setCustomAttribute (value);
return true;
// add your custom attributes to the list
bool getAttributeNames (StringList& attributeNames) const
attributeNames.emplace_back ("my-custom-attribute");
return true;
// return the type of your custom attributes
AttrType getAttributeType (const std::string& attributeName) const
if (attributeName == "my-custom-attribute")
return kIntegerType;
return kUnknownType;
// return the string value of the custom attributes of the view
bool getAttributeValue (CView* view, const string& attributeName, string& stringValue, const IUIDescription* desc) const
MyView* myView = dynamic_cast<MyView*> (view);
if (myView == 0)
return false;
if (attributeName == "my-custom-attribute")
stringValue = UIAttributes::integerToString (myView->getCustomAttribute ());
return true;
return false;
// create a static instance so that it registers itself with the view factory
MyViewCreator __gMyViewCreator;

Member Typedef Documentation

using ConstStringPtrList = std::list<const string*>
using string = std::string
using StringList = std::list<string>

Member Enumeration Documentation

enum AttrType

Constructor & Destructor Documentation

virtual ~IViewCreator ( )

Member Function Documentation

virtual bool getAttributeValueRange ( const string attributeName,
double &  minValue,
double &  maxValue 
) const
pure virtual

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