@@ -41,6 +41,9 public: | |||||
41 | QString name() const override; |
|
41 | QString name() const override; | |
42 |
|
42 | |||
43 | private: |
|
43 | private: | |
|
44 | /// @return the layout of tab in which zones are added | |||
|
45 | QLayout &tabLayout() const noexcept; | |||
|
46 | ||||
44 | Ui::VisualizationTabWidget *ui; |
|
47 | Ui::VisualizationTabWidget *ui; | |
45 |
|
48 | |||
46 | class VisualizationTabWidgetPrivate; |
|
49 | class VisualizationTabWidgetPrivate; |
@@ -48,12 +48,12 VisualizationTabWidget::~VisualizationTabWidget() | |||||
48 |
|
48 | |||
49 | void VisualizationTabWidget::addZone(VisualizationZoneWidget *zoneWidget) |
|
49 | void VisualizationTabWidget::addZone(VisualizationZoneWidget *zoneWidget) | |
50 | { |
|
50 | { | |
51 |
t |
|
51 | tabLayout().addWidget(zoneWidget); | |
52 | } |
|
52 | } | |
53 |
|
53 | |||
54 | VisualizationZoneWidget *VisualizationTabWidget::createZone(std::shared_ptr<Variable> variable) |
|
54 | VisualizationZoneWidget *VisualizationTabWidget::createZone(std::shared_ptr<Variable> variable) | |
55 | { |
|
55 | { | |
56 |
auto zoneWidget = new VisualizationZoneWidget{defaultZoneName( |
|
56 | auto zoneWidget = new VisualizationZoneWidget{defaultZoneName(tabLayout()), this}; | |
57 | this->addZone(zoneWidget); |
|
57 | this->addZone(zoneWidget); | |
58 |
|
58 | |||
59 | // Creates a new graph into the zone |
|
59 | // Creates a new graph into the zone | |
@@ -68,8 +68,9 void VisualizationTabWidget::accept(IVisualizationWidgetVisitor *visitor) | |||||
68 | visitor->visitEnter(this); |
|
68 | visitor->visitEnter(this); | |
69 |
|
69 | |||
70 | // Apply visitor to zone children |
|
70 | // Apply visitor to zone children | |
71 | for (auto i = 0; i < layout()->count(); ++i) { |
|
71 | auto &layout = tabLayout(); | |
72 |
|
|
72 | for (auto i = 0; i < layout.count(); ++i) { | |
|
73 | if (auto item = layout.itemAt(i)) { | |||
73 | // Widgets different from zones are not visited (no action) |
|
74 | // Widgets different from zones are not visited (no action) | |
74 | if (auto visualizationZoneWidget |
|
75 | if (auto visualizationZoneWidget | |
75 | = dynamic_cast<VisualizationZoneWidget *>(item->widget())) { |
|
76 | = dynamic_cast<VisualizationZoneWidget *>(item->widget())) { | |
@@ -96,3 +97,8 QString VisualizationTabWidget::name() const | |||||
96 | { |
|
97 | { | |
97 | return impl->m_Name; |
|
98 | return impl->m_Name; | |
98 | } |
|
99 | } | |
|
100 | ||||
|
101 | QLayout &VisualizationTabWidget::tabLayout() const noexcept | |||
|
102 | { | |||
|
103 | return *ui->scrollAreaWidgetContents->layout(); | |||
|
104 | } |
@@ -10,6 +10,9 Q_LOGGING_CATEGORY(LOG_VisualizationZoneWidget, "VisualizationZoneWidget") | |||||
10 |
|
10 | |||
11 | namespace { |
|
11 | namespace { | |
12 |
|
12 | |||
|
13 | /// Minimum height for graph added in zones (in pixels) | |||
|
14 | const auto GRAPH_MINIMUM_HEIGHT = 300; | |||
|
15 | ||||
13 | /// Generates a default name for a new graph, according to the number of graphs already displayed in |
|
16 | /// Generates a default name for a new graph, according to the number of graphs already displayed in | |
14 | /// the zone |
|
17 | /// the zone | |
15 | QString defaultGraphName(const QLayout &layout) |
|
18 | QString defaultGraphName(const QLayout &layout) | |
@@ -53,6 +56,11 VisualizationGraphWidget *VisualizationZoneWidget::createGraph(std::shared_ptr<V | |||||
53 | { |
|
56 | { | |
54 | auto graphWidget = new VisualizationGraphWidget{ |
|
57 | auto graphWidget = new VisualizationGraphWidget{ | |
55 | defaultGraphName(*ui->visualizationZoneFrame->layout()), this}; |
|
58 | defaultGraphName(*ui->visualizationZoneFrame->layout()), this}; | |
|
59 | ||||
|
60 | // Set graph properties | |||
|
61 | graphWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding); | |||
|
62 | graphWidget->setMinimumHeight(GRAPH_MINIMUM_HEIGHT); | |||
|
63 | ||||
56 | this->addGraph(graphWidget); |
|
64 | this->addGraph(graphWidget); | |
57 |
|
65 | |||
58 | graphWidget->addVariable(variable); |
|
66 | graphWidget->addVariable(variable); |
@@ -13,7 +13,47 | |||||
13 | <property name="windowTitle"> |
|
13 | <property name="windowTitle"> | |
14 | <string>Form</string> |
|
14 | <string>Form</string> | |
15 | </property> |
|
15 | </property> | |
16 |
<layout class="QVBoxLayout" name="verticalLayout" |
|
16 | <layout class="QVBoxLayout" name="verticalLayout"> | |
|
17 | <property name="leftMargin"> | |||
|
18 | <number>0</number> | |||
|
19 | </property> | |||
|
20 | <property name="topMargin"> | |||
|
21 | <number>0</number> | |||
|
22 | </property> | |||
|
23 | <property name="rightMargin"> | |||
|
24 | <number>0</number> | |||
|
25 | </property> | |||
|
26 | <property name="bottomMargin"> | |||
|
27 | <number>0</number> | |||
|
28 | </property> | |||
|
29 | <item> | |||
|
30 | <widget class="QScrollArea" name="scrollArea"> | |||
|
31 | <property name="styleSheet"> | |||
|
32 | <string notr="true">background-color: transparent;</string> | |||
|
33 | </property> | |||
|
34 | <property name="frameShape"> | |||
|
35 | <enum>QFrame::NoFrame</enum> | |||
|
36 | </property> | |||
|
37 | <property name="frameShadow"> | |||
|
38 | <enum>QFrame::Sunken</enum> | |||
|
39 | </property> | |||
|
40 | <property name="widgetResizable"> | |||
|
41 | <bool>true</bool> | |||
|
42 | </property> | |||
|
43 | <widget class="QWidget" name="scrollAreaWidgetContents"> | |||
|
44 | <property name="geometry"> | |||
|
45 | <rect> | |||
|
46 | <x>0</x> | |||
|
47 | <y>0</y> | |||
|
48 | <width>400</width> | |||
|
49 | <height>300</height> | |||
|
50 | </rect> | |||
|
51 | </property> | |||
|
52 | <layout class="QVBoxLayout" name="verticalLayout_3"/> | |||
|
53 | </widget> | |||
|
54 | </widget> | |||
|
55 | </item> | |||
|
56 | </layout> | |||
17 | </widget> |
|
57 | </widget> | |
18 | <resources/> |
|
58 | <resources/> | |
19 | <connections/> |
|
59 | <connections/> |
General Comments 0
You need to be logged in to leave comments.
Login now