diff --git a/gui/include/Visualization/IVariableContainer.h b/gui/include/Visualization/IVariableContainer.h new file mode 100644 index 0000000..fa4791b --- /dev/null +++ b/gui/include/Visualization/IVariableContainer.h @@ -0,0 +1,19 @@ +#ifndef SCIQLOP_IVARIABLECONTAINER_H +#define SCIQLOP_IVARIABLECONTAINER_H + +class Variable; + +/** + * @brief The IVariableContainer interface represents an UI object that can accommodate a variable + */ +class IVariableContainer { + +public: + virtual ~IVariableContainer() = default; + + /// Checks if the container can handle the variable passed in parameter + virtual bool canDrop(const Variable &variable) const = 0; +}; + + +#endif // SCIQLOP_IVARIABLECONTAINER_H diff --git a/gui/include/Visualization/IVisualizationWidget.h b/gui/include/Visualization/IVisualizationWidget.h index bad143c..4bbafbb 100644 --- a/gui/include/Visualization/IVisualizationWidget.h +++ b/gui/include/Visualization/IVisualizationWidget.h @@ -1,6 +1,7 @@ #ifndef SCIQLOP_IVISUALIZATIONWIDGET_H #define SCIQLOP_IVISUALIZATIONWIDGET_H +#include "Visualization/IVariableContainer.h" #include #include @@ -10,7 +11,7 @@ class IVisualizationWidgetVisitor; /** * @brief The IVisualizationWidget handles the visualization widget. */ -class IVisualizationWidget { +class IVisualizationWidget : public IVariableContainer { public: virtual ~IVisualizationWidget() = default; diff --git a/gui/include/Visualization/VisualizationGraphWidget.h b/gui/include/Visualization/VisualizationGraphWidget.h index 8d978af..07db804 100644 --- a/gui/include/Visualization/VisualizationGraphWidget.h +++ b/gui/include/Visualization/VisualizationGraphWidget.h @@ -26,6 +26,7 @@ public: // IVisualizationWidget interface void accept(IVisualizationWidgetVisitor *visitor) override; + bool canDrop(const Variable &variable) const override; void close() override; QString name() const; diff --git a/gui/include/Visualization/VisualizationTabWidget.h b/gui/include/Visualization/VisualizationTabWidget.h index 36b0545..ac5a39d 100644 --- a/gui/include/Visualization/VisualizationTabWidget.h +++ b/gui/include/Visualization/VisualizationTabWidget.h @@ -37,6 +37,7 @@ public: // IVisualizationWidget interface void accept(IVisualizationWidgetVisitor *visitor) override; + bool canDrop(const Variable &variable) const override; void close() override; QString name() const override; diff --git a/gui/include/Visualization/VisualizationWidget.h b/gui/include/Visualization/VisualizationWidget.h index bb7d13b..77e43f7 100644 --- a/gui/include/Visualization/VisualizationWidget.h +++ b/gui/include/Visualization/VisualizationWidget.h @@ -33,6 +33,7 @@ public: // IVisualizationWidget interface void accept(IVisualizationWidgetVisitor *visitor) override; + bool canDrop(const Variable &variable) const override; void close() override; QString name() const; diff --git a/gui/include/Visualization/VisualizationZoneWidget.h b/gui/include/Visualization/VisualizationZoneWidget.h index 4d016fb..b6bafaf 100644 --- a/gui/include/Visualization/VisualizationZoneWidget.h +++ b/gui/include/Visualization/VisualizationZoneWidget.h @@ -34,6 +34,7 @@ public: // IVisualizationWidget interface void accept(IVisualizationWidgetVisitor *visitor) override; + bool canDrop(const Variable &variable) const override; void close() override; QString name() const override; diff --git a/gui/src/Visualization/VisualizationGraphWidget.cpp b/gui/src/Visualization/VisualizationGraphWidget.cpp index b1eb3a5..7f8ebd9 100644 --- a/gui/src/Visualization/VisualizationGraphWidget.cpp +++ b/gui/src/Visualization/VisualizationGraphWidget.cpp @@ -64,6 +64,13 @@ void VisualizationGraphWidget::accept(IVisualizationWidgetVisitor *visitor) } } +bool VisualizationGraphWidget::canDrop(const Variable &variable) const +{ + /// @todo : for the moment, a graph can always accomodate a variable + Q_UNUSED(variable); + return true; +} + void VisualizationGraphWidget::close() { // The main view cannot be directly closed. diff --git a/gui/src/Visualization/VisualizationTabWidget.cpp b/gui/src/Visualization/VisualizationTabWidget.cpp index 2f4355b..69825a9 100644 --- a/gui/src/Visualization/VisualizationTabWidget.cpp +++ b/gui/src/Visualization/VisualizationTabWidget.cpp @@ -80,6 +80,13 @@ void VisualizationTabWidget::accept(IVisualizationWidgetVisitor *visitor) } } +bool VisualizationTabWidget::canDrop(const Variable &variable) const +{ + // A tab can always accomodate a variable + Q_UNUSED(variable); + return true; +} + void VisualizationTabWidget::close() { // The main view cannot be directly closed. diff --git a/gui/src/Visualization/VisualizationWidget.cpp b/gui/src/Visualization/VisualizationWidget.cpp index fbdb222..4e65d64 100644 --- a/gui/src/Visualization/VisualizationWidget.cpp +++ b/gui/src/Visualization/VisualizationWidget.cpp @@ -99,6 +99,13 @@ void VisualizationWidget::accept(IVisualizationWidgetVisitor *visitor) } } +bool VisualizationWidget::canDrop(const Variable &variable) const +{ + // The main widget can never accomodate a variable + Q_UNUSED(variable); + return false; +} + void VisualizationWidget::close() { // The main view cannot be directly closed. diff --git a/gui/src/Visualization/VisualizationZoneWidget.cpp b/gui/src/Visualization/VisualizationZoneWidget.cpp index 88fb39d..ae4e841 100644 --- a/gui/src/Visualization/VisualizationZoneWidget.cpp +++ b/gui/src/Visualization/VisualizationZoneWidget.cpp @@ -75,6 +75,13 @@ void VisualizationZoneWidget::accept(IVisualizationWidgetVisitor *visitor) } } +bool VisualizationZoneWidget::canDrop(const Variable &variable) const +{ + // A tab can always accomodate a variable + Q_UNUSED(variable); + return true; +} + void VisualizationZoneWidget::close() { // The main view cannot be directly closed.