ASPiK SDK
uiviewfactory.h
1 // This file is part of VSTGUI. It is subject to the license terms
2 // in the LICENSE file found in the top-level directory of this
3 // distribution and at http://github.com/steinbergmedia/vstgui/LICENSE
4 
5 #ifndef __uiviewfactory__
6 #define __uiviewfactory__
7 
8 #include "../lib/vstguifwd.h"
9 #include "iuidescription.h"
10 #include "iviewfactory.h"
11 #include "iviewcreator.h"
12 
13 namespace VSTGUI {
14 
15 //-----------------------------------------------------------------------------
18 //-----------------------------------------------------------------------------
20 {
21 public:
22  UIViewFactory ();
23  ~UIViewFactory () noexcept override = default;
24 
25  // IViewFactory
26  CView* createView (const UIAttributes& attributes, const IUIDescription* description) const override;
27  bool applyAttributeValues (CView* view, const UIAttributes& attributes, const IUIDescription* desc) const override;
28  IdStringPtr getViewName (CView* view) const override;
29  bool applyCustomViewAttributeValues (CView* customView, IdStringPtr baseViewName, const UIAttributes& attributes, const IUIDescription* desc) const override;
30 
31  static void registerViewCreator (const IViewCreator& viewCreator);
32  static void unregisterViewCreator (const IViewCreator& viewCreator);
33 
34 #if VSTGUI_LIVE_EDITING
35  using StringPtrList = std::list<const std::string*>;
36  using StringList = std::list<std::string>;
37  using ViewAndDisplayNameList = std::list<std::pair<const std::string*, const std::string>>;
38 
39  bool getAttributeNamesForView (CView* view, StringList& attributeNames) const;
40  bool getAttributeValue (CView* view, const std::string& attributeName, std::string& stringValue, const IUIDescription* desc) const;
41  IViewCreator::AttrType getAttributeType (CView* view, const std::string& attributeName) const;
42  void collectRegisteredViewNames (StringPtrList& viewNames, IdStringPtr baseClassNameFilter = nullptr) const;
43  bool getAttributesForView (CView* view, const IUIDescription* desc, UIAttributes& attr) const;
44  // list type support
45  bool getPossibleAttributeListValues (CView* view, const std::string& attributeName, StringPtrList& values) const;
46  bool getAttributeValueRange (CView* view, const std::string& attributeName, double& minValue, double& maxValue) const;
47 
48  ViewAndDisplayNameList collectRegisteredViewAndDisplayNames () const;
49 
50 #if ENABLE_UNIT_TESTS
51  bool disableRememberAttributes {false};
52 #endif
53 #endif
54 
55 protected:
56  void evaluateAttributesAndRemember (CView* view, const UIAttributes& attributes, UIAttributes& evaluatedAttributes, const IUIDescription* description) const;
57  CView* createViewByName (const std::string* className, const UIAttributes& attributes, const IUIDescription* description) const;
58 
59 #if VSTGUI_LIVE_EDITING
60  static size_t createHash (const std::string& str);
61  void rememberAttribute (CView* view, IdStringPtr attrName, const std::string& value) const;
62  bool getRememberedAttribute (CView* view, IdStringPtr attrName, std::string& value) const;
63 #endif
64 };
65 
66 } // namespace
67 
68 #endif // __uiviewfactory__
69 
Definition: iuidescription.h:19
Default view factory.
Definition: uiviewfactory.h:19
Definition: iviewfactory.h:15
View creator interface.
Definition: iviewcreator.h:20
Definition: customcontrols.cpp:8
Definition: uiattributes.h:21
Definition: vstguibase.h:247
Base Class of all view objects.
Definition: cview.h:44