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