Skip to content

Commit

Permalink
SimulationExperiment view: now have SED-ML support for the zoom regio…
Browse files Browse the repository at this point in the history
…n settings (#1426).
  • Loading branch information
agarny committed Nov 15, 2017
1 parent e2f48c4 commit 99b9d0b
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -1712,6 +1712,7 @@ bool SimulationExperimentViewSimulationWidget::createSedmlFile(const QString &pF
Core::Properties pointCoordinatesProperties = graphPanelProperties[4]->properties();
Core::Properties xAxisProperties = graphPanelProperties[6]->properties();
Core::Properties yAxisProperties = graphPanelProperties[7]->properties();
Core::Properties zoomRegionProperties = graphPanelProperties[8]->properties();

sedmlPlot2d->appendAnnotation(QString("<%1 xmlns=\"%2\">"
" %3"
Expand Down Expand Up @@ -1750,7 +1751,20 @@ bool SimulationExperimentViewSimulationWidget::createSedmlFile(const QString &pF
SedmlProperty.arg(SEDMLSupport::YAxisLogarithmicScale,
stringValue(yAxisProperties[0]))
+SedmlProperty.arg(SEDMLSupport::YAxisTitle,
stringValue(yAxisProperties[1])))).toStdString());
stringValue(yAxisProperties[1])))
+SedmlProperty.arg( SEDMLSupport::ZoomRegionProperties,
SedmlProperty.arg(SEDMLSupport::ZoomRegionStyle,
SEDMLSupport::lineStyleValue(zoomRegionProperties[0]->listValueIndex()))
+SedmlProperty.arg(SEDMLSupport::ZoomRegionWidth,
stringValue(zoomRegionProperties[1]))
+SedmlProperty.arg(SEDMLSupport::ZoomRegionColor,
stringValue(zoomRegionProperties[2]))
+SedmlProperty.arg(SEDMLSupport::ZoomRegionFontColor,
stringValue(zoomRegionProperties[3]))
+SedmlProperty.arg(SEDMLSupport::ZoomRegionFilled,
stringValue(zoomRegionProperties[4]))
+SedmlProperty.arg(SEDMLSupport::ZoomRegionFillColor,
stringValue(zoomRegionProperties[5])))).toStdString());

// Keep track of the graph panel's graphs, if any

Expand Down Expand Up @@ -2588,6 +2602,29 @@ bool SimulationExperimentViewSimulationWidget::furtherInitialize()
yAxisProperties[1]->setValue(yAxisPropertyNodeValue);
}
}
} else if ( !QString::fromStdString(sedmlPlot2dPropertyNode.getURI()).compare(SEDMLSupport::OpencorNamespace)
&& !QString::fromStdString(sedmlPlot2dPropertyNode.getName()).compare(SEDMLSupport::ZoomRegionProperties)) {
Core::Properties zoomRegionProperties = graphPanelProperties[8]->properties();

for (uint k = 0, kMax = sedmlPlot2dPropertyNode.getNumChildren(); k < kMax; ++k) {
const libsbml::XMLNode &zoomRegionPropertyNode = sedmlPlot2dPropertyNode.getChild(k);
QString zoomRegionPropertyNodeName = QString::fromStdString(zoomRegionPropertyNode.getName());
QString zoomRegionPropertyNodeValue = QString::fromStdString(zoomRegionPropertyNode.getChild(0).getCharacters());

if (!zoomRegionPropertyNodeName.compare(SEDMLSupport::ZoomRegionStyle)) {
zoomRegionProperties[0]->setValue(zoomRegionPropertyNodeValue);
} else if (!zoomRegionPropertyNodeName.compare(SEDMLSupport::ZoomRegionWidth)) {
zoomRegionProperties[1]->setValue(zoomRegionPropertyNodeValue);
} else if (!zoomRegionPropertyNodeName.compare(SEDMLSupport::ZoomRegionColor)) {
zoomRegionProperties[2]->setValue(zoomRegionPropertyNodeValue);
} else if (!zoomRegionPropertyNodeName.compare(SEDMLSupport::ZoomRegionFontColor)) {
zoomRegionProperties[3]->setValue(zoomRegionPropertyNodeValue);
} else if (!zoomRegionPropertyNodeName.compare(SEDMLSupport::ZoomRegionFilled)) {
zoomRegionProperties[4]->setBooleanValue(!zoomRegionPropertyNodeValue.compare(True));
} else if (!zoomRegionPropertyNodeName.compare(SEDMLSupport::ZoomRegionFillColor)) {
zoomRegionProperties[5]->setValue(zoomRegionPropertyNodeValue);
}
}
}
}
}
Expand Down
39 changes: 39 additions & 0 deletions src/plugins/support/SEDMLSupport/src/sedmlfile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -953,6 +953,45 @@ bool SedmlFile::isSupported()
return false;
}
}
} else if ( !QString::fromStdString(plot2dPropertyNode.getURI()).compare(OpencorNamespace)
&& !QString::fromStdString(plot2dPropertyNode.getName()).compare(ZoomRegionProperties)) {
for (uint k = 0, kMax = plot2dPropertyNode.getNumChildren(); k < kMax; ++k) {
const libsbml::XMLNode &zoomRegionPropertyNode = plot2dPropertyNode.getChild(k);
QString zoomRegionPropertyNodeName = QString::fromStdString(zoomRegionPropertyNode.getName());
QString zoomRegionPropertyNodeValue = QString::fromStdString(zoomRegionPropertyNode.getChild(0).getCharacters());

if ( !zoomRegionPropertyNodeName.compare(ZoomRegionStyle)
&& !validListPropertyValue(zoomRegionPropertyNode, zoomRegionPropertyNodeValue, ZoomRegionStyle, lineStyles())) {
return false;
} else if (!zoomRegionPropertyNodeName.compare(ZoomRegionWidth)) {
if (!IntegerGt0RegEx.match(zoomRegionPropertyNodeValue).hasMatch()) {
mIssues << SedmlFileIssue(SedmlFileIssue::Error,
zoomRegionPropertyNode.getLine(),
zoomRegionPropertyNode.getColumn(),
tr("the '%1' property value must be a number greater than zero").arg(zoomRegionPropertyNodeName));

return false;
}
} else if ( !zoomRegionPropertyNodeName.compare(ZoomRegionColor)
&& !validColorPropertyValue(zoomRegionPropertyNode, zoomRegionPropertyNodeValue, ZoomRegionColor)) {
return false;
} else if ( !zoomRegionPropertyNodeName.compare(ZoomRegionFontColor)
&& !validColorPropertyValue(zoomRegionPropertyNode, zoomRegionPropertyNodeValue, ZoomRegionFontColor)) {
return false;
} else if ( !zoomRegionPropertyNodeName.compare(ZoomRegionFilled)
&& zoomRegionPropertyNodeValue.compare(True)
&& zoomRegionPropertyNodeValue.compare(False)) {
mIssues << SedmlFileIssue(SedmlFileIssue::Error,
zoomRegionPropertyNode.getLine(),
zoomRegionPropertyNode.getColumn(),
tr("the '%1' property must have a value of 'true' or 'false'").arg(ZoomRegionFilled));

return false;
} else if ( !zoomRegionPropertyNodeName.compare(ZoomRegionFillColor)
&& !validColorPropertyValue(zoomRegionPropertyNode, zoomRegionPropertyNodeValue, ZoomRegionFillColor)) {
return false;
}
}
}
}
}
Expand Down
7 changes: 7 additions & 0 deletions src/plugins/support/SEDMLSupport/src/sedmlfile.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,13 @@ static const auto XAxisTitle = QStringLiteral("xAxisTitle");
static const auto YAxisProperties = QStringLiteral("yAxisProperties");
static const auto YAxisLogarithmicScale = QStringLiteral("yAxisLogarithmicScale");
static const auto YAxisTitle = QStringLiteral("yAxisTitle");
static const auto ZoomRegionProperties = QStringLiteral("zoomRegionProperties");
static const auto ZoomRegionStyle = QStringLiteral("zoomRegionStyle");
static const auto ZoomRegionWidth = QStringLiteral("zoomRegionWidth");
static const auto ZoomRegionColor = QStringLiteral("zoomRegionColor");
static const auto ZoomRegionFontColor = QStringLiteral("zoomRegionFontColor");
static const auto ZoomRegionFilled = QStringLiteral("zoomRegionFilled");
static const auto ZoomRegionFillColor = QStringLiteral("zoomRegionFillColor");
static const auto CurveProperties = QStringLiteral("curveProperties");
static const auto LineProperties = QStringLiteral("lineProperties");
static const auto LineStyle = QStringLiteral("lineStyle");
Expand Down

0 comments on commit 99b9d0b

Please sign in to comment.