add bay editor
This commit is contained in:
parent
056aede24b
commit
38c8bc51e3
|
|
@ -27,6 +27,61 @@ protected:
|
||||||
QJsonObject jContext; //存放port信息
|
QJsonObject jContext; //存放port信息
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class BayProperty:public AbstractProperty //间隔属性(待扩展)
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
BayProperty(QObject* parent)
|
||||||
|
:AbstractProperty(parent){
|
||||||
|
}
|
||||||
|
virtual ~BayProperty(){};
|
||||||
|
public:
|
||||||
|
virtual void setType(QString s) {sType = s;}
|
||||||
|
virtual QString getType(){return sType;}
|
||||||
|
virtual void setLstComponent(QList<QUuid> lst) {lstComponent = lst;}
|
||||||
|
virtual QList<QUuid>& getLstComponent() {return lstComponent;}
|
||||||
|
virtual void setVoltage(double d) {dVoltage = d;}
|
||||||
|
virtual double getVoltage() {return dVoltage;}
|
||||||
|
virtual void setFla(double d) {dFla = d;}
|
||||||
|
virtual double getFla() {return dFla;}
|
||||||
|
virtual void setCapacity(double d) {dCapacity = d;}
|
||||||
|
virtual double getCapacity() {return dCapacity;}
|
||||||
|
virtual void setInService(bool b) {bInService = b;}
|
||||||
|
virtual bool getInService() {return bInService;}
|
||||||
|
virtual void setLstFrom(QList<QUuid> lst) {lstFrom = lst;}
|
||||||
|
virtual QList<QUuid>& getLstFrom() {return lstFrom;}
|
||||||
|
virtual void setLstTo(QList<QUuid> lst) {lstTo = lst;}
|
||||||
|
virtual QList<QUuid>& getLstTo() {return lstTo;}
|
||||||
|
virtual void setLstProtect(QList<QUuid> lst) {lstProtect = lst;}
|
||||||
|
virtual QList<QUuid>& getLstProtect() {return lstProtect;}
|
||||||
|
virtual void setLstFaultRecord(QList<QUuid> lst) {lstFaultRecord = lst;}
|
||||||
|
virtual QList<QUuid>& getLstFaultRecord() {return lstFaultRecord;}
|
||||||
|
virtual void setLstDynSense(QList<QUuid> lst) {lstDynSense = lst;}
|
||||||
|
virtual QList<QUuid>& getLstDynSense() {return lstDynSense;}
|
||||||
|
virtual void setLstStatus(QList<QUuid> lst) {lstStatus = lst;}
|
||||||
|
virtual QList<QUuid>& getLstStatus() {return lstStatus;}
|
||||||
|
virtual void setLstInstruct(QList<QUuid> lst) {lstInstruct = lst;}
|
||||||
|
virtual QList<QUuid>& getLstInstruct() {return lstInstruct;}
|
||||||
|
virtual void setLstEtc(QList<QUuid> lst) {lstEtc = lst;}
|
||||||
|
virtual QList<QUuid>& getLstEtc() {return lstEtc;}
|
||||||
|
protected:
|
||||||
|
QString sType;
|
||||||
|
QList<QUuid> lstComponent; //包含的设备
|
||||||
|
double dVoltage; //电压
|
||||||
|
double dFla; //电流
|
||||||
|
double dCapacity; //容量
|
||||||
|
bool bInService; //服役状态
|
||||||
|
QList<QUuid> lstFrom; //联结 从
|
||||||
|
QList<QUuid> lstTo; //联结到
|
||||||
|
|
||||||
|
QList<QUuid> lstProtect; //综合保护
|
||||||
|
QList<QUuid> lstFaultRecord; //故障录播
|
||||||
|
QList<QUuid> lstDynSense; //动态感知
|
||||||
|
QList<QUuid> lstStatus; //状态检测
|
||||||
|
QList<QUuid> lstInstruct; //监控
|
||||||
|
QList<QUuid> lstEtc; //其他设备
|
||||||
|
};
|
||||||
|
|
||||||
class ModelProperty:public AbstractProperty //模型基类
|
class ModelProperty:public AbstractProperty //模型基类
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
@ -47,9 +102,12 @@ public:
|
||||||
bool prepareDelete() const {return _prepareDelete;}
|
bool prepareDelete() const {return _prepareDelete;}
|
||||||
void setDataChanged(bool b) {_dataChanged = b;} //数据变换标签
|
void setDataChanged(bool b) {_dataChanged = b;} //数据变换标签
|
||||||
bool dataChanged() const {return _dataChanged;}
|
bool dataChanged() const {return _dataChanged;}
|
||||||
|
void setConnection(Connection con){m_connectState = con;} //保留,用以获取当前图中的连接
|
||||||
|
Connection getConnection() const {return m_connectState;}
|
||||||
signals:
|
signals:
|
||||||
void updateData(); //通知数据拥有者更新
|
void updateData(); //通知数据拥有者更新
|
||||||
protected:
|
protected:
|
||||||
|
Connection m_connectState;
|
||||||
int nType; //设备类型
|
int nType; //设备类型
|
||||||
int nGraphicsType;
|
int nGraphicsType;
|
||||||
QString sModelName; //模型名
|
QString sModelName; //模型名
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ enum GraphicsItemType
|
||||||
GIT_itemRect = QGraphicsItem::UserType + 51,
|
GIT_itemRect = QGraphicsItem::UserType + 51,
|
||||||
GIT_itemTri = QGraphicsItem::UserType + 52,
|
GIT_itemTri = QGraphicsItem::UserType + 52,
|
||||||
GIT_link= QGraphicsItem::UserType + 53,
|
GIT_link= QGraphicsItem::UserType + 53,
|
||||||
|
GIT_bay= QGraphicsItem::UserType + 54, //间隔
|
||||||
//======================================
|
//======================================
|
||||||
GIT_baseBus = QGraphicsItem::UserType + 200,
|
GIT_baseBus = QGraphicsItem::UserType + 200,
|
||||||
GIT_baseLine = QGraphicsItem::UserType + 201,
|
GIT_baseLine = QGraphicsItem::UserType + 201,
|
||||||
|
|
@ -53,6 +54,7 @@ class corresbondItem //类型关联函数
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static QMap<AbstractItemType,GraphicsItemType> linkType;
|
static QMap<AbstractItemType,GraphicsItemType> linkType;
|
||||||
|
static QMap<int,GraphicsItemType> typeToProGraphic;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum DiagramMode //组态图模式
|
enum DiagramMode //组态图模式
|
||||||
|
|
@ -457,6 +459,10 @@ struct Connection
|
||||||
srcPos = P_top;
|
srcPos = P_top;
|
||||||
destType = T_none;
|
destType = T_none;
|
||||||
destPos = P_top;
|
destPos = P_top;
|
||||||
|
nSrcNodeId = QUuid();
|
||||||
|
nSrcPortId = QUuid();
|
||||||
|
nDestNodeId = QUuid();
|
||||||
|
nDestPortId = QUuid();
|
||||||
}
|
}
|
||||||
|
|
||||||
Connection(const Connection& obj)
|
Connection(const Connection& obj)
|
||||||
|
|
@ -484,12 +490,12 @@ struct Connection
|
||||||
}
|
}
|
||||||
bool operator==(const Connection& obj)
|
bool operator==(const Connection& obj)
|
||||||
{
|
{
|
||||||
return ((obj.nSrcNodeId == nSrcNodeId)&&(obj.nSrcPortId == nSrcPortId)&&(obj.srcType == srcType)&&(obj.nDestNodeId == nDestNodeId)&&(obj.nDestPortId == nDestPortId)&&(obj.destType == destType));
|
return ((nSrcNodeId == obj.nSrcNodeId)&&(nSrcPortId == obj.nSrcPortId)&&(srcType == obj.srcType)&&(nDestNodeId == obj.nDestNodeId)&&(nDestPortId == obj.nDestPortId)&&(destType == obj.destType));
|
||||||
}
|
}
|
||||||
|
|
||||||
Connection& operator=(const Connection& obj)
|
Connection& operator=(const Connection& obj)
|
||||||
{
|
{
|
||||||
if(*this == obj)
|
if(this == &obj)
|
||||||
return *this;
|
return *this;
|
||||||
nSrcNodeId = obj.nSrcNodeId;
|
nSrcNodeId = obj.nSrcNodeId;
|
||||||
nSrcPortId = obj.nSrcPortId;
|
nSrcPortId = obj.nSrcPortId;
|
||||||
|
|
|
||||||
|
|
@ -3,3 +3,6 @@
|
||||||
QMap<AbstractItemType,GraphicsItemType> corresbondItem::linkType = {
|
QMap<AbstractItemType,GraphicsItemType> corresbondItem::linkType = {
|
||||||
{AIT_motor,GIT_itemRect},{AIT_bus,GIT_bus},
|
{AIT_motor,GIT_itemRect},{AIT_bus,GIT_bus},
|
||||||
};
|
};
|
||||||
|
QMap<int,GraphicsItemType> corresbondItem::typeToProGraphic = {
|
||||||
|
{1,GIT_bus},{3,GIT_itemRect},{8,GIT_link}
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ set(DIAGRAMCAVAS_HEADER_FILES
|
||||||
include/graphicsItem/handleText.h
|
include/graphicsItem/handleText.h
|
||||||
include/graphicsItem/itemControlHandle.h
|
include/graphicsItem/itemControlHandle.h
|
||||||
include/graphicsItem/itemPort.h
|
include/graphicsItem/itemPort.h
|
||||||
|
include/graphicsItem/electricBayItem.h
|
||||||
include/baseModelItem/electricBaseModelSvgItem.h
|
include/baseModelItem/electricBaseModelSvgItem.h
|
||||||
include/baseModelItem/electricBaseModelLineItem.h
|
include/baseModelItem/electricBaseModelLineItem.h
|
||||||
include/baseModelItem/electricBaseModelSvgBus.h
|
include/baseModelItem/electricBaseModelSvgBus.h
|
||||||
|
|
@ -117,6 +118,7 @@ set(DIAGRAMCAVAS_SOURCE_FILES
|
||||||
source/graphicsItem/handleText.cpp
|
source/graphicsItem/handleText.cpp
|
||||||
source/graphicsItem/itemControlHandle.cpp
|
source/graphicsItem/itemControlHandle.cpp
|
||||||
source/graphicsItem/itemPort.cpp
|
source/graphicsItem/itemPort.cpp
|
||||||
|
source/graphicsItem/electricBayItem.cpp
|
||||||
source/baseModelItem/electricBaseModelSvgItem.cpp
|
source/baseModelItem/electricBaseModelSvgItem.cpp
|
||||||
source/baseModelItem/electricBaseModelLineItem.cpp
|
source/baseModelItem/electricBaseModelLineItem.cpp
|
||||||
source/baseModelItem/electricBaseModelSvgBus.cpp
|
source/baseModelItem/electricBaseModelSvgBus.cpp
|
||||||
|
|
@ -133,6 +135,7 @@ set(DIAGRAMCAVAS_SOURCE_FILES
|
||||||
../common/source/httpInterface.cpp
|
../common/source/httpInterface.cpp
|
||||||
../common/source/baseProperty.cpp
|
../common/source/baseProperty.cpp
|
||||||
../common/source/tools.cpp
|
../common/source/tools.cpp
|
||||||
|
../common/source/global.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(UI_FILES
|
set(UI_FILES
|
||||||
|
|
|
||||||
|
|
@ -20,15 +20,11 @@ public:
|
||||||
void calculatePath();
|
void calculatePath();
|
||||||
void resetCurLine(){_curLine = QPoint();}
|
void resetCurLine(){_curLine = QPoint();}
|
||||||
|
|
||||||
void setConnection(Connection con){m_connectState = con;}
|
|
||||||
Connection getConnection() const {return m_connectState;}
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual QPainterPath shape() const override;
|
virtual QPainterPath shape() const override;
|
||||||
virtual QRectF boundingRect() const override;
|
virtual QRectF boundingRect() const override;
|
||||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||||
private:
|
private:
|
||||||
Connection m_connectState;
|
|
||||||
QPainterPath m_points;
|
QPainterPath m_points;
|
||||||
QPainterPath m_pointsBoundingRect; //包裹点的矩形集合
|
QPainterPath m_pointsBoundingRect; //包裹点的矩形集合
|
||||||
QList<QPointF> m_lstPoints;
|
QList<QPointF> m_lstPoints;
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ public:
|
||||||
auto& getValidType() {return _validType;} //获取可用的量测属性
|
auto& getValidType() {return _validType;} //获取可用的量测属性
|
||||||
void setUi();
|
void setUi();
|
||||||
void addMeasure(MeasurementInfo);
|
void addMeasure(MeasurementInfo);
|
||||||
|
void addOtherMeasure(QStringList); //本间隔的其他量测
|
||||||
public slots:
|
public slots:
|
||||||
void onAddClicked();
|
void onAddClicked();
|
||||||
void onDeleteClicked();
|
void onDeleteClicked();
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@ QT_BEGIN_NAMESPACE
|
||||||
namespace Ui { class bayManagerContentDlg; }
|
namespace Ui { class bayManagerContentDlg; }
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
class BayProperty;
|
||||||
|
|
||||||
class BayManagerContentDlg : public QDialog
|
class BayManagerContentDlg : public QDialog
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
@ -17,11 +19,13 @@ public:
|
||||||
~BayManagerContentDlg();
|
~BayManagerContentDlg();
|
||||||
|
|
||||||
void initial();
|
void initial();
|
||||||
void setName(const QString& s) {_sBayName = s;}
|
void setProperty(BayProperty* p) {_pData = p;}
|
||||||
QString name() {return _sBayName;}
|
BayProperty* getProperty() {return _pData;}
|
||||||
|
void updateByProperty(); //根据数据更新显示
|
||||||
|
void saveSetting(); //保存修改
|
||||||
private:
|
private:
|
||||||
Ui::bayManagerContentDlg *ui;
|
Ui::bayManagerContentDlg *ui;
|
||||||
QString _sBayName; //每页的间隔名称
|
BayProperty* _pData;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
#define BAYMANAGERDLG_H
|
#define BAYMANAGERDLG_H
|
||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
#include <qlistwidget.h>
|
||||||
/*******************************************************
|
/*******************************************************
|
||||||
间隔管理
|
间隔管理
|
||||||
********************************************************/
|
********************************************************/
|
||||||
|
|
@ -10,6 +11,8 @@ namespace Ui { class bayManagerDlg; }
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
class BayManagerContentDlg;
|
class BayManagerContentDlg;
|
||||||
|
class FixedPortsModel;
|
||||||
|
class BayProperty;
|
||||||
|
|
||||||
class BayManagerDlg : public QDialog
|
class BayManagerDlg : public QDialog
|
||||||
{
|
{
|
||||||
|
|
@ -20,14 +23,18 @@ public:
|
||||||
|
|
||||||
void initial();
|
void initial();
|
||||||
void showDlg();
|
void showDlg();
|
||||||
|
void initData();
|
||||||
void clearData(); //切换打开文件时调用
|
void clearData(); //切换打开文件时调用
|
||||||
|
void setModelController(FixedPortsModel* p) {_modelController = p;}
|
||||||
public slots:
|
public slots:
|
||||||
void onOkClicked();
|
void onOkClicked();
|
||||||
void onCancelClicked();
|
void onCancelClicked();
|
||||||
|
void onListItemClicked(QListWidgetItem *item);
|
||||||
private:
|
private:
|
||||||
void generatePage(QStringList); //生成间隔页 <间隔列表>
|
void generatePage(QList<BayProperty*>); //生成间隔页 <间隔列表>
|
||||||
private:
|
private:
|
||||||
Ui::bayManagerDlg *ui;
|
Ui::bayManagerDlg *ui;
|
||||||
|
FixedPortsModel* _modelController;
|
||||||
QMap<int,BayManagerContentDlg*> _contentData; //<stack index,bay page>
|
QMap<int,BayManagerContentDlg*> _contentData; //<stack index,bay page>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,8 @@ public slots:
|
||||||
EditPanel* onSignal_addEditPanel(QString);
|
EditPanel* onSignal_addEditPanel(QString);
|
||||||
void onSignal_addEditWizard(QString);
|
void onSignal_addEditWizard(QString);
|
||||||
void onSignal_wizardFinished(DiagramEditorWizardInfo);
|
void onSignal_wizardFinished(DiagramEditorWizardInfo);
|
||||||
|
/*********************************间隔**************************************/
|
||||||
|
void onSignl_openCurrentBay();
|
||||||
private:
|
private:
|
||||||
void removePanel(PowerEntity*);
|
void removePanel(PowerEntity*);
|
||||||
private:
|
private:
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ class GraphicsItemGroup;
|
||||||
class StatusBar;
|
class StatusBar;
|
||||||
class PowerEntity;
|
class PowerEntity;
|
||||||
class ProjectDiagramNameInput;
|
class ProjectDiagramNameInput;
|
||||||
|
class BayManagerDlg;
|
||||||
|
|
||||||
class DrawingPanel : public QWidget
|
class DrawingPanel : public QWidget
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,11 @@ struct Connection;
|
||||||
class PowerEntity;
|
class PowerEntity;
|
||||||
class ElectricConnectLineItem;
|
class ElectricConnectLineItem;
|
||||||
class ProjectModelSetting;
|
class ProjectModelSetting;
|
||||||
|
class ElectricBayItem;
|
||||||
|
class GraphicsNonStandardItem;
|
||||||
|
class BayProperty;
|
||||||
|
class BayManagerDlg;
|
||||||
|
class ModelProperty;
|
||||||
|
|
||||||
class FixedPortsModel : public BaseModel, public Serializable
|
class FixedPortsModel : public BaseModel, public Serializable
|
||||||
{
|
{
|
||||||
|
|
@ -32,7 +37,7 @@ public:
|
||||||
~FixedPortsModel();
|
~FixedPortsModel();
|
||||||
public:
|
public:
|
||||||
QMap<QUuid,QPointF> allNodePos() const;
|
QMap<QUuid,QPointF> allNodePos() const;
|
||||||
QVector<Connection> allConnections();
|
QVector<ModelProperty*> allConnectionProperty();
|
||||||
QMap<QUuid,GraphicsProjectModelItem*>& allItems();
|
QMap<QUuid,GraphicsProjectModelItem*>& allItems();
|
||||||
bool addNodeItem(QUuid uuid,GraphicsProjectModelItem*);
|
bool addNodeItem(QUuid uuid,GraphicsProjectModelItem*);
|
||||||
void addNodeItem(QUuid id,/*int type,*/QPointF pos);
|
void addNodeItem(QUuid id,/*int type,*/QPointF pos);
|
||||||
|
|
@ -40,7 +45,7 @@ public:
|
||||||
QVariant nodeData(QUuid nodeId, NodeRole role) const;
|
QVariant nodeData(QUuid nodeId, NodeRole role) const;
|
||||||
BaseProperty* addNodeData(QUuid id,int type,QString name,QString modelName); //对应component数据,一个data可对应多个item(id,类型,名称,工程模名)
|
BaseProperty* addNodeData(QUuid id,int type,QString name,QString modelName); //对应component数据,一个data可对应多个item(id,类型,名称,工程模名)
|
||||||
void loadNodeDataFromDataBase(); //从数据库加载数据
|
void loadNodeDataFromDataBase(); //从数据库加载数据
|
||||||
void addConnectLline(QUuid srcId,QUuid destId,QUuid srcPort,QUuid destPort);
|
void addConnectLline(QUuid lineId,QUuid srcId,QUuid destId,QUuid srcPort,QUuid destPort);
|
||||||
void deleteNodeItem(GraphicsProjectModelItem*);
|
void deleteNodeItem(GraphicsProjectModelItem*);
|
||||||
//QJsonObject saveNode(QUuid const) const;
|
//QJsonObject saveNode(QUuid const) const;
|
||||||
void saveNode(int nPageId);
|
void saveNode(int nPageId);
|
||||||
|
|
@ -71,8 +76,19 @@ public:
|
||||||
BaseModelProperty* addBaseNodeData(QUuid id,int type,QString name,QString metaName); //添加图元基模数据
|
BaseModelProperty* addBaseNodeData(QUuid id,int type,QString name,QString metaName); //添加图元基模数据
|
||||||
|
|
||||||
void showProjectModelSettingDlg(GraphicsBaseModelItem*); //在基模拓扑图上打开工程模设置对话框
|
void showProjectModelSettingDlg(GraphicsBaseModelItem*); //在基模拓扑图上打开工程模设置对话框
|
||||||
void generateProjectModel(const QString&,QList<GraphicsBaseModelItem*>); //由基模生成工程模
|
void generateProjectModel(const QString&,QList<GraphicsBaseModelItem*>,QList<GraphicsNonStandardItem*>); //由基模生成工程模
|
||||||
void addProjectItemByBaseData(DrawingPanel*,GraphicsBaseModelItem*,BaseProperty*); //从基模item生成工程模item
|
void addProjectItemByBaseData(DrawingPanel*,GraphicsBaseModelItem*,BaseProperty*); //从基模item生成工程模item
|
||||||
|
/*************************间隔*****************************/
|
||||||
|
bool addBayItem(QUuid,ElectricBayItem*);
|
||||||
|
void addItemsToBay(QList<GraphicsBaseItem*>,ElectricBayItem*); //将对象添加到间隔
|
||||||
|
BayProperty* addBayData(QUuid uuid);
|
||||||
|
QMap<QUuid,ElectricBayItem*>& allBayItem(); //返回所有间隔对象
|
||||||
|
|
||||||
|
BayProperty* generateBayData(BayProperty*,QList<BaseProperty*>); //生成新间隔数据(间隔数据结构相同)<baseBay,projectData>
|
||||||
|
QList<QUuid> getCorrespondId(QList<QUuid>,QList<BaseProperty*>); //获取基模id对应的工程模id
|
||||||
|
QRectF calculateItemsBoundingRect(QList<GraphicsBaseItem*> items); //返回包含所有item的rect
|
||||||
|
void addBayByData(BayProperty*); //基模bay生成工程模bay
|
||||||
|
|
||||||
void addTestData(); //生成测试基模
|
void addTestData(); //生成测试基模
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void activatePage(const QString&); //激活当前model所在page
|
void activatePage(const QString&); //激活当前model所在page
|
||||||
|
|
@ -87,10 +103,12 @@ public Q_SLOTS:
|
||||||
void onTimeOut();
|
void onTimeOut();
|
||||||
void onSignal_GetPointData(QString type,QMap<qint64,double> map);
|
void onSignal_GetPointData(QString type,QMap<qint64,double> map);
|
||||||
void onSignal_generateDiagram(const QString&); //生成工程组态信号
|
void onSignal_generateDiagram(const QString&); //生成工程组态信号
|
||||||
|
void onSignal_openBayManager();
|
||||||
private:
|
private:
|
||||||
|
|
||||||
QMap<QUuid,GraphicsProjectModelItem*> _nodeItem; //工程模对象
|
QMap<QUuid,GraphicsProjectModelItem*> _nodeItem; //工程模对象
|
||||||
QMap<QUuid,GraphicsBaseModelItem*> _baseItem; //基模对象
|
QMap<QUuid,GraphicsBaseModelItem*> _baseItem; //基模对象
|
||||||
|
QMap<QUuid,ElectricBayItem*> _bayItem; //间隔对象
|
||||||
|
|
||||||
QString _pageName;
|
QString _pageName;
|
||||||
DiagramCavas* _cavas;
|
DiagramCavas* _cavas;
|
||||||
|
|
@ -104,6 +122,7 @@ private:
|
||||||
QMap<QString,modelStateInfo> _modelStateInfo; //模型结构信息
|
QMap<QString,modelStateInfo> _modelStateInfo; //模型结构信息
|
||||||
QMap<QString,modelDataInfo> _modelDataInfo; //模型数据信息
|
QMap<QString,modelDataInfo> _modelDataInfo; //模型数据信息
|
||||||
ProjectModelSetting* m_proModelSettingDlg;
|
ProjectModelSetting* m_proModelSettingDlg;
|
||||||
|
BayManagerDlg* m_pBayManager;
|
||||||
public:
|
public:
|
||||||
static bool _dataInitialised;
|
static bool _dataInitialised;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
#ifndef ELECBAYITEM_H
|
||||||
|
#define ELECBAYITEM_H
|
||||||
|
|
||||||
|
#include "graphicsBaseItem.h"
|
||||||
|
#include "baseProperty.h"
|
||||||
|
|
||||||
|
class ElectricBayItem :public GraphicsNonStandardItem
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
ElectricBayItem(const QRectF &rect, QGraphicsItem *parent = 0); //genNewPort生成新接线点
|
||||||
|
virtual ~ElectricBayItem();
|
||||||
|
|
||||||
|
void setText(const QString& s);
|
||||||
|
protected:
|
||||||
|
virtual QPainterPath shape();
|
||||||
|
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
|
||||||
|
private:
|
||||||
|
void updateTextShape();
|
||||||
|
protected:
|
||||||
|
QRectF _recLabel;
|
||||||
|
QString m_text;
|
||||||
|
QFont m_font;
|
||||||
|
QRectF m_showRect;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -19,15 +19,11 @@ public:
|
||||||
void calculatePath();
|
void calculatePath();
|
||||||
void resetCurLine(){_curLine = QPoint();}
|
void resetCurLine(){_curLine = QPoint();}
|
||||||
|
|
||||||
void setConnection(Connection con){m_connectState = con;} //保留,用以获取当前图中的连接
|
|
||||||
Connection getConnection() const {return m_connectState;}
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual QPainterPath shape() const override;
|
virtual QPainterPath shape() const override;
|
||||||
virtual QRectF boundingRect() const override;
|
virtual QRectF boundingRect() const override;
|
||||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||||
private:
|
private:
|
||||||
Connection m_connectState;
|
|
||||||
QPainterPath m_points;
|
QPainterPath m_points;
|
||||||
QPainterPath m_pointsBoundingRect; //包裹点的矩形集合
|
QPainterPath m_pointsBoundingRect; //包裹点的矩形集合
|
||||||
QList<QPointF> m_lstPoints;
|
QList<QPointF> m_lstPoints;
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,8 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual ShapeType getType() {return m_type;}
|
virtual ShapeType getType() {return m_type;}
|
||||||
|
virtual QUuid itemId() const {return m_itemId;}
|
||||||
|
virtual void setItemId(QUuid n){m_itemId = n;}
|
||||||
|
|
||||||
QPen pen() { return m_pen; }
|
QPen pen() { return m_pen; }
|
||||||
void setPen(const QPen &pen) { m_pen = pen; }
|
void setPen(const QPen &pen) { m_pen = pen; }
|
||||||
|
|
@ -96,13 +98,17 @@ public:
|
||||||
|
|
||||||
virtual void syncRotationDataFromParent(const double&) {}
|
virtual void syncRotationDataFromParent(const double&) {}
|
||||||
virtual double getSyncRotationDataFromParent() {return m_dSyncRotationByParent;}
|
virtual double getSyncRotationDataFromParent() {return m_dSyncRotationByParent;}
|
||||||
|
virtual void setItemType(GraphicsItemType type){m_Itemtype = type;}
|
||||||
|
virtual GraphicsItemType getItemType() const {return m_Itemtype;}
|
||||||
protected:
|
protected:
|
||||||
|
QUuid m_itemId;
|
||||||
ShapeType m_type;
|
ShapeType m_type;
|
||||||
QPen m_pen;
|
QPen m_pen;
|
||||||
QBrush m_brush;
|
QBrush m_brush;
|
||||||
double m_dWidth;
|
double m_dWidth;
|
||||||
double m_dHeight;
|
double m_dHeight;
|
||||||
QRectF m_boundingRect;
|
QRectF m_boundingRect;
|
||||||
|
GraphicsItemType m_Itemtype; //显示类型
|
||||||
|
|
||||||
double m_dSyncRotationByParent; //父项(被加入到某一组)的旋转数据,因为加入某一组后,对该组进行旋转,自身的旋转数据不会同步更新
|
double m_dSyncRotationByParent; //父项(被加入到某一组)的旋转数据,因为加入某一组后,对该组进行旋转,自身的旋转数据不会同步更新
|
||||||
QGraphicsPathItem* m_pOperationCopy; //图元移动和旋转时的操作副本
|
QGraphicsPathItem* m_pOperationCopy; //图元移动和旋转时的操作副本
|
||||||
|
|
@ -112,9 +118,33 @@ protected:
|
||||||
class ItemPort;
|
class ItemPort;
|
||||||
class ModelProperty;
|
class ModelProperty;
|
||||||
class PowerEntity;
|
class PowerEntity;
|
||||||
|
class AbstractProperty;
|
||||||
|
|
||||||
typedef AbstractShapeType<QGraphicsItem> AbstractShape;
|
typedef AbstractShapeType<QGraphicsItem> AbstractShape;
|
||||||
|
|
||||||
|
class GraphicsNonStandardItem:public QObject, public AbstractShapeType<QGraphicsItem> //非标准图元,如间隔
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
GraphicsNonStandardItem(QGraphicsItem *parent = 0)
|
||||||
|
:AbstractShapeType<QGraphicsItem>(parent)
|
||||||
|
{
|
||||||
|
setFlag(QGraphicsItem::ItemIsSelectable, true);
|
||||||
|
}
|
||||||
|
virtual ~GraphicsNonStandardItem(){};
|
||||||
|
virtual void setProperty(AbstractProperty* p){_property = p;}
|
||||||
|
virtual AbstractProperty* getProperty() {return _property;}
|
||||||
|
|
||||||
|
bool containsPoint(const QPointF& pos)
|
||||||
|
{
|
||||||
|
QPointF localPos = mapFromScene(pos);
|
||||||
|
QPainterPath path = shape(); // 或更精确的计算
|
||||||
|
return path.contains(localPos);
|
||||||
|
}
|
||||||
|
protected:
|
||||||
|
AbstractProperty* _property;
|
||||||
|
};
|
||||||
|
|
||||||
class GraphicsBaseItem :public QObject, public AbstractShapeType<QGraphicsItem>
|
class GraphicsBaseItem :public QObject, public AbstractShapeType<QGraphicsItem>
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
@ -122,8 +152,6 @@ class GraphicsBaseItem :public QObject, public AbstractShapeType<QGraphicsItem>
|
||||||
GraphicsBaseItem(QGraphicsItem *parent);
|
GraphicsBaseItem(QGraphicsItem *parent);
|
||||||
virtual ~GraphicsBaseItem();
|
virtual ~GraphicsBaseItem();
|
||||||
public:
|
public:
|
||||||
virtual QUuid itemId() const {return m_itemId;}
|
|
||||||
virtual void setItemId(QUuid n){m_itemId = n;}
|
|
||||||
virtual int addPort(PortState typ,QPointF vec,QString id = "",HandleType hType = T_lineInOut,PortPos pos = P_top); //新建,返回-1失败
|
virtual int addPort(PortState typ,QPointF vec,QString id = "",HandleType hType = T_lineInOut,PortPos pos = P_top); //新建,返回-1失败
|
||||||
virtual void setEntity(PowerEntity*); //设置当前图元的拓扑数据
|
virtual void setEntity(PowerEntity*); //设置当前图元的拓扑数据
|
||||||
virtual PowerEntity* entity();
|
virtual PowerEntity* entity();
|
||||||
|
|
@ -132,8 +160,6 @@ public:
|
||||||
virtual void updateByProperty(){}; //使用data对象更新自己
|
virtual void updateByProperty(){}; //使用data对象更新自己
|
||||||
virtual void setItemChanged(bool b){_itemChanged = b;}
|
virtual void setItemChanged(bool b){_itemChanged = b;}
|
||||||
virtual bool itemChanged() const {return _itemChanged;}
|
virtual bool itemChanged() const {return _itemChanged;}
|
||||||
virtual void setItemType(GraphicsItemType type){m_Itemtype = type;}
|
|
||||||
virtual GraphicsItemType getItemType() const {return m_Itemtype;}
|
|
||||||
virtual void renderSelectBackground(QPainter*);
|
virtual void renderSelectBackground(QPainter*);
|
||||||
virtual ItemPort* getPortById(QString) const;
|
virtual ItemPort* getPortById(QString) const;
|
||||||
virtual ItemPort* getPortPtr(int) const;
|
virtual ItemPort* getPortPtr(int) const;
|
||||||
|
|
@ -422,8 +448,6 @@ public:
|
||||||
public slots:
|
public slots:
|
||||||
void onUpdateData(); //data发送的更新通知
|
void onUpdateData(); //data发送的更新通知
|
||||||
protected:
|
protected:
|
||||||
QUuid m_itemId;
|
|
||||||
GraphicsItemType m_Itemtype; //显示类型
|
|
||||||
ModelProperty* _property;
|
ModelProperty* _property;
|
||||||
PowerEntity* _pEntity; //图元拓扑
|
PowerEntity* _pEntity; //图元拓扑
|
||||||
bool _itemChanged; //图元变化标志,判断是否需要保存
|
bool _itemChanged; //图元变化标志,判断是否需要保存
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#include "baseInfoDlg.h"
|
#include "baseInfoDlg.h"
|
||||||
#include "graphicsItem/graphicsBaseItem.h"
|
#include "graphicsItem/electricBayItem.h"
|
||||||
|
#include "graphicsDataModel/fixedPortsModel.h"
|
||||||
#include "ui_baseInfoDlg.h"
|
#include "ui_baseInfoDlg.h"
|
||||||
#include "dataBase.h"
|
#include "dataBase.h"
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
|
@ -97,14 +98,56 @@ void BaseInfoDlg::setPropertyValue(QVariant var)
|
||||||
QString bay_offset_inner = connectBus["bay_offset_inner"].toString();
|
QString bay_offset_inner = connectBus["bay_offset_inner"].toString();
|
||||||
QString from_uuid = connectBus["from_uuid"].toString();
|
QString from_uuid = connectBus["from_uuid"].toString();
|
||||||
QString to_uuid = connectBus["to_uuid"].toString();
|
QString to_uuid = connectBus["to_uuid"].toString();
|
||||||
ui->le_bayName->setText(bay_name);
|
//ui->le_bayName->setText(bay_name);
|
||||||
ui->le_idx_1->setText(bay_offset_outer);
|
ui->le_idx_1->setText(bay_offset_outer);
|
||||||
ui->le_idx_2->setText(bay_offset_inner);
|
ui->le_idx_2->setText(bay_offset_inner);
|
||||||
ui->le_from->setText(from_uuid);
|
//ui->le_from->setText(from_uuid);
|
||||||
ui->le_to->setText(to_uuid);
|
//ui->le_to->setText(to_uuid);
|
||||||
if(pPro->inService() == 1)
|
if(pPro->inService() == 1)
|
||||||
ui->rb_inService->setChecked(true);
|
ui->rb_inService->setChecked(true);
|
||||||
else
|
else
|
||||||
ui->rb_outService->setChecked(true);
|
ui->rb_outService->setChecked(true);
|
||||||
|
|
||||||
|
//间隔处理
|
||||||
|
BayProperty* pBay = nullptr;
|
||||||
|
QMap<QUuid,ElectricBayItem*> mapBay = _curModelController->allBayItem();
|
||||||
|
for(auto& item:mapBay){
|
||||||
|
AbstractProperty* p = item->getProperty();
|
||||||
|
BayProperty* pBayPro = dynamic_cast<BayProperty*>(p);
|
||||||
|
if(pBayPro){
|
||||||
|
QList<QUuid> lstCompo = pBayPro->getLstComponent(); //获取间隔下的component,找到本component对应的间隔
|
||||||
|
for(auto& id:lstCompo){
|
||||||
|
if(id == pPro->uuid()){
|
||||||
|
pBay = pBayPro;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pBay){
|
||||||
|
auto lstFrom = pBay->getLstFrom();
|
||||||
|
auto lstTo = pBay->getLstTo();
|
||||||
|
|
||||||
|
QStringList sLstFrom;
|
||||||
|
for(auto& fromId:lstFrom){
|
||||||
|
BaseProperty* pPro = BasePropertyManager::instance().findEntityData(fromId);
|
||||||
|
if(pPro){
|
||||||
|
sLstFrom.append(pPro->tag());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList sLstTo;
|
||||||
|
for(auto& toId:lstTo){
|
||||||
|
BaseProperty* pPro = BasePropertyManager::instance().findEntityData(toId);
|
||||||
|
if(pPro){
|
||||||
|
sLstTo.append(pPro->tag());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ui->le_bayName->setText(pBay->tag());
|
||||||
|
ui->le_from->setText(sLstFrom.join("、"));
|
||||||
|
ui->le_to->setText(sLstTo.join("、"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ void ElectricBaseModelSvgBus::updateConnectData()
|
||||||
}
|
}
|
||||||
|
|
||||||
obj["port"] = arr;
|
obj["port"] = arr;
|
||||||
|
obj["metaModel"] = _property->metaModelName();
|
||||||
_property->setContext(obj);
|
_property->setContext(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,9 @@
|
||||||
#include "baseProperty.h"
|
#include "baseProperty.h"
|
||||||
#include "basePropertyManager.h"
|
#include "basePropertyManager.h"
|
||||||
#include "measureSettingDlg.h"
|
#include "measureSettingDlg.h"
|
||||||
|
#include "graphicsItem/electricBayItem.h"
|
||||||
|
#include "graphicsDataModel/fixedPortsModel.h"
|
||||||
|
#include "basePropertyManager.h"
|
||||||
#include "dataBase.h"
|
#include "dataBase.h"
|
||||||
|
|
||||||
BayInfoDlg::BayInfoDlg(QWidget *parent)
|
BayInfoDlg::BayInfoDlg(QWidget *parent)
|
||||||
|
|
@ -51,24 +54,151 @@ QMap<QString,propertyStateInfo> BayInfoDlg::getPropertyValue(BaseProperty* pPro)
|
||||||
|
|
||||||
void BayInfoDlg::setPropertyValue(QVariant var)
|
void BayInfoDlg::setPropertyValue(QVariant var)
|
||||||
{
|
{
|
||||||
BaseProperty* pPro = static_cast<BaseProperty*>(var.value<void*>());
|
_mapMeasure.clear();
|
||||||
if(pPro)
|
ui->tableWidget_other->setRowCount(0);;
|
||||||
|
ui->tableWidget_local->setRowCount(0); //清空列表
|
||||||
|
ui->le_zhbh->clear();
|
||||||
|
ui->le_jk->clear();
|
||||||
|
ui->le_dtgz->clear();
|
||||||
|
ui->le_gzlb->clear();
|
||||||
|
ui->le_ztjc->clear();
|
||||||
|
ui->le_qt->clear();
|
||||||
|
|
||||||
|
BaseProperty* property = static_cast<BaseProperty*>(var.value<void*>());
|
||||||
|
if(property)
|
||||||
{
|
{
|
||||||
QList<measureAttributeType> lstType = DataBase::GetInstance()->getMeasureAttributeTypes();
|
QList<measureAttributeType> lstType = DataBase::GetInstance()->getMeasureAttributeTypes();
|
||||||
auto map = pPro->getMeasurement();
|
auto map = property->getMeasurement();
|
||||||
|
|
||||||
/*QMutableListIterator<measureAttributeType> it(lstType);
|
|
||||||
while(it.hasNext()){ //设置可用属性
|
|
||||||
if(map.contains(it.next().name)){
|
|
||||||
it.remove();
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
_validType = lstType;
|
_validType = lstType;
|
||||||
|
|
||||||
ui->tableWidget_local->clearContents(); //清空列表
|
|
||||||
for(auto& info:map){
|
for(auto& info:map){
|
||||||
addMeasure(info);
|
addMeasure(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//间隔处理
|
||||||
|
BayProperty* pBay = nullptr;
|
||||||
|
QMap<QUuid,ElectricBayItem*> mapBay = _curModelController->allBayItem();
|
||||||
|
for(auto& item:mapBay){
|
||||||
|
AbstractProperty* pPro = item->getProperty();
|
||||||
|
BayProperty* pBayPro = dynamic_cast<BayProperty*>(pPro);
|
||||||
|
if(pBayPro){
|
||||||
|
QList<QUuid> lstCompo = pBayPro->getLstComponent(); //获取间隔下的component,找到本component对应的间隔
|
||||||
|
for(auto& id:lstCompo){
|
||||||
|
if(id == property->uuid()){
|
||||||
|
pBay = pBayPro;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pBay){
|
||||||
|
auto lstFrom = pBay->getLstFrom();
|
||||||
|
auto lstTo = pBay->getLstTo();
|
||||||
|
auto lstProtect = pBay->getLstProtect();
|
||||||
|
auto lstFaultRecord = pBay->getLstFaultRecord();
|
||||||
|
auto lstDynSense = pBay->getLstDynSense();
|
||||||
|
auto lstStatus = pBay->getLstStatus();
|
||||||
|
auto lstInstruct = pBay->getLstInstruct();
|
||||||
|
auto lstEtc = pBay->getLstEtc();
|
||||||
|
|
||||||
|
QStringList sLstFrom;
|
||||||
|
for(auto& fromId:lstFrom){
|
||||||
|
BaseProperty* pPro = BasePropertyManager::instance().findEntityData(fromId);
|
||||||
|
if(pPro){
|
||||||
|
sLstFrom.append(pPro->tag());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList sLstTo;
|
||||||
|
for(auto& toId:lstTo){
|
||||||
|
BaseProperty* pPro = BasePropertyManager::instance().findEntityData(toId);
|
||||||
|
if(pPro){
|
||||||
|
sLstTo.append(pPro->tag());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList sLstProtect;
|
||||||
|
for(auto& protectId:lstProtect){
|
||||||
|
BaseProperty* pPro = BasePropertyManager::instance().findEntityData(protectId);
|
||||||
|
if(pPro){
|
||||||
|
sLstProtect.append(pPro->tag());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList sLstFaultRecord;
|
||||||
|
for(auto& faultRecordId:lstFaultRecord){
|
||||||
|
BaseProperty* pPro = BasePropertyManager::instance().findEntityData(faultRecordId);
|
||||||
|
if(pPro){
|
||||||
|
sLstFaultRecord.append(pPro->tag());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList sLstDynSense;
|
||||||
|
for(auto& dynSenseId:lstDynSense){
|
||||||
|
BaseProperty* pPro = BasePropertyManager::instance().findEntityData(dynSenseId);
|
||||||
|
if(pPro){
|
||||||
|
sLstDynSense.append(pPro->tag());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList sLstStatus;
|
||||||
|
for(auto& statusId:lstStatus){
|
||||||
|
BaseProperty* pPro = BasePropertyManager::instance().findEntityData(statusId);
|
||||||
|
if(pPro){
|
||||||
|
sLstStatus.append(pPro->tag());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList sLstInstruct;
|
||||||
|
for(auto& instructId:lstInstruct){
|
||||||
|
BaseProperty* pPro = BasePropertyManager::instance().findEntityData(instructId);
|
||||||
|
if(pPro){
|
||||||
|
sLstInstruct.append(pPro->tag());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList sLstEtc;
|
||||||
|
for(auto& etcId:lstEtc){
|
||||||
|
BaseProperty* pPro = BasePropertyManager::instance().findEntityData(etcId);
|
||||||
|
if(pPro){
|
||||||
|
sLstEtc.append(pPro->tag());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<BaseProperty*> lstOther;
|
||||||
|
QList<QUuid> lstCompo = pBay->getLstComponent();
|
||||||
|
for(auto& compoId:lstCompo){
|
||||||
|
BaseProperty* pPro = BasePropertyManager::instance().findEntityData(compoId);
|
||||||
|
if(pPro){
|
||||||
|
if(pPro->uuid() == property->uuid()){ //取本间隔内的其他元件量测
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
lstOther.append(pPro);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList lstOtherMeasure;
|
||||||
|
for(auto& compo:lstOther){
|
||||||
|
auto map = compo->getMeasurement();
|
||||||
|
for(auto& measure:map){
|
||||||
|
lstOtherMeasure.append(compo->tag()+"-"+measure.tag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ui->le_zhbh->setText(sLstProtect.join("、"));
|
||||||
|
ui->le_jk->setText(sLstInstruct.join("、"));
|
||||||
|
ui->le_dtgz->setText(sLstDynSense.join("、"));
|
||||||
|
ui->le_gzlb->setText(sLstFaultRecord.join("、"));
|
||||||
|
ui->le_ztjc->setText(sLstStatus.join("、"));
|
||||||
|
ui->le_qt->setText(sLstEtc.join("、"));
|
||||||
|
|
||||||
|
ui->le_bayName->setText(pBay->tag());
|
||||||
|
addOtherMeasure(lstOtherMeasure);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -90,6 +220,22 @@ void BayInfoDlg::setUi()
|
||||||
" white-space: pre-wrap;" // 关键:保留空白符并允许自动换行
|
" white-space: pre-wrap;" // 关键:保留空白符并允许自动换行
|
||||||
"}"
|
"}"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
headerText.clear();
|
||||||
|
headerText<<"TAG";
|
||||||
|
ui->tableWidget_other->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
ui->tableWidget_other->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
|
ui->tableWidget_other->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
|
ui->tableWidget_other->setColumnCount(headerText.count());
|
||||||
|
ui->tableWidget_other->setHorizontalHeaderLabels(headerText);
|
||||||
|
ui->tableWidget_other->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||||
|
ui->tableWidget_other->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
||||||
|
ui->tableWidget_other->setStyleSheet(
|
||||||
|
"QTableWidget::item {"
|
||||||
|
" padding: 5px;" // 可选:增加内边距
|
||||||
|
" white-space: pre-wrap;" // 关键:保留空白符并允许自动换行
|
||||||
|
"}"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BayInfoDlg::addMeasure(MeasurementInfo info)
|
void BayInfoDlg::addMeasure(MeasurementInfo info)
|
||||||
|
|
@ -126,6 +272,17 @@ void BayInfoDlg::addMeasure(MeasurementInfo info)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BayInfoDlg::addOtherMeasure(QStringList lst)
|
||||||
|
{
|
||||||
|
for(auto& str:lst){
|
||||||
|
int row = ui->tableWidget_other->rowCount();
|
||||||
|
ui->tableWidget_other->insertRow(row);
|
||||||
|
|
||||||
|
QTableWidgetItem* tagItem = new QTableWidgetItem(str);
|
||||||
|
ui->tableWidget_local->setItem(row, 0, tagItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void BayInfoDlg::onAddClicked()
|
void BayInfoDlg::onAddClicked()
|
||||||
{
|
{
|
||||||
if(_measureDlg == nullptr){
|
if(_measureDlg == nullptr){
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
#include "bayManagerContentDlg.h"
|
#include "bayManagerContentDlg.h"
|
||||||
|
#include "baseProperty.h"
|
||||||
#include "ui_bayManagerContentDlg.h"
|
#include "ui_bayManagerContentDlg.h"
|
||||||
|
#include "basePropertyManager.h"
|
||||||
|
|
||||||
BayManagerContentDlg::BayManagerContentDlg(QWidget *parent)
|
BayManagerContentDlg::BayManagerContentDlg(QWidget *parent)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
, ui(new Ui::bayManagerContentDlg)
|
, ui(new Ui::bayManagerContentDlg)
|
||||||
|
,_pData(nullptr)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
||||||
|
|
@ -17,5 +20,245 @@ BayManagerContentDlg::~BayManagerContentDlg()
|
||||||
|
|
||||||
void BayManagerContentDlg::initial()
|
void BayManagerContentDlg::initial()
|
||||||
{
|
{
|
||||||
|
QStringList headerText;
|
||||||
|
headerText<<"选择"<<"名称";
|
||||||
|
ui->tw_zongHe->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
ui->tw_zongHe->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
|
ui->tw_zongHe->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
|
ui->tw_zongHe->setColumnCount(headerText.count());
|
||||||
|
ui->tw_zongHe->setHorizontalHeaderLabels(headerText);
|
||||||
|
ui->tw_zongHe->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||||
|
|
||||||
|
ui->tw_jianKong->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
ui->tw_jianKong->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
|
ui->tw_jianKong->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
|
ui->tw_jianKong->setColumnCount(headerText.count());
|
||||||
|
ui->tw_jianKong->setHorizontalHeaderLabels(headerText);
|
||||||
|
ui->tw_jianKong->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||||
|
|
||||||
|
ui->tw_dongTai->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
ui->tw_dongTai->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
|
ui->tw_dongTai->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
|
ui->tw_dongTai->setColumnCount(headerText.count());
|
||||||
|
ui->tw_dongTai->setHorizontalHeaderLabels(headerText);
|
||||||
|
ui->tw_dongTai->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||||
|
|
||||||
|
ui->tw_guZhang->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
ui->tw_guZhang->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
|
ui->tw_guZhang->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
|
ui->tw_guZhang->setColumnCount(headerText.count());
|
||||||
|
ui->tw_guZhang->setHorizontalHeaderLabels(headerText);
|
||||||
|
ui->tw_guZhang->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||||
|
|
||||||
|
ui->tw_zhuangTai->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
ui->tw_zhuangTai->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
|
ui->tw_zhuangTai->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
|
ui->tw_zhuangTai->setColumnCount(headerText.count());
|
||||||
|
ui->tw_zhuangTai->setHorizontalHeaderLabels(headerText);
|
||||||
|
ui->tw_zhuangTai->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||||
|
|
||||||
|
ui->tw_qiTa->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
ui->tw_qiTa->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
|
ui->tw_qiTa->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
|
ui->tw_qiTa->setColumnCount(headerText.count());
|
||||||
|
ui->tw_qiTa->setHorizontalHeaderLabels(headerText);
|
||||||
|
ui->tw_qiTa->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BayManagerContentDlg::updateByProperty()
|
||||||
|
{
|
||||||
|
if(_pData){
|
||||||
|
ui->le_name->setText(_pData->tag());
|
||||||
|
ui->tw_zongHe->setRowCount(0);
|
||||||
|
ui->tw_jianKong->setRowCount(0);
|
||||||
|
ui->tw_dongTai->setRowCount(0);
|
||||||
|
ui->tw_guZhang->setRowCount(0);
|
||||||
|
ui->tw_zhuangTai->setRowCount(0);
|
||||||
|
ui->tw_qiTa->setRowCount(0);
|
||||||
|
|
||||||
|
QList<BaseProperty*> lstPro;
|
||||||
|
QList<QUuid> lstId = _pData->getLstComponent();
|
||||||
|
QList<QUuid> lstProtectId = _pData->getLstProtect(); //综合保护
|
||||||
|
QList<QUuid> lstInsId = _pData->getLstInstruct(); //监控
|
||||||
|
QList<QUuid> lstDynSenId = _pData->getLstDynSense(); //动态感知
|
||||||
|
QList<QUuid> lstFauRecId = _pData->getLstFaultRecord(); //故障录播
|
||||||
|
QList<QUuid> lstStaId= _pData->getLstStatus(); //状态监测
|
||||||
|
QList<QUuid> lstEtcId= _pData->getLstEtc(); //其他设备
|
||||||
|
for(auto& id:lstId){
|
||||||
|
BaseProperty* pPro = BasePropertyManager::instance().findEntityData(id); //根据id找到对应的设备
|
||||||
|
if(pPro){
|
||||||
|
lstPro.append(pPro);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(auto& pro:lstPro){ //初始化tablewidget
|
||||||
|
int row = ui->tw_zongHe->rowCount(); //综合保护
|
||||||
|
ui->tw_zongHe->insertRow(row);
|
||||||
|
QTableWidgetItem *checkItemProtec = new QTableWidgetItem();
|
||||||
|
checkItemProtec->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
|
||||||
|
checkItemProtec->setCheckState(Qt::Unchecked); // 默认未勾选
|
||||||
|
checkItemProtec->setData(Qt::UserRole+1,pro->uuid());
|
||||||
|
ui->tw_zongHe->setItem(row, 0, checkItemProtec); // 设置到第一列
|
||||||
|
QTableWidgetItem* tagItemProtec = new QTableWidgetItem(pro->tag());
|
||||||
|
ui->tw_zongHe->setItem(row, 1, tagItemProtec);
|
||||||
|
|
||||||
|
row = ui->tw_jianKong->rowCount(); //监控
|
||||||
|
ui->tw_jianKong->insertRow(row);
|
||||||
|
QTableWidgetItem *checkItemIns = new QTableWidgetItem();
|
||||||
|
checkItemIns->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
|
||||||
|
checkItemIns->setCheckState(Qt::Unchecked);
|
||||||
|
checkItemIns->setData(Qt::UserRole+1,pro->uuid());
|
||||||
|
ui->tw_jianKong->setItem(row, 0, checkItemIns);
|
||||||
|
QTableWidgetItem* tagItemIns = new QTableWidgetItem(pro->tag());
|
||||||
|
ui->tw_jianKong->setItem(row, 1, tagItemIns);
|
||||||
|
|
||||||
|
row = ui->tw_dongTai->rowCount(); //动态感知
|
||||||
|
ui->tw_dongTai->insertRow(row);
|
||||||
|
QTableWidgetItem *checkItemDynSen = new QTableWidgetItem();
|
||||||
|
checkItemDynSen->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
|
||||||
|
checkItemDynSen->setCheckState(Qt::Unchecked);
|
||||||
|
checkItemDynSen->setData(Qt::UserRole+1,pro->uuid());
|
||||||
|
ui->tw_dongTai->setItem(row, 0, checkItemDynSen);
|
||||||
|
QTableWidgetItem* tagItemDynSen = new QTableWidgetItem(pro->tag());
|
||||||
|
ui->tw_dongTai->setItem(row, 1, tagItemDynSen);
|
||||||
|
|
||||||
|
row = ui->tw_guZhang->rowCount(); //故障录播
|
||||||
|
ui->tw_guZhang->insertRow(row);
|
||||||
|
QTableWidgetItem *checkItemFauRec = new QTableWidgetItem();
|
||||||
|
checkItemFauRec->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
|
||||||
|
checkItemFauRec->setCheckState(Qt::Unchecked);
|
||||||
|
checkItemFauRec->setData(Qt::UserRole+1,pro->uuid());
|
||||||
|
ui->tw_guZhang->setItem(row, 0, checkItemFauRec);
|
||||||
|
QTableWidgetItem* tagItemFauRec = new QTableWidgetItem(pro->tag());
|
||||||
|
ui->tw_guZhang->setItem(row, 1, tagItemFauRec);
|
||||||
|
|
||||||
|
row = ui->tw_zhuangTai->rowCount(); //状态监测
|
||||||
|
ui->tw_zhuangTai->insertRow(row);
|
||||||
|
QTableWidgetItem *checkItemSta = new QTableWidgetItem();
|
||||||
|
checkItemSta->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
|
||||||
|
checkItemSta->setCheckState(Qt::Unchecked);
|
||||||
|
checkItemSta->setData(Qt::UserRole+1,pro->uuid());
|
||||||
|
ui->tw_zhuangTai->setItem(row, 0, checkItemSta);
|
||||||
|
QTableWidgetItem* tagItemSta = new QTableWidgetItem(pro->tag());
|
||||||
|
ui->tw_zhuangTai->setItem(row, 1, tagItemSta);
|
||||||
|
|
||||||
|
row = ui->tw_qiTa->rowCount(); //其他设备
|
||||||
|
ui->tw_qiTa->insertRow(row);
|
||||||
|
QTableWidgetItem *checkItemEtc = new QTableWidgetItem();
|
||||||
|
checkItemEtc->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
|
||||||
|
checkItemEtc->setCheckState(Qt::Unchecked);
|
||||||
|
checkItemEtc->setData(Qt::UserRole+1,pro->uuid());
|
||||||
|
ui->tw_qiTa->setItem(row, 0, checkItemEtc);
|
||||||
|
QTableWidgetItem* tagItemEtc = new QTableWidgetItem(pro->tag());
|
||||||
|
ui->tw_qiTa->setItem(row, 1, tagItemEtc);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(auto& id:lstProtectId){ //设置勾选状态
|
||||||
|
for(int i = 0;i < ui->tw_zongHe->rowCount();++i){
|
||||||
|
if(ui->tw_zongHe->item(i,0)->data(Qt::UserRole+1).toUuid() == id){
|
||||||
|
ui->tw_zongHe->item(i,0)->setCheckState(Qt::Checked);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(auto& id:lstInsId){
|
||||||
|
for(int i = 0;i < ui->tw_jianKong->rowCount();++i){
|
||||||
|
if(ui->tw_jianKong->item(i,0)->data(Qt::UserRole+1).toUuid() == id){
|
||||||
|
ui->tw_jianKong->item(i,0)->setCheckState(Qt::Checked);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(auto& id:lstDynSenId){
|
||||||
|
for(int i = 0;i < ui->tw_dongTai->rowCount();++i){
|
||||||
|
if(ui->tw_dongTai->item(i,0)->data(Qt::UserRole+1).toUuid() == id){
|
||||||
|
ui->tw_dongTai->item(i,0)->setCheckState(Qt::Checked);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(auto& id:lstFauRecId){
|
||||||
|
for(int i = 0;i < ui->tw_guZhang->rowCount();++i){
|
||||||
|
if(ui->tw_guZhang->item(i,0)->data(Qt::UserRole+1).toUuid() == id){
|
||||||
|
ui->tw_guZhang->item(i,0)->setCheckState(Qt::Checked);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(auto& id:lstStaId){
|
||||||
|
for(int i = 0;i < ui->tw_zhuangTai->rowCount();++i){
|
||||||
|
if(ui->tw_zhuangTai->item(i,0)->data(Qt::UserRole+1).toUuid() == id){
|
||||||
|
ui->tw_zhuangTai->item(i,0)->setCheckState(Qt::Checked);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(auto& id:lstEtcId){
|
||||||
|
for(int i = 0;i < ui->tw_qiTa->rowCount();++i){
|
||||||
|
if(ui->tw_qiTa->item(i,0)->data(Qt::UserRole+1).toUuid() == id){
|
||||||
|
ui->tw_qiTa->item(i,0)->setCheckState(Qt::Checked);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BayManagerContentDlg::saveSetting()
|
||||||
|
{
|
||||||
|
if(_pData){
|
||||||
|
QList<QUuid> lstProtec;
|
||||||
|
for(int i = 0;i < ui->tw_zongHe->rowCount();++i){
|
||||||
|
if(Qt::Checked == ui->tw_zongHe->item(i,0)->checkState()){
|
||||||
|
lstProtec.append(ui->tw_zongHe->item(i,0)->data(Qt::UserRole+1).toUuid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QUuid> lstIns;
|
||||||
|
for(int i = 0;i < ui->tw_jianKong->rowCount();++i){
|
||||||
|
if(Qt::Checked == ui->tw_jianKong->item(i,0)->checkState()){
|
||||||
|
lstIns.append(ui->tw_jianKong->item(i,0)->data(Qt::UserRole+1).toUuid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QUuid> lstDynSen;
|
||||||
|
for(int i = 0;i < ui->tw_dongTai->rowCount();++i){
|
||||||
|
if(Qt::Checked == ui->tw_dongTai->item(i,0)->checkState()){
|
||||||
|
lstDynSen.append(ui->tw_dongTai->item(i,0)->data(Qt::UserRole+1).toUuid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QUuid> lstFauRec;
|
||||||
|
for(int i = 0;i < ui->tw_guZhang->rowCount();++i){
|
||||||
|
if(Qt::Checked == ui->tw_guZhang->item(i,0)->checkState()){
|
||||||
|
lstFauRec.append(ui->tw_guZhang->item(i,0)->data(Qt::UserRole+1).toUuid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QUuid> lstSta;
|
||||||
|
for(int i = 0;i < ui->tw_zhuangTai->rowCount();++i){
|
||||||
|
if(Qt::Checked == ui->tw_zhuangTai->item(i,0)->checkState()){
|
||||||
|
lstSta.append(ui->tw_zhuangTai->item(i,0)->data(Qt::UserRole+1).toUuid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QUuid> lstEtc;
|
||||||
|
for(int i = 0;i < ui->tw_qiTa->rowCount();++i){
|
||||||
|
if(Qt::Checked == ui->tw_qiTa->item(i,0)->checkState()){
|
||||||
|
lstEtc.append(ui->tw_qiTa->item(i,0)->data(Qt::UserRole+1).toUuid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_pData->setLstProtect(lstProtec);
|
||||||
|
_pData->setLstInstruct(lstIns);
|
||||||
|
_pData->setLstDynSense(lstDynSen);
|
||||||
|
_pData->setLstFaultRecord(lstFauRec);
|
||||||
|
_pData->setLstStatus(lstSta);
|
||||||
|
_pData->setLstEtc(lstEtc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
#include "bayManagerDlg.h"
|
#include "bayManagerDlg.h"
|
||||||
#include "bayManagerContentDlg.h"
|
#include "bayManagerContentDlg.h"
|
||||||
|
#include "graphicsItem/electricBayItem.h"
|
||||||
|
#include "graphicsDataModel/fixedPortsModel.h"
|
||||||
#include "ui_bayManagerDlg.h"
|
#include "ui_bayManagerDlg.h"
|
||||||
|
|
||||||
BayManagerDlg::BayManagerDlg(QWidget *parent)
|
BayManagerDlg::BayManagerDlg(QWidget *parent)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
, ui(new Ui::bayManagerDlg)
|
, ui(new Ui::bayManagerDlg)
|
||||||
|
,_modelController(nullptr)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
||||||
|
|
@ -20,11 +23,29 @@ void BayManagerDlg::initial()
|
||||||
{
|
{
|
||||||
connect(ui->btn_ok,&QPushButton::clicked,this,&BayManagerDlg::onOkClicked);
|
connect(ui->btn_ok,&QPushButton::clicked,this,&BayManagerDlg::onOkClicked);
|
||||||
connect(ui->btn_cancel,&QPushButton::clicked,this,&BayManagerDlg::onCancelClicked);
|
connect(ui->btn_cancel,&QPushButton::clicked,this,&BayManagerDlg::onCancelClicked);
|
||||||
|
connect(ui->listWidget,&QListWidget::itemClicked,this,&BayManagerDlg::onListItemClicked);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BayManagerDlg::showDlg()
|
void BayManagerDlg::showDlg()
|
||||||
{
|
{
|
||||||
|
show();
|
||||||
|
clearData();
|
||||||
|
initData();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BayManagerDlg::initData()
|
||||||
|
{
|
||||||
|
QList<BayProperty*> lstBay;
|
||||||
|
QMap<QUuid,ElectricBayItem*> mapBay = _modelController->allBayItem(); //获取当前图中所有bay
|
||||||
|
for(auto& item:mapBay){
|
||||||
|
AbstractProperty* p = item->getProperty();
|
||||||
|
BayProperty* pBayPro = dynamic_cast<BayProperty*>(p);
|
||||||
|
if(pBayPro){
|
||||||
|
lstBay.append(pBayPro);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
generatePage(lstBay);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BayManagerDlg::clearData()
|
void BayManagerDlg::clearData()
|
||||||
|
|
@ -41,6 +62,11 @@ void BayManagerDlg::clearData()
|
||||||
void BayManagerDlg::onOkClicked()
|
void BayManagerDlg::onOkClicked()
|
||||||
{
|
{
|
||||||
hide();
|
hide();
|
||||||
|
for(auto& pDlg:_contentData){
|
||||||
|
if(pDlg){
|
||||||
|
pDlg->saveSetting();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BayManagerDlg::onCancelClicked()
|
void BayManagerDlg::onCancelClicked()
|
||||||
|
|
@ -48,14 +74,25 @@ void BayManagerDlg::onCancelClicked()
|
||||||
hide();
|
hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BayManagerDlg::generatePage(QStringList lstBay)
|
void BayManagerDlg::onListItemClicked(QListWidgetItem *item)
|
||||||
{
|
{
|
||||||
ui->listWidget->addItems(lstBay);
|
int index = item->data(Qt::UserRole+1).toInt();
|
||||||
for(auto& str:lstBay)
|
ui->stackedWidget->setCurrentIndex(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BayManagerDlg::generatePage(QList<BayProperty*> lstBay)
|
||||||
|
{
|
||||||
|
for(auto& pData:lstBay)
|
||||||
{
|
{
|
||||||
BayManagerContentDlg* pBay = new BayManagerContentDlg(this);
|
BayManagerContentDlg* pBay = new BayManagerContentDlg(this);
|
||||||
pBay->setName(str);
|
pBay->setProperty(pData);
|
||||||
|
pBay->updateByProperty();
|
||||||
int index = ui->stackedWidget->addWidget(pBay);
|
int index = ui->stackedWidget->addWidget(pBay);
|
||||||
_contentData.insert(index,pBay);
|
_contentData.insert(index,pBay);
|
||||||
|
QListWidgetItem* pItem = new QListWidgetItem(pData->tag());
|
||||||
|
pItem->setData(Qt::UserRole+1,index);
|
||||||
|
ui->listWidget->addItem(pItem);
|
||||||
}
|
}
|
||||||
|
if(ui->stackedWidget->count() != 0)
|
||||||
|
ui->stackedWidget->setCurrentIndex(0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,8 @@
|
||||||
#include "topologyManager.h"
|
#include "topologyManager.h"
|
||||||
#include "powerEntity.h"
|
#include "powerEntity.h"
|
||||||
#include "diagramEditor/diagramEditorWizard.h"
|
#include "diagramEditor/diagramEditorWizard.h"
|
||||||
#include "componentIconManager.h"
|
//#include "componentIconManager.h"
|
||||||
|
#include "baseProperty.h"
|
||||||
#include "diagramEditor/editPanel.h"
|
#include "diagramEditor/editPanel.h"
|
||||||
|
|
||||||
DiagramCavas::DiagramCavas(QWidget *parent)
|
DiagramCavas::DiagramCavas(QWidget *parent)
|
||||||
|
|
@ -109,10 +110,13 @@ void DiagramCavas::onSignal_savePage()
|
||||||
QMap<QUuid,GraphicsProjectModelItem*> map = pPanel->getModelController()->allItems();
|
QMap<QUuid,GraphicsProjectModelItem*> map = pPanel->getModelController()->allItems();
|
||||||
for(auto pItem:map)
|
for(auto pItem:map)
|
||||||
{
|
{
|
||||||
if(pItem->itemChanged())
|
BaseProperty* pData = dynamic_cast<BaseProperty*>(pItem->getProperty());
|
||||||
{
|
if(pData){
|
||||||
pItem->updateConnectData(); //更新连接状态
|
if(pItem->itemChanged() || pData->dataChanged())
|
||||||
pItem->setItemChanged(false);
|
{
|
||||||
|
pItem->updateConnectData(); //更新连接状态
|
||||||
|
pItem->setItemChanged(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -383,3 +387,24 @@ void DiagramCavas::onSignal_wizardFinished(DiagramEditorWizardInfo info)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/*******************bay************************/
|
||||||
|
void DiagramCavas::onSignl_openCurrentBay()
|
||||||
|
{
|
||||||
|
QWidget* pWindow= currentSubWindow()->widget();
|
||||||
|
DrawingPanel* pPanel = dynamic_cast<DrawingPanel*>(pWindow);
|
||||||
|
if(pPanel)
|
||||||
|
{
|
||||||
|
if(pPanel->getMode() == DM_run)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(pPanel->getMode() == DM_edit)
|
||||||
|
{
|
||||||
|
pPanel->getModelController()->onSignal_openBayManager();
|
||||||
|
}
|
||||||
|
else if(pPanel->getMode() == DM_baseModel)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,14 @@
|
||||||
#include <QCloseEvent>
|
#include <QCloseEvent>
|
||||||
#include "designerView.h"
|
#include "designerView.h"
|
||||||
#include "graphicsDataModel/fixedPortsModel.h"
|
#include "graphicsDataModel/fixedPortsModel.h"
|
||||||
|
#include "graphicsItem/graphicsBaseItem.h"
|
||||||
#include "util/selectorManager.h"
|
#include "util/selectorManager.h"
|
||||||
#include "graphicsItem/electricConnectLineItem.h"
|
|
||||||
#include "statusBar.h"
|
#include "statusBar.h"
|
||||||
#include "dataBase.h"
|
#include "dataBase.h"
|
||||||
#include "powerEntity.h"
|
#include "powerEntity.h"
|
||||||
#include "topologyManager.h"
|
#include "topologyManager.h"
|
||||||
#include "projectDiagramNameInput.h"
|
#include "projectDiagramNameInput.h"
|
||||||
|
#include "baseProperty.h"
|
||||||
|
|
||||||
DrawingPanel::DrawingPanel(PowerEntity* pEntity,QWidget *parent,DiagramMode mode)
|
DrawingPanel::DrawingPanel(PowerEntity* pEntity,QWidget *parent,DiagramMode mode)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
|
|
@ -194,14 +195,15 @@ QJsonObject DrawingPanel::getDiagramInfo() const
|
||||||
obj["nodes"] = arr;
|
obj["nodes"] = arr;
|
||||||
|
|
||||||
QJsonArray arrConnect;
|
QJsonArray arrConnect;
|
||||||
QVector<Connection> vec = _pModel->allConnections();
|
QVector<ModelProperty*> vec = _pModel->allConnectionProperty();
|
||||||
for(auto iter = vec.begin(); iter != vec.end();++iter)
|
for(auto& pPro:vec){
|
||||||
{
|
Connection con = pPro->getConnection();
|
||||||
QJsonObject connect;
|
QJsonObject connect;
|
||||||
connect["SrcNodeId"] = iter->nSrcNodeId.toString();
|
connect["id"] = pPro->uuid().toString();
|
||||||
connect["SrcPortId"] = iter->nSrcPortId.toString();
|
connect["SrcNodeId"] = con.nSrcNodeId.toString();
|
||||||
connect["DestNodeId"] = iter->nDestNodeId.toString();
|
connect["SrcPortId"] = con.nSrcPortId.toString();
|
||||||
connect["DestPortId"] = iter->nDestPortId.toString();
|
connect["DestNodeId"] = con.nDestNodeId.toString();
|
||||||
|
connect["DestPortId"] = con.nDestPortId.toString();
|
||||||
arrConnect.append(connect);
|
arrConnect.append(connect);
|
||||||
}
|
}
|
||||||
obj["connections"] = arrConnect;
|
obj["connections"] = arrConnect;
|
||||||
|
|
@ -231,6 +233,7 @@ void DrawingPanel::loadNodes(QJsonObject obj)
|
||||||
for(QJsonValueRef connectJson:connectArr)
|
for(QJsonValueRef connectJson:connectArr)
|
||||||
{
|
{
|
||||||
QJsonObject connect = connectJson.toObject();
|
QJsonObject connect = connectJson.toObject();
|
||||||
|
QUuid id = QUuid(connect["id"].toString()); //电缆线id,关联component中的电缆
|
||||||
QUuid srcId = QUuid(connect["SrcNodeId"].toString());
|
QUuid srcId = QUuid(connect["SrcNodeId"].toString());
|
||||||
QUuid srcPortId = QUuid(connect["SrcPortId"].toString());
|
QUuid srcPortId = QUuid(connect["SrcPortId"].toString());
|
||||||
QUuid destId = QUuid(connect["DestNodeId"].toString());
|
QUuid destId = QUuid(connect["DestNodeId"].toString());
|
||||||
|
|
@ -244,7 +247,7 @@ void DrawingPanel::loadNodes(QJsonObject obj)
|
||||||
//todo:从拓扑结构中查找port的id
|
//todo:从拓扑结构中查找port的id
|
||||||
if(_pModel)
|
if(_pModel)
|
||||||
{
|
{
|
||||||
_pModel->addConnectLline(QUuid(srcItemId),QUuid(destItemId),srcPortId,destPortId);
|
_pModel->addConnectLline(id,QUuid(srcItemId),QUuid(destItemId),srcPortId,destPortId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
#include "baseModelItem/electricBaseModelSvgItem.h"
|
#include "baseModelItem/electricBaseModelSvgItem.h"
|
||||||
#include "baseModelItem/electricBaseModelSvgBus.h"
|
#include "baseModelItem/electricBaseModelSvgBus.h"
|
||||||
#include "baseModelItem/electricBaseModelLineItem.h"
|
#include "baseModelItem/electricBaseModelLineItem.h"
|
||||||
|
#include "graphicsItem/electricBayItem.h"
|
||||||
#include "graphicsItem/itemPort.h"
|
#include "graphicsItem/itemPort.h"
|
||||||
#include "designerScene.h"
|
#include "designerScene.h"
|
||||||
#include "dataBase.h"
|
#include "dataBase.h"
|
||||||
|
|
@ -21,8 +22,12 @@
|
||||||
#include "diagramCavas.h"
|
#include "diagramCavas.h"
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
#include <QRandomGenerator>
|
||||||
#include "baseProperty.h"
|
#include "baseProperty.h"
|
||||||
#include "projectModelSetting.h"
|
#include "projectModelSetting.h"
|
||||||
|
#include "bayManagerDlg.h"
|
||||||
|
#include "projectModelManager.h"
|
||||||
|
#include "global.h"
|
||||||
|
|
||||||
bool FixedPortsModel::_dataInitialised = false;
|
bool FixedPortsModel::_dataInitialised = false;
|
||||||
|
|
||||||
|
|
@ -32,6 +37,7 @@ FixedPortsModel::FixedPortsModel(PowerEntity* pEntity)
|
||||||
,_Interface(nullptr)
|
,_Interface(nullptr)
|
||||||
,_pEntity(pEntity)
|
,_pEntity(pEntity)
|
||||||
,m_proModelSettingDlg(nullptr)
|
,m_proModelSettingDlg(nullptr)
|
||||||
|
,m_pBayManager(nullptr)
|
||||||
{
|
{
|
||||||
_cavas = nullptr;
|
_cavas = nullptr;
|
||||||
loadNodeDataFromDataBase();
|
loadNodeDataFromDataBase();
|
||||||
|
|
@ -61,9 +67,9 @@ QMap<QUuid,QPointF> FixedPortsModel::allNodePos() const
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<Connection> FixedPortsModel::allConnections()
|
QVector<ModelProperty*> FixedPortsModel::allConnectionProperty()
|
||||||
{
|
{
|
||||||
QVector<Connection> vec;
|
QVector<ModelProperty*> vec;
|
||||||
for(auto pItem:_nodeItem)
|
for(auto pItem:_nodeItem)
|
||||||
{
|
{
|
||||||
if(pItem->getItemType() == GIT_link)
|
if(pItem->getItemType() == GIT_link)
|
||||||
|
|
@ -71,7 +77,10 @@ QVector<Connection> FixedPortsModel::allConnections()
|
||||||
auto pLine = dynamic_cast<ElectricConnectLineItem*>(pItem);
|
auto pLine = dynamic_cast<ElectricConnectLineItem*>(pItem);
|
||||||
if(pLine)
|
if(pLine)
|
||||||
{
|
{
|
||||||
vec.push_back(pLine->getConnection());
|
ModelProperty* pPro = pLine->getProperty();
|
||||||
|
if(pPro){
|
||||||
|
vec.push_back(pPro);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -113,6 +122,10 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos)
|
||||||
if(pro)
|
if(pro)
|
||||||
{
|
{
|
||||||
int type = pro->graphicsType();
|
int type = pro->graphicsType();
|
||||||
|
if(type == GIT_link) //连线对象外部处理
|
||||||
|
return;
|
||||||
|
QString sMeta = pro->metaModelName();
|
||||||
|
QString sProModel = pro->modelName();
|
||||||
if(type == GIT_itemTri)
|
if(type == GIT_itemTri)
|
||||||
{
|
{
|
||||||
item = new ElectricSvgItemTriangle(QRect(-15, -15, 30, 30));
|
item = new ElectricSvgItemTriangle(QRect(-15, -15, 30, 30));
|
||||||
|
|
@ -120,8 +133,19 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos)
|
||||||
}
|
}
|
||||||
else if(type == GIT_itemRect)
|
else if(type == GIT_itemRect)
|
||||||
{
|
{
|
||||||
item = new ElectricSvgItemRect(QRect(-15, -15, 30, 30),false);
|
PropertyModel model = ProjectModelManager::instance().getData()[sMeta][sProModel];
|
||||||
item->setItemType(GIT_itemRect);
|
QByteArray svg;
|
||||||
|
if(model.modelSetting.mapSvg.isEmpty()){
|
||||||
|
svg = DataBase::GetInstance()->ModelType()[3].icon;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
svg = model.modelSetting.mapSvg.first();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto pCb = new ElectricSvgItemRect(QRect(-15, -15, 30, 30),false);
|
||||||
|
pCb->setItemType(GIT_itemRect);
|
||||||
|
pCb->loadSvg(svg);
|
||||||
|
item = pCb;
|
||||||
QJsonArray portArr = pro->context()["port"].toArray();
|
QJsonArray portArr = pro->context()["port"].toArray();
|
||||||
for(QJsonValueRef portJson:portArr)
|
for(QJsonValueRef portJson:portArr)
|
||||||
{
|
{
|
||||||
|
|
@ -136,8 +160,19 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos)
|
||||||
}
|
}
|
||||||
else if(type == GIT_bus)
|
else if(type == GIT_bus)
|
||||||
{
|
{
|
||||||
item = new ElectricSvgItemBus(QRect(-100, -3, 200, 6));
|
PropertyModel model = ProjectModelManager::instance().getData()[sMeta][sProModel];
|
||||||
item->setItemType(GIT_bus);
|
QByteArray svg;
|
||||||
|
if(model.modelSetting.mapSvg.isEmpty()){
|
||||||
|
svg = DataBase::GetInstance()->ModelType()[1].icon;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
svg = model.modelSetting.mapSvg.first();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto pBus = new ElectricSvgItemBus(QRect(-100, -3, 200, 6));
|
||||||
|
pBus->setItemType(GIT_bus);
|
||||||
|
pBus->loadSvg(svg);
|
||||||
|
item = pBus;
|
||||||
|
|
||||||
QJsonArray portArr = pro->context()["port"].toArray();
|
QJsonArray portArr = pro->context()["port"].toArray();
|
||||||
for(QJsonValueRef portJson:portArr)
|
for(QJsonValueRef portJson:portArr)
|
||||||
|
|
@ -182,8 +217,11 @@ BaseProperty* FixedPortsModel::addNodeData(QUuid id,int type,QString name,QStrin
|
||||||
item->setUuid(id);
|
item->setUuid(id);
|
||||||
item->setModelName(modelName);
|
item->setModelName(modelName);
|
||||||
item->setType(type);
|
item->setType(type);
|
||||||
|
GraphicsItemType localType = corresbondItem::typeToProGraphic[type]; //将通用类型转换为工程模图元
|
||||||
|
item->setGraphicsType(localType);
|
||||||
item->setTag(name);
|
item->setTag(name);
|
||||||
item->setName(name);
|
item->setName(name);
|
||||||
|
item->setDataChanged(true);
|
||||||
BasePropertyManager::instance().insertEntityData(id,item);
|
BasePropertyManager::instance().insertEntityData(id,item);
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
|
|
@ -211,6 +249,9 @@ void FixedPortsModel::loadNodeDataFromDataBase()
|
||||||
pData->setStation(info.station);
|
pData->setStation(info.station);
|
||||||
pData->setDataChanged(false);
|
pData->setDataChanged(false);
|
||||||
|
|
||||||
|
QString sMeta = info.context["metaModel"].toString();
|
||||||
|
pData->setMetaModelName(sMeta);
|
||||||
|
|
||||||
PowerEntity* pEntity = TopologyManager::instance().createEntity(EntityType::Component,info.uuid.toString(),info.name); //首先load所有data和entity,全局唯一
|
PowerEntity* pEntity = TopologyManager::instance().createEntity(EntityType::Component,info.uuid.toString(),info.name); //首先load所有data和entity,全局唯一
|
||||||
if(pEntity){
|
if(pEntity){
|
||||||
createTopoTerminalsByData(pEntity,info.context);
|
createTopoTerminalsByData(pEntity,info.context);
|
||||||
|
|
@ -236,47 +277,44 @@ void FixedPortsModel::loadNodeDataFromDataBase()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FixedPortsModel::addConnectLline(QUuid srcId,QUuid destId,QUuid srcPort,QUuid destPort)
|
void FixedPortsModel::addConnectLline(QUuid lineId,QUuid srcId,QUuid destId,QUuid srcPort,QUuid destPort)
|
||||||
{
|
{
|
||||||
GraphicsProjectModelItem* src = _nodeItem[srcId];
|
GraphicsProjectModelItem* src = _nodeItem[srcId];
|
||||||
GraphicsProjectModelItem* dest = _nodeItem[destId];
|
GraphicsProjectModelItem* dest = _nodeItem[destId];
|
||||||
if(src && dest)
|
QMap<QUuid,BaseProperty*> mapData = BasePropertyManager::instance().getEntityData();
|
||||||
|
if(mapData.contains(lineId))
|
||||||
{
|
{
|
||||||
ElectricConnectLineItem* pItem = new ElectricConnectLineItem();
|
BaseProperty* pPro = mapData.value(lineId);
|
||||||
pItem->setItemId(QUuid::createUuid());
|
if(src && dest)
|
||||||
pItem->setItemType(GIT_link);
|
|
||||||
_scene->addItem(pItem);
|
|
||||||
|
|
||||||
ItemPort* ptSrc = src->getPortById(srcPort.toString());
|
|
||||||
HandleType srcType = ptSrc->getType();
|
|
||||||
PortPos srcPos = ptSrc->portPos();
|
|
||||||
pItem->setStartPoint(ptSrc->scenePos());
|
|
||||||
ptSrc->setConnect(pItem);
|
|
||||||
|
|
||||||
ItemPort* ptDest = nullptr;
|
|
||||||
ptDest = dest->getPortById(destPort.toString());
|
|
||||||
pItem->setEndPoint(ptDest->scenePos());
|
|
||||||
/*if(dest->getItemType() == GIT_bus) //母线动态创建port
|
|
||||||
{
|
{
|
||||||
|
ElectricConnectLineItem* pItem = new ElectricConnectLineItem();
|
||||||
|
pItem->setItemId(lineId);
|
||||||
|
pItem->setItemType(GIT_link);
|
||||||
|
_scene->addItem(pItem);
|
||||||
|
|
||||||
|
ItemPort* ptSrc = src->getPortById(srcPort.toString());
|
||||||
|
HandleType srcType = ptSrc->getType();
|
||||||
|
PortPos srcPos = ptSrc->portPos();
|
||||||
|
pItem->setStartPoint(ptSrc->scenePos());
|
||||||
|
ptSrc->setConnect(pItem);
|
||||||
|
|
||||||
|
ItemPort* ptDest = nullptr;
|
||||||
ptDest = dest->getPortById(destPort.toString());
|
ptDest = dest->getPortById(destPort.toString());
|
||||||
pItem->setEndPoint(ptDest->scenePos());
|
pItem->setEndPoint(ptDest->scenePos());
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ptDest = dest->getPortById(destPort.toString());
|
|
||||||
pItem->setEndPoint(ptDest->scenePos());
|
|
||||||
}*/
|
|
||||||
|
|
||||||
if(ptDest != nullptr)
|
if(ptDest != nullptr)
|
||||||
{
|
{
|
||||||
HandleType destType = ptDest->getType();
|
HandleType destType = ptDest->getType();
|
||||||
PortPos destPos = ptDest->portPos();
|
PortPos destPos = ptDest->portPos();
|
||||||
|
|
||||||
pItem->calculatePath();
|
pItem->calculatePath();
|
||||||
pItem->setConnection(Connection(srcId,srcPort,srcType,srcPos,destId,destPort,destType,destPos));
|
|
||||||
ptDest->setConnect(pItem);
|
|
||||||
|
|
||||||
addNodeItem(pItem->itemId(),pItem);
|
pPro->setConnection(Connection(srcId,srcPort,srcType,srcPos,destId,destPort,destType,destPos));
|
||||||
|
ptDest->setConnect(pItem);
|
||||||
|
|
||||||
|
addNodeItem(pItem->itemId(),pItem);
|
||||||
|
pItem->setProperty(pPro);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -424,69 +462,68 @@ QVariant FixedPortsModel::nodeData(QUuid nodeId, NodeRole role) const
|
||||||
|
|
||||||
void FixedPortsModel::saveNode(int nPageId)
|
void FixedPortsModel::saveNode(int nPageId)
|
||||||
{
|
{
|
||||||
QMap<QUuid,BaseProperty*> mapData = BasePropertyManager::instance().getEntityData();
|
QMap<QUuid,GraphicsProjectModelItem*> mapItems = allItems();
|
||||||
for(auto &pData:mapData)
|
for(auto& pItem:mapItems)
|
||||||
{
|
{
|
||||||
if(pData->prepareDelete())
|
BaseProperty* pData = dynamic_cast<BaseProperty*>(pItem->getProperty());
|
||||||
{
|
if(pData){
|
||||||
DataBase::GetInstance()->deleteComponent(pData->uuid().toString());
|
Connection con = pData->getConnection();
|
||||||
continue;
|
QString fromPin = con.nSrcPortId.toString();
|
||||||
}
|
QString toPin = con.nDestPortId.toString();
|
||||||
if(pData->dataChanged())
|
QJsonObject context;
|
||||||
{
|
context["from_pin"] = fromPin;
|
||||||
bool exist = DataBase::GetInstance()->componentExist(pData->uuid().toString());
|
context["to_pin"] = toPin;
|
||||||
VariableProperty* pVariable = dynamic_cast<VariableProperty*>(pData);
|
if(pData->prepareDelete())
|
||||||
if(pVariable)
|
|
||||||
{
|
{
|
||||||
modelDataInfo dataInfo = pVariable->getPropertyValue();
|
DataBase::GetInstance()->deleteComponent(pData->uuid().toString());
|
||||||
if(exist) //已存在更新
|
if(pData->type() == 8){
|
||||||
{
|
PowerConnection* pCon = TopologyManager::instance().connection(fromPin,toPin);
|
||||||
DataBase::GetInstance()->updateComponent(pData->uuid(),pData->tag(),pData->name(),pData->context());
|
if(pCon){
|
||||||
for(auto &val:dataInfo.groupInfo)
|
DataBase::GetInstance()->deleteTopologic(con.nSrcPortId,con.nDestPortId);
|
||||||
{
|
TopologyManager::instance().removeConnection(pCon->id());
|
||||||
DataBase::GetInstance()->updateDynamicProperty(pData->uuid(),val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DataBase::GetInstance()->insertComponent(pData->uuid(),pData->modelName(),pData->path(),pData->tag(),pData->name(),pData->description(),pData->grid(),pData->zone(),pData->station(),pData->type(),true,pData->state(),pData->status(),pData->connectedBus(),pData->label(),pData->context(),1);
|
|
||||||
for(auto &val:dataInfo.groupInfo)
|
|
||||||
{
|
|
||||||
DataBase::GetInstance()->insertDynamicProperty(pData->uuid(),val);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
if(pData->dataChanged())
|
||||||
}
|
{
|
||||||
|
bool exist = DataBase::GetInstance()->componentExist(pData->uuid().toString());
|
||||||
|
VariableProperty* pVariable = dynamic_cast<VariableProperty*>(pData);
|
||||||
|
if(pVariable)
|
||||||
|
{
|
||||||
|
modelDataInfo dataInfo = pVariable->getPropertyValue();
|
||||||
|
if(exist) //已存在更新
|
||||||
|
{
|
||||||
|
DataBase::GetInstance()->updateComponent(pData->uuid(),pData->tag(),pData->name(),pData->context());
|
||||||
|
for(auto &val:dataInfo.groupInfo)
|
||||||
|
{
|
||||||
|
if(val.groupName == "component")
|
||||||
|
continue;
|
||||||
|
DataBase::GetInstance()->updateDynamicProperty(pData->uuid(),val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DataBase::GetInstance()->insertComponent(pData->uuid(),pData->modelName(),pData->path(),pData->tag(),pData->name(),pData->description(),pData->grid(),pData->zone(),pData->station(),pData->type(),true,pData->state(),pData->status(),pData->connectedBus(),pData->label(),pData->context(),1);
|
||||||
|
for(auto &val:dataInfo.groupInfo)
|
||||||
|
{
|
||||||
|
if(val.groupName == "component")
|
||||||
|
continue;
|
||||||
|
DataBase::GetInstance()->insertDynamicProperty(pData->uuid(),val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//todo:增加判断,只在设置模式保存连接关系
|
if(pData->type() == 8){
|
||||||
QVector<Connection> vecCon = allConnections(); //保存当前页面中的连接关系
|
PowerConnection* pCon = TopologyManager::instance().connection(fromPin,toPin);
|
||||||
for(auto &con:vecCon)
|
if(pCon){
|
||||||
{
|
DataBase::GetInstance()->insertTopologic(con.nSrcNodeId,con.nDestNodeId,context,0,"",0);
|
||||||
QString fromPin = con.nSrcPortId.toString();
|
}
|
||||||
QString toPin = con.nDestPortId.toString();
|
}
|
||||||
QJsonObject context;
|
|
||||||
context["from_pin"] = fromPin;
|
|
||||||
context["to_pin"] = toPin;
|
|
||||||
PowerConnection* pCon = TopologyManager::instance().connection(fromPin,toPin);
|
|
||||||
if(pCon)
|
|
||||||
{
|
|
||||||
DataState state = pCon->state();
|
|
||||||
switch (state) {
|
|
||||||
case DataState::unchanged:
|
|
||||||
break;
|
|
||||||
case DataState::prepareDelete:
|
|
||||||
DataBase::GetInstance()->deleteTopologic(con.nSrcPortId,con.nDestPortId);
|
|
||||||
TopologyManager::instance().removeConnection(pCon->id());
|
|
||||||
break;
|
|
||||||
case DataState::changed:
|
|
||||||
DataBase::GetInstance()->insertTopologic(con.nSrcNodeId,con.nDestNodeId,context,0,"",0);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//todo:savebay
|
||||||
}
|
}
|
||||||
|
|
||||||
void FixedPortsModel::onSignal_ifExits(QUuid id,const QString& str,int type,GraphicsProjectModelItem* pitem)
|
void FixedPortsModel::onSignal_ifExits(QUuid id,const QString& str,int type,GraphicsProjectModelItem* pitem)
|
||||||
|
|
@ -602,7 +639,22 @@ void FixedPortsModel::onSignal_generateDiagram(const QString& sName)
|
||||||
{
|
{
|
||||||
lst.append(item);
|
lst.append(item);
|
||||||
}
|
}
|
||||||
generateProjectModel(sName,lst);
|
|
||||||
|
QList<GraphicsNonStandardItem*> lstBay;
|
||||||
|
for(auto& item:_bayItem)
|
||||||
|
{
|
||||||
|
lstBay.append(item);
|
||||||
|
}
|
||||||
|
generateProjectModel(sName,lst,lstBay);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FixedPortsModel::onSignal_openBayManager()
|
||||||
|
{
|
||||||
|
if(m_pBayManager == nullptr){
|
||||||
|
m_pBayManager = new BayManagerDlg(_widget);
|
||||||
|
m_pBayManager->setModelController(this);
|
||||||
|
}
|
||||||
|
m_pBayManager->showDlg();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FixedPortsModel::startHttpRequest()
|
void FixedPortsModel::startHttpRequest()
|
||||||
|
|
@ -736,7 +788,7 @@ template<typename TypeLine> void FixedPortsModel::establishConnection(GraphicsBa
|
||||||
PowerConnection* pCon = TopologyManager::instance().createConnection(pItem->itemId().toString(),pSrcPort->getId(),pDestPort->getId(),pSrc->itemId().toString(),pDest->itemId().toString(),ModelFunctionType::BaseModel); //创建拓扑连接(逻辑)
|
PowerConnection* pCon = TopologyManager::instance().createConnection(pItem->itemId().toString(),pSrcPort->getId(),pDestPort->getId(),pSrc->itemId().toString(),pDest->itemId().toString(),ModelFunctionType::BaseModel); //创建拓扑连接(逻辑)
|
||||||
if(pCon)
|
if(pCon)
|
||||||
pCon->setState(DataState::changed);
|
pCon->setState(DataState::changed);
|
||||||
pItem->setConnection(Connection(pSrc->itemId(),QUuid(pSrcPort->getId()),pSrcPort->getType(),pSrcPort->portPos(),pDest->itemId(),QUuid(pDestPort->getId()),pDestPort->getType(),pDestPort->portPos()));
|
pItem->getProperty()->setConnection(Connection(pSrc->itemId(),QUuid(pSrcPort->getId()),pSrcPort->getType(),pSrcPort->portPos(),pDest->itemId(),QUuid(pDestPort->getId()),pDestPort->getType(),pDestPort->portPos()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -880,7 +932,7 @@ QVector<Connection> FixedPortsModel::allBaseConnections()
|
||||||
auto pLine = dynamic_cast<ElectricBaseModelLineItem*>(pItem);
|
auto pLine = dynamic_cast<ElectricBaseModelLineItem*>(pItem);
|
||||||
if(pLine)
|
if(pLine)
|
||||||
{
|
{
|
||||||
vec.push_back(pLine->getConnection());
|
vec.push_back(pLine->getProperty()->getConnection());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -938,7 +990,7 @@ void FixedPortsModel::showProjectModelSettingDlg(GraphicsBaseModelItem* srcItem)
|
||||||
m_proModelSettingDlg->showDlg(srcItem);
|
m_proModelSettingDlg->showDlg(srcItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FixedPortsModel::generateProjectModel(const QString& sPageName,QList<GraphicsBaseModelItem*> lstItem)
|
void FixedPortsModel::generateProjectModel(const QString& sPageName,QList<GraphicsBaseModelItem*> lstItem,QList<GraphicsNonStandardItem*> lstOther)
|
||||||
{
|
{
|
||||||
DrawingPanel* pProPanel = nullptr;
|
DrawingPanel* pProPanel = nullptr;
|
||||||
if(_cavas){
|
if(_cavas){
|
||||||
|
|
@ -951,20 +1003,6 @@ void FixedPortsModel::generateProjectModel(const QString& sPageName,QList<Graphi
|
||||||
pProPanel = _cavas->getPanel(sPageName);
|
pProPanel = _cavas->getPanel(sPageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*for(auto& pBaseItem:lstItem) //首次循环处理所有非连线对象
|
|
||||||
{
|
|
||||||
BaseModelProperty* pBase = dynamic_cast<BaseModelProperty*>(pBaseItem->getProperty());
|
|
||||||
if(pBase->type() != 8){ //不是电缆
|
|
||||||
QUuid id = QUuid::createUuid();
|
|
||||||
BaseProperty* pData = pProPanel->getModel()->addNodeData(id,pBase->type(),pBase->name(),pBase->modelName());
|
|
||||||
if(pData)
|
|
||||||
{
|
|
||||||
pData->setDataChanged(true); //数据状态改变
|
|
||||||
addProjectItemByBaseData(pProPanel,pBaseItem,pData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
for(auto& pBaseItem:lstItem) //第二次循环处理所有连线对象
|
for(auto& pBaseItem:lstItem) //第二次循环处理所有连线对象
|
||||||
{
|
{
|
||||||
BaseModelProperty* pBase = dynamic_cast<BaseModelProperty*>(pBaseItem->getProperty());
|
BaseModelProperty* pBase = dynamic_cast<BaseModelProperty*>(pBaseItem->getProperty());
|
||||||
|
|
@ -978,16 +1016,38 @@ void FixedPortsModel::generateProjectModel(const QString& sPageName,QList<Graphi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QList<BaseProperty*> lstProData;
|
||||||
|
QMap<QUuid,GraphicsProjectModelItem*> mapItem = pProPanel->getModelController()->allItems(); //根据item获取data
|
||||||
|
for(auto& item:mapItem){
|
||||||
|
BaseProperty* pPro = dynamic_cast<BaseProperty*>(item->getProperty());
|
||||||
|
if(pPro){
|
||||||
|
lstProData.append(pPro);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(auto& pOtherItem:lstOther)
|
||||||
|
{
|
||||||
|
BayProperty* pBay = dynamic_cast<BayProperty*>(pOtherItem->getProperty());
|
||||||
|
if(pBay){
|
||||||
|
BayProperty* pData = pProPanel->getModelController()->generateBayData(pBay,lstProData);
|
||||||
|
if(pData)
|
||||||
|
{
|
||||||
|
pProPanel->getModelController()->addBayByData(pData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBaseModelItem* pBaseItem,BaseProperty* pPro)
|
void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBaseModelItem* pItem,BaseProperty* pPro)
|
||||||
{
|
{
|
||||||
BaseModelProperty* pBase = dynamic_cast<BaseModelProperty*>(pBaseItem->getProperty());
|
BaseModelProperty* pBase = dynamic_cast<BaseModelProperty*>(pItem->getProperty());
|
||||||
if(pBase){
|
if(pBase){
|
||||||
if(_baseItem.contains(pBase->uuid())){
|
if(_baseItem.contains(pBase->uuid())){
|
||||||
GraphicsProjectModelItem* pProItem = nullptr;
|
GraphicsProjectModelItem* pProItem = nullptr;
|
||||||
GraphicsBaseModelItem* pBaseItem = _baseItem.value(pBase->uuid());
|
GraphicsBaseModelItem* pBaseItem = _baseItem.value(pBase->uuid());
|
||||||
pPro->setSourceItemId(pBaseItem->itemId().toString()); //设置被哪个对象生成
|
pPro->setSourceItemId(pBaseItem->itemId().toString()); //设置被哪个对象生成
|
||||||
|
pPro->setMetaModelName(pBase->metaModelName()); //传递基模名
|
||||||
int type = pBase->graphicsType();
|
int type = pBase->graphicsType();
|
||||||
if(type == GIT_baseBus)
|
if(type == GIT_baseBus)
|
||||||
{
|
{
|
||||||
|
|
@ -1105,6 +1165,10 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
||||||
QString proToItemId;
|
QString proToItemId;
|
||||||
QString proFromTerId;
|
QString proFromTerId;
|
||||||
QString proToTerId;
|
QString proToTerId;
|
||||||
|
HandleType proFromType;
|
||||||
|
PortPos proFromPos;
|
||||||
|
HandleType proToType;
|
||||||
|
PortPos proToPos;
|
||||||
for(auto& pPro:mapPro)
|
for(auto& pPro:mapPro)
|
||||||
{
|
{
|
||||||
if(pPro->getSourceItemId() == baseFromComponentId){
|
if(pPro->getSourceItemId() == baseFromComponentId){
|
||||||
|
|
@ -1144,6 +1208,8 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
||||||
for(auto& port:mapFrom){
|
for(auto& port:mapFrom){
|
||||||
if(port->getSourcePortId() == baseFromTerId){
|
if(port->getSourcePortId() == baseFromTerId){
|
||||||
proFromTerId = port->getId();
|
proFromTerId = port->getId();
|
||||||
|
proFromType = port->getType();
|
||||||
|
proFromPos = port->portPos();
|
||||||
auto pLine = dynamic_cast<ElectricConnectLineItem*>(pProItem);
|
auto pLine = dynamic_cast<ElectricConnectLineItem*>(pProItem);
|
||||||
if(pLine)
|
if(pLine)
|
||||||
pLine->setStartPoint(port->scenePos());
|
pLine->setStartPoint(port->scenePos());
|
||||||
|
|
@ -1156,6 +1222,8 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
||||||
for(auto& port:mapTo){
|
for(auto& port:mapTo){
|
||||||
if(port->getSourcePortId() == baseToTerId){
|
if(port->getSourcePortId() == baseToTerId){
|
||||||
proToTerId = port->getId();
|
proToTerId = port->getId();
|
||||||
|
proToType = port->getType();
|
||||||
|
proToPos = port->portPos();
|
||||||
auto pLine = dynamic_cast<ElectricConnectLineItem*>(pProItem);
|
auto pLine = dynamic_cast<ElectricConnectLineItem*>(pProItem);
|
||||||
if(pLine)
|
if(pLine)
|
||||||
pLine->setEndPoint(port->scenePos());
|
pLine->setEndPoint(port->scenePos());
|
||||||
|
|
@ -1167,6 +1235,9 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
||||||
auto pLine = dynamic_cast<ElectricConnectLineItem*>(pProItem);
|
auto pLine = dynamic_cast<ElectricConnectLineItem*>(pProItem);
|
||||||
if(pLine)
|
if(pLine)
|
||||||
pLine->calculatePath();
|
pLine->calculatePath();
|
||||||
|
pPanel->getModelController()->addNodeItem(pBase->uuid(),pProItem);
|
||||||
|
pProItem->setProperty(pPro);
|
||||||
|
pPro->setConnection(Connection(QUuid(proFromItemId),QUuid(proFromTerId),proFromType,proFromPos,QUuid(proToItemId),QUuid(proToTerId),proToType,proToPos));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
QString sModel = pBase->getModelProperty().modelSetting.modelName;
|
QString sModel = pBase->getModelProperty().modelSetting.modelName;
|
||||||
|
|
@ -1175,6 +1246,159 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool FixedPortsModel::addBayItem(QUuid id,ElectricBayItem* pBay)
|
||||||
|
{
|
||||||
|
if(_bayItem.contains(id))
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_bayItem.insert(id,pBay);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FixedPortsModel::addItemsToBay(QList<GraphicsBaseItem*> lstItem,ElectricBayItem* pBay)
|
||||||
|
{
|
||||||
|
if(pBay == nullptr)
|
||||||
|
return;
|
||||||
|
BayProperty* proBay = dynamic_cast<BayProperty*>(pBay->getProperty());
|
||||||
|
if(proBay){
|
||||||
|
for(auto& item:lstItem){
|
||||||
|
if(item){
|
||||||
|
ModelProperty* p = item->getProperty();
|
||||||
|
auto lstCom = proBay->getLstComponent();
|
||||||
|
if(!lstCom.contains(p->uuid())){
|
||||||
|
proBay->getLstComponent().append(p->uuid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BayProperty* FixedPortsModel::addBayData(QUuid uuid)
|
||||||
|
{
|
||||||
|
BayProperty* pData = BasePropertyManager::instance().findBayData(uuid); //已存在不不创建
|
||||||
|
if(pData != nullptr)
|
||||||
|
return pData;
|
||||||
|
|
||||||
|
BayProperty* item = new BayProperty(this);
|
||||||
|
|
||||||
|
if(item)
|
||||||
|
{
|
||||||
|
item->setUuid(uuid);
|
||||||
|
BasePropertyManager::instance().insertBayData(uuid,item);
|
||||||
|
}
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
QMap<QUuid,ElectricBayItem*>& FixedPortsModel::allBayItem()
|
||||||
|
{
|
||||||
|
return _bayItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
BayProperty* FixedPortsModel::generateBayData(BayProperty* pData,QList<BaseProperty*> lst)
|
||||||
|
{
|
||||||
|
QUuid id = QUuid::createUuid();
|
||||||
|
BayProperty* p = addBayData(id);
|
||||||
|
p->setTag(pData->tag());
|
||||||
|
p->setName(pData->name());
|
||||||
|
p->setType(pData->getType());
|
||||||
|
p->setVoltage(pData->getVoltage());
|
||||||
|
p->setFla(pData->getFla());
|
||||||
|
p->setCapacity(pData->getCapacity());
|
||||||
|
p->setInService(pData->getInService());
|
||||||
|
QList<QUuid> lstCompo = pData->getLstComponent();
|
||||||
|
QList<QUuid> lstNewCompo = getCorrespondId(lstCompo,lst); //将基模component替换为工程模component
|
||||||
|
p->setLstComponent(lstNewCompo);
|
||||||
|
|
||||||
|
QList<QUuid> lstFrom = pData->getLstFrom();
|
||||||
|
QList<QUuid> lstNewFrom = getCorrespondId(lstFrom,lst);
|
||||||
|
p->setLstFrom(lstNewFrom);
|
||||||
|
|
||||||
|
QList<QUuid> lstTo = pData->getLstTo();
|
||||||
|
QList<QUuid> lstNewTo = getCorrespondId(lstTo,lst);
|
||||||
|
p->setLstTo(lstNewTo);
|
||||||
|
|
||||||
|
QList<QUuid> lstProtect = pData->getLstProtect();
|
||||||
|
QList<QUuid> lstNewProtect = getCorrespondId(lstProtect,lst);
|
||||||
|
p->setLstProtect(lstNewProtect);
|
||||||
|
|
||||||
|
QList<QUuid> lstFaultRecord = pData->getLstFaultRecord();
|
||||||
|
QList<QUuid> lstNewFaultRecord = getCorrespondId(lstFaultRecord,lst);
|
||||||
|
p->setLstFaultRecord(lstNewFaultRecord);
|
||||||
|
|
||||||
|
QList<QUuid> lstDynSense = pData->getLstDynSense();
|
||||||
|
QList<QUuid> lstNewDynSense = getCorrespondId(lstDynSense,lst);
|
||||||
|
p->setLstDynSense(lstNewDynSense);
|
||||||
|
|
||||||
|
QList<QUuid> lstStatus = pData->getLstStatus();
|
||||||
|
QList<QUuid> lstNewStatus = getCorrespondId(lstStatus,lst);
|
||||||
|
p->setLstStatus(lstNewStatus);
|
||||||
|
|
||||||
|
QList<QUuid> lstInstruct = pData->getLstInstruct();
|
||||||
|
QList<QUuid> lstNewInstruct = getCorrespondId(lstInstruct,lst);
|
||||||
|
p->setLstInstruct(lstNewInstruct);
|
||||||
|
|
||||||
|
QList<QUuid> lstEtc = pData->getLstEtc();
|
||||||
|
QList<QUuid> lstNewEtc= getCorrespondId(lstEtc,lst);
|
||||||
|
p->setLstEtc(lstNewEtc);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QUuid> FixedPortsModel::getCorrespondId(QList<QUuid> lstCompo,QList<BaseProperty*> lst)
|
||||||
|
{
|
||||||
|
QList<QUuid> lstNewCompo;
|
||||||
|
for(auto& uuid:lstCompo)
|
||||||
|
{
|
||||||
|
for(auto& basePro:lst)
|
||||||
|
{
|
||||||
|
if(basePro->getSourceItemId() == uuid.toString()){ //工程模sourceid等于基模存储的componentid,
|
||||||
|
lstNewCompo.append(basePro->uuid());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return lstNewCompo;
|
||||||
|
}
|
||||||
|
|
||||||
|
QRectF FixedPortsModel::calculateItemsBoundingRect(QList<GraphicsBaseItem*> items)
|
||||||
|
{
|
||||||
|
if (items.isEmpty())
|
||||||
|
return QRectF();
|
||||||
|
|
||||||
|
// 初始化矩形为第一个item的场景边界矩形
|
||||||
|
QRectF boundingRect = items.first()->sceneBoundingRect();
|
||||||
|
|
||||||
|
// 遍历剩余item,扩展矩形以包含所有item
|
||||||
|
for (int i = 1; i < items.size(); ++i) {
|
||||||
|
QGraphicsItem* item = items.at(i);
|
||||||
|
// 确保item在场景中且有效
|
||||||
|
if (item && item->scene()) {
|
||||||
|
boundingRect = boundingRect.united(item->sceneBoundingRect());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return boundingRect.adjusted(-10,-10,10,10);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FixedPortsModel::addBayByData(BayProperty* pData)
|
||||||
|
{
|
||||||
|
QList<GraphicsBaseItem*> items;
|
||||||
|
QList<QUuid> lstCompo = pData->getLstComponent();
|
||||||
|
for(auto& id:lstCompo){
|
||||||
|
if(_nodeItem.contains(id)){
|
||||||
|
items.append(_nodeItem.value(id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QRectF rec = calculateItemsBoundingRect(items);
|
||||||
|
auto pBay = new ElectricBayItem(rec);
|
||||||
|
pBay->setItemType(GIT_bay);
|
||||||
|
pBay->setProperty(pData);
|
||||||
|
pBay->setText(pData->tag());
|
||||||
|
addBayItem(pData->uuid(),pBay);
|
||||||
|
getScene()->addItem(pBay);
|
||||||
|
}
|
||||||
|
|
||||||
void FixedPortsModel::addTestData()
|
void FixedPortsModel::addTestData()
|
||||||
{
|
{
|
||||||
QUuid breakerId = QUuid::createUuid();
|
QUuid breakerId = QUuid::createUuid();
|
||||||
|
|
@ -1236,4 +1460,20 @@ void FixedPortsModel::addTestData()
|
||||||
addBaseItem(lineId,pLine);
|
addBaseItem(lineId,pLine);
|
||||||
establishConnection(pBreaker,pBus,pLine);
|
establishConnection(pBreaker,pBus,pLine);
|
||||||
_scene->addItem(pLine);
|
_scene->addItem(pLine);
|
||||||
|
|
||||||
|
QList<GraphicsBaseItem*> lst;
|
||||||
|
lst.append(pBreaker);
|
||||||
|
QRectF rec = calculateItemsBoundingRect(lst);
|
||||||
|
ElectricBayItem* pBay = new ElectricBayItem(rec);
|
||||||
|
pBay->setItemType(GIT_bay);
|
||||||
|
pBay->setText("间隔1");
|
||||||
|
QUuid bayId = QUuid::createUuid();
|
||||||
|
BayProperty* pBayData = addBayData(bayId);
|
||||||
|
pBay->setProperty(pBayData);
|
||||||
|
pBayData->setName("间隔1");
|
||||||
|
pBayData->setTag("间隔1");
|
||||||
|
pBayData->getLstComponent().append(breakerId);
|
||||||
|
addBayItem(bayId,pBay);
|
||||||
|
addItemsToBay(lst,pBay);
|
||||||
|
_scene->addItem(pBay);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
#include "graphicsItem/electricBayItem.h"
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QStyleOption>
|
||||||
|
|
||||||
|
ElectricBayItem::ElectricBayItem(const QRectF &rect,QGraphicsItem *parent)
|
||||||
|
: GraphicsNonStandardItem(parent)
|
||||||
|
{
|
||||||
|
m_showRect = rect;
|
||||||
|
m_dWidth = rect.width();
|
||||||
|
m_dHeight = rect.height();
|
||||||
|
m_font.setPointSize(12);
|
||||||
|
}
|
||||||
|
|
||||||
|
ElectricBayItem::~ElectricBayItem()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ElectricBayItem::setText(const QString& text)
|
||||||
|
{
|
||||||
|
prepareGeometryChange(); // 通知框架几何变化
|
||||||
|
m_text = text;
|
||||||
|
updateTextShape();
|
||||||
|
}
|
||||||
|
|
||||||
|
QPainterPath ElectricBayItem::shape()
|
||||||
|
{
|
||||||
|
QPainterPath path;
|
||||||
|
path.addRect(_recLabel);
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ElectricBayItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
|
||||||
|
{
|
||||||
|
painter->setPen(m_pen);
|
||||||
|
painter->drawText(_recLabel,m_text);
|
||||||
|
m_pen.setStyle(Qt::DashLine);
|
||||||
|
if (option->state & QStyle::State_Selected) //是选中状态,绘制选中框
|
||||||
|
{
|
||||||
|
painter->drawRect(m_showRect);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ElectricBayItem::updateTextShape()
|
||||||
|
{
|
||||||
|
QFontMetricsF metrics(m_font);
|
||||||
|
QRectF recText = metrics.boundingRect(m_text);
|
||||||
|
//_recLabel = recText.translated(g_offsetX,g_offsetY);
|
||||||
|
_recLabel = recText;
|
||||||
|
shape();
|
||||||
|
}
|
||||||
|
|
@ -35,13 +35,13 @@ void ElectricSvgItemBus::updateConnectData()
|
||||||
QJsonArray arr;
|
QJsonArray arr;
|
||||||
if(_property)
|
if(_property)
|
||||||
{
|
{
|
||||||
for(auto ptr:m_mapPort)
|
for(auto &ptr:m_mapPort)
|
||||||
{
|
{
|
||||||
//if(ptr->connected())
|
//if(ptr->connected())
|
||||||
{
|
{
|
||||||
QJsonObject port;
|
QJsonObject port;
|
||||||
port["portId"] = ptr->getId();
|
port["portId"] = ptr->getId();
|
||||||
auto pLine = ptr->getConnectPtr();
|
//auto pLine = ptr->getConnectPtr();
|
||||||
port["x"] = ptr->pos().x();
|
port["x"] = ptr->pos().x();
|
||||||
port["y"] = ptr->pos().y();
|
port["y"] = ptr->pos().y();
|
||||||
port["portType"] = ptr->getType();
|
port["portType"] = ptr->getType();
|
||||||
|
|
@ -50,6 +50,7 @@ void ElectricSvgItemBus::updateConnectData()
|
||||||
}
|
}
|
||||||
|
|
||||||
obj["port"] = arr;
|
obj["port"] = arr;
|
||||||
|
obj["metaModel"] = _property->metaModelName();
|
||||||
_property->setContext(obj);
|
_property->setContext(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -414,6 +414,7 @@ void GraphicsProjectModelItem::updateConnectData()
|
||||||
}
|
}
|
||||||
|
|
||||||
obj["port"] = arr;
|
obj["port"] = arr;
|
||||||
|
obj["metaModel"] = _property->metaModelName();
|
||||||
_property->setContext(obj);
|
_property->setContext(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
#include "topologyManager.h"
|
#include "topologyManager.h"
|
||||||
#include "graphicsItem/itemPort.h"
|
#include "graphicsItem/itemPort.h"
|
||||||
#include "graphicsItem/electricConnectLineItem.h"
|
#include "graphicsItem/electricConnectLineItem.h"
|
||||||
|
#include "graphicsItem/electricBayItem.h"
|
||||||
#include "topologyManager.h"
|
#include "topologyManager.h"
|
||||||
|
|
||||||
QPointF BaseSelector::ms_ptMouseDown(0.0,0.0);
|
QPointF BaseSelector::ms_ptMouseDown(0.0,0.0);
|
||||||
|
|
@ -129,6 +130,21 @@ void BaseSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, DesignerScen
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QPointF pos = event->scenePos();
|
||||||
|
// 遍历所有项检测点击
|
||||||
|
for (QGraphicsItem* item : scene->items()) {
|
||||||
|
ElectricBayItem* pItem = dynamic_cast<ElectricBayItem*>(item);
|
||||||
|
if (pItem) {
|
||||||
|
if(pItem->containsPoint(pos)){
|
||||||
|
// 处理命中
|
||||||
|
pItem->setSelected(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_opMode == OM_move) //可以多个选中同时移动
|
if(m_opMode == OM_move) //可以多个选中同时移动
|
||||||
|
|
@ -166,6 +182,20 @@ void BaseSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, DesignerScen
|
||||||
item->updateHandles();
|
item->updateHandles();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
QPointF pos = event->scenePos();
|
||||||
|
// 遍历所有项检测点击
|
||||||
|
for (QGraphicsItem* item : scene->items()) {
|
||||||
|
ElectricBayItem* pItem = dynamic_cast<ElectricBayItem*>(item);
|
||||||
|
if (pItem) {
|
||||||
|
if(pItem->containsPoint(pos)){
|
||||||
|
// 处理命中
|
||||||
|
pItem->setSelected(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -182,6 +212,8 @@ void BaseSelector::mouseMoveEvent(QGraphicsSceneMouseEvent* event, DesignerScene
|
||||||
GraphicsBaseItem* item = qgraphicsitem_cast<GraphicsBaseItem*>(items.first());
|
GraphicsBaseItem* item = qgraphicsitem_cast<GraphicsBaseItem*>(items.first());
|
||||||
if(item)
|
if(item)
|
||||||
{
|
{
|
||||||
|
if(item->getItemType() == GIT_bay)
|
||||||
|
return;
|
||||||
if(ms_nDragHandle == H_none)
|
if(ms_nDragHandle == H_none)
|
||||||
{
|
{
|
||||||
//设置光标样式
|
//设置光标样式
|
||||||
|
|
@ -409,6 +441,8 @@ void BaseSelector::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event, Design
|
||||||
GraphicsProjectModelItem* item = qgraphicsitem_cast<GraphicsProjectModelItem*>(items.first());
|
GraphicsProjectModelItem* item = qgraphicsitem_cast<GraphicsProjectModelItem*>(items.first());
|
||||||
if(item)
|
if(item)
|
||||||
{
|
{
|
||||||
|
if(item->getItemType() == GIT_bay) //间隔暂时返回
|
||||||
|
return;
|
||||||
QString modelName = item->getModelName(); //todo:additem时填写模型类型
|
QString modelName = item->getModelName(); //todo:additem时填写模型类型
|
||||||
QUuid uuid = item->itemId();
|
QUuid uuid = item->itemId();
|
||||||
_model->showModelDlg(modelName,uuid,item);
|
_model->showModelDlg(modelName,uuid,item);
|
||||||
|
|
@ -421,7 +455,7 @@ void BaseSelector::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event, Design
|
||||||
if(items.count() == 1)
|
if(items.count() == 1)
|
||||||
{
|
{
|
||||||
GraphicsBaseModelItem* item = qgraphicsitem_cast<GraphicsBaseModelItem*>(items.first());
|
GraphicsBaseModelItem* item = qgraphicsitem_cast<GraphicsBaseModelItem*>(items.first());
|
||||||
if(item)
|
if(item && item->getItemType() != GIT_bay)
|
||||||
{
|
{
|
||||||
_model->showProjectModelSettingDlg(item);
|
_model->showProjectModelSettingDlg(item);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
#include <QGraphicsSceneMouseEvent>
|
#include <QGraphicsSceneMouseEvent>
|
||||||
#include <QGraphicsView>
|
#include <QGraphicsView>
|
||||||
#include <graphicsItem/graphicsBaseItem.h>
|
#include <graphicsItem/graphicsBaseItem.h>
|
||||||
|
#include "baseProperty.h"
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
|
||||||
ConnectingSelector::ConnectingSelector(FixedPortsModel* model,QObject *parent)
|
ConnectingSelector::ConnectingSelector(FixedPortsModel* model,QObject *parent)
|
||||||
|
|
@ -135,7 +136,7 @@ void ConnectingSelector::createConnectLline(GraphicsProjectModelItem* connecting
|
||||||
pCon->setState(DataState::changed);
|
pCon->setState(DataState::changed);
|
||||||
}
|
}
|
||||||
|
|
||||||
pItem->setConnection(Connection(connectingItem->itemId(),QUuid(srcPortId),ptSrc->getType(),ptSrc->portPos(),touchedItem->itemId(),QUuid(destPortId),ptDest->getType(),ptDest->portPos()));
|
pItem->getProperty()->setConnection(Connection(connectingItem->itemId(),QUuid(srcPortId),ptSrc->getType(),ptSrc->portPos(),touchedItem->itemId(),QUuid(destPortId),ptDest->getType(),ptDest->portPos()));
|
||||||
_model->addNodeItem(pItem->itemId(),pItem);
|
_model->addNodeItem(pItem->itemId(),pItem);
|
||||||
auto srcParent = ptSrc->getParentPtr();
|
auto srcParent = ptSrc->getParentPtr();
|
||||||
auto destParent = ptDest->getParentPtr();
|
auto destParent = ptDest->getParentPtr();
|
||||||
|
|
|
||||||
|
|
@ -147,7 +147,14 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTableWidget" name="tableWidget_other"/>
|
<widget class="QTableWidget" name="tableWidget_other">
|
||||||
|
<attribute name="horizontalHeaderVisible">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="verticalHeaderVisible">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
|
@ -173,9 +180,6 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QComboBox" name="cb_jk"/>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="0">
|
<item row="3" column="0">
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|
@ -186,9 +190,6 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="1">
|
|
||||||
<widget class="QComboBox" name="cb_qt"/>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="0">
|
<item row="4" column="0">
|
||||||
<widget class="QLabel" name="label_4">
|
<widget class="QLabel" name="label_4">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|
@ -221,9 +222,6 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
|
||||||
<widget class="QComboBox" name="cb_dtgz"/>
|
|
||||||
</item>
|
|
||||||
<item row="7" column="0" colspan="2">
|
<item row="7" column="0" colspan="2">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1,0,0,0,0">
|
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1,0,0,0,0">
|
||||||
<item>
|
<item>
|
||||||
|
|
@ -237,7 +235,11 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLineEdit" name="le_bayName"/>
|
<widget class="QLineEdit" name="le_bayName">
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_8">
|
<widget class="QLabel" name="label_8">
|
||||||
|
|
@ -267,9 +269,6 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="1">
|
|
||||||
<widget class="QComboBox" name="cb_gzlb"/>
|
|
||||||
</item>
|
|
||||||
<item row="5" column="0">
|
<item row="5" column="0">
|
||||||
<widget class="QLabel" name="label_5">
|
<widget class="QLabel" name="label_5">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|
@ -280,12 +279,6 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="1">
|
|
||||||
<widget class="QComboBox" name="cb_ztjc"/>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QComboBox" name="cb_zhbh"/>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QLabel" name="label_2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|
@ -296,6 +289,48 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLineEdit" name="le_zhbh">
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QLineEdit" name="le_jk">
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QLineEdit" name="le_dtgz">
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QLineEdit" name="le_gzlb">
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="1">
|
||||||
|
<widget class="QLineEdit" name="le_ztjc">
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="1">
|
||||||
|
<widget class="QLineEdit" name="le_qt">
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
|
|
||||||
|
|
@ -28,33 +28,16 @@
|
||||||
<property name="horizontalSpacing">
|
<property name="horizontalSpacing">
|
||||||
<number>10</number>
|
<number>10</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0">
|
<item row="2" column="1">
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLineEdit" name="le_from"/>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="3">
|
||||||
|
<widget class="QLineEdit" name="le_fla"/>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_8">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>名称</string>
|
<string>联结 从</string>
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QLineEdit" name="le_name"/>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="2">
|
|
||||||
<widget class="QLabel" name="label_6">
|
|
||||||
<property name="text">
|
|
||||||
<string>间隔序号</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="3">
|
|
||||||
<widget class="QLineEdit" name="le_index"/>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="label_2">
|
|
||||||
<property name="text">
|
|
||||||
<string>类型</string>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
|
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
|
||||||
|
|
@ -64,12 +47,8 @@
|
||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QLineEdit" name="le_type"/>
|
<widget class="QLineEdit" name="le_type"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="2">
|
<item row="0" column="3">
|
||||||
<widget class="QLabel" name="label_7">
|
<widget class="QLineEdit" name="le_index"/>
|
||||||
<property name="text">
|
|
||||||
<string>服役状态</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="3">
|
<item row="1" column="3">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
|
@ -89,18 +68,19 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="0" column="2">
|
||||||
<widget class="QLabel" name="label_8">
|
<widget class="QLabel" name="label_6">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>联结 从</string>
|
<string>间隔序号</string>
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="3" column="0" colspan="4">
|
||||||
<widget class="QLineEdit" name="le_from"/>
|
<widget class="Line" name="line">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="2">
|
<item row="2" column="2">
|
||||||
<widget class="QLabel" name="label_9">
|
<widget class="QLabel" name="label_9">
|
||||||
|
|
@ -112,13 +92,13 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="3">
|
<item row="1" column="0">
|
||||||
<widget class="QLineEdit" name="le_to"/>
|
<widget class="QLabel" name="label_2">
|
||||||
</item>
|
<property name="text">
|
||||||
<item row="3" column="0" colspan="4">
|
<string>类型</string>
|
||||||
<widget class="QSlider" name="horizontalSlider">
|
</property>
|
||||||
<property name="orientation">
|
<property name="alignment">
|
||||||
<enum>Qt::Orientation::Horizontal</enum>
|
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
@ -135,6 +115,9 @@
|
||||||
<item row="4" column="1">
|
<item row="4" column="1">
|
||||||
<widget class="QLineEdit" name="le_voltage"/>
|
<widget class="QLineEdit" name="le_voltage"/>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="5" column="1">
|
||||||
|
<widget class="QLineEdit" name="le_capacity"/>
|
||||||
|
</item>
|
||||||
<item row="4" column="2">
|
<item row="4" column="2">
|
||||||
<widget class="QLabel" name="label_4">
|
<widget class="QLabel" name="label_4">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|
@ -145,8 +128,25 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="3">
|
<item row="0" column="1">
|
||||||
<widget class="QLineEdit" name="le_fla"/>
|
<widget class="QLineEdit" name="le_name"/>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>名称</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QLabel" name="label_7">
|
||||||
|
<property name="text">
|
||||||
|
<string>服役状态</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="0">
|
<item row="5" column="0">
|
||||||
<widget class="QLabel" name="label_5">
|
<widget class="QLabel" name="label_5">
|
||||||
|
|
@ -158,8 +158,8 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="1">
|
<item row="2" column="3">
|
||||||
<widget class="QLineEdit" name="le_capacity"/>
|
<widget class="QLineEdit" name="le_to"/>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,12 @@
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="widget" native="true">
|
<widget class="QWidget" name="widget" native="true">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>21</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>16777215</width>
|
<width>16777215</width>
|
||||||
|
|
@ -46,6 +52,15 @@
|
||||||
<string notr="true">background-color: rgb(209, 209, 209);</string>
|
<string notr="true">background-color: rgb(209, 209, 209);</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="label">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
class BaseProperty;
|
class BaseProperty;
|
||||||
class BaseModelProperty;
|
class BaseModelProperty;
|
||||||
|
class BayProperty;
|
||||||
|
|
||||||
class DIAGRAM_DESIGNER_PUBLIC BasePropertyManager : public QObject
|
class DIAGRAM_DESIGNER_PUBLIC BasePropertyManager : public QObject
|
||||||
{
|
{
|
||||||
|
|
@ -29,6 +30,11 @@ public:
|
||||||
BaseModelProperty* findBaseEntityData(QUuid);
|
BaseModelProperty* findBaseEntityData(QUuid);
|
||||||
void deleteBaseEntityData(QUuid);
|
void deleteBaseEntityData(QUuid);
|
||||||
QMap<QUuid,BaseModelProperty*> getBaseEntityData() const;
|
QMap<QUuid,BaseModelProperty*> getBaseEntityData() const;
|
||||||
|
|
||||||
|
void insertBayData(QUuid,BayProperty*);
|
||||||
|
BayProperty* findBayData(QUuid);
|
||||||
|
void deleteBayData(QUuid);
|
||||||
|
QMap<QUuid,BayProperty*> getBayData() const;
|
||||||
signals:
|
signals:
|
||||||
void dataCreated(QString uuid);
|
void dataCreated(QString uuid);
|
||||||
void dataChanged(QString uuid);
|
void dataChanged(QString uuid);
|
||||||
|
|
@ -37,5 +43,6 @@ public slots:
|
||||||
private:
|
private:
|
||||||
QMap<QUuid,BaseProperty*> m_entityData; //工程模实例化元件的唯一数据
|
QMap<QUuid,BaseProperty*> m_entityData; //工程模实例化元件的唯一数据
|
||||||
QMap<QUuid,BaseModelProperty*> m_baseEntityData; //基模实例元件数据
|
QMap<QUuid,BaseModelProperty*> m_baseEntityData; //基模实例元件数据
|
||||||
|
QMap<QUuid,BayProperty*> m_bayData; //间隔数据
|
||||||
};
|
};
|
||||||
#endif // BASEPROPERTYMANAGER_H
|
#endif // BASEPROPERTYMANAGER_H
|
||||||
|
|
|
||||||
|
|
@ -69,3 +69,27 @@ QMap<QUuid,BaseModelProperty*> BasePropertyManager::getBaseEntityData() const
|
||||||
{
|
{
|
||||||
return m_baseEntityData;
|
return m_baseEntityData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/************************************************************/
|
||||||
|
void BasePropertyManager::insertBayData(QUuid id,BayProperty* p)
|
||||||
|
{
|
||||||
|
if(!m_bayData.contains(id))
|
||||||
|
m_bayData.insert(id,p);
|
||||||
|
}
|
||||||
|
|
||||||
|
BayProperty* BasePropertyManager::findBayData(QUuid id)
|
||||||
|
{
|
||||||
|
return m_bayData.value(id,nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BasePropertyManager::deleteBayData(QUuid id)
|
||||||
|
{
|
||||||
|
BayProperty* pData = m_bayData.value(id,nullptr);
|
||||||
|
if(pData)
|
||||||
|
delete pData;
|
||||||
|
}
|
||||||
|
|
||||||
|
QMap<QUuid,BayProperty*> BasePropertyManager::getBayData() const
|
||||||
|
{
|
||||||
|
return m_bayData;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,7 @@ void CMainWindow::initializeAction()
|
||||||
QAction* actEdit = ui->menuProject->addAction(QString::fromWCharArray(L"编辑工程模"));
|
QAction* actEdit = ui->menuProject->addAction(QString::fromWCharArray(L"编辑工程模"));
|
||||||
connect(actEdit,&QAction::triggered,this,&CMainWindow::onAction_editProject);
|
connect(actEdit,&QAction::triggered,this,&CMainWindow::onAction_editProject);
|
||||||
|
|
||||||
QAction* actEditBay = ui->menuBay->addAction(QString::fromWCharArray(L"编辑间隔"));
|
QAction* actEditBay = ui->menuBay->addAction(QString::fromWCharArray(L"管理间隔"));
|
||||||
connect(actEditBay,&QAction::triggered,this,&CMainWindow::onAction_editBay);
|
connect(actEditBay,&QAction::triggered,this,&CMainWindow::onAction_editBay);
|
||||||
|
|
||||||
QAction* testAct = ui->menuTest->addAction(QString::fromWCharArray(L"生成测试基模"));
|
QAction* testAct = ui->menuTest->addAction(QString::fromWCharArray(L"生成测试基模"));
|
||||||
|
|
@ -212,6 +212,7 @@ void CMainWindow::onAction_editProject()
|
||||||
|
|
||||||
void CMainWindow::onAction_editBay()
|
void CMainWindow::onAction_editBay()
|
||||||
{
|
{
|
||||||
|
m_pDiagramCavas->onSignl_openCurrentBay();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::onSignal_addItem(QGraphicsItem* item)
|
void CMainWindow::onSignal_addItem(QGraphicsItem* item)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue