Skip to content
Snippets Groups Projects
Commit 416cc610 authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

New helper function to construct valid file name to save IntensityDataItem on disk

parent 8596ed38
No related branches found
No related tags found
No related merge requests found
......@@ -18,6 +18,7 @@
#include "AngleProperty.h"
#include "AxesItems.h"
#include "Units.h"
#include "GUIHelpers.h"
#include <QDebug>
const QString IntensityDataItem::P_PROJECTIONS_FLAG = "Projections";
......@@ -222,6 +223,14 @@ void IntensityDataItem::setZAxisLocked(bool state)
return getSubItems()[P_ZAXIS]->setRegisteredProperty(AmplitudeAxisItem::P_LOCK_MIN_MAX, state);
}
//! Sets the name of intensity data item from proposed name. This name will be used to save file
//! on disk, so it has to be cleaned from special character.
void IntensityDataItem::setNameFromProposed(const QString &proposed_name)
{
QString valid_name = GUIHelpers::getValidFileName(proposed_name);
setItemName(QString("data_%1_%2.int").arg(valid_name, QString::number(0)));
}
void IntensityDataItem::setLowerX(double xmin)
{
qDebug() << "IntensityDataItem::setXaxisMin(double xmin)" << xmin;
......
......@@ -73,6 +73,8 @@ public:
bool isZAxisLocked() const;
void setZAxisLocked(bool state);
void setNameFromProposed(const QString &proposed_name);
signals:
void intensityModified();
......@@ -92,7 +94,6 @@ public slots:
private:
OutputData<double> *m_data; //!< simulation results
};
#endif // NINTENSITYDATAITEM_H
......
......@@ -256,3 +256,12 @@ InstrumentItem *JobItem::getInstrumentItem(bool from_backup)
return 0;
}
void JobItem::onPropertyChange(const QString &name)
{
if(name == ParameterizedItem::P_NAME) {
if(IntensityDataItem *intensityDataItem = getIntensityDataItem()) {
intensityDataItem->setNameFromProposed(itemName());
}
}
}
......@@ -79,6 +79,8 @@ public:
InstrumentItem *getInstrumentItem(bool from_backup = false);
void onPropertyChange(const QString &name);
private:
static QMap<QString, QString> m_run_policies; // run policy, policy description
};
......
......@@ -89,24 +89,7 @@ void JobQueueData::setResults(JobItem *jobItem, const Simulation *simulation)
intensityItem = static_cast<IntensityDataItem *>(m_jobModel->insertNewItem(Constants::IntensityDataType, m_jobModel->indexOfItem(jobItem)));
}
// propagatind angle units to OutputDataItem
// if(jobItem->getInstrumentModel()) {
// InstrumentItem *instrumentItem = dynamic_cast<InstrumentItem *>(jobItem->getInstrumentModel()->getInstrumentMap().begin().value());
// qDebug() << instrumentItem->modelType();
// Q_ASSERT(instrumentItem);
// DetectorItem *detectorItem = instrumentItem->getDetectorItem();
// Q_ASSERT(detectorItem);
// ParameterizedItem *subDetector = detectorItem->getSubItems()[DetectorItem::P_DETECTOR];
// Q_ASSERT(subDetector);
// if (subDetector->modelType() == Constants::PhiAlphaDetectorType) {
// AngleProperty angle_property = subDetector->getRegisteredProperty(PhiAlphaDetectorItem::P_AXES_UNITS).value<AngleProperty>();
// intensityItem->setRegisteredProperty(IntensityDataItem::P_AXES_UNITS, angle_property.getVariant());
// }
// }
qDebug() << "JobItem::setResults()" << intensityItem;
intensityItem->setItemName(QString("data_%1_%2.int").arg(jobItem->itemName(), QString::number(0)));
intensityItem->setNameFromProposed(jobItem->itemName());
intensityItem->setOutputData(simulation->getIntensityData());
}
......
......@@ -21,6 +21,24 @@
namespace GUIHelpers {
namespace {
QMap<QString, QString> initializeCharacterMap()
{
QMap<QString, QString> result;
result["\\"]= QString("backslash");
result["/"] = QString("slash");
result["\""] = QString("quote");
result["<"] = QString("lessthan");
result[">"] = QString("greaterthan");
result["|"] = QString("pipe");
result["?"] = QString("questionmark");
return result;
}
const QMap<QString, QString> invalidCharacterMap = initializeCharacterMap();
}
void information(QWidget *parent, const QString &title, const QString &text, const QString &detailedText)
{
QScopedPointer<QMessageBox> messageBox(new QMessageBox(parent));
......@@ -110,6 +128,24 @@ QString getBornAgainVersionString()
return QString::fromStdString(BornAgain::GetVersionNumber());
}
//! Returns valid file name to be saved on disk. This name is constructed from proposed_name
//! by replacing all special characters with text representation
//! \ backslash
//! / slash
//! " quote
//! < lessthan
//! > greaterthan
//! | pipe
//! ? questionmark
QString getValidFileName(const QString &proposed_name)
{
QString result = proposed_name;
for(QMap<QString, QString>::const_iterator it=invalidCharacterMap.begin(); it!=invalidCharacterMap.end(); ++it) {
result.replace(it.key(), it.value());
}
return result;
}
} // namespace GUIHelpers
......@@ -54,6 +54,8 @@ BA_CORE_API_ int getVariantType(const QVariant &variant);
BA_CORE_API_ QString getBornAgainVersionString();
BA_CORE_API_ QString getValidFileName(const QString &proposed_name);
}
#endif // GUIHELPERS_H
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment