Files
GostGenerator/controller/specificationcontroller.h
T

102 lines
4.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef SPECIFICATIONCONTROLLER_H
#define SPECIFICATIONCONTROLLER_H
#include <QObject>
#include <QList>
#include <QStringList>
#include "../model/specificationtablemodel.h"
#include "../model/designatormappingmodel.h"
#include "../model/projectsettingsmodel.h"
class PCBMaterialModel;
class MainController;
class SpecificationController : public QObject
{
Q_OBJECT
public:
explicit SpecificationController(QObject *parent = nullptr);
~SpecificationController();
// Получение модели для отображения в UI
SpecificationTableModel* getTableModel() const { return m_tableModel; }
SpecificationTableModel* getModel() const { return m_tableModel; } // Алиас для совместимости
// Методы для работы с материалами
void setMaterials(const QList<PCBMaterialModel*> &materials);
void setPCBMaterialModel(PCBMaterialModel* model);
void generateTableFromMaterials();
void updateTableFromMaterials(); // Метод для обновления таблицы по кнопке
// Новые методы для управления строками
void addEmptyRow();
void addEmptyRowAt(int position);
void insertEmptyRowAt(int position); // Вставка строки в определенную позицию
void removeRow(int row);
void clearTable();
// Методы для работы с настройками
void setColumnMappings(const QStringList &mappings);
QStringList getColumnMappings() const;
QStringList getAvailableProperties() const;
// Метод для установки модели маппинга дезигнаторов
void setDesignatorMappingModel(DesignatorMappingModel *mappingModel);
// Метод для установки модели таблицы (для интеграции с SpecificationProcessor)
void setModel(SpecificationTableModel *model);
// Метод для установки модели настроек проекта
void setProjectSettingsModel(ProjectSettingsModel *model);
void setMainController(MainController *controller);
// Метод для оптимизации разрывов страниц
void optimizePageBreaks();
// Методы для работы с размером шрифта
int getFontSize() const;
void setFontSize(int fontSize);
int getFontStretch() const;
void setFontStretch(int stretch);
// Методы для работы с децимальными номерами
QString getDecimalNumberBoard() const;
void setDecimalNumberBoard(const QString &value);
QString getDecimalNumberDocument() const;
void setDecimalNumberDocument(const QString &value);
private:
QString getMaterialValue(PCBMaterialModel *material, const QString &propertyName);
QString parseExpression(PCBMaterialModel *material, const QString &expression);
QString formatDielType(int dielType);
QStringList collectPropertyNames();
// Методы для группировки
QString getMaterialType(PCBMaterialModel *material);
// Метод для разделения десигнатора на буквенную и цифровую части
QPair<QString, QString> splitDesignator(const QString &designator);
// Метод для разделения длинных наименований на несколько строк
QList<QString> splitLongDesignation(const QString &designation, const QString originalString="", PCBMaterialModel *material = nullptr, int maxLength = 60);
// Вспомогательный метод для разделения текста по пробелам
QList<QString> splitBySpaces(const QString &text, int maxLength);
// Методы для специфичной логики спецификации
QString getMaterialFormat(PCBMaterialModel *material);
QString getMaterialZone(PCBMaterialModel *material);
QString getMaterialPosition(PCBMaterialModel *material);
SpecificationTableModel *m_tableModel;
DesignatorMappingModel *m_designatorMappingModel;
ProjectSettingsModel *m_projectSettingsModel;
MainController *m_mainController;
QList<PCBMaterialModel*> m_materials;
PCBMaterialModel *m_pcbMaterialModel;
QStringList m_columnMappings;
QStringList m_propertyNames;
};
#endif // SPECIFICATIONCONTROLLER_H