MT Showcase SDK
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
UserInterface.hpp
1 #pragma once
2 
3 #include "Export.hpp"
4 #include "Graph.hpp"
5 
6 #include "UIComponent.hpp"
7 
8 namespace Showcase
9 {
10 
11  typedef ShowcaseFactoryPtr<UIComponent> UIComponentFactoryPtr;
12 
15  class SHOWCASE_API UserInterface
16  {
17  public:
18  UserInterface();
19  ~UserInterface();
20 
21  void clear();
22 
23  void init(GraphPtr graph, const GraphNode& node);
24 
26  void setShowLoadingOverlay(bool showLoadingOverlay);
27 
28  bool hasComponent(const QString& name, Slot::SlotType type) const;
29 
30  FactoryKey<UIComponent>
31  registerFactory(const QString &name, UIComponentFactoryPtr factory);
32 
33  UIComponentPtr createComponent(const QString &componentName, Slot::SlotType type);
34 
35  bool unregisterFactory(FactoryKey<UIComponent> key);
36 
37  MultiWidgets::WidgetPtr rootWidget();
38  MultiWidgets::WidgetPtr backgroundWidget();
39  MultiWidgets::WidgetPtr mainWidget();
40  MultiWidgets::WidgetPtr overlayWidget();
41  MultiWidgets::WidgetPtr internalOverlayWidget();
42 
43  MultiWidgets::OperatorPtr inputTracker() const;
44 
48  std::shared_ptr<UIComponent> stockUIComponent(const QString & componentName);
49 
50  UIComponentInstancePtr createStockInstance(const QString & componentName,
51  const QByteArray & role = "");
52  MultiWidgets::WidgetPtr createStockWidget(const QString & componentName,
53  const QByteArray & role = "");
54  MultiWidgets::OperatorPtr createStockOperator(const QString & componentName,
55  MultiWidgets::Widget & targetWidget,
56  const QByteArray & role = "");
57 
58  private:
59  std::shared_ptr<UIComponent> m_root;
60  FactoryMap<UIComponent> m_componentFactories;
61 
62  std::mutex m_stockComponentsMutex;
63  std::map<QString, std::shared_ptr<UIComponent> > m_stockComponents;
64 
65  bool m_showLoadingOverlay = true;
66  };
67  typedef std::shared_ptr<UserInterface> UserInterfacePtr;
68 }