ASPiK SDK
customization.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 #pragma once
6 
7 #include "../../iuidescwindow.h"
8 #include <string>
9 #include <unordered_map>
10 
11 //------------------------------------------------------------------------
12 namespace VSTGUI {
13 namespace Standalone {
14 namespace UIDesc {
15 
16 //------------------------------------------------------------------------
52 {
53 public:
54  static std::shared_ptr<Customization> make () { return std::make_shared<Customization> (); }
55 
56  using CreateViewControllerFunc = std::function<IController*(
57  const UTF8StringView& name, IController* parent, const IUIDescription* uiDesc)>;
58 
59  void addCreateViewControllerFunc (const UTF8String& name, CreateViewControllerFunc func)
60  {
61  createViewControllerMap.emplace (name.getString (), func);
62  }
63 
65  const IUIDescription* uiDesc) override
66  {
67  auto it = createViewControllerMap.find (std::string (name));
68  if (it != createViewControllerMap.end ())
69  {
70  return it->second (name, parent, uiDesc);
71  }
72  return nullptr;
73  }
74 
75 private:
76  using CreateViewControllerMap = std::unordered_map<std::string, CreateViewControllerFunc>;
77 
78  CreateViewControllerMap createViewControllerMap;
79 };
80 
81 //------------------------------------------------------------------------
82 } // UIDesc
83 } // Standalone
84 } // VSTGUI
Definition: iuidescription.h:19
IController * createController(const UTF8StringView &name, IController *parent, const IUIDescription *uiDesc) override
Definition: customization.h:64
Definition: customcontrols.cpp:8
extension to IControlListener used by UIDescription
Definition: icontroller.h:20
a view on a null terminated UTF-8 String
Definition: cstring.h:172
Definition: customization.h:51
holds an UTF8 encoded string and a platform representation of it
Definition: cstring.h:56
Definition: iuidescwindow.h:39