/************************************************************************ ** ** @file vabstractapplication.cpp ** @author Roman Telezhynskyi ** @date 18 6, 2015 ** ** @brief ** @copyright ** This source code is part of the Valentine project, a pattern making ** program, whose allow create and modeling patterns of clothing. ** Copyright (C) 2015 Valentina project ** All Rights Reserved. ** ** Valentina is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** Valentina is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with Valentina. If not, see . ** *************************************************************************/ #include "vabstractapplication.h" #include "../vmisc/def.h" #include //--------------------------------------------------------------------------------------------------------------------- VAbstractApplication::VAbstractApplication(int &argc, char **argv) :QApplication(argc, argv), undoStack(nullptr), mainWindow(nullptr), settings(nullptr), qtTranslator(nullptr), qtxmlTranslator(nullptr), appTranslator(nullptr), pmsTranslator(nullptr), _patternUnit(Unit::Cm), _patternType(MeasurementsType::Individual), currentScene(nullptr), sceneView(nullptr), doc(nullptr), openingPattern(false) { #if QT_VERSION < QT_VERSION_CHECK(5, 3, 0) #if QT_VERSION < QT_VERSION_CHECK(5, 2, 0) // Qt < 5.2 didn't feature categorized logging // Do nothing #else // In Qt 5.2 need manualy enable debug information for categories. This work // because Qt doesn't provide debug information for categories itself. And in this // case will show our messages. Another situation with Qt 5.3 that has many debug // messages itself. We don't need this information and can turn on later if need. // But here Qt already show our debug messages without enabling. QLoggingCategory::setFilterRules("*.debug=true\n"); #endif // QT_VERSION < QT_VERSION_CHECK(5, 2, 0) #endif // QT_VERSION < QT_VERSION_CHECK(5, 3, 0) connect(this, &QApplication::aboutToQuit, this, &VAbstractApplication::SyncSettings); } //--------------------------------------------------------------------------------------------------------------------- VAbstractApplication::~VAbstractApplication() {} //--------------------------------------------------------------------------------------------------------------------- Unit VAbstractApplication::patternUnit() const { return _patternUnit; } //--------------------------------------------------------------------------------------------------------------------- const Unit *VAbstractApplication::patternUnitP() const { return &_patternUnit; } //--------------------------------------------------------------------------------------------------------------------- void VAbstractApplication::setPatternUnit(const Unit &patternUnit) { _patternUnit = patternUnit; } //--------------------------------------------------------------------------------------------------------------------- /** * @brief getSettings hide settings constructor. * @return pointer to class for acssesing to settings in ini file. */ VCommonSettings *VAbstractApplication::Settings() { SCASSERT(settings != nullptr); return settings; } //--------------------------------------------------------------------------------------------------------------------- QGraphicsScene *VAbstractApplication::getCurrentScene() const { SCASSERT(currentScene != nullptr); return currentScene; } //--------------------------------------------------------------------------------------------------------------------- void VAbstractApplication::setCurrentScene(QGraphicsScene *value) { currentScene = value; } //--------------------------------------------------------------------------------------------------------------------- VMainGraphicsView *VAbstractApplication::getSceneView() const { return sceneView; } //--------------------------------------------------------------------------------------------------------------------- void VAbstractApplication::setSceneView(VMainGraphicsView *value) { sceneView = value; } //--------------------------------------------------------------------------------------------------------------------- double VAbstractApplication::toPixel(double val) const { return ToPixel(val, _patternUnit); } //--------------------------------------------------------------------------------------------------------------------- double VAbstractApplication::fromPixel(double pix) const { 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) { if (locale.isEmpty()) { qDebug()<<"Locale is empty."; return; } qDebug()<<"Checked locale:"<load("qt_" + locale, translationsPath()); #else qtTranslator->load("qt_" + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath)); #endif installTranslator(qtTranslator); qtxmlTranslator = new QTranslator(this); #if defined(Q_OS_WIN) qtxmlTranslator->load("qtxmlpatterns_" + locale, translationsPath()); #else qtxmlTranslator->load("qtxmlpatterns_" + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath)); #endif installTranslator(qtxmlTranslator); appTranslator = new QTranslator(this); appTranslator->load("valentina_" + locale, translationsPath()); installTranslator(appTranslator); const QString system = Settings()->GetPMSystemCode(); pmsTranslator = new QTranslator(this); pmsTranslator->load("measurements_" + system + "_" + locale, translationsPath()); installTranslator(pmsTranslator); InitTrVars();//Very important do it after load QM files. } //--------------------------------------------------------------------------------------------------------------------- void VAbstractApplication::ClearTranslation() { if (not qtTranslator.isNull()) { removeTranslator(qtTranslator); delete qtTranslator; } if (not qtxmlTranslator.isNull()) { removeTranslator(qtxmlTranslator); delete qtxmlTranslator; } if (not appTranslator.isNull()) { removeTranslator(appTranslator); delete appTranslator; } if (not pmsTranslator.isNull()) { removeTranslator(pmsTranslator); delete pmsTranslator; } }