Load measurements.

--HG--
branch : feature
This commit is contained in:
Roman Telezhynskyi 2015-08-17 13:26:27 +03:00
parent 498aaa4ea2
commit 0acf149be7
3 changed files with 114 additions and 1 deletions

View File

@ -232,6 +232,62 @@ void MainWindow::InitScenes()
qApp->setSceneView(ui->view);
}
//---------------------------------------------------------------------------------------------------------------------
void MainWindow::LoadMeasurements(const QString &path)
{
if (path.isEmpty())
{
return;
}
VMeasurements *m = nullptr;
try
{
m = new VMeasurements(pattern);
m->setXMLContent(path);
if (m->Type() == MeasurementsType::Unknown)
{
VException e("Measurement file has unknown format.");
throw e;
}
if (m->Type() == MeasurementsType::Standard)
{
VDomDocument::ValidateXML(VVSTConverter::CurrentSchema, path);
}
else
{
VDomDocument::ValidateXML(VVITConverter::CurrentSchema, path);
}
const QStringList mList = m->ListAll();
const QStringList pList = doc->ListMeasurements();
const QSet<QString> match = pList.toSet().subtract(mList.toSet());
if (not match.isEmpty())
{
VException e("Measurement file doesn't include all required measurements.");
e.AddMoreInformation(QString("Please, additionaly provide: %1")
.arg(QStringList(match.toList()).join(", ")));
throw e;
}
pattern->ClearVariables(VarType::Measurement);
m->ReadMeasurements();
delete m;
doc->SetPath(path);
PatternWasModified(false);
doc->LiteParseTree(Document::LiteParse);
}
catch (VException &e)
{
e.CriticalMessageBox(tr("File error."), this);
delete m;
return;
}
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief OptionDraw help change name of pattern piece.
@ -902,6 +958,34 @@ void MainWindow::PrepareSceneList()
}
}
//---------------------------------------------------------------------------------------------------------------------
void MainWindow::LoadIndividual()
{
const QString filter = tr("Individual measurements (*.vit);;Standard measurements (*.vst)");
//Use standard path to standard measurements
const QString path = qApp->ValentinaSettings()->GetPathStandardMeasurements();
const QString mPath = QFileDialog::getOpenFileName(this, tr("Open file"), path, filter);
if (not mPath.isEmpty())
{
LoadMeasurements(mPath);
}
}
//---------------------------------------------------------------------------------------------------------------------
void MainWindow::LoadStandard()
{
const QString filter = tr("Individual measurements (*.vit);;Standard measurements (*.vst)");
//Use standard path to individual measurements
const QString path = qApp->ValentinaSettings()->GetPathIndividualMeasurements();
const QString mPath = QFileDialog::getOpenFileName(this, tr("Open file"), path, filter);
if (not mPath.isEmpty())
{
LoadMeasurements(mPath);
}
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ToolBarOption enable option toolbar.
@ -1716,6 +1800,8 @@ void MainWindow::Clear()
ui->actionEdit_pattern_code->setEnabled(false);
ui->actionLast_tool->setEnabled(false);
ui->actionShowCurveDetails->setEnabled(false);
ui->actionLoadIndividual->setEnabled(false);
ui->actionLoadStandard->setEnabled(false);
SetEnableTool(false);
qApp->setPatternUnit(Unit::Cm);
qApp->setPatternType(MeasurementsType::Individual);
@ -1924,6 +2010,8 @@ void MainWindow::SetEnableWidgets(bool enable)
ui->actionZoomFitBest->setEnabled(enable);
ui->actionZoomOriginal->setEnabled(enable);
ui->actionShowCurveDetails->setEnabled(enable);
ui->actionLoadIndividual->setEnabled(enable);
ui->actionLoadStandard->setEnabled(enable);
//Now we don't want allow user call context menu
sceneDraw->SetDisableTools(!enable, doc->GetNameActivPP());
@ -2661,6 +2749,8 @@ void MainWindow::CreateActions()
connect(ui->actionEdit_pattern_code, &QAction::triggered, this, &MainWindow::EditPatternCode);
connect(ui->actionCloseWindow, &QAction::triggered, this, &MainWindow::ResetWindow);
connect(ui->actionShowCurveDetails, &QAction::triggered, this, &MainWindow::ActionCurveDetailsMode);
connect(ui->actionLoadIndividual, &QAction::triggered, this, &MainWindow::LoadIndividual);
connect(ui->actionLoadStandard, &QAction::triggered, this, &MainWindow::LoadStandard);
connect(ui->actionExportAs, &QAction::triggered, this, &MainWindow::ExportLayoutAs);
connect(ui->actionPrintPreview, &QAction::triggered, this, &MainWindow::PrintPreviewOrigin);

View File

@ -159,6 +159,9 @@ protected:
virtual void CleanLayout() Q_DECL_OVERRIDE;
virtual void PrepareSceneList() Q_DECL_OVERRIDE;
private slots:
void LoadIndividual();
void LoadStandard();
private:
Q_DISABLE_COPY(MainWindow)
/** @brief ui keeps information about user interface */
@ -282,6 +285,8 @@ private:
void AddPP(const QString &PPName);
void InitScenes();
void LoadMeasurements(const QString &path);
};
#endif // MAINWINDOW_H

View File

@ -1085,6 +1085,8 @@
<string>Measurements</string>
</property>
<addaction name="actionTable"/>
<addaction name="actionLoadIndividual"/>
<addaction name="actionLoadStandard"/>
</widget>
<widget class="QMenu" name="menuWindow">
<property name="title">
@ -1854,6 +1856,22 @@
<string>Export original layout</string>
</property>
</action>
<action name="actionLoadIndividual">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Load Individual ...</string>
</property>
</action>
<action name="actionLoadStandard">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Load Standard ...</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>
@ -1867,8 +1885,8 @@
<tabstop>toolButtonSplinePath</tabstop>
</tabstops>
<resources>
<include location="share/resources/toolicon.qrc"/>
<include location="../../libs/vmisc/share/resources/icon.qrc"/>
<include location="share/resources/toolicon.qrc"/>
</resources>
<connections/>
</ui>