79 lines
3.1 KiB
C++
79 lines
3.1 KiB
C++
#include <QApplication>
|
|
#include <QDir>
|
|
#include <QStandardPaths>
|
|
#include <QMessageBox>
|
|
#include <QTranslator>
|
|
#include <QLocale>
|
|
#include <QLibraryInfo>
|
|
#include <QTimer>
|
|
#include <QFileInfo>
|
|
|
|
#include "view/mainwindow.h"
|
|
#include "controller/maincontroller.h"
|
|
#include "controller/altiumparser.h"
|
|
#include "controller/databasecontroller.h"
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
QApplication app(argc, argv);
|
|
|
|
// Настройка информации о приложении
|
|
app.setApplicationName("GostGenerator");
|
|
app.setApplicationVersion("1.0.0");
|
|
app.setOrganizationName("Your Organization");
|
|
app.setOrganizationDomain("yourdomain.com");
|
|
|
|
// Настройка переводов
|
|
QTranslator translator;
|
|
const QStringList uiLanguages = QLocale::system().uiLanguages();
|
|
for (const QString &locale : uiLanguages) {
|
|
const QString baseName = "GostGenerator_" + QLocale(locale).name();
|
|
if (translator.load(":/i18n/" + baseName)) {
|
|
app.installTranslator(&translator);
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Создание контроллера
|
|
MainController controller;
|
|
|
|
// Инициализация глобальной базы данных для настроек
|
|
if (!controller.initializeGlobalDatabase()) {
|
|
QMessageBox::critical(nullptr, QObject::tr("Ошибка"),
|
|
QObject::tr("Не удалось инициализировать глобальную базу данных: %1")
|
|
.arg(controller.lastError()));
|
|
return -1;
|
|
}
|
|
|
|
// Создание главного окна
|
|
MainWindow window(&controller);
|
|
window.show();
|
|
|
|
// Подключение сигналов
|
|
QObject::connect(&controller, &MainController::databaseError,
|
|
&window, [&window](const QString &error) {
|
|
QMessageBox::critical(&window, QObject::tr("Ошибка БД"), error);
|
|
});
|
|
|
|
// Обработка аргументов командной строки (открытие файла проекта)
|
|
QStringList args = app.arguments();
|
|
if (args.size() > 1) {
|
|
// Первый аргумент - это имя исполняемого файла, остальные - файлы для открытия
|
|
for (int i = 1; i < args.size(); ++i) {
|
|
QString filePath = args[i];
|
|
QFileInfo fileInfo(filePath);
|
|
|
|
// Проверяем, что это файл проекта
|
|
if (fileInfo.exists() && (fileInfo.suffix().toLower() == "pdfprj" || fileInfo.suffix().toLower() == "db")) {
|
|
// Используем QTimer для отложенного открытия, чтобы окно успело полностью инициализироваться
|
|
QTimer::singleShot(100, [&window, filePath]() {
|
|
window.openProjectFile(filePath);
|
|
});
|
|
break; // Открываем только первый файл проекта
|
|
}
|
|
}
|
|
}
|
|
|
|
return app.exec();
|
|
}
|