Files
GostGenerator/main.cpp
T

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();
}