From 28b793223e2a687ac6253b1ae29401e49fe456de Mon Sep 17 00:00:00 2001 From: Tuareg Date: Wed, 16 Sep 2020 16:34:55 +1200 Subject: [PATCH] graphics displayed consistent between files and sessions --- .../cellmlzincmappingvieweditingwidget.cpp | 7 +++++ .../src/cellmlzincmappingvieweditingwidget.h | 2 ++ .../src/cellmlzincmappingviewwidget.cpp | 31 +++++++++++++++++++ .../src/cellmlzincmappingviewwidget.h | 2 ++ .../src/cellmlzincmappingviewzincwidget.cpp | 24 ++++++++++++++ .../src/cellmlzincmappingviewzincwidget.h | 3 ++ 6 files changed, 69 insertions(+) diff --git a/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingvieweditingwidget.cpp b/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingvieweditingwidget.cpp index 112d189ba2..e5adb2b189 100644 --- a/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingvieweditingwidget.cpp +++ b/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingvieweditingwidget.cpp @@ -321,6 +321,13 @@ void CellMLZincMappingViewEditingWidget::setSizes(const QIntList &pSizesHorizont //============================================================================== +CellMLZincMappingViewZincWidget * CellMLZincMappingViewEditingWidget::getZincWidget() +{ + return mZincWidget; +} + +//============================================================================== + void CellMLZincMappingViewEditingWidget::dragEnterEvent(QDragEnterEvent *pEvent) { // Accept the proposed action for the event, but only if it refers to one or diff --git a/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingvieweditingwidget.h b/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingvieweditingwidget.h index 737295183e..b66ad464ff 100644 --- a/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingvieweditingwidget.h +++ b/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingvieweditingwidget.h @@ -112,6 +112,8 @@ class CellMLZincMappingViewEditingWidget : public Core::Widget void setSizes(const QIntList &pSizesHorizontal, const QIntList &pSizesVertical); + CellMLZincMappingViewZincWidget * getZincWidget(); + signals: void horizontalSplitterMoved(const QIntList &pSizes); void verticalSplitterMoved(const QIntList &pSizes); diff --git a/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewwidget.cpp b/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewwidget.cpp index eeaaaf003a..6a326034ce 100644 --- a/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewwidget.cpp +++ b/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewwidget.cpp @@ -54,6 +54,7 @@ void CellMLZincMappingViewWidget::retranslateUi() //============================================================================== +static const char *SettingsCellmlZincMappingViewDisplayedZincField = "CellmlZincMappingViewDisplayedZincField"; static const char *SettingsCellmlZincMappingViewEditingWidgetHorizontalSizes = "CellmlZincMappingViewEditingWidgetHorizontalSizes"; static const char *SettingsCellmlZincMappingViewEditingWidgetVerticalSizes = "CellmlZincMappingViewEditingWidgetVerticalSizes"; static const char *SettingsCellmlZincMappingViewMeshFileNames = "CellmlZincMappingViewMeshFileNames"; @@ -74,10 +75,18 @@ void CellMLZincMappingViewWidget::loadSettings(QSettings &pSettings) 0.13*AvailableGeometryHeight}; static const QStringList DefaultMeshFileNames = {}; + static const QVariantList DefaultDisplayedZincFields = {true, true, true, true, true}; + mEditingWidgetHorizontalSizes = qVariantListToIntList(pSettings.value(SettingsCellmlZincMappingViewEditingWidgetHorizontalSizes, DefaultEditingWidgetHorizontalSizes).toList()); mEditingWidgetVerticalSizes = qVariantListToIntList(pSettings.value(SettingsCellmlZincMappingViewEditingWidgetVerticalSizes, DefaultEditingWidgetVerticalSizes).toList()); mMeshFileNames = pSettings.value(SettingsCellmlZincMappingViewMeshFileNames, DefaultMeshFileNames).toStringList(); + + mDisplayedZincFields.clear(); + + for (QVariant variant : pSettings.value(SettingsCellmlZincMappingViewDisplayedZincField, DefaultDisplayedZincFields).toList()) { + mDisplayedZincFields.append(variant.toBool()); + } } //============================================================================== @@ -90,12 +99,27 @@ void CellMLZincMappingViewWidget::saveSettings(QSettings &pSettings) const pSettings.setValue(SettingsCellmlZincMappingViewEditingWidgetVerticalSizes, qIntListToVariantList(mEditingWidgetVerticalSizes)); pSettings.setValue(SettingsCellmlZincMappingViewMeshFileNames, mMeshFileNames); + + QVariantList toVariant; + for (bool value : mDisplayedZincFields) { + toVariant.append(QVariant(value)); + } + + pSettings.setValue(SettingsCellmlZincMappingViewDisplayedZincField, toVariant); } //============================================================================== void CellMLZincMappingViewWidget::initialize(const QString &pFileName) { + + // Try to get back the last state of display + + if (mEditingWidget != nullptr) { + mDisplayedZincFields = mEditingWidget->getZincWidget()->getCheckedAction(); + } + + // Retrieve the editing widget associated with the given file, if any mEditingWidget = mEditingWidgets.value(pFileName); @@ -117,6 +141,10 @@ void CellMLZincMappingViewWidget::initialize(const QString &pFileName) mEditingWidgets.insert(pFileName, mEditingWidget); } + // load its settings + + mEditingWidget->getZincWidget()->setCheckedAction(mDisplayedZincFields); + // Update the sizes of our new editing widget mEditingWidget->setSizes(mEditingWidgetHorizontalSizes, @@ -143,6 +171,9 @@ void CellMLZincMappingViewWidget::finalize(const QString &pFileName) CellMLZincMappingViewEditingWidget *editingWidget = mEditingWidgets.value(pFileName); if (editingWidget != nullptr) { + + mDisplayedZincFields = editingWidget->getZincWidget()->getCheckedAction(); + // There is an editing widget for the given file name, so delete it and // remove it from our list diff --git a/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewwidget.h b/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewwidget.h index 4ff02f5ac7..8346280d5a 100644 --- a/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewwidget.h +++ b/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewwidget.h @@ -80,6 +80,8 @@ class CellMLZincMappingViewWidget : public Core::ViewWidget QStringList mMeshFileNames; + QList mDisplayedZincFields; + private slots: void EditingWidgetHorizontalSplitterMoved(const QIntList &pSizes); void EditingWidgetVerticalSplitterMoved(const QIntList &pSizes); diff --git a/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewzincwidget.cpp b/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewzincwidget.cpp index c59ebc9110..55fe161a1f 100644 --- a/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewzincwidget.cpp +++ b/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewzincwidget.cpp @@ -220,6 +220,30 @@ void CellMLZincMappingViewZincWidget::setNodeMapped(int pId, QString pComponent, //============================================================================== +QList CellMLZincMappingViewZincWidget::getCheckedAction() +{ + return {mActionAxes->isChecked(), + mActionLines->isChecked(), + mActionSurfaces->isChecked(), + mActionIsosurfaces->isChecked(), + mActionLabel->isChecked()}; +} + +//============================================================================== + +void CellMLZincMappingViewZincWidget::setCheckedAction(QList values) +{ + mActionAxes->setChecked(values.isEmpty() ? true : values.takeFirst()); + mActionLines->setChecked(values.isEmpty() ? true : values.takeFirst()); + mActionSurfaces->setChecked(values.isEmpty() ? true : values.takeFirst()); + mActionIsosurfaces->setChecked(values.isEmpty() ? true : values.takeFirst()); + mActionLabel->setChecked(values.isEmpty() ? true : values.takeFirst()); + + showHideGraphics(GraphicsType::All); +} + +//============================================================================== + void CellMLZincMappingViewZincWidget::initializeGL() { ZincWidget::initializeGL(); diff --git a/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewzincwidget.h b/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewzincwidget.h index b95b3205d9..74f0c3729c 100644 --- a/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewzincwidget.h +++ b/src/plugins/editing/CellMLZincMappingView/src/cellmlzincmappingviewzincwidget.h @@ -70,6 +70,9 @@ class CellMLZincMappingViewZincWidget : public ZincWidget::ZincWidget bool hasNode(int pId); void setNodeMapped(int pId, QString pComponent, QString pVariable); + QList getCheckedAction(); + void setCheckedAction(QList); + static constexpr double nodeSizeOrigin = 0; static constexpr double nodeSixeExp = 1.1;