Fixed crash on Windows.
--HG-- branch : develop
This commit is contained in:
parent
b46e384ca7
commit
a4b2bb905f
|
@ -28,7 +28,6 @@
|
||||||
|
|
||||||
#include "tmainwindow.h"
|
#include "tmainwindow.h"
|
||||||
#include "mapplication.h"
|
#include "mapplication.h"
|
||||||
#include "../vmisc/vsysexits.h"
|
|
||||||
|
|
||||||
#include <QMessageBox> // For QT_REQUIRE_VERSION
|
#include <QMessageBox> // For QT_REQUIRE_VERSION
|
||||||
|
|
||||||
|
@ -50,6 +49,8 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
MApplication app(argc, argv);
|
MApplication app(argc, argv);
|
||||||
app.InitOptions();
|
app.InitOptions();
|
||||||
app.ParseCommandLine(SocketConnection::Client, app.arguments());
|
|
||||||
return app.IsTestMode() ? V_EX_OK : app.exec(); // single return point is always better than more
|
QTimer::singleShot(0, &app, SLOT(ProcessCMD()));
|
||||||
|
|
||||||
|
return app.exec();
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,31 +234,31 @@ bool MApplication::notify(QObject *receiver, QEvent *event)
|
||||||
{
|
{
|
||||||
qCCritical(mApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error parsing file. Program will be terminated.")),
|
qCCritical(mApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error parsing file. Program will be terminated.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
std::exit(V_EX_DATAERR);
|
exit(V_EX_DATAERR);
|
||||||
}
|
}
|
||||||
catch (const VExceptionBadId &e)
|
catch (const VExceptionBadId &e)
|
||||||
{
|
{
|
||||||
qCCritical(mApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error bad id. Program will be terminated.")),
|
qCCritical(mApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error bad id. Program will be terminated.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
std::exit(V_EX_DATAERR);
|
exit(V_EX_DATAERR);
|
||||||
}
|
}
|
||||||
catch (const VExceptionConversionError &e)
|
catch (const VExceptionConversionError &e)
|
||||||
{
|
{
|
||||||
qCCritical(mApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error can't convert value. Program will be terminated.")),
|
qCCritical(mApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error can't convert value. Program will be terminated.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
std::exit(V_EX_DATAERR);
|
exit(V_EX_DATAERR);
|
||||||
}
|
}
|
||||||
catch (const VExceptionEmptyParameter &e)
|
catch (const VExceptionEmptyParameter &e)
|
||||||
{
|
{
|
||||||
qCCritical(mApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error empty parameter. Program will be terminated.")),
|
qCCritical(mApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error empty parameter. Program will be terminated.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
std::exit(V_EX_DATAERR);
|
exit(V_EX_DATAERR);
|
||||||
}
|
}
|
||||||
catch (const VExceptionWrongId &e)
|
catch (const VExceptionWrongId &e)
|
||||||
{
|
{
|
||||||
qCCritical(mApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error wrong id. Program will be terminated.")),
|
qCCritical(mApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error wrong id. Program will be terminated.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
std::exit(V_EX_DATAERR);
|
exit(V_EX_DATAERR);
|
||||||
}
|
}
|
||||||
catch (const VException &e)
|
catch (const VException &e)
|
||||||
{
|
{
|
||||||
|
@ -271,12 +271,12 @@ bool MApplication::notify(QObject *receiver, QEvent *event)
|
||||||
catch (const qmu::QmuParserError &e)
|
catch (const qmu::QmuParserError &e)
|
||||||
{
|
{
|
||||||
qCCritical(mApp, "%s", qUtf8Printable(tr("Parser error: %1. Program will be terminated.").arg(e.GetMsg())));
|
qCCritical(mApp, "%s", qUtf8Printable(tr("Parser error: %1. Program will be terminated.").arg(e.GetMsg())));
|
||||||
std::exit(V_EX_DATAERR);
|
exit(V_EX_DATAERR);
|
||||||
}
|
}
|
||||||
catch (std::exception &e)
|
catch (std::exception &e)
|
||||||
{
|
{
|
||||||
qCCritical(mApp, "%s", qUtf8Printable(tr("Exception thrown: %1. Program will be terminated.").arg(e.what())));
|
qCCritical(mApp, "%s", qUtf8Printable(tr("Exception thrown: %1. Program will be terminated.").arg(e.what())));
|
||||||
std::exit(V_EX_SOFTWARE);
|
exit(V_EX_SOFTWARE);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -603,7 +603,8 @@ void MApplication::ParseCommandLine(const SocketConnection &connection, const QS
|
||||||
stream << QCoreApplication::arguments().join(";;");
|
stream << QCoreApplication::arguments().join(";;");
|
||||||
stream.flush();
|
stream.flush();
|
||||||
socket.waitForBytesWritten();
|
socket.waitForBytesWritten();
|
||||||
std::exit(V_EX_OK);
|
qApp->exit(V_EX_OK);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
qCDebug(mApp, "Can't establish connection to the server '%s'", qUtf8Printable(serverName));
|
qCDebug(mApp, "Can't establish connection to the server '%s'", qUtf8Printable(serverName));
|
||||||
|
@ -640,7 +641,15 @@ void MApplication::ParseCommandLine(const SocketConnection &connection, const QS
|
||||||
for (int i = 0; i < args.size(); ++i)
|
for (int i = 0; i < args.size(); ++i)
|
||||||
{
|
{
|
||||||
NewMainWindow();
|
NewMainWindow();
|
||||||
MainWindow()->LoadFile(args.at(i));
|
if (not MainWindow()->LoadFile(args.at(i)))
|
||||||
|
{
|
||||||
|
if (testMode)
|
||||||
|
{
|
||||||
|
return; // process only one input file
|
||||||
|
}
|
||||||
|
delete MainWindow();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (flagSize)
|
if (flagSize)
|
||||||
{
|
{
|
||||||
|
@ -670,6 +679,11 @@ void MApplication::ParseCommandLine(const SocketConnection &connection, const QS
|
||||||
parser.showHelp(V_EX_USAGE);
|
parser.showHelp(V_EX_USAGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (testMode)
|
||||||
|
{
|
||||||
|
qApp->exit(V_EX_OK); // close program after processing in console mode
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -710,6 +724,12 @@ TMainWindow *MApplication::NewMainWindow()
|
||||||
return tape;
|
return tape;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void MApplication::ProcessCMD()
|
||||||
|
{
|
||||||
|
ParseCommandLine(SocketConnection::Client, arguments());
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void MApplication::OpenFile(const QString &path)
|
void MApplication::OpenFile(const QString &path)
|
||||||
{
|
{
|
||||||
|
|
|
@ -82,6 +82,7 @@ public:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
TMainWindow *NewMainWindow();
|
TMainWindow *NewMainWindow();
|
||||||
|
void ProcessCMD();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void InitTrVars() Q_DECL_OVERRIDE;
|
virtual void InitTrVars() Q_DECL_OVERRIDE;
|
||||||
|
|
|
@ -160,7 +160,7 @@ void TMainWindow::SetPUnit(Unit unit)
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void TMainWindow::LoadFile(const QString &path)
|
bool TMainWindow::LoadFile(const QString &path)
|
||||||
{
|
{
|
||||||
if (m == nullptr)
|
if (m == nullptr)
|
||||||
{
|
{
|
||||||
|
@ -169,12 +169,9 @@ void TMainWindow::LoadFile(const QString &path)
|
||||||
qCCritical(tMainWindow, "%s", qUtf8Printable(tr("File '%1' doesn't exist!").arg(path)));
|
qCCritical(tMainWindow, "%s", qUtf8Printable(tr("File '%1' doesn't exist!").arg(path)));
|
||||||
if (qApp->IsTestMode())
|
if (qApp->IsTestMode())
|
||||||
{
|
{
|
||||||
std::exit(V_EX_NOINPUT);
|
qApp->exit(V_EX_NOINPUT);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if file already opened
|
// Check if file already opened
|
||||||
|
@ -185,7 +182,7 @@ void TMainWindow::LoadFile(const QString &path)
|
||||||
{
|
{
|
||||||
list.at(i)->activateWindow();
|
list.at(i)->activateWindow();
|
||||||
close();
|
close();
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,12 +193,9 @@ void TMainWindow::LoadFile(const QString &path)
|
||||||
qCCritical(tMainWindow, "%s", qUtf8Printable(tr("This file already opened in another window.")));
|
qCCritical(tMainWindow, "%s", qUtf8Printable(tr("This file already opened in another window.")));
|
||||||
if (qApp->IsTestMode())
|
if (qApp->IsTestMode())
|
||||||
{
|
{
|
||||||
std::exit(V_EX_NOINPUT);
|
qApp->exit(V_EX_NOINPUT);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -278,20 +272,18 @@ void TMainWindow::LoadFile(const QString &path)
|
||||||
|
|
||||||
if (qApp->IsTestMode())
|
if (qApp->IsTestMode())
|
||||||
{
|
{
|
||||||
std::exit(V_EX_NOINPUT);
|
qApp->exit(V_EX_NOINPUT);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
qApp->NewMainWindow();
|
qApp->NewMainWindow();
|
||||||
qApp->MainWindow()->LoadFile(path);
|
return qApp->MainWindow()->LoadFile(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -63,7 +63,7 @@ public:
|
||||||
void SetPUnit(Unit unit);
|
void SetPUnit(Unit unit);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void LoadFile(const QString &path);
|
bool LoadFile(const QString &path);
|
||||||
void FileNew();
|
void FileNew();
|
||||||
void OpenIndividual();
|
void OpenIndividual();
|
||||||
void OpenStandard();
|
void OpenStandard();
|
||||||
|
|
|
@ -294,31 +294,31 @@ bool VApplication::notify(QObject *receiver, QEvent *event)
|
||||||
{
|
{
|
||||||
qCCritical(vApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error parsing file. Program will be terminated.")),
|
qCCritical(vApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error parsing file. Program will be terminated.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
std::exit(V_EX_DATAERR);
|
exit(V_EX_DATAERR);
|
||||||
}
|
}
|
||||||
catch (const VExceptionBadId &e)
|
catch (const VExceptionBadId &e)
|
||||||
{
|
{
|
||||||
qCCritical(vApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error bad id. Program will be terminated.")),
|
qCCritical(vApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error bad id. Program will be terminated.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
std::exit(V_EX_DATAERR);
|
exit(V_EX_DATAERR);
|
||||||
}
|
}
|
||||||
catch (const VExceptionConversionError &e)
|
catch (const VExceptionConversionError &e)
|
||||||
{
|
{
|
||||||
qCCritical(vApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error can't convert value. Program will be terminated.")),
|
qCCritical(vApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error can't convert value. Program will be terminated.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
std::exit(V_EX_DATAERR);
|
exit(V_EX_DATAERR);
|
||||||
}
|
}
|
||||||
catch (const VExceptionEmptyParameter &e)
|
catch (const VExceptionEmptyParameter &e)
|
||||||
{
|
{
|
||||||
qCCritical(vApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error empty parameter. Program will be terminated.")),
|
qCCritical(vApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error empty parameter. Program will be terminated.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
std::exit(V_EX_DATAERR);
|
exit(V_EX_DATAERR);
|
||||||
}
|
}
|
||||||
catch (const VExceptionWrongId &e)
|
catch (const VExceptionWrongId &e)
|
||||||
{
|
{
|
||||||
qCCritical(vApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error wrong id. Program will be terminated.")),
|
qCCritical(vApp, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error wrong id. Program will be terminated.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
std::exit(V_EX_DATAERR);
|
exit(V_EX_DATAERR);
|
||||||
}
|
}
|
||||||
catch (const VException &e)
|
catch (const VException &e)
|
||||||
{
|
{
|
||||||
|
@ -331,12 +331,12 @@ bool VApplication::notify(QObject *receiver, QEvent *event)
|
||||||
catch (const qmu::QmuParserError &e)
|
catch (const qmu::QmuParserError &e)
|
||||||
{
|
{
|
||||||
qCCritical(vApp, "%s", qUtf8Printable(tr("Parser error: %1. Program will be terminated.").arg(e.GetMsg())));
|
qCCritical(vApp, "%s", qUtf8Printable(tr("Parser error: %1. Program will be terminated.").arg(e.GetMsg())));
|
||||||
std::exit(V_EX_DATAERR);
|
exit(V_EX_DATAERR);
|
||||||
}
|
}
|
||||||
catch (std::exception& e)
|
catch (std::exception& e)
|
||||||
{
|
{
|
||||||
qCCritical(vApp, "%s", qUtf8Printable(tr("Exception thrown: %1. Program will be terminated.").arg(e.what())));
|
qCCritical(vApp, "%s", qUtf8Printable(tr("Exception thrown: %1. Program will be terminated.").arg(e.what())));
|
||||||
std::exit(V_EX_SOFTWARE);
|
exit(V_EX_SOFTWARE);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "../options.h"
|
#include "../options.h"
|
||||||
#include "../core/vapplication.h"
|
#include "../core/vapplication.h"
|
||||||
#include "../vmisc/vsettings.h"
|
#include "../vmisc/vsettings.h"
|
||||||
|
#include "../ifc/exception/vexception.h"
|
||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
|
@ -88,8 +89,8 @@ DialogSaveLayout::DialogSaveLayout(int count, const QString &fileName, QWidget *
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
qCritical() << tr("The base filename has not match regular expression.");
|
VException e(tr("The base filename has not match regular expression."));
|
||||||
std::exit(V_EX_USAGE);
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,15 +120,15 @@ void DialogSaveLayout::SelectFormate(const size_t formate)
|
||||||
{
|
{
|
||||||
if (formate >= availFormats.size())
|
if (formate >= availFormats.size())
|
||||||
{
|
{
|
||||||
qCritical() << tr("Tried to use out of range format number.");
|
VException e(tr("Tried to use out of range format number."));
|
||||||
std::exit(V_EX_USAGE);
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
||||||
int i = ui->comboBoxFormat->findData(availFormats[formate].pair.second);
|
const int i = ui->comboBoxFormat->findData(availFormats[formate].pair.second);
|
||||||
if (i < 0)
|
if (i < 0)
|
||||||
{
|
{
|
||||||
qCritical() << tr("Selected not present format.");
|
VException e(tr("Selected not present format."));
|
||||||
std::exit(V_EX_USAGE);
|
throw e;
|
||||||
}
|
}
|
||||||
ui->comboBoxFormat->setCurrentIndex(i);
|
ui->comboBoxFormat->setCurrentIndex(i);
|
||||||
}
|
}
|
||||||
|
@ -164,8 +165,8 @@ void DialogSaveLayout::SetDestinationPath(const QString &cmdDestinationPath)
|
||||||
QDir dir;
|
QDir dir;
|
||||||
if (not dir.cd(cmdDestinationPath))
|
if (not dir.cd(cmdDestinationPath))
|
||||||
{
|
{
|
||||||
qCritical() << tr("The destination directory doesn't exists or is not readable.");
|
VException e(tr("The destination directory doesn't exists or is not readable."));
|
||||||
std::exit(V_EX_DATAERR);
|
throw e;
|
||||||
}
|
}
|
||||||
path = dir.absolutePath();
|
path = dir.absolutePath();
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,52 +58,7 @@ int main(int argc, char *argv[])
|
||||||
app.setWindowIcon(QIcon(":/icon/64x64/icon64x64.png"));
|
app.setWindowIcon(QIcon(":/icon/64x64/icon64x64.png"));
|
||||||
app.setMainWindow(&w);
|
app.setMainWindow(&w);
|
||||||
|
|
||||||
auto args = app.CommandLine()->OptInputFileNames();
|
QTimer::singleShot(0, &w, SLOT(ProcessCMD()));
|
||||||
|
|
||||||
//Before we load pattern show window.
|
return app.exec();
|
||||||
if (VApplication::CheckGUI())
|
|
||||||
{
|
|
||||||
w.show();
|
|
||||||
w.ReopenFilesAfterCrash(args);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (args.size() != 1)
|
|
||||||
{
|
|
||||||
qCritical() << QCoreApplication::translate("vmain", "Please, provide one input file.");
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i=0, sz = args.size(); i < sz; ++i)
|
|
||||||
{
|
|
||||||
const bool loaded = w.LoadPattern(args.at(static_cast<int>(i)), app.CommandLine()->OptMeasurePath());
|
|
||||||
|
|
||||||
if (app.CommandLine()->IsTestModeEnabled() || app.CommandLine()->IsExportEnabled())
|
|
||||||
{
|
|
||||||
if (app.CommandLine()->IsSetGradationSize())
|
|
||||||
{
|
|
||||||
w.SetSize(app.CommandLine()->OptGradationSize());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (app.CommandLine()->IsSetGradationHeight())
|
|
||||||
{
|
|
||||||
w.SetHeight(app.CommandLine()->OptGradationHeight());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (not app.CommandLine()->IsTestModeEnabled())
|
|
||||||
{
|
|
||||||
if (app.CommandLine()->IsExportEnabled())
|
|
||||||
{
|
|
||||||
if (loaded)
|
|
||||||
{
|
|
||||||
w.DoExport(app.CommandLine());
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (VApplication::CheckGUI()) ? app.exec() : V_EX_OK; // single return point is always better than more
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -290,15 +290,12 @@ QSharedPointer<VMeasurements> MainWindow::OpenMeasurementFile(const QString &pat
|
||||||
qCCritical(vMainWindow, "%s\n\n%s", qUtf8Printable(tr("Wrong units.")),
|
qCCritical(vMainWindow, "%s\n\n%s", qUtf8Printable(tr("Wrong units.")),
|
||||||
qUtf8Printable(tr("Application doesn't support standard table with inches.")));
|
qUtf8Printable(tr("Application doesn't support standard table with inches.")));
|
||||||
m->clear();
|
m->clear();
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_DATAERR);
|
||||||
|
}
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_DATAERR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (VException &e)
|
catch (VException &e)
|
||||||
|
@ -306,15 +303,12 @@ QSharedPointer<VMeasurements> MainWindow::OpenMeasurementFile(const QString &pat
|
||||||
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("File error.")),
|
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("File error.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
m->clear();
|
m->clear();
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -345,15 +339,12 @@ bool MainWindow::LoadMeasurements(const QString &path)
|
||||||
{
|
{
|
||||||
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("File error.")),
|
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("File error.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,15 +361,12 @@ bool MainWindow::UpdateMeasurements(const QString &path, int size, int height)
|
||||||
if (qApp->patternType() != m->Type())
|
if (qApp->patternType() != m->Type())
|
||||||
{
|
{
|
||||||
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("Measurement files types have not match.")));
|
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("Measurement files types have not match.")));
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_DATAERR);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_DATAERR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m->Type() == MeasurementsType::Standard)
|
if (m->Type() == MeasurementsType::Standard)
|
||||||
{
|
{
|
||||||
|
@ -395,15 +383,12 @@ bool MainWindow::UpdateMeasurements(const QString &path, int size, int height)
|
||||||
{
|
{
|
||||||
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("File error.")),
|
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("File error.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2207,84 +2192,66 @@ void MainWindow::FullParseFile()
|
||||||
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error parsing file.")),
|
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error parsing file.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
SetEnabledGUI(false);
|
SetEnabledGUI(false);
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (const VExceptionConversionError &e)
|
catch (const VExceptionConversionError &e)
|
||||||
{
|
{
|
||||||
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error can't convert value.")),
|
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error can't convert value.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
SetEnabledGUI(false);
|
SetEnabledGUI(false);
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (const VExceptionEmptyParameter &e)
|
catch (const VExceptionEmptyParameter &e)
|
||||||
{
|
{
|
||||||
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error empty parameter.")),
|
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error empty parameter.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
SetEnabledGUI(false);
|
SetEnabledGUI(false);
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (const VExceptionWrongId &e)
|
catch (const VExceptionWrongId &e)
|
||||||
{
|
{
|
||||||
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error wrong id.")),
|
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error wrong id.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
SetEnabledGUI(false);
|
SetEnabledGUI(false);
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (VException &e)
|
catch (VException &e)
|
||||||
{
|
{
|
||||||
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error parsing file.")),
|
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error parsing file.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
SetEnabledGUI(false);
|
SetEnabledGUI(false);
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (const std::bad_alloc &)
|
catch (const std::bad_alloc &)
|
||||||
{
|
{
|
||||||
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("Error parsing file (std::bad_alloc).")));
|
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("Error parsing file (std::bad_alloc).")));
|
||||||
SetEnabledGUI(false);
|
SetEnabledGUI(false);
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString patternPiece = QString();
|
QString patternPiece = QString();
|
||||||
if (comboBoxDraws->currentIndex() != -1)
|
if (comboBoxDraws->currentIndex() != -1)
|
||||||
|
@ -2323,29 +2290,23 @@ void MainWindow::GlobalChangePP(const QString &patternPiece)
|
||||||
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Bad id.")),
|
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Bad id.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
SetEnabledGUI(false);
|
SetEnabledGUI(false);
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (const VExceptionEmptyParameter &e)
|
catch (const VExceptionEmptyParameter &e)
|
||||||
{
|
{
|
||||||
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error empty parameter.")),
|
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error empty parameter.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
SetEnabledGUI(false);
|
SetEnabledGUI(false);
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -3302,15 +3263,12 @@ bool MainWindow::LoadPattern(const QString &fileName, const QString& customMeasu
|
||||||
qCDebug(vMainWindow, "Error type: %d", lock->GetLockError());
|
qCDebug(vMainWindow, "Error type: %d", lock->GetLockError());
|
||||||
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("This file already opened in another window.")));
|
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("This file already opened in another window.")));
|
||||||
Clear();
|
Clear();
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// On this stage scene empty. Fit scene size to view size
|
// On this stage scene empty. Fit scene size to view size
|
||||||
VMainGraphicsView::NewSceneRect(sceneDraw, ui->view);
|
VMainGraphicsView::NewSceneRect(sceneDraw, ui->view);
|
||||||
|
@ -3344,31 +3302,25 @@ bool MainWindow::LoadPattern(const QString &fileName, const QString& customMeasu
|
||||||
Clear();
|
Clear();
|
||||||
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("The measurements file '%1' could not be found.")
|
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("The measurements file '%1' could not be found.")
|
||||||
.arg(path)));
|
.arg(path)));
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (not LoadMeasurements(path))
|
if (not LoadMeasurements(path))
|
||||||
{
|
{
|
||||||
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("The measurements file '%1' could not be found.")
|
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("The measurements file '%1' could not be found.")
|
||||||
.arg(path)));
|
.arg(path)));
|
||||||
Clear();
|
Clear();
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
watcher->addPath(path);
|
watcher->addPath(path);
|
||||||
ui->actionShowM->setEnabled(true);
|
ui->actionShowM->setEnabled(true);
|
||||||
|
@ -3382,15 +3334,12 @@ bool MainWindow::LoadPattern(const QString &fileName, const QString& customMeasu
|
||||||
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("File error.")),
|
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("File error.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
Clear();
|
Clear();
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef Q_OS_WIN32
|
#ifdef Q_OS_WIN32
|
||||||
qt_ntfs_permission_lookup--; // turn it off again
|
qt_ntfs_permission_lookup--; // turn it off again
|
||||||
|
@ -3747,15 +3696,33 @@ void MainWindow::DoExport(const VCommandLinePtr &expParams)
|
||||||
if (details->count() == 0)
|
if (details->count() == 0)
|
||||||
{
|
{
|
||||||
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("You can't export empty scene.")));
|
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("You can't export empty scene.")));
|
||||||
std::exit(V_EX_DATAERR);
|
qApp->exit(V_EX_DATAERR);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PrepareDetailsForLayout(details);
|
PrepareDetailsForLayout(details);
|
||||||
LayoutSettings(*settings.get());
|
if (LayoutSettings(*settings.get()))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
DialogSaveLayout dialog(scenes.size(), expParams->OptBaseName(), this);
|
DialogSaveLayout dialog(scenes.size(), expParams->OptBaseName(), this);
|
||||||
dialog.SetDestinationPath(expParams->OptDestinationPath());
|
dialog.SetDestinationPath(expParams->OptDestinationPath());
|
||||||
dialog.SelectFormate(expParams->OptExportType());
|
dialog.SelectFormate(expParams->OptExportType());
|
||||||
ExportLayout(dialog);
|
ExportLayout(dialog);
|
||||||
|
}
|
||||||
|
catch (const VException &e)
|
||||||
|
{
|
||||||
|
qCCritical(vMainWindow, "%s\n\n%s", qUtf8Printable(tr("Export error.")), qUtf8Printable(e.ErrorMessage()));
|
||||||
|
qApp->exit(V_EX_DATAERR);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
qApp->exit(V_EX_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -3833,3 +3800,66 @@ void MainWindow::SetHeight(const QString &text)
|
||||||
qCWarning(vMainWindow, "%s", qUtf8Printable(tr("The method %1 does nothing in GUI mode").arg(Q_FUNC_INFO)));
|
qCWarning(vMainWindow, "%s", qUtf8Printable(tr("The method %1 does nothing in GUI mode").arg(Q_FUNC_INFO)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void MainWindow::ProcessCMD()
|
||||||
|
{
|
||||||
|
auto args = qApp->CommandLine()->OptInputFileNames();
|
||||||
|
|
||||||
|
//Before we load pattern show window.
|
||||||
|
if (VApplication::CheckGUI())
|
||||||
|
{
|
||||||
|
show();
|
||||||
|
ReopenFilesAfterCrash(args);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (args.size() != 1)
|
||||||
|
{
|
||||||
|
qCritical() << tr("Please, provide one input file.");
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i=0, sz = args.size(); i < sz; ++i)
|
||||||
|
{
|
||||||
|
const bool loaded = LoadPattern(args.at(static_cast<int>(i)), qApp->CommandLine()->OptMeasurePath());
|
||||||
|
|
||||||
|
if (not loaded && not VApplication::CheckGUI())
|
||||||
|
{
|
||||||
|
return; // process only one input file
|
||||||
|
}
|
||||||
|
|
||||||
|
if (qApp->CommandLine()->IsTestModeEnabled() || qApp->CommandLine()->IsExportEnabled())
|
||||||
|
{
|
||||||
|
if (qApp->CommandLine()->IsSetGradationSize())
|
||||||
|
{
|
||||||
|
SetSize(qApp->CommandLine()->OptGradationSize());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (qApp->CommandLine()->IsSetGradationHeight())
|
||||||
|
{
|
||||||
|
SetHeight(qApp->CommandLine()->OptGradationHeight());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (not qApp->CommandLine()->IsTestModeEnabled())
|
||||||
|
{
|
||||||
|
if (qApp->CommandLine()->IsExportEnabled())
|
||||||
|
{
|
||||||
|
if (loaded)
|
||||||
|
{
|
||||||
|
DoExport(qApp->CommandLine());
|
||||||
|
return; // process only one input file
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (not VApplication::CheckGUI())
|
||||||
|
{
|
||||||
|
qApp->exit(V_EX_OK);// close program after processing in console mode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -60,14 +60,9 @@ public:
|
||||||
explicit MainWindow(QWidget *parent = nullptr);
|
explicit MainWindow(QWidget *parent = nullptr);
|
||||||
virtual ~MainWindow() Q_DECL_OVERRIDE;
|
virtual ~MainWindow() Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
bool LoadPattern(const QString &curFile, const QString &customMeasureFile = QString());
|
|
||||||
void ReopenFilesAfterCrash(QStringList &args);
|
|
||||||
void DoExport(const VCommandLinePtr& expParams);
|
|
||||||
|
|
||||||
void SetSize(const QString &text);
|
|
||||||
void SetHeight(const QString & text);
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
void ProcessCMD();
|
||||||
|
|
||||||
void mouseMove(const QPointF &scenePos);
|
void mouseMove(const QPointF &scenePos);
|
||||||
void ArrowTool();
|
void ArrowTool();
|
||||||
|
|
||||||
|
@ -309,6 +304,13 @@ private:
|
||||||
|
|
||||||
QString RelativeMPath(const QString &patternPath, const QString &absoluteMPath) const;
|
QString RelativeMPath(const QString &patternPath, const QString &absoluteMPath) const;
|
||||||
QString AbsoluteMPath(const QString &patternPath, const QString &relativeMPath) const;
|
QString AbsoluteMPath(const QString &patternPath, const QString &relativeMPath) const;
|
||||||
|
|
||||||
|
bool LoadPattern(const QString &curFile, const QString &customMeasureFile = QString());
|
||||||
|
void ReopenFilesAfterCrash(QStringList &args);
|
||||||
|
void DoExport(const VCommandLinePtr& expParams);
|
||||||
|
|
||||||
|
void SetSize(const QString &text);
|
||||||
|
void SetHeight(const QString & text);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
|
|
@ -101,7 +101,7 @@ void MainWindowsNoGUI::ToolLayoutSettings(bool checked)
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void MainWindowsNoGUI::LayoutSettings(VLayoutGenerator& lGenerator)
|
bool MainWindowsNoGUI::LayoutSettings(VLayoutGenerator& lGenerator)
|
||||||
{
|
{
|
||||||
lGenerator.SetDetails(listDetails);
|
lGenerator.SetDetails(listDetails);
|
||||||
DialogLayoutProgress progress(listDetails.count(), this);
|
DialogLayoutProgress progress(listDetails.count(), this);
|
||||||
|
@ -135,14 +135,14 @@ void MainWindowsNoGUI::LayoutSettings(VLayoutGenerator& lGenerator)
|
||||||
isLayoutStale = false;
|
isLayoutStale = false;
|
||||||
break;
|
break;
|
||||||
case LayoutErrors::ProcessStoped:
|
case LayoutErrors::ProcessStoped:
|
||||||
break;
|
|
||||||
case LayoutErrors::PrepareLayoutError:
|
case LayoutErrors::PrepareLayoutError:
|
||||||
case LayoutErrors::EmptyPaperError:
|
case LayoutErrors::EmptyPaperError:
|
||||||
break;
|
return false;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void MainWindowsNoGUI::ErrorConsoleMode(const LayoutErrors &state)
|
void MainWindowsNoGUI::ErrorConsoleMode(const LayoutErrors &state)
|
||||||
|
@ -163,11 +163,10 @@ void MainWindowsNoGUI::ErrorConsoleMode(const LayoutErrors &state)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::exit(V_EX_DATAERR);
|
qApp->exit(V_EX_DATAERR);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
void MainWindowsNoGUI::ExportLayoutAs()
|
void MainWindowsNoGUI::ExportLayoutAs()
|
||||||
{
|
{
|
||||||
if (isLayoutStale)
|
if (isLayoutStale)
|
||||||
|
@ -177,6 +176,9 @@ void MainWindowsNoGUI::ExportLayoutAs()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
DialogSaveLayout dialog(scenes.size(), FileName(), this);
|
DialogSaveLayout dialog(scenes.size(), FileName(), this);
|
||||||
|
|
||||||
if (dialog.exec() == QDialog::Rejected)
|
if (dialog.exec() == QDialog::Rejected)
|
||||||
|
@ -185,6 +187,13 @@ void MainWindowsNoGUI::ExportLayoutAs()
|
||||||
}
|
}
|
||||||
|
|
||||||
ExportLayout(dialog);
|
ExportLayout(dialog);
|
||||||
|
}
|
||||||
|
catch (const VException &e)
|
||||||
|
{
|
||||||
|
qCritical("%s\n\n%s\n\n%s", qUtf8Printable(tr("Export error.")),
|
||||||
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,7 @@ protected:
|
||||||
virtual void CleanLayout()=0;
|
virtual void CleanLayout()=0;
|
||||||
virtual void PrepareSceneList()=0;
|
virtual void PrepareSceneList()=0;
|
||||||
QIcon ScenePreview(int i) const;
|
QIcon ScenePreview(int i) const;
|
||||||
void LayoutSettings(VLayoutGenerator& lGenerator);
|
bool LayoutSettings(VLayoutGenerator& lGenerator);
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(MainWindowsNoGUI)
|
Q_DISABLE_COPY(MainWindowsNoGUI)
|
||||||
|
|
||||||
|
|
|
@ -358,84 +358,66 @@ void VPattern::LiteParseTree(const Document &parse)
|
||||||
qCCritical(vXML, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error parsing file.")),
|
qCCritical(vXML, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error parsing file.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
emit SetEnabledGUI(false);
|
emit SetEnabledGUI(false);
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (const VExceptionConversionError &e)
|
catch (const VExceptionConversionError &e)
|
||||||
{
|
{
|
||||||
qCCritical(vXML, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error can't convert value.")),
|
qCCritical(vXML, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error can't convert value.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
emit SetEnabledGUI(false);
|
emit SetEnabledGUI(false);
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (const VExceptionEmptyParameter &e)
|
catch (const VExceptionEmptyParameter &e)
|
||||||
{
|
{
|
||||||
qCCritical(vXML, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error empty parameter.")),
|
qCCritical(vXML, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error empty parameter.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
emit SetEnabledGUI(false);
|
emit SetEnabledGUI(false);
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (const VExceptionWrongId &e)
|
catch (const VExceptionWrongId &e)
|
||||||
{
|
{
|
||||||
qCCritical(vXML, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error wrong id.")),
|
qCCritical(vXML, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error wrong id.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
emit SetEnabledGUI(false);
|
emit SetEnabledGUI(false);
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (VException &e)
|
catch (VException &e)
|
||||||
{
|
{
|
||||||
qCCritical(vXML, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error parsing file.")),
|
qCCritical(vXML, "%s\n\n%s\n\n%s", qUtf8Printable(tr("Error parsing file.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
emit SetEnabledGUI(false);
|
emit SetEnabledGUI(false);
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (const std::bad_alloc &)
|
catch (const std::bad_alloc &)
|
||||||
{
|
{
|
||||||
qCCritical(vXML, "%s", qUtf8Printable(tr("Error parsing file (std::bad_alloc).")));
|
qCCritical(vXML, "%s", qUtf8Printable(tr("Error parsing file (std::bad_alloc).")));
|
||||||
emit SetEnabledGUI(false);
|
emit SetEnabledGUI(false);
|
||||||
if (VApplication::CheckGUI())
|
if (not VApplication::CheckGUI())
|
||||||
{
|
{
|
||||||
|
qApp->exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
std::exit(V_EX_NOINPUT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Restore name current pattern piece
|
// Restore name current pattern piece
|
||||||
nameActivPP = namePP;
|
nameActivPP = namePP;
|
||||||
|
|
|
@ -63,6 +63,8 @@ VAbstractApplication::VAbstractApplication(int &argc, char **argv)
|
||||||
#endif // QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
|
#endif // QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
|
||||||
|
|
||||||
#endif // QT_VERSION < QT_VERSION_CHECK(5, 3, 0)
|
#endif // QT_VERSION < QT_VERSION_CHECK(5, 3, 0)
|
||||||
|
|
||||||
|
connect(this, &QApplication::aboutToQuit, this, &VAbstractApplication::SyncSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -135,6 +137,15 @@ double VAbstractApplication::fromPixel(double pix) const
|
||||||
return FromPixel(pix, _patternUnit);
|
return FromPixel(pix, _patternUnit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VAbstractApplication::SyncSettings()
|
||||||
|
{
|
||||||
|
// If try to use the method QApplication::exit program can't sync settings and show warning about QApplication
|
||||||
|
// instance. Solution is to call sync() before quit.
|
||||||
|
// Connect this slot with VApplication::aboutToQuit.
|
||||||
|
Settings()->sync();
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VAbstractApplication::LoadTranslation(const QString &locale)
|
void VAbstractApplication::LoadTranslation(const QString &locale)
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,7 @@ class QUndoStack;
|
||||||
|
|
||||||
class VAbstractApplication : public QApplication
|
class VAbstractApplication : public QApplication
|
||||||
{
|
{
|
||||||
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
VAbstractApplication(int &argc, char ** argv);
|
VAbstractApplication(int &argc, char ** argv);
|
||||||
virtual ~VAbstractApplication() Q_DECL_OVERRIDE;
|
virtual ~VAbstractApplication() Q_DECL_OVERRIDE;
|
||||||
|
@ -92,6 +93,9 @@ public:
|
||||||
|
|
||||||
QUndoStack *getUndoStack() const;
|
QUndoStack *getUndoStack() const;
|
||||||
|
|
||||||
|
protected slots:
|
||||||
|
void SyncSettings();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QUndoStack *undoStack;
|
QUndoStack *undoStack;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user