##// END OF EJS Templates
Added new main wrapper to meson build desc...
Added new main wrapper to meson build desc Signed-off-by: Alexis Jeandet <alexis.jeandet@member.fsf.org>

File last commit:

r1423:31110df2feb2
r1481:8650293c5c31
Show More
VisualizationTabWidget.h
90 lines | 2.9 KiB | text/x-c | CLexer
#ifndef SCIQLOP_VISUALIZATIONTABWIDGET_H
#define SCIQLOP_VISUALIZATIONTABWIDGET_H
#include "Visualization/IVisualizationWidget.h"
#include <Common/spimpl.h>
#include <QLoggingCategory>
#include <QMimeData>
#include <QWidget>
Q_DECLARE_LOGGING_CATEGORY(LOG_VisualizationTabWidget)
class Variable2;
class VisualizationZoneWidget;
namespace Ui
{
class VisualizationTabWidget;
} // namespace Ui
class VisualizationTabWidget : public QWidget, public IVisualizationWidget
{
Q_OBJECT
public:
explicit VisualizationTabWidget(const QString& name = {}, QWidget* parent = 0);
virtual ~VisualizationTabWidget();
/// Adds a zone widget
void addZone(VisualizationZoneWidget* zoneWidget);
/// Inserts a zone widget at the specified position
void insertZone(int index, VisualizationZoneWidget* zoneWidget);
/// Returns the list of zone widget names in the order they are displayed
QStringList availableZoneWidgets() const;
/// Returns the zone with the specified name.
/// If multiple zone with the same name exist, the first one is returned.
VisualizationZoneWidget* getZoneWithName(const QString& zoneName);
/**
* Creates a zone using a variable. The variable will be displayed in a new graph of the new
* zone. The zone is added at the end.
* @param variable the variable for which to create the zone
* @return the pointer to the created zone
*/
VisualizationZoneWidget* createZone(std::shared_ptr<Variable2> variable);
/**
* Creates a zone using a list of variables. The variables will be displayed in a new graph of
* the new zone. The zone is inserted at the specified index.
* @param variables the variables for which to create the zone
* @param index The index where the zone should be inserted in the layout
* @return the pointer to the created zone
*/
VisualizationZoneWidget* createZone(
const std::vector<std::shared_ptr<Variable2>>& variables, int index);
/**
* Creates a zone which is empty (no variables). The zone is inserted at the specified index.
* @param index The index where the zone should be inserted in the layout
* @return the pointer to the created zone
*/
VisualizationZoneWidget* createEmptyZone(int index);
// IVisualizationWidget interface
void accept(IVisualizationWidgetVisitor* visitor) override;
bool canDrop(Variable2& variable) const override;
bool contains(Variable2& variable) const override;
QString name() const override;
protected:
void closeEvent(QCloseEvent* event) override;
private:
/// @return the layout of tab in which zones are added
QLayout& tabLayout() const noexcept;
Ui::VisualizationTabWidget* ui;
class VisualizationTabWidgetPrivate;
spimpl::unique_impl_ptr<VisualizationTabWidgetPrivate> impl;
private slots:
void dropMimeData(int index, const QMimeData* mimeData);
};
#endif // SCIQLOP_VISUALIZATIONTABWIDGET_H