WidgetInletFactory.hpp
1 #pragma once
2 #include <Process/Dataflow/PortListWidget.hpp>
3 
4 #include <Dataflow/ControlInletItem.hpp>
5 #include <Dataflow/ControlOutletItem.hpp>
6 #include <Dataflow/PortItem.hpp>
7 
8 namespace Dataflow
9 {
10 template <typename T, typename Widget>
12 {
13  using Model_T = T;
14  UuidKey<Process::Port> concreteKey() const noexcept override
15  {
16  return Model_T::static_concreteKey();
17  }
18 
19  Model_T* load(const VisitorVariant& vis, QObject* parent) override
20  {
21  return score::deserialize_dyn(vis, [&](auto&& deserializer) {
22  return new Model_T{deserializer, parent};
23  });
24  }
25 
26  void setupInletInspector(
27  const Process::Inlet& port, const score::DocumentContext& ctx, QWidget* parent,
28  Inspector::Layout& lay, QObject* context) override
29  {
30  auto& ctrl = static_cast<const Model_T&>(port);
31  auto widg = Widget::make_widget(ctrl, ctrl, ctx, parent, parent);
32  Process::PortWidgetSetup::setupControl(ctrl, widg, ctx, lay, parent);
33  }
34 
35  QGraphicsItem* makeControlItem(
37  QGraphicsItem* parent, QObject* context) override
38  {
39  auto& ctrl = static_cast<Model_T&>(port);
40  return Widget::make_item(ctrl, ctrl, ctx, nullptr, context);
41  }
42 
43  Process::PortItemLayout defaultLayout() const noexcept override
44  {
45  return Widget::layout();
46  }
47 };
48 
49 template <typename T, typename Widget>
51 {
52  using Model_T = T;
53  UuidKey<Process::Port> concreteKey() const noexcept override
54  {
56  }
57 
58  Model_T* load(const VisitorVariant& vis, QObject* parent) override
59  {
60  return score::deserialize_dyn(vis, [&](auto&& deserializer) {
61  return new Model_T{deserializer, parent};
62  });
63  }
64 
65  void setupOutletInspector(
66  const Process::Outlet& port, const score::DocumentContext& ctx, QWidget* parent,
67  Inspector::Layout& lay, QObject* context) override
68  {
69  auto& ctrl = static_cast<const Model_T&>(port);
70  auto widg = Widget::make_widget(ctrl, ctrl, ctx, parent, parent);
71  Process::PortWidgetSetup::setupControl(ctrl, widg, ctx, lay, parent);
72  }
73 
74  QGraphicsItem* makeControlItem(
76  QGraphicsItem* parent, QObject* context) override
77  {
78  auto& ctrl = static_cast<Model_T&>(port);
79  return Widget::make_item(ctrl, ctrl, ctx, nullptr, context);
80  }
81 
82  Process::PortItemLayout defaultLayout() const noexcept override
83  {
84  return Widget::layout();
85  }
86 };
87 }
Definition: lib/score/widgets/Layout.hpp:29
Definition: score-lib-process/Process/Dataflow/Port.hpp:202
Definition: score-lib-process/Process/Dataflow/Port.hpp:415
Definition: score-lib-process/Process/Dataflow/Port.hpp:176
Definition: score-lib-process/Process/Dataflow/Port.hpp:264
Definition: UuidKey.hpp:343
Definition: ControlInletItem.hpp:7
Definition: ControlOutletItem.hpp:7
Definition: WidgetInletFactory.hpp:12
Definition: WidgetInletFactory.hpp:51
Static metadata implementation.
Definition: lib/score/tools/Metadata.hpp:36
Definition: score-lib-process/Process/Dataflow/Port.hpp:90
The VisitorVariant struct.
Definition: VisitorInterface.hpp:26
Definition: DocumentContext.hpp:18