#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include "../controller/maincontroller.h" #include "editpdfwidget.h" #include "previewpdfwidget.h" #include "importeddataview.h" #include #include #include #include #include #include #include #include #include class VedomostTableModel; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(MainController* controller,QWidget *parent = nullptr); ~MainWindow(); // Метод для открытия проекта по пути (используется из командной строки) void openProjectFile(const QString &filePath); protected: void closeEvent(QCloseEvent *event) override; private: void setUp(); void setWidgets(); void setUpLayout(); void setUpConnections(); void updateWindowTitle(); bool askForSave(); void disableInterfaceExceptProjectActions(); void enableInterface(); void updateStatusBar(); void updateViewMenuState(); MainController* m_controller; QString m_currentProjectPath; EditPDFWidget* m_editWidget; PreviewPdfWidget* m_pdfWidget; ImportedDataView* m_dataView; QDockWidget *m_dataPanelDockWidget; QDockWidget *m_pdfPanelDockWidget; QToolBar *m_toolBar; QToolBar *m_toolBar2; QWidget *m_centralWidget; QStatusBar *m_statusBar; QMenuBar *m_menuBar; QMenu *m_fileMenu; QMenu *m_exportMenu; QMenu *m_viewMenu; QMenu *m_helpMenu; // Элементы для асинхронного парсинга QProgressBar *m_progressBar; QAction *m_cancelParsingAction; bool m_isParsing; private slots: void onHelpAbout(); void onHelpManual(); void onFileNew(); void onFileOpen(); bool onFileSave(); void onFileSaveAs(); void onFileImportAltium(); void onProjectSettings(); void onFileExit(); void onExportSpecification(); void onExportPerechen(); void onExportPurchaseList(); void onExportSpecificationPcb(); void onExportAll(); void onExportSpecificationToCsv(); void onExportPerechenToCsv(); void onExportPurchaseListToCsv(); void onExportSpecificationPcbToCsv(); void onExportSimpleListToCsv(); void onUndo(); void onRedo(); // Слоты для управления видом void onViewDataPanel(); void onViewPdfPreview(); void onViewResetLayout(); // Слоты для асинхронного парсинга void onParsingStarted(); void onParsingFinished(bool success); void onParsingProgress(int percentage); void onParsingError(const QString &error); // Метод для получения модели перечня элементов (для экспорта) PerechenTableModel* getPerechenTableModel() const; }; #endif // MAINWINDOW_H