From a48a71ab1c8acbac2c15c455d23538f393fdb015 2017-07-03 08:08:06 From: Alexandre Leroux Date: 2017-07-03 08:08:06 Subject: [PATCH] Adds scrollbar to tabs --- diff --git a/gui/include/Visualization/VisualizationTabWidget.h b/gui/include/Visualization/VisualizationTabWidget.h index 6c25cc8..d4816ef 100644 --- a/gui/include/Visualization/VisualizationTabWidget.h +++ b/gui/include/Visualization/VisualizationTabWidget.h @@ -41,6 +41,9 @@ public: QString name() const override; private: + /// @return the layout of tab in which zones are added + QLayout &tabLayout() const noexcept; + Ui::VisualizationTabWidget *ui; class VisualizationTabWidgetPrivate; diff --git a/gui/src/Visualization/VisualizationTabWidget.cpp b/gui/src/Visualization/VisualizationTabWidget.cpp index 8b404dd..6040c45 100644 --- a/gui/src/Visualization/VisualizationTabWidget.cpp +++ b/gui/src/Visualization/VisualizationTabWidget.cpp @@ -48,12 +48,12 @@ VisualizationTabWidget::~VisualizationTabWidget() void VisualizationTabWidget::addZone(VisualizationZoneWidget *zoneWidget) { - this->layout()->addWidget(zoneWidget); + tabLayout().addWidget(zoneWidget); } VisualizationZoneWidget *VisualizationTabWidget::createZone(std::shared_ptr variable) { - auto zoneWidget = new VisualizationZoneWidget{defaultZoneName(*layout()), this}; + auto zoneWidget = new VisualizationZoneWidget{defaultZoneName(tabLayout()), this}; this->addZone(zoneWidget); // Creates a new graph into the zone @@ -68,8 +68,9 @@ void VisualizationTabWidget::accept(IVisualizationWidgetVisitor *visitor) visitor->visitEnter(this); // Apply visitor to zone children - for (auto i = 0; i < layout()->count(); ++i) { - if (auto item = layout()->itemAt(i)) { + auto &layout = tabLayout(); + for (auto i = 0; i < layout.count(); ++i) { + if (auto item = layout.itemAt(i)) { // Widgets different from zones are not visited (no action) if (auto visualizationZoneWidget = dynamic_cast(item->widget())) { @@ -96,3 +97,8 @@ QString VisualizationTabWidget::name() const { return impl->m_Name; } + +QLayout &VisualizationTabWidget::tabLayout() const noexcept +{ + return *ui->scrollAreaWidgetContents->layout(); +} diff --git a/gui/src/Visualization/VisualizationZoneWidget.cpp b/gui/src/Visualization/VisualizationZoneWidget.cpp index 2a4eb95..7fe59b7 100644 --- a/gui/src/Visualization/VisualizationZoneWidget.cpp +++ b/gui/src/Visualization/VisualizationZoneWidget.cpp @@ -10,6 +10,9 @@ Q_LOGGING_CATEGORY(LOG_VisualizationZoneWidget, "VisualizationZoneWidget") namespace { +/// Minimum height for graph added in zones (in pixels) +const auto GRAPH_MINIMUM_HEIGHT = 300; + /// Generates a default name for a new graph, according to the number of graphs already displayed in /// the zone QString defaultGraphName(const QLayout &layout) @@ -53,6 +56,11 @@ VisualizationGraphWidget *VisualizationZoneWidget::createGraph(std::shared_ptrvisualizationZoneFrame->layout()), this}; + + // Set graph properties + graphWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding); + graphWidget->setMinimumHeight(GRAPH_MINIMUM_HEIGHT); + this->addGraph(graphWidget); graphWidget->addVariable(variable); diff --git a/gui/ui/Visualization/VisualizationTabWidget.ui b/gui/ui/Visualization/VisualizationTabWidget.ui index 96002e1..c39c764 100644 --- a/gui/ui/Visualization/VisualizationTabWidget.ui +++ b/gui/ui/Visualization/VisualizationTabWidget.ui @@ -13,7 +13,47 @@ Form - + + + 0 + + + 0 + + + 0 + + + 0 + + + + + background-color: transparent; + + + QFrame::NoFrame + + + QFrame::Sunken + + + true + + + + + 0 + 0 + 400 + 300 + + + + + + +