score-plugin-remotecontrol/RemoteControl/Scenario/Process.hpp
1 #pragma once
2 #include <Process/Process.hpp>
3 #include <Process/ProcessComponent.hpp>
4 
5 #include <score/model/Component.hpp>
6 #include <score/model/ComponentFactory.hpp>
7 #include <score/plugins/ModelFactory.hpp>
8 
9 #include <RemoteControl/DocumentPlugin.hpp>
10 
11 #include <score_plugin_remotecontrol_export.h>
12 
13 namespace RemoteControl
14 {
15 class SCORE_PLUGIN_REMOTECONTROL_EXPORT ProcessComponent
16  : public Process::GenericProcessComponent<DocumentPlugin>
17 {
18  ABSTRACT_COMPONENT_METADATA(
19  RemoteControl::ProcessComponent, "b8a691ea-5352-468d-b78c-04e420c252d1")
20 public:
22  Process::ProcessModel& proc, DocumentPlugin& doc, const QString& name,
23  QObject* parent);
24 
25  virtual ~ProcessComponent();
26 };
27 
28 template <typename Process_T>
31 
32 class SCORE_PLUGIN_REMOTECONTROL_EXPORT ProcessComponentFactory
34  Process::ProcessModel, DocumentPlugin, ProcessComponentFactory>
35 {
36  SCORE_ABSTRACT_COMPONENT_FACTORY(RemoteControl::ProcessComponent)
37 public:
38  virtual ~ProcessComponentFactory();
39  virtual ProcessComponent*
40  make(Process::ProcessModel& proc, DocumentPlugin& doc, QObject* paren_objt) const = 0;
41 };
42 
43 template <typename ProcessComponent_T>
46  ProcessComponent_T, ProcessComponentFactory>
47 {
48 public:
49  using model_type = typename ProcessComponent_T::model_type;
50  ProcessComponent* make(
52  QObject* paren_objt) const final override
53  {
54  return new ProcessComponent_T{static_cast<model_type&>(proc), doc, paren_objt};
55  }
56 };
57 
60 }
Definition: Process/ProcessComponent.hpp:10
The Process class.
Definition: score-lib-process/Process/Process.hpp:61
Definition: plugins/score-plugin-remotecontrol/RemoteControl/DocumentPlugin.hpp:125
Definition: score-plugin-remotecontrol/RemoteControl/Scenario/Process.hpp:47
Definition: score-plugin-remotecontrol/RemoteControl/Scenario/Process.hpp:35
Definition: score-plugin-remotecontrol/RemoteControl/Scenario/Process.hpp:17
Definition: ComponentFactory.hpp:29
Definition: ModelFactory.hpp:8
Definition: ComponentFactory.hpp:48