tilde~
Puredata Qt-based GUI
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ObjectLoader.h
Go to the documentation of this file.
1 // (c) 2017 Alex Nadzharov
2 // License: GPL3
3 
4 #ifndef CM_OBJECTLOADER_H
5 #define CM_OBJECTLOADER_H
6 
7 #include <algorithm>
8 #include <map>
9 #include <string>
10 #include <vector>
11 
12 using namespace std;
13 
14 class QString;
15 class QGraphicsView;
16 
17 namespace tilde {
18 
19 class UIObject;
20 
21 typedef UIObject* (*UIObjectConstructor)(QString objectData);
22 
26 class ObjectLoader {
27 public:
28  static ObjectLoader& inst()
29  {
30  static ObjectLoader instance;
31  return instance;
32  }
33 
34 private:
35  std::vector<std::string> _names;
36  std::vector<std::string> _pdNames;
37 
38  //std::map<std::string, cmObjectConstructor> _objectConstructors;
39  std::map<std::string, UIObjectConstructor> _uiObjectConstructors;
40 
41  ObjectLoader()
42  {
43  }
44 
45 public:
46  ObjectLoader(ObjectLoader const&) = delete;
47  void operator=(ObjectLoader const&) = delete;
48 
49  void loadObjects();
50 
51  void addUIobject(string name, UIObjectConstructor constructor);
52 
53  vector<string> getUINames();
54  vector<string> getPDNames();
55 
56  bool hasUI(string objName);
57 
58  UIObjectConstructor getUIConstructorFor(QString objName);
59 
60  UIObject* createUIObject(QString objectData);
61 };
62 }
63 
64 #endif // CM_OBJECTLOADER_H
static ObjectLoader & inst()
Definition: ObjectLoader.h:28
UIObject *(* UIObjectConstructor)(QString objectData)
Definition: ObjectLoader.h:21
prototype for ui externals handling
Definition: ObjectLoader.h:26
OOPD * instance
Definition: OOPD.cpp:20
Definition: UIObject.h:44