You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ovdCPlayerVisualization.h 3.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #pragma once
  2. #include "ovd_base.h"
  3. #include <string>
  4. #include <vector>
  5. #include <map>
  6. namespace OpenViBE {
  7. namespace Designer {
  8. class CInterfacedScenario;
  9. class CPlayerVisualization final : public VisualizationToolkit::ITreeViewCB
  10. {
  11. public:
  12. CPlayerVisualization(const Kernel::IKernelContext& ctx, VisualizationToolkit::IVisualizationTree& tree,
  13. CInterfacedScenario& interfacedScenario)
  14. : m_kernelCtx(ctx), m_visualizationTree(tree), m_interfacedScenario(interfacedScenario) { }
  15. ~CPlayerVisualization() override;
  16. void init();
  17. /** \name ITreeViewCB interface implementation */
  18. //@{
  19. GtkWidget* loadTreeWidget(VisualizationToolkit::IVisualizationWidget* widget) override;
  20. void endLoadTreeWidget(VisualizationToolkit::IVisualizationWidget* widget) override;
  21. bool setToolbar(const CIdentifier& boxID, GtkWidget* widget) override;
  22. bool setWidget(const CIdentifier& boxID, GtkWidget* widget) override;
  23. //@}
  24. void showTopLevelWindows();
  25. void hideTopLevelWindows();
  26. CInterfacedScenario& getInterfacedScenario() const { return m_interfacedScenario; }
  27. protected:
  28. bool parentWidgetBox(VisualizationToolkit::IVisualizationWidget* widget, GtkBox* widgetBox);
  29. static gboolean configureEventCB(GtkWidget* widget, GdkEventConfigure* event, gpointer data);
  30. static gboolean widgetExposeEventCB(GtkWidget* widget, GdkEventExpose* event, gpointer data);
  31. void resizeCB(GtkContainer* container);
  32. //callbacks for DND
  33. static void dragDataGetFromWidgetCB(GtkWidget* srcWidget, GdkDragContext* dc, GtkSelectionData* selectionData, guint info, guint time, gpointer data);
  34. static void dragDataReceivedInWidgetCB(GtkWidget* dstWidget, GdkDragContext* dc, gint x, gint y, GtkSelectionData* selectionData, guint info, guint time,
  35. gpointer data);
  36. //callback for toolbar
  37. static void toolbarButtonToggledCB(GtkToggleButton* button, gpointer data);
  38. bool toggleToolbarCB(GtkToggleButton* button);
  39. static gboolean toolbarDeleteEventCB(GtkWidget* widget, GdkEvent* event, gpointer data);
  40. bool deleteToolbarCB(GtkWidget* widget);
  41. private:
  42. const Kernel::IKernelContext& m_kernelCtx;
  43. VisualizationToolkit::IVisualizationTree& m_visualizationTree;
  44. CInterfacedScenario& m_interfacedScenario;
  45. /**
  46. * \brief Vector of top level windows
  47. */
  48. std::vector<GtkWindow*> m_windows;
  49. /**
  50. * \brief Map of split (paned) widgets associated to their identifiers
  51. * This map is used to retrieve size properties of split widgets upon window resizing,
  52. * so as to keep the relative sizes of a hierarchy of widgets
  53. */
  54. std::map<GtkPaned*, CIdentifier> m_splitWidgets;
  55. /**
  56. * \brief Map associating toolbar buttons to toolbar windows
  57. */
  58. std::map<GtkToggleButton*, GtkWidget*> m_toolbars;
  59. /**
  60. * \brief Pointer to active toolbar button
  61. */
  62. GtkToggleButton* m_activeToolbarButton = nullptr;
  63. class CPluginWidgets
  64. {
  65. public:
  66. CPluginWidgets() = default;
  67. ~CPluginWidgets() = default;
  68. GtkWidget* m_Widget = nullptr;
  69. GtkToggleButton* m_ToolbarButton = nullptr;
  70. GtkWidget* m_Toolbar = nullptr;
  71. };
  72. /**
  73. * \brief Map of visualization plugins
  74. */
  75. std::map<CIdentifier, CPluginWidgets> m_plugins;
  76. };
  77. } // namespace Designer
  78. } // namespace OpenViBE