DiagramDesigner/diagramCavas/include/diagramEditor/editPanel.h

95 lines
3.3 KiB
C
Raw Normal View History

2025-05-30 16:28:51 +08:00
#ifndef EDITPANEL_H
#define EDITPANEL_H
//编辑文本项生成组态图
#include <QWidget>
#include <QPointer>
2025-05-30 16:28:51 +08:00
#include "global.h"
class EditView;
class EditScene;
class QVBoxLayout;
//class QGraphicsGridLayout;
class QGraphicsLinearLayout;
class QPushButton;
class EditMainRect;
class EditRowData;
class EditContainerItem;
class DiagramEditorWizard;
class DiagramEditorBaseBlock;
class EditBaseItem;
2025-08-15 18:21:20 +08:00
class DiagramEditorBayDetailSettingDlg;
2025-09-05 17:30:07 +08:00
class DiagramEditorTransDetailSettingDlg;
class DiagramEditorModel;
2025-09-12 17:28:47 +08:00
class DiagramEditorPreviewDlg;
2025-09-26 18:50:21 +08:00
class ConfirmEditorDlg;
2025-10-24 21:11:07 +08:00
class DiagramCavas;
2025-05-30 16:28:51 +08:00
class EditPanel : public QWidget
{
Q_OBJECT
public:
EditPanel(QWidget *parent = nullptr);
~EditPanel();
2025-07-31 19:38:06 +08:00
void initByWizardInfo();
void initBlockConnection(); //初始化block之间的连接信息
2025-09-12 17:28:47 +08:00
void showPreview(); //展示预览
2025-10-30 17:20:10 +08:00
void showConfirmDlg(); //展示确认对话框 bool:保存后是否生成
void generate();
2025-10-24 21:11:07 +08:00
void showWizard();
2025-09-05 17:30:07 +08:00
DiagramEditorModel* getModel() {return _pModel;}
EditScene* getScene() {return m_pEditScene;}
QList<EditBaseItem*> getBlockItems(EditorItemType typ = EditorItemType::none); //返回block对应的item,如母线,间隔,变压器, none返回所有类型
2025-09-26 18:50:21 +08:00
void setProjectName(const QString& s){_projectName = s;};
QString getProjectName(){return _projectName;}
2025-10-24 21:11:07 +08:00
void setUuid(QUuid uid) {_uid = uid;}
QUuid getUuid() {return _uid;}
void setCavas(QPointer<DiagramCavas> p){_pCavas = p;}
2025-10-30 17:20:10 +08:00
void setTag(const QString& s){_tagName = s;}
QString getTag(){return _tagName;}
2025-10-24 21:11:07 +08:00
QPointer<DiagramCavas> getCavas(){return _pCavas;}
void prepareSaveEditor(); //准备保存
2025-10-30 17:20:10 +08:00
void loadBaseSetting(QUuid);
2025-05-30 16:28:51 +08:00
public slots:
void onWidthChanged(int width);
void onContainerSizeChanged(EditContainerItem*); //容器大小改变时调整内部大小
2025-08-15 18:21:20 +08:00
void onItemDbClicked(QPointer<DiagramEditorBaseBlock>); //item双击事件
2025-05-30 16:28:51 +08:00
private:
void initial();
void calculateContainerWidth(EditContainerItem*); //根据间隔数量计算容器宽度 todo:区分上下间隔
int getContainerBusType(QMap<int,QList<DiagramEditorBaseBlock*>>); //返回容器中母线类型(单双)
EditBaseItem* getItemByName(const QString&); //根据名称获取指定item
2025-10-30 17:20:10 +08:00
signals:
void panelDelete(const QString&,int);
protected:
void closeEvent(QCloseEvent *closeEvent);
2025-05-30 16:28:51 +08:00
private:
EditView* m_pEditView;
EditScene* m_pEditScene;
QVBoxLayout* _layout;
EditMainRect* _mainWidget;
2025-08-15 18:21:20 +08:00
DiagramEditorBayDetailSettingDlg* _bayDetailSetting;
2025-09-05 17:30:07 +08:00
DiagramEditorTransDetailSettingDlg* _transDetailSetting;
2025-05-30 16:28:51 +08:00
QGraphicsLinearLayout* _widgetLayout;
QGraphicsProxyWidget* m_addBtnPro;
int _maxWidth;
int _maxHeight;
QList<EditRowData*> _lstData;
QMap<int,QMap<int,EditContainerItem*>> _mapStruct;
DiagramEditorModel* _pModel;
2025-09-12 17:28:47 +08:00
DiagramEditorPreviewDlg* _pPreview;
2025-09-26 18:50:21 +08:00
ConfirmEditorDlg* _confirmEditor;
2025-10-30 17:20:10 +08:00
QString _tagName; //显示的名称(load后新建不用)
2025-09-26 18:50:21 +08:00
QString _projectName;
2025-10-24 21:11:07 +08:00
QUuid _uid;
2025-10-30 17:20:10 +08:00
QString _author;
QString _timeStamp;
2025-10-24 21:11:07 +08:00
DiagramEditorWizard* _pEditorWizard;
QPointer<DiagramCavas> _pCavas; //顶层界面容器
2025-05-30 16:28:51 +08:00
};
#endif