Add initial project structure with essential files including .gitignore, application resources, and various model and view components for the application. Implemented asynchronous parsing support and database structure checks.

This commit is contained in:
2025-12-08 15:21:18 +03:00
parent 4f8c90c15b
commit 3467003721
110 changed files with 35406 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
#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();
}