@@ -111,11 +111,15 public slots: | |||||
111 | /// Cancel the current request for the variable |
|
111 | /// Cancel the current request for the variable | |
112 | void onAbortProgressRequested(std::shared_ptr<Variable> variable); |
|
112 | void onAbortProgressRequested(std::shared_ptr<Variable> variable); | |
113 |
|
113 | |||
114 |
// |
|
114 | // synchronization group methods | |
115 | void onAddSynchronizationGroupId(QUuid synchronizationGroupId); |
|
115 | void onAddSynchronizationGroupId(QUuid synchronizationGroupId); | |
116 | void onRemoveSynchronizationGroupId(QUuid synchronizationGroupId); |
|
116 | void onRemoveSynchronizationGroupId(QUuid synchronizationGroupId); | |
117 | void onAddSynchronized(std::shared_ptr<Variable> variable, QUuid synchronizationGroupId); |
|
117 | void onAddSynchronized(std::shared_ptr<Variable> variable, QUuid synchronizationGroupId); | |
118 |
|
118 | |||
|
119 | /// Desynchronizes the variable of the group whose identifier is passed in parameter | |||
|
120 | /// @remarks the method does nothing if the variable is not part of the group | |||
|
121 | void desynchronize(std::shared_ptr<Variable> variable, QUuid synchronizationGroupId); | |||
|
122 | ||||
119 | void initialize(); |
|
123 | void initialize(); | |
120 | void finalize(); |
|
124 | void finalize(); | |
121 |
|
125 |
@@ -389,6 +389,36 void VariableController::onAddSynchronized(std::shared_ptr<Variable> variable, | |||||
389 | } |
|
389 | } | |
390 | } |
|
390 | } | |
391 |
|
391 | |||
|
392 | void VariableController::desynchronize(std::shared_ptr<Variable> variable, | |||
|
393 | QUuid synchronizationGroupId) | |||
|
394 | { | |||
|
395 | // Gets variable id | |||
|
396 | auto variableIt = impl->m_VariableToIdentifierMap.find(variable); | |||
|
397 | if (variableIt == impl->m_VariableToIdentifierMap.cend()) { | |||
|
398 | qCCritical(LOG_VariableController()) | |||
|
399 | << tr("Can't desynchronize variable %1: variable identifier not found") | |||
|
400 | .arg(variable->name()); | |||
|
401 | return; | |||
|
402 | } | |||
|
403 | ||||
|
404 | // Gets synchronization group | |||
|
405 | auto groupIt = impl->m_GroupIdToVariableSynchronizationGroupMap.find(synchronizationGroupId); | |||
|
406 | if (groupIt == impl->m_GroupIdToVariableSynchronizationGroupMap.cend()) { | |||
|
407 | qCCritical(LOG_VariableController()) | |||
|
408 | << tr("Can't desynchronize variable %1: unknown synchronization group") | |||
|
409 | .arg(variable->name()); | |||
|
410 | return; | |||
|
411 | } | |||
|
412 | ||||
|
413 | auto variableId = variableIt->second; | |||
|
414 | ||||
|
415 | // Removes variable from synchronization group | |||
|
416 | auto synchronizationGroup = groupIt->second; | |||
|
417 | synchronizationGroup->removeVariableId(variableId); | |||
|
418 | ||||
|
419 | // Removes link between variable and synchronization group | |||
|
420 | impl->m_VariableIdGroupIdMap.erase(variableId); | |||
|
421 | } | |||
392 |
|
422 | |||
393 | void VariableController::onRequestDataLoading(QVector<std::shared_ptr<Variable> > variables, |
|
423 | void VariableController::onRequestDataLoading(QVector<std::shared_ptr<Variable> > variables, | |
394 | const SqpRange &range, const SqpRange &oldRange, |
|
424 | const SqpRange &range, const SqpRange &oldRange, |
@@ -56,6 +56,9 signals: | |||||
56 | void requestDataLoading(QVector<std::shared_ptr<Variable> > variable, const SqpRange &range, |
|
56 | void requestDataLoading(QVector<std::shared_ptr<Variable> > variable, const SqpRange &range, | |
57 | const SqpRange &oldRange, bool synchronise); |
|
57 | const SqpRange &oldRange, bool synchronise); | |
58 |
|
58 | |||
|
59 | /// Signal emitted when the variable is about to be removed from the graph | |||
|
60 | void variableAboutToBeRemoved(std::shared_ptr<Variable> var); | |||
|
61 | /// Signal emitted when the variable has been added to the graph | |||
59 | void variableAdded(std::shared_ptr<Variable> var); |
|
62 | void variableAdded(std::shared_ptr<Variable> var); | |
60 |
|
63 | |||
61 | protected: |
|
64 | protected: |
@@ -50,6 +50,8 private: | |||||
50 |
|
50 | |||
51 | private slots: |
|
51 | private slots: | |
52 | void onVariableAdded(std::shared_ptr<Variable> variable); |
|
52 | void onVariableAdded(std::shared_ptr<Variable> variable); | |
|
53 | /// Slot called when a variable is about to be removed from a graph contained in the zone | |||
|
54 | void onVariableAboutToBeRemoved(std::shared_ptr<Variable> variable); | |||
53 | }; |
|
55 | }; | |
54 |
|
56 | |||
55 | #endif // SCIQLOP_VISUALIZATIONZONEWIDGET_H |
|
57 | #endif // SCIQLOP_VISUALIZATIONZONEWIDGET_H |
@@ -138,6 +138,8 void VisualizationGraphWidget::removeVariable(std::shared_ptr<Variable> variable | |||||
138 | // - is no longer referenced in the map |
|
138 | // - is no longer referenced in the map | |
139 | auto variableIt = impl->m_VariableToPlotMultiMap.find(variable); |
|
139 | auto variableIt = impl->m_VariableToPlotMultiMap.find(variable); | |
140 | if (variableIt != impl->m_VariableToPlotMultiMap.cend()) { |
|
140 | if (variableIt != impl->m_VariableToPlotMultiMap.cend()) { | |
|
141 | emit variableAboutToBeRemoved(variable); | |||
|
142 | ||||
141 | auto &plottablesMap = variableIt->second; |
|
143 | auto &plottablesMap = variableIt->second; | |
142 |
|
144 | |||
143 | for (auto plottableIt = plottablesMap.cbegin(), plottableEnd = plottablesMap.cend(); |
|
145 | for (auto plottableIt = plottablesMap.cbegin(), plottableEnd = plottablesMap.cend(); |
@@ -177,6 +177,8 VisualizationGraphWidget *VisualizationZoneWidget::createGraph(std::shared_ptr<V | |||||
177 | connect(graphWidget, &VisualizationGraphWidget::synchronize, synchronizeZoneWidget); |
|
177 | connect(graphWidget, &VisualizationGraphWidget::synchronize, synchronizeZoneWidget); | |
178 | connect(graphWidget, &VisualizationGraphWidget::variableAdded, this, |
|
178 | connect(graphWidget, &VisualizationGraphWidget::variableAdded, this, | |
179 | &VisualizationZoneWidget::onVariableAdded); |
|
179 | &VisualizationZoneWidget::onVariableAdded); | |
|
180 | connect(graphWidget, &VisualizationGraphWidget::variableAboutToBeRemoved, this, | |||
|
181 | &VisualizationZoneWidget::onVariableAboutToBeRemoved); | |||
180 |
|
182 | |||
181 | auto range = SqpRange{}; |
|
183 | auto range = SqpRange{}; | |
182 |
|
184 | |||
@@ -266,3 +268,10 void VisualizationZoneWidget::onVariableAdded(std::shared_ptr<Variable> variable | |||||
266 | Qt::QueuedConnection, Q_ARG(std::shared_ptr<Variable>, variable), |
|
268 | Qt::QueuedConnection, Q_ARG(std::shared_ptr<Variable>, variable), | |
267 | Q_ARG(QUuid, impl->m_SynchronisationGroupId)); |
|
269 | Q_ARG(QUuid, impl->m_SynchronisationGroupId)); | |
268 | } |
|
270 | } | |
|
271 | ||||
|
272 | void VisualizationZoneWidget::onVariableAboutToBeRemoved(std::shared_ptr<Variable> variable) | |||
|
273 | { | |||
|
274 | QMetaObject::invokeMethod(&sqpApp->variableController(), "desynchronize", Qt::QueuedConnection, | |||
|
275 | Q_ARG(std::shared_ptr<Variable>, variable), | |||
|
276 | Q_ARG(QUuid, impl->m_SynchronisationGroupId)); | |||
|
277 | } |
General Comments 0
You need to be logged in to leave comments.
Login now