DiagramDesigner/diagramCavas/include/diagramEditor/editPanel.h

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