declaratorhandler.h
Go to the documentation of this file.
1 #ifndef DNAI_CORE_DECLARATORHANDLER_H
2 #define DNAI_CORE_DECLARATORHANDLER_H
3 
4 #include <queue>
5 #include <unordered_map>
6 
7 #include "entitymanager.h"
8 #include "core.h"
9 #include "dnai/project.h"
10 
11 namespace dnai
12 {
13  namespace gcore
14  {
15  class DeclaratorHandler : public QObject
16  {
17  Q_OBJECT
18 
19  public:
21  virtual ~DeclaratorHandler();
22 
23  public:
24  void setup();
25 
26  public slots:
27  void onEntityAdded(::core::EntityID id, models::Entity &entity);
28  void onEntityRemoved(::core::EntityID id, models::Entity &entity);
29 
30  signals:
31  void declared(dnai::models::Entity *entity);
32  void removed(dnai::models::Entity *entity);
33  void moved();
34  void renamed(dnai::models::Entity *entity, QString name, QString newName);
35  void visibilitySet();
36 
37  private:
38  models::Entity *createEntity(::core::ENTITY type, models::Entity *parent);
39 
40  public:
41  Q_INVOKABLE void declare(quint32 parentId, qint32 type, QString name, qint32 visibility = static_cast<qint32>(::core::VISIBILITY::PUBLIC), bool save = true);
42  Q_INVOKABLE void remove(quint32 parentId, QString const &name, bool save = true);
43  void move(const models::Entity &tomove, const models::Entity &newparent, bool save = true);
44  Q_INVOKABLE void rename(quint32 parentId, QString const &name, QString const &newname, bool save = true);
45  Q_INVOKABLE void setVisibility(quint32 parentId, QString const &name, qint32 visibility, bool save = true);
46 
47  private:
48  models::Entity *findEntity(::core::EntityID declarator, QString const &name);
49 
50  public:
51  void onDeclared(::core::EntityID declarator, ::core::ENTITY type, QString const &name, ::core::VISIBILITY visibility, ::core::EntityID declared);
52  void onDeclareError(::core::EntityID declarator, ::core::ENTITY type, QString const &name, ::core::VISIBILITY visibility, QString const &message);
53 
54  void onRemoved(::core::EntityID declarator, QString const &name, std::list<EntityID> const &rmvList);
55  void onRemoveError(::core::EntityID declarator, QString const &name, QString const &message);
56 
57  void onRenamed(::core::EntityID declarator, QString const &name, QString const &newname);
58  void onRenameError(::core::EntityID declarator, QString const &name, QString const &newname, QString const &message);
59 
60  void onVisibilitySet(::core::EntityID declarator, QString const &name, core::VISIBILITY visibility);
61  void onSetVisibilityError(core::EntityID declarator, QString const &name, core::VISIBILITY visibility, QString const &message);
62 
63  //moved / move_error
64 
65  private:
67  std::queue<models::Entity *> pendingDeclaration;
68 
69  private:
70  std::unordered_map<std::string, models::Entity *> removedEntities;
71  };
72  }
73 }
74 
75 #endif // DNAI_CORE_DECLARATORHANDLER_H
void setup()
Definition: declaratorhandler.cpp:41
Q_INVOKABLE void rename(quint32 parentId, QString const &name, QString const &newname, bool save=true)
Definition: declaratorhandler.cpp:184
EntityManager & manager
Definition: declaratorhandler.h:66
Definition: entitymanager.h:15
void visibilitySet()
Definition: moc_declaratorhandler.cpp:284
void onEntityRemoved(::core::EntityID id, models::Entity &entity)
Definition: declaratorhandler.cpp:71
DeclaratorHandler(EntityManager &manager)
Definition: declaratorhandler.cpp:23
void move(const models::Entity &tomove, const models::Entity &newparent, bool save=true)
Definition: declaratorhandler.cpp:177
void renamed(dnai::models::Entity *entity, QString name, QString newName)
Definition: moc_declaratorhandler.cpp:277
void moved()
Definition: moc_declaratorhandler.cpp:271
void onDeclareError(::core::EntityID declarator,::core::ENTITY type, QString const &name,::core::VISIBILITY visibility, QString const &message)
Definition: declaratorhandler.cpp:294
models::Entity * findEntity(::core::EntityID declarator, QString const &name)
Definition: declaratorhandler.cpp:217
Q_INVOKABLE void declare(quint32 parentId, qint32 type, QString name, qint32 visibility=static_cast< qint32 >(::core::VISIBILITY::PUBLIC), bool save=true)
Definition: declaratorhandler.cpp:111
void onDeclared(::core::EntityID declarator,::core::ENTITY type, QString const &name,::core::VISIBILITY visibility,::core::EntityID declared)
Definition: declaratorhandler.cpp:236
void onVisibilitySet(::core::EntityID declarator, QString const &name, core::VISIBILITY visibility)
Definition: declaratorhandler.cpp:367
models::Entity * createEntity(::core::ENTITY type, models::Entity *parent)
Definition: declaratorhandler.cpp:76
Q_INVOKABLE void setVisibility(quint32 parentId, QString const &name, qint32 visibility, bool save=true)
Definition: declaratorhandler.cpp:200
void onSetVisibilityError(core::EntityID declarator, QString const &name, core::VISIBILITY visibility, QString const &message)
Definition: declaratorhandler.cpp:379
void onEntityAdded(::core::EntityID id, models::Entity &entity)
Definition: declaratorhandler.cpp:61
Definition: api.h:13
std::unordered_map< std::string, models::Entity * > removedEntities
Definition: declaratorhandler.h:70
void declared(dnai::models::Entity *entity)
Definition: moc_declaratorhandler.cpp:257
void onRemoved(::core::EntityID declarator, QString const &name, std::list< EntityID > const &rmvList)
Definition: declaratorhandler.cpp:314
void onRenamed(::core::EntityID declarator, QString const &name, QString const &newname)
Definition: declaratorhandler.cpp:344
void removed(dnai::models::Entity *entity)
Definition: moc_declaratorhandler.cpp:264
std::queue< models::Entity * > pendingDeclaration
Definition: declaratorhandler.h:67
void onRemoveError(::core::EntityID declarator, QString const &name, QString const &message)
Definition: declaratorhandler.cpp:335
void onRenameError(::core::EntityID declarator, QString const &name, QString const &newname, QString const &message)
Definition: declaratorhandler.cpp:357
Definition: entity.h:71
Definition: declaratorhandler.h:15
virtual ~DeclaratorHandler()
Definition: declaratorhandler.cpp:29