instructionhandler.h
Go to the documentation of this file.
1 #ifndef DNAI_CORE_INSTRUCTIONHANDLER_H
2 #define DNAI_CORE_INSTRUCTIONHANDLER_H
3 
4 #include <unordered_map>
5 #include <queue>
6 
7 #include <QObject>
8 
9 #include "entitymanager.h"
10 
11 namespace dnai
12 {
13  namespace gcore
14  {
15  class InstructionHandler : public QObject
16  {
17  Q_OBJECT
18 
19  public:
21  ~InstructionHandler() = default;
22 
23  public:
24  void setup();
25 
26  public:
27  Q_INVOKABLE void linkData(quint32 function, quint32 instruction, QString const &input, quint32 fromInstruction, QString const &output, bool save = true);
28  Q_INVOKABLE void unlinkData(quint32 function, quint32 instruction, QString const &input, bool save = true);
29  Q_INVOKABLE void linkExecution(quint32 function, quint32 instruction, quint32 outPin, quint32 toInstruction, bool save = true);
30  Q_INVOKABLE void unlinkExecution(quint32 function, quint32 instruction, quint32 outPin, bool save = true);
31  Q_INVOKABLE void setInputValue(quint32 function, quint32 instruction, QString const &input, QString const &value, bool save = true);
32 
33  void onDataLinked(quint32 function, quint32 from, QString const &output, quint32 to, QString const &input);
34  void onLinkDataError(quint32 function, quint32 from, QString const &output, quint32 to, QString const &input, QString const &message);
35 
36  void onDataUnlinked(quint32 function, quint32 instruction, QString const &input);
37  void onUnlinkDataError(quint32 function, quint32 instruction, QString const &input, QString const &message);
38 
39  void onExecutionLinked(quint32 function, quint32 instruction, quint32 outpin, quint32 toInstruction);
40  void onLinkExecutionError(quint32 function, quint32 instruction, quint32 outpin, quint32 toInstruction, QString const &message);
41 
42  void onExecutionUnlinked(quint32 function, quint32 instruction, quint32 outpin);
43  void onUnlinkExecutionError(quint32 function, quint32 instruction, quint32 outpin, QString const &message);
44 
45  void onInputValueSet(quint32 function, quint32 instruction, QString const &input, QString const &value);
46  void onSetInputValueError(quint32 function, quint32 instruction, QString const &input, QString const &value, QString const &msg);
47 
48  public slots:
51 
52  public:
53  static models::gui::IoLink *createIoLink(QUuid const &from, QString const &output, QUuid const &to, QString const &input);
54  static models::gui::FlowLink *createFlowLink(QUuid const &from, int outindex, QUuid const &to);
55 
56  private:
57  void refreshLinks();
58 
59  public:
60  bool contains(QUuid const &instGuid) const;
61  models::gui::Instruction *getInstruction(QUuid const &guid) const;
62 
63  public:
64  QList<models::gui::Instruction *> getInstructionsOfPath(QString const &nodeMenupath) const;
65 
66  signals:
67  /*
68  * onRemoved
69  */
70  void dataLinked(dnai::models::Entity *func, dnai::models::gui::Instruction *from, QString output, dnai::models::gui::Instruction *to, QString input);
71  void dataUnlinked(dnai::models::Entity *func, dnai::models::gui::Instruction *instruction, QString input);
74  void inputValueSet(dnai::models::Entity *func, dnai::models::gui::Instruction *instruction, QString input, QString value);
75 
76  private:
78 
79  private:
80  QHash<QUuid, models::gui::Instruction *> m_instructions;
81 
82  std::unordered_map<models::gui::IoLink *, models::Entity *> iolink_to_replicate;
83  std::unordered_map<models::gui::FlowLink *, models::Entity *> flowlink_to_replicate;
84  };
85  }
86 }
87 
88 #endif // DNAI_CORE_INSTRUCTIONHANDLER_H
void executionLinked(dnai::models::Entity *func, dnai::models::gui::Instruction *from, quint32 outPin, dnai::models::gui::Instruction *to)
Definition: moc_instructionhandler.cpp:325
void setup()
Definition: instructionhandler.cpp:22
std::unordered_map< models::gui::IoLink *, models::Entity * > iolink_to_replicate
Definition: instructionhandler.h:82
void onUnlinkExecutionError(quint32 function, quint32 instruction, quint32 outpin, QString const &message)
Definition: instructionhandler.cpp:249
Definition: instruction.h:15
Q_INVOKABLE void unlinkData(quint32 function, quint32 instruction, QString const &input, bool save=true)
Definition: instructionhandler.cpp:59
void onSetInputValueError(quint32 function, quint32 instruction, QString const &input, QString const &value, QString const &msg)
Definition: instructionhandler.cpp:270
void dataUnlinked(dnai::models::Entity *func, dnai::models::gui::Instruction *instruction, QString input)
Definition: moc_instructionhandler.cpp:318
QHash< QUuid, models::gui::Instruction * > m_instructions
Definition: instructionhandler.h:80
QList< models::gui::Instruction * > getInstructionsOfPath(QString const &nodeMenupath) const
Definition: instructionhandler.cpp:409
void executionUnlinked(dnai::models::Entity *func, dnai::models::gui::Instruction *from, quint32 outPin)
Definition: moc_instructionhandler.cpp:332
void onExecutionLinked(quint32 function, quint32 instruction, quint32 outpin, quint32 toInstruction)
Definition: instructionhandler.cpp:205
Definition: entitymanager.h:15
void refreshLinks()
Definition: instructionhandler.cpp:359
void onInstructionAdded(dnai::models::Entity *func, dnai::models::gui::Instruction *instruction)
Definition: instructionhandler.cpp:279
void onUnlinkDataError(quint32 function, quint32 instruction, QString const &input, QString const &message)
Definition: instructionhandler.cpp:198
std::unordered_map< models::gui::FlowLink *, models::Entity * > flowlink_to_replicate
Definition: instructionhandler.h:83
void onDataUnlinked(quint32 function, quint32 instruction, QString const &input)
Definition: instructionhandler.cpp:178
void onInputValueSet(quint32 function, quint32 instruction, QString const &input, QString const &value)
Definition: instructionhandler.cpp:256
static models::gui::FlowLink * createFlowLink(QUuid const &from, int outindex, QUuid const &to)
Definition: instructionhandler.cpp:347
Q_INVOKABLE void unlinkExecution(quint32 function, quint32 instruction, quint32 outPin, bool save=true)
Definition: instructionhandler.cpp:106
Q_INVOKABLE void linkData(quint32 function, quint32 instruction, QString const &input, quint32 fromInstruction, QString const &output, bool save=true)
Definition: instructionhandler.cpp:40
void onDataLinked(quint32 function, quint32 from, QString const &output, quint32 to, QString const &input)
Definition: instructionhandler.cpp:154
models::gui::Instruction * getInstruction(QUuid const &guid) const
Definition: instructionhandler.cpp:404
InstructionHandler(EntityManager &manager)
Definition: instructionhandler.cpp:16
Definition: api.h:13
static models::gui::IoLink * createIoLink(QUuid const &from, QString const &output, QUuid const &to, QString const &input)
Definition: instructionhandler.cpp:332
EntityManager & manager
Definition: instructionhandler.h:77
Definition: instructionhandler.h:15
void dataLinked(dnai::models::Entity *func, dnai::models::gui::Instruction *from, QString output, dnai::models::gui::Instruction *to, QString input)
Definition: moc_instructionhandler.cpp:311
Q_INVOKABLE void setInputValue(quint32 function, quint32 instruction, QString const &input, QString const &value, bool save=true)
Definition: instructionhandler.cpp:133
Q_INVOKABLE void linkExecution(quint32 function, quint32 instruction, quint32 outPin, quint32 toInstruction, bool save=true)
Definition: instructionhandler.cpp:87
bool contains(QUuid const &instGuid) const
Definition: instructionhandler.cpp:399
void onLinkDataError(quint32 function, quint32 from, QString const &output, quint32 to, QString const &input, QString const &message)
Definition: instructionhandler.cpp:171
void onLinkExecutionError(quint32 function, quint32 instruction, quint32 outpin, quint32 toInstruction, QString const &message)
Definition: instructionhandler.cpp:222
Definition: entity.h:71
void onExecutionUnlinked(quint32 function, quint32 instruction, quint32 outpin)
Definition: instructionhandler.cpp:229
void onInstructionRemoved(dnai::models::Entity *func, dnai::models::gui::Instruction *instruction)
Definition: instructionhandler.cpp:323
void inputValueSet(dnai::models::Entity *func, dnai::models::gui::Instruction *instruction, QString input, QString value)
Definition: moc_instructionhandler.cpp:339