objecthandler.h
Go to the documentation of this file.
1 #ifndef DNAI_CORE_OBJECTHANDLER_H
2 #define DNAI_CORE_OBJECTHANDLER_H
3 
4 #include <queue>
5 #include <unordered_map>
6 #include <unordered_set>
7 
8 #include <QObject>
9 
10 #include "entitymanager.h"
11 
12 namespace dnai
13 {
14  namespace gcore
15  {
16  class ObjectHandler : public QObject
17  {
18  Q_OBJECT
19 
20  public:
22  ~ObjectHandler() = default;
23 
24  public:
25  void setup();
26 
27  public slots:
28  void onEntityAdded(::core::EntityID id, models::Entity &entity);
29  void onEntityRemoved(::core::EntityID id, models::Entity &entity);
30 
31  public:
32  Q_INVOKABLE void addAttribute(quint32 obj, QString name, quint32 type, qint32 visi, bool save = true);
33  Q_INVOKABLE void removeAttribute(quint32 obj, QString name, bool save = true);
34  Q_INVOKABLE void renameAttribute(quint32 obj, QString name, QString newName, bool save = true);
35  Q_INVOKABLE void setAttributeType(quint32 obj, QString name, quint32 type, bool save = true);
36  Q_INVOKABLE void setFunctionAsMember(quint32 obj, QString name, bool save = true);
37  Q_INVOKABLE void setFunctionAsStatic(quint32 obj, QString name, bool save = true);
38 
39  private:
40  bool isAttributePending(EntityID obj, QString const &name) const;
41  void removePendingAttribute(EntityID obj, QString const &name);
43 
44  private:
45  void onAttributeAdded(EntityID obj, QString name, EntityID type, VISIBILITY visi);
46  void onAddAttributeError(EntityID obj, QString name, EntityID type, VISIBILITY visi, QString msg);
47 
48  void onAttributeRemoved(EntityID obj, QString name);
49  void onRemoveAttributeError(EntityID obj, QString name, QString msg);
50 
51  void onAttributeRenamed(EntityID obj, QString name, QString newName);
52  void onRenameAttributeError(EntityID obj, QString name, QString newName, QString msg);
53 
54  void onFunctionSetAsMember(EntityID obj, QString name, EntityID thisId);
55  void onSetFunctionAsMemberError(EntityID obj, QString name, QString msg);
56 
57  signals:
58  void attributeAdded(models::Entity *obj, QString name, models::Entity *type, VISIBILITY visi);
59  void attributeRemoved(models::Entity *obj, QString name);
60  void attributeRenamed(models::Entity *obj, QString name, QString newName);
61  void functionSetAsMember(models::Entity *obj, QString name, models::Entity *thisParam);
62  void functionSetAsStatic(models::Entity *obj, QString name);
63 
64  private:
66 
67  private:
68  std::queue<std::function<void()>> m_pendingAdd;
69 
70  private:
71  using AttrMap = std::unordered_map<models::Entity *, QList<QString>>;
73 
74  private:
75  using AttrSet = std::unordered_set<std::string>;
77  };
78  }
79 }
80 
81 #endif // DNAI_CORE_OBJECTHANDLER_H
void onRemoveAttributeError(EntityID obj, QString name, QString msg)
Definition: objecthandler.cpp:324
std::unordered_map< models::Entity *, QList< QString >> AttrMap
Definition: objecthandler.h:71
void onEntityRemoved(::core::EntityID id, models::Entity &entity)
Definition: objecthandler.cpp:86
AttrMap m_pendingAttributes
Definition: objecthandler.h:72
void onRenameAttributeError(EntityID obj, QString name, QString newName, QString msg)
Definition: objecthandler.cpp:343
void onAddAttributeError(EntityID obj, QString name, EntityID type, VISIBILITY visi, QString msg)
Definition: objecthandler.cpp:292
Definition: entitymanager.h:15
ObjectHandler(EntityManager &manager)
Definition: objecthandler.cpp:18
void onEntityAdded(::core::EntityID id, models::Entity &entity)
Definition: objecthandler.cpp:44
void attributeRenamed(models::Entity *obj, QString name, QString newName)
Definition: moc_objecthandler.cpp:261
void onSetFunctionAsMemberError(EntityID obj, QString name, QString msg)
Definition: objecthandler.cpp:364
void functionSetAsMember(models::Entity *obj, QString name, models::Entity *thisParam)
Definition: moc_objecthandler.cpp:268
Q_INVOKABLE void removeAttribute(quint32 obj, QString name, bool save=true)
Definition: objecthandler.cpp:115
Definition: objecthandler.h:16
Q_INVOKABLE void addAttribute(quint32 obj, QString name, quint32 type, qint32 visi, bool save=true)
Definition: objecthandler.cpp:98
Q_INVOKABLE void setFunctionAsStatic(quint32 obj, QString name, bool save=true)
Definition: objecthandler.cpp:194
void onAttributeAdded(EntityID obj, QString name, EntityID type, VISIBILITY visi)
Definition: objecthandler.cpp:272
void functionSetAsStatic(models::Entity *obj, QString name)
Definition: moc_objecthandler.cpp:275
std::unordered_set< std::string > AttrSet
Definition: objecthandler.h:75
void onFunctionSetAsMember(EntityID obj, QString name, EntityID thisId)
Definition: objecthandler.cpp:350
Q_INVOKABLE void setAttributeType(quint32 obj, QString name, quint32 type, bool save=true)
Definition: objecthandler.cpp:149
std::queue< std::function< void()> > m_pendingAdd
Definition: objecthandler.h:68
void attributeRemoved(models::Entity *obj, QString name)
Definition: moc_objecthandler.cpp:254
void onAttributeRenamed(EntityID obj, QString name, QString newName)
Definition: objecthandler.cpp:332
Definition: api.h:13
void onAttributeRemoved(EntityID obj, QString name)
Definition: objecthandler.cpp:304
void refreshPendingAttributes(models::Entity &entity)
Definition: objecthandler.cpp:228
bool isAttributePending(EntityID obj, QString const &name) const
Definition: objecthandler.cpp:216
void setup()
Definition: objecthandler.cpp:24
void attributeAdded(models::Entity *obj, QString name, models::Entity *type, VISIBILITY visi)
Definition: moc_objecthandler.cpp:247
AttrSet m_attributeAdded
Definition: objecthandler.h:76
void removePendingAttribute(EntityID obj, QString const &name)
Definition: objecthandler.cpp:221
EntityManager & manager
Definition: objecthandler.h:65
Q_INVOKABLE void renameAttribute(quint32 obj, QString name, QString newName, bool save=true)
Definition: objecthandler.cpp:133
Definition: entity.h:71
Q_INVOKABLE void setFunctionAsMember(quint32 obj, QString name, bool save=true)
Definition: objecthandler.cpp:172