add bay editor
This commit is contained in:
parent
056aede24b
commit
38c8bc51e3
|
|
@ -27,6 +27,61 @@ protected:
|
|||
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 //模型基类
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
@ -47,9 +102,12 @@ public:
|
|||
bool prepareDelete() const {return _prepareDelete;}
|
||||
void setDataChanged(bool b) {_dataChanged = b;} //数据变换标签
|
||||
bool dataChanged() const {return _dataChanged;}
|
||||
void setConnection(Connection con){m_connectState = con;} //保留,用以获取当前图中的连接
|
||||
Connection getConnection() const {return m_connectState;}
|
||||
signals:
|
||||
void updateData(); //通知数据拥有者更新
|
||||
protected:
|
||||
Connection m_connectState;
|
||||
int nType; //设备类型
|
||||
int nGraphicsType;
|
||||
QString sModelName; //模型名
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ enum GraphicsItemType
|
|||
GIT_itemRect = QGraphicsItem::UserType + 51,
|
||||
GIT_itemTri = QGraphicsItem::UserType + 52,
|
||||
GIT_link= QGraphicsItem::UserType + 53,
|
||||
GIT_bay= QGraphicsItem::UserType + 54, //间隔
|
||||
//======================================
|
||||
GIT_baseBus = QGraphicsItem::UserType + 200,
|
||||
GIT_baseLine = QGraphicsItem::UserType + 201,
|
||||
|
|
@ -53,6 +54,7 @@ class corresbondItem //类型关联函数
|
|||
{
|
||||
public:
|
||||
static QMap<AbstractItemType,GraphicsItemType> linkType;
|
||||
static QMap<int,GraphicsItemType> typeToProGraphic;
|
||||
};
|
||||
|
||||
enum DiagramMode //组态图模式
|
||||
|
|
@ -457,6 +459,10 @@ struct Connection
|
|||
srcPos = P_top;
|
||||
destType = T_none;
|
||||
destPos = P_top;
|
||||
nSrcNodeId = QUuid();
|
||||
nSrcPortId = QUuid();
|
||||
nDestNodeId = QUuid();
|
||||
nDestPortId = QUuid();
|
||||
}
|
||||
|
||||
Connection(const Connection& obj)
|
||||
|
|
@ -484,12 +490,12 @@ struct Connection
|
|||
}
|
||||
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)
|
||||
{
|
||||
if(*this == obj)
|
||||
if(this == &obj)
|
||||
return *this;
|
||||
nSrcNodeId = obj.nSrcNodeId;
|
||||
nSrcPortId = obj.nSrcPortId;
|
||||
|
|
|
|||
|
|
@ -3,3 +3,6 @@
|
|||
QMap<AbstractItemType,GraphicsItemType> corresbondItem::linkType = {
|
||||
{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/itemControlHandle.h
|
||||
include/graphicsItem/itemPort.h
|
||||
include/graphicsItem/electricBayItem.h
|
||||
include/baseModelItem/electricBaseModelSvgItem.h
|
||||
include/baseModelItem/electricBaseModelLineItem.h
|
||||
include/baseModelItem/electricBaseModelSvgBus.h
|
||||
|
|
@ -117,6 +118,7 @@ set(DIAGRAMCAVAS_SOURCE_FILES
|
|||
source/graphicsItem/handleText.cpp
|
||||
source/graphicsItem/itemControlHandle.cpp
|
||||
source/graphicsItem/itemPort.cpp
|
||||
source/graphicsItem/electricBayItem.cpp
|
||||
source/baseModelItem/electricBaseModelSvgItem.cpp
|
||||
source/baseModelItem/electricBaseModelLineItem.cpp
|
||||
source/baseModelItem/electricBaseModelSvgBus.cpp
|
||||
|
|
@ -133,6 +135,7 @@ set(DIAGRAMCAVAS_SOURCE_FILES
|
|||
../common/source/httpInterface.cpp
|
||||
../common/source/baseProperty.cpp
|
||||
../common/source/tools.cpp
|
||||
../common/source/global.cpp
|
||||
)
|
||||
|
||||
set(UI_FILES
|
||||
|
|
|
|||
|
|
@ -20,15 +20,11 @@ public:
|
|||
void calculatePath();
|
||||
void resetCurLine(){_curLine = QPoint();}
|
||||
|
||||
void setConnection(Connection con){m_connectState = con;}
|
||||
Connection getConnection() const {return m_connectState;}
|
||||
|
||||
protected:
|
||||
virtual QPainterPath shape() const override;
|
||||
virtual QRectF boundingRect() const override;
|
||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||
private:
|
||||
Connection m_connectState;
|
||||
QPainterPath m_points;
|
||||
QPainterPath m_pointsBoundingRect; //包裹点的矩形集合
|
||||
QList<QPointF> m_lstPoints;
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ public:
|
|||
auto& getValidType() {return _validType;} //获取可用的量测属性
|
||||
void setUi();
|
||||
void addMeasure(MeasurementInfo);
|
||||
void addOtherMeasure(QStringList); //本间隔的其他量测
|
||||
public slots:
|
||||
void onAddClicked();
|
||||
void onDeleteClicked();
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ QT_BEGIN_NAMESPACE
|
|||
namespace Ui { class bayManagerContentDlg; }
|
||||
QT_END_NAMESPACE
|
||||
|
||||
class BayProperty;
|
||||
|
||||
class BayManagerContentDlg : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
@ -17,11 +19,13 @@ public:
|
|||
~BayManagerContentDlg();
|
||||
|
||||
void initial();
|
||||
void setName(const QString& s) {_sBayName = s;}
|
||||
QString name() {return _sBayName;}
|
||||
void setProperty(BayProperty* p) {_pData = p;}
|
||||
BayProperty* getProperty() {return _pData;}
|
||||
void updateByProperty(); //根据数据更新显示
|
||||
void saveSetting(); //保存修改
|
||||
private:
|
||||
Ui::bayManagerContentDlg *ui;
|
||||
QString _sBayName; //每页的间隔名称
|
||||
BayProperty* _pData;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#define BAYMANAGERDLG_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <qlistwidget.h>
|
||||
/*******************************************************
|
||||
间隔管理
|
||||
********************************************************/
|
||||
|
|
@ -10,6 +11,8 @@ namespace Ui { class bayManagerDlg; }
|
|||
QT_END_NAMESPACE
|
||||
|
||||
class BayManagerContentDlg;
|
||||
class FixedPortsModel;
|
||||
class BayProperty;
|
||||
|
||||
class BayManagerDlg : public QDialog
|
||||
{
|
||||
|
|
@ -20,14 +23,18 @@ public:
|
|||
|
||||
void initial();
|
||||
void showDlg();
|
||||
void initData();
|
||||
void clearData(); //切换打开文件时调用
|
||||
void setModelController(FixedPortsModel* p) {_modelController = p;}
|
||||
public slots:
|
||||
void onOkClicked();
|
||||
void onCancelClicked();
|
||||
void onListItemClicked(QListWidgetItem *item);
|
||||
private:
|
||||
void generatePage(QStringList); //生成间隔页 <间隔列表>
|
||||
void generatePage(QList<BayProperty*>); //生成间隔页 <间隔列表>
|
||||
private:
|
||||
Ui::bayManagerDlg *ui;
|
||||
FixedPortsModel* _modelController;
|
||||
QMap<int,BayManagerContentDlg*> _contentData; //<stack index,bay page>
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -54,6 +54,8 @@ public slots:
|
|||
EditPanel* onSignal_addEditPanel(QString);
|
||||
void onSignal_addEditWizard(QString);
|
||||
void onSignal_wizardFinished(DiagramEditorWizardInfo);
|
||||
/*********************************间隔**************************************/
|
||||
void onSignl_openCurrentBay();
|
||||
private:
|
||||
void removePanel(PowerEntity*);
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ class GraphicsItemGroup;
|
|||
class StatusBar;
|
||||
class PowerEntity;
|
||||
class ProjectDiagramNameInput;
|
||||
class BayManagerDlg;
|
||||
|
||||
class DrawingPanel : public QWidget
|
||||
{
|
||||
|
|
|
|||
|
|
@ -22,6 +22,11 @@ struct Connection;
|
|||
class PowerEntity;
|
||||
class ElectricConnectLineItem;
|
||||
class ProjectModelSetting;
|
||||
class ElectricBayItem;
|
||||
class GraphicsNonStandardItem;
|
||||
class BayProperty;
|
||||
class BayManagerDlg;
|
||||
class ModelProperty;
|
||||
|
||||
class FixedPortsModel : public BaseModel, public Serializable
|
||||
{
|
||||
|
|
@ -32,7 +37,7 @@ public:
|
|||
~FixedPortsModel();
|
||||
public:
|
||||
QMap<QUuid,QPointF> allNodePos() const;
|
||||
QVector<Connection> allConnections();
|
||||
QVector<ModelProperty*> allConnectionProperty();
|
||||
QMap<QUuid,GraphicsProjectModelItem*>& allItems();
|
||||
bool addNodeItem(QUuid uuid,GraphicsProjectModelItem*);
|
||||
void addNodeItem(QUuid id,/*int type,*/QPointF pos);
|
||||
|
|
@ -40,7 +45,7 @@ public:
|
|||
QVariant nodeData(QUuid nodeId, NodeRole role) const;
|
||||
BaseProperty* addNodeData(QUuid id,int type,QString name,QString modelName); //对应component数据,一个data可对应多个item(id,类型,名称,工程模名)
|
||||
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*);
|
||||
//QJsonObject saveNode(QUuid const) const;
|
||||
void saveNode(int nPageId);
|
||||
|
|
@ -71,8 +76,19 @@ public:
|
|||
BaseModelProperty* addBaseNodeData(QUuid id,int type,QString name,QString metaName); //添加图元基模数据
|
||||
|
||||
void showProjectModelSettingDlg(GraphicsBaseModelItem*); //在基模拓扑图上打开工程模设置对话框
|
||||
void generateProjectModel(const QString&,QList<GraphicsBaseModelItem*>); //由基模生成工程模
|
||||
void generateProjectModel(const QString&,QList<GraphicsBaseModelItem*>,QList<GraphicsNonStandardItem*>); //由基模生成工程模
|
||||
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(); //生成测试基模
|
||||
Q_SIGNALS:
|
||||
void activatePage(const QString&); //激活当前model所在page
|
||||
|
|
@ -87,10 +103,12 @@ public Q_SLOTS:
|
|||
void onTimeOut();
|
||||
void onSignal_GetPointData(QString type,QMap<qint64,double> map);
|
||||
void onSignal_generateDiagram(const QString&); //生成工程组态信号
|
||||
void onSignal_openBayManager();
|
||||
private:
|
||||
|
||||
QMap<QUuid,GraphicsProjectModelItem*> _nodeItem; //工程模对象
|
||||
QMap<QUuid,GraphicsBaseModelItem*> _baseItem; //基模对象
|
||||
QMap<QUuid,ElectricBayItem*> _bayItem; //间隔对象
|
||||
|
||||
QString _pageName;
|
||||
DiagramCavas* _cavas;
|
||||
|
|
@ -104,6 +122,7 @@ private:
|
|||
QMap<QString,modelStateInfo> _modelStateInfo; //模型结构信息
|
||||
QMap<QString,modelDataInfo> _modelDataInfo; //模型数据信息
|
||||
ProjectModelSetting* m_proModelSettingDlg;
|
||||
BayManagerDlg* m_pBayManager;
|
||||
public:
|
||||
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 resetCurLine(){_curLine = QPoint();}
|
||||
|
||||
void setConnection(Connection con){m_connectState = con;} //保留,用以获取当前图中的连接
|
||||
Connection getConnection() const {return m_connectState;}
|
||||
|
||||
protected:
|
||||
virtual QPainterPath shape() const override;
|
||||
virtual QRectF boundingRect() const override;
|
||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||
private:
|
||||
Connection m_connectState;
|
||||
QPainterPath m_points;
|
||||
QPainterPath m_pointsBoundingRect; //包裹点的矩形集合
|
||||
QList<QPointF> m_lstPoints;
|
||||
|
|
|
|||
|
|
@ -50,6 +50,8 @@ public:
|
|||
|
||||
public:
|
||||
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; }
|
||||
void setPen(const QPen &pen) { m_pen = pen; }
|
||||
|
|
@ -96,13 +98,17 @@ public:
|
|||
|
||||
virtual void syncRotationDataFromParent(const double&) {}
|
||||
virtual double getSyncRotationDataFromParent() {return m_dSyncRotationByParent;}
|
||||
virtual void setItemType(GraphicsItemType type){m_Itemtype = type;}
|
||||
virtual GraphicsItemType getItemType() const {return m_Itemtype;}
|
||||
protected:
|
||||
QUuid m_itemId;
|
||||
ShapeType m_type;
|
||||
QPen m_pen;
|
||||
QBrush m_brush;
|
||||
double m_dWidth;
|
||||
double m_dHeight;
|
||||
QRectF m_boundingRect;
|
||||
GraphicsItemType m_Itemtype; //显示类型
|
||||
|
||||
double m_dSyncRotationByParent; //父项(被加入到某一组)的旋转数据,因为加入某一组后,对该组进行旋转,自身的旋转数据不会同步更新
|
||||
QGraphicsPathItem* m_pOperationCopy; //图元移动和旋转时的操作副本
|
||||
|
|
@ -112,9 +118,33 @@ protected:
|
|||
class ItemPort;
|
||||
class ModelProperty;
|
||||
class PowerEntity;
|
||||
class AbstractProperty;
|
||||
|
||||
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>
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
@ -122,8 +152,6 @@ class GraphicsBaseItem :public QObject, public AbstractShapeType<QGraphicsItem>
|
|||
GraphicsBaseItem(QGraphicsItem *parent);
|
||||
virtual ~GraphicsBaseItem();
|
||||
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 void setEntity(PowerEntity*); //设置当前图元的拓扑数据
|
||||
virtual PowerEntity* entity();
|
||||
|
|
@ -132,8 +160,6 @@ public:
|
|||
virtual void updateByProperty(){}; //使用data对象更新自己
|
||||
virtual void setItemChanged(bool b){_itemChanged = b;}
|
||||
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 ItemPort* getPortById(QString) const;
|
||||
virtual ItemPort* getPortPtr(int) const;
|
||||
|
|
@ -422,8 +448,6 @@ public:
|
|||
public slots:
|
||||
void onUpdateData(); //data发送的更新通知
|
||||
protected:
|
||||
QUuid m_itemId;
|
||||
GraphicsItemType m_Itemtype; //显示类型
|
||||
ModelProperty* _property;
|
||||
PowerEntity* _pEntity; //图元拓扑
|
||||
bool _itemChanged; //图元变化标志,判断是否需要保存
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#include "baseInfoDlg.h"
|
||||
#include "graphicsItem/graphicsBaseItem.h"
|
||||
#include "graphicsItem/electricBayItem.h"
|
||||
#include "graphicsDataModel/fixedPortsModel.h"
|
||||
#include "ui_baseInfoDlg.h"
|
||||
#include "dataBase.h"
|
||||
#include "global.h"
|
||||
|
|
@ -97,14 +98,56 @@ void BaseInfoDlg::setPropertyValue(QVariant var)
|
|||
QString bay_offset_inner = connectBus["bay_offset_inner"].toString();
|
||||
QString from_uuid = connectBus["from_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_2->setText(bay_offset_inner);
|
||||
ui->le_from->setText(from_uuid);
|
||||
ui->le_to->setText(to_uuid);
|
||||
//ui->le_from->setText(from_uuid);
|
||||
//ui->le_to->setText(to_uuid);
|
||||
if(pPro->inService() == 1)
|
||||
ui->rb_inService->setChecked(true);
|
||||
else
|
||||
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["metaModel"] = _property->metaModelName();
|
||||
_property->setContext(obj);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@
|
|||
#include "baseProperty.h"
|
||||
#include "basePropertyManager.h"
|
||||
#include "measureSettingDlg.h"
|
||||
#include "graphicsItem/electricBayItem.h"
|
||||
#include "graphicsDataModel/fixedPortsModel.h"
|
||||
#include "basePropertyManager.h"
|
||||
#include "dataBase.h"
|
||||
|
||||
BayInfoDlg::BayInfoDlg(QWidget *parent)
|
||||
|
|
@ -51,24 +54,151 @@ QMap<QString,propertyStateInfo> BayInfoDlg::getPropertyValue(BaseProperty* pPro)
|
|||
|
||||
void BayInfoDlg::setPropertyValue(QVariant var)
|
||||
{
|
||||
BaseProperty* pPro = static_cast<BaseProperty*>(var.value<void*>());
|
||||
if(pPro)
|
||||
_mapMeasure.clear();
|
||||
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();
|
||||
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;
|
||||
|
||||
ui->tableWidget_local->clearContents(); //清空列表
|
||||
for(auto& info:map){
|
||||
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;" // 关键:保留空白符并允许自动换行
|
||||
"}"
|
||||
);
|
||||
|
||||
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)
|
||||
|
|
@ -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()
|
||||
{
|
||||
if(_measureDlg == nullptr){
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
#include "bayManagerContentDlg.h"
|
||||
#include "baseProperty.h"
|
||||
#include "ui_bayManagerContentDlg.h"
|
||||
#include "basePropertyManager.h"
|
||||
|
||||
BayManagerContentDlg::BayManagerContentDlg(QWidget *parent)
|
||||
: QDialog(parent)
|
||||
, ui(new Ui::bayManagerContentDlg)
|
||||
,_pData(nullptr)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
||||
|
|
@ -17,5 +20,245 @@ BayManagerContentDlg::~BayManagerContentDlg()
|
|||
|
||||
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 "bayManagerContentDlg.h"
|
||||
#include "graphicsItem/electricBayItem.h"
|
||||
#include "graphicsDataModel/fixedPortsModel.h"
|
||||
#include "ui_bayManagerDlg.h"
|
||||
|
||||
BayManagerDlg::BayManagerDlg(QWidget *parent)
|
||||
: QDialog(parent)
|
||||
, ui(new Ui::bayManagerDlg)
|
||||
,_modelController(nullptr)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
||||
|
|
@ -20,11 +23,29 @@ void BayManagerDlg::initial()
|
|||
{
|
||||
connect(ui->btn_ok,&QPushButton::clicked,this,&BayManagerDlg::onOkClicked);
|
||||
connect(ui->btn_cancel,&QPushButton::clicked,this,&BayManagerDlg::onCancelClicked);
|
||||
connect(ui->listWidget,&QListWidget::itemClicked,this,&BayManagerDlg::onListItemClicked);
|
||||
}
|
||||
|
||||
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()
|
||||
|
|
@ -41,6 +62,11 @@ void BayManagerDlg::clearData()
|
|||
void BayManagerDlg::onOkClicked()
|
||||
{
|
||||
hide();
|
||||
for(auto& pDlg:_contentData){
|
||||
if(pDlg){
|
||||
pDlg->saveSetting();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void BayManagerDlg::onCancelClicked()
|
||||
|
|
@ -48,14 +74,25 @@ void BayManagerDlg::onCancelClicked()
|
|||
hide();
|
||||
}
|
||||
|
||||
void BayManagerDlg::generatePage(QStringList lstBay)
|
||||
void BayManagerDlg::onListItemClicked(QListWidgetItem *item)
|
||||
{
|
||||
ui->listWidget->addItems(lstBay);
|
||||
for(auto& str:lstBay)
|
||||
int index = item->data(Qt::UserRole+1).toInt();
|
||||
ui->stackedWidget->setCurrentIndex(index);
|
||||
}
|
||||
|
||||
void BayManagerDlg::generatePage(QList<BayProperty*> lstBay)
|
||||
{
|
||||
for(auto& pData:lstBay)
|
||||
{
|
||||
BayManagerContentDlg* pBay = new BayManagerContentDlg(this);
|
||||
pBay->setName(str);
|
||||
pBay->setProperty(pData);
|
||||
pBay->updateByProperty();
|
||||
int index = ui->stackedWidget->addWidget(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 "powerEntity.h"
|
||||
#include "diagramEditor/diagramEditorWizard.h"
|
||||
#include "componentIconManager.h"
|
||||
//#include "componentIconManager.h"
|
||||
#include "baseProperty.h"
|
||||
#include "diagramEditor/editPanel.h"
|
||||
|
||||
DiagramCavas::DiagramCavas(QWidget *parent)
|
||||
|
|
@ -109,12 +110,15 @@ void DiagramCavas::onSignal_savePage()
|
|||
QMap<QUuid,GraphicsProjectModelItem*> map = pPanel->getModelController()->allItems();
|
||||
for(auto pItem:map)
|
||||
{
|
||||
if(pItem->itemChanged())
|
||||
BaseProperty* pData = dynamic_cast<BaseProperty*>(pItem->getProperty());
|
||||
if(pData){
|
||||
if(pItem->itemChanged() || pData->dataChanged())
|
||||
{
|
||||
pItem->updateConnectData(); //更新连接状态
|
||||
pItem->setItemChanged(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(DataBase::GetInstance()->getPageIdByName(_curPage) == -1) //不存在,创建
|
||||
DataBase::GetInstance()->insertPage(_curPage,_curPage,QJsonObject(),pPanel->getDiagramInfo(),QString("page"),1);
|
||||
|
|
@ -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 "designerView.h"
|
||||
#include "graphicsDataModel/fixedPortsModel.h"
|
||||
#include "graphicsItem/graphicsBaseItem.h"
|
||||
#include "util/selectorManager.h"
|
||||
#include "graphicsItem/electricConnectLineItem.h"
|
||||
#include "statusBar.h"
|
||||
#include "dataBase.h"
|
||||
#include "powerEntity.h"
|
||||
#include "topologyManager.h"
|
||||
#include "projectDiagramNameInput.h"
|
||||
#include "baseProperty.h"
|
||||
|
||||
DrawingPanel::DrawingPanel(PowerEntity* pEntity,QWidget *parent,DiagramMode mode)
|
||||
: QWidget(parent)
|
||||
|
|
@ -194,14 +195,15 @@ QJsonObject DrawingPanel::getDiagramInfo() const
|
|||
obj["nodes"] = arr;
|
||||
|
||||
QJsonArray arrConnect;
|
||||
QVector<Connection> vec = _pModel->allConnections();
|
||||
for(auto iter = vec.begin(); iter != vec.end();++iter)
|
||||
{
|
||||
QVector<ModelProperty*> vec = _pModel->allConnectionProperty();
|
||||
for(auto& pPro:vec){
|
||||
Connection con = pPro->getConnection();
|
||||
QJsonObject connect;
|
||||
connect["SrcNodeId"] = iter->nSrcNodeId.toString();
|
||||
connect["SrcPortId"] = iter->nSrcPortId.toString();
|
||||
connect["DestNodeId"] = iter->nDestNodeId.toString();
|
||||
connect["DestPortId"] = iter->nDestPortId.toString();
|
||||
connect["id"] = pPro->uuid().toString();
|
||||
connect["SrcNodeId"] = con.nSrcNodeId.toString();
|
||||
connect["SrcPortId"] = con.nSrcPortId.toString();
|
||||
connect["DestNodeId"] = con.nDestNodeId.toString();
|
||||
connect["DestPortId"] = con.nDestPortId.toString();
|
||||
arrConnect.append(connect);
|
||||
}
|
||||
obj["connections"] = arrConnect;
|
||||
|
|
@ -231,6 +233,7 @@ void DrawingPanel::loadNodes(QJsonObject obj)
|
|||
for(QJsonValueRef connectJson:connectArr)
|
||||
{
|
||||
QJsonObject connect = connectJson.toObject();
|
||||
QUuid id = QUuid(connect["id"].toString()); //电缆线id,关联component中的电缆
|
||||
QUuid srcId = QUuid(connect["SrcNodeId"].toString());
|
||||
QUuid srcPortId = QUuid(connect["SrcPortId"].toString());
|
||||
QUuid destId = QUuid(connect["DestNodeId"].toString());
|
||||
|
|
@ -244,7 +247,7 @@ void DrawingPanel::loadNodes(QJsonObject obj)
|
|||
//todo:从拓扑结构中查找port的id
|
||||
if(_pModel)
|
||||
{
|
||||
_pModel->addConnectLline(QUuid(srcItemId),QUuid(destItemId),srcPortId,destPortId);
|
||||
_pModel->addConnectLline(id,QUuid(srcItemId),QUuid(destItemId),srcPortId,destPortId);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
#include "baseModelItem/electricBaseModelSvgItem.h"
|
||||
#include "baseModelItem/electricBaseModelSvgBus.h"
|
||||
#include "baseModelItem/electricBaseModelLineItem.h"
|
||||
#include "graphicsItem/electricBayItem.h"
|
||||
#include "graphicsItem/itemPort.h"
|
||||
#include "designerScene.h"
|
||||
#include "dataBase.h"
|
||||
|
|
@ -21,8 +22,12 @@
|
|||
#include "diagramCavas.h"
|
||||
#include <QJsonArray>
|
||||
#include <QMessageBox>
|
||||
#include <QRandomGenerator>
|
||||
#include "baseProperty.h"
|
||||
#include "projectModelSetting.h"
|
||||
#include "bayManagerDlg.h"
|
||||
#include "projectModelManager.h"
|
||||
#include "global.h"
|
||||
|
||||
bool FixedPortsModel::_dataInitialised = false;
|
||||
|
||||
|
|
@ -32,6 +37,7 @@ FixedPortsModel::FixedPortsModel(PowerEntity* pEntity)
|
|||
,_Interface(nullptr)
|
||||
,_pEntity(pEntity)
|
||||
,m_proModelSettingDlg(nullptr)
|
||||
,m_pBayManager(nullptr)
|
||||
{
|
||||
_cavas = nullptr;
|
||||
loadNodeDataFromDataBase();
|
||||
|
|
@ -61,9 +67,9 @@ QMap<QUuid,QPointF> FixedPortsModel::allNodePos() const
|
|||
return map;
|
||||
}
|
||||
|
||||
QVector<Connection> FixedPortsModel::allConnections()
|
||||
QVector<ModelProperty*> FixedPortsModel::allConnectionProperty()
|
||||
{
|
||||
QVector<Connection> vec;
|
||||
QVector<ModelProperty*> vec;
|
||||
for(auto pItem:_nodeItem)
|
||||
{
|
||||
if(pItem->getItemType() == GIT_link)
|
||||
|
|
@ -71,7 +77,10 @@ QVector<Connection> FixedPortsModel::allConnections()
|
|||
auto pLine = dynamic_cast<ElectricConnectLineItem*>(pItem);
|
||||
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)
|
||||
{
|
||||
int type = pro->graphicsType();
|
||||
if(type == GIT_link) //连线对象外部处理
|
||||
return;
|
||||
QString sMeta = pro->metaModelName();
|
||||
QString sProModel = pro->modelName();
|
||||
if(type == GIT_itemTri)
|
||||
{
|
||||
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)
|
||||
{
|
||||
item = new ElectricSvgItemRect(QRect(-15, -15, 30, 30),false);
|
||||
item->setItemType(GIT_itemRect);
|
||||
PropertyModel model = ProjectModelManager::instance().getData()[sMeta][sProModel];
|
||||
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();
|
||||
for(QJsonValueRef portJson:portArr)
|
||||
{
|
||||
|
|
@ -136,8 +160,19 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos)
|
|||
}
|
||||
else if(type == GIT_bus)
|
||||
{
|
||||
item = new ElectricSvgItemBus(QRect(-100, -3, 200, 6));
|
||||
item->setItemType(GIT_bus);
|
||||
PropertyModel model = ProjectModelManager::instance().getData()[sMeta][sProModel];
|
||||
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();
|
||||
for(QJsonValueRef portJson:portArr)
|
||||
|
|
@ -182,8 +217,11 @@ BaseProperty* FixedPortsModel::addNodeData(QUuid id,int type,QString name,QStrin
|
|||
item->setUuid(id);
|
||||
item->setModelName(modelName);
|
||||
item->setType(type);
|
||||
GraphicsItemType localType = corresbondItem::typeToProGraphic[type]; //将通用类型转换为工程模图元
|
||||
item->setGraphicsType(localType);
|
||||
item->setTag(name);
|
||||
item->setName(name);
|
||||
item->setDataChanged(true);
|
||||
BasePropertyManager::instance().insertEntityData(id,item);
|
||||
}
|
||||
return item;
|
||||
|
|
@ -211,6 +249,9 @@ void FixedPortsModel::loadNodeDataFromDataBase()
|
|||
pData->setStation(info.station);
|
||||
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,全局唯一
|
||||
if(pEntity){
|
||||
createTopoTerminalsByData(pEntity,info.context);
|
||||
|
|
@ -236,14 +277,18 @@ 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* dest = _nodeItem[destId];
|
||||
QMap<QUuid,BaseProperty*> mapData = BasePropertyManager::instance().getEntityData();
|
||||
if(mapData.contains(lineId))
|
||||
{
|
||||
BaseProperty* pPro = mapData.value(lineId);
|
||||
if(src && dest)
|
||||
{
|
||||
ElectricConnectLineItem* pItem = new ElectricConnectLineItem();
|
||||
pItem->setItemId(QUuid::createUuid());
|
||||
pItem->setItemId(lineId);
|
||||
pItem->setItemType(GIT_link);
|
||||
_scene->addItem(pItem);
|
||||
|
||||
|
|
@ -256,16 +301,6 @@ void FixedPortsModel::addConnectLline(QUuid srcId,QUuid destId,QUuid srcPort,QUu
|
|||
ItemPort* ptDest = nullptr;
|
||||
ptDest = dest->getPortById(destPort.toString());
|
||||
pItem->setEndPoint(ptDest->scenePos());
|
||||
/*if(dest->getItemType() == GIT_bus) //母线动态创建port
|
||||
{
|
||||
ptDest = dest->getPortById(destPort.toString());
|
||||
pItem->setEndPoint(ptDest->scenePos());
|
||||
}
|
||||
else
|
||||
{
|
||||
ptDest = dest->getPortById(destPort.toString());
|
||||
pItem->setEndPoint(ptDest->scenePos());
|
||||
}*/
|
||||
|
||||
if(ptDest != nullptr)
|
||||
{
|
||||
|
|
@ -273,10 +308,13 @@ void FixedPortsModel::addConnectLline(QUuid srcId,QUuid destId,QUuid srcPort,QUu
|
|||
PortPos destPos = ptDest->portPos();
|
||||
|
||||
pItem->calculatePath();
|
||||
pItem->setConnection(Connection(srcId,srcPort,srcType,srcPos,destId,destPort,destType,destPos));
|
||||
|
||||
pPro->setConnection(Connection(srcId,srcPort,srcType,srcPos,destId,destPort,destType,destPos));
|
||||
ptDest->setConnect(pItem);
|
||||
|
||||
addNodeItem(pItem->itemId(),pItem);
|
||||
pItem->setProperty(pPro);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -424,12 +462,27 @@ QVariant FixedPortsModel::nodeData(QUuid nodeId, NodeRole role) const
|
|||
|
||||
void FixedPortsModel::saveNode(int nPageId)
|
||||
{
|
||||
QMap<QUuid,BaseProperty*> mapData = BasePropertyManager::instance().getEntityData();
|
||||
for(auto &pData:mapData)
|
||||
QMap<QUuid,GraphicsProjectModelItem*> mapItems = allItems();
|
||||
for(auto& pItem:mapItems)
|
||||
{
|
||||
BaseProperty* pData = dynamic_cast<BaseProperty*>(pItem->getProperty());
|
||||
if(pData){
|
||||
Connection con = pData->getConnection();
|
||||
QString fromPin = con.nSrcPortId.toString();
|
||||
QString toPin = con.nDestPortId.toString();
|
||||
QJsonObject context;
|
||||
context["from_pin"] = fromPin;
|
||||
context["to_pin"] = toPin;
|
||||
if(pData->prepareDelete())
|
||||
{
|
||||
DataBase::GetInstance()->deleteComponent(pData->uuid().toString());
|
||||
if(pData->type() == 8){
|
||||
PowerConnection* pCon = TopologyManager::instance().connection(fromPin,toPin);
|
||||
if(pCon){
|
||||
DataBase::GetInstance()->deleteTopologic(con.nSrcPortId,con.nDestPortId);
|
||||
TopologyManager::instance().removeConnection(pCon->id());
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if(pData->dataChanged())
|
||||
|
|
@ -444,6 +497,8 @@ void FixedPortsModel::saveNode(int nPageId)
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
|
@ -452,41 +507,23 @@ void FixedPortsModel::saveNode(int nPageId)
|
|||
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:增加判断,只在设置模式保存连接关系
|
||||
QVector<Connection> vecCon = allConnections(); //保存当前页面中的连接关系
|
||||
for(auto &con:vecCon)
|
||||
{
|
||||
QString fromPin = con.nSrcPortId.toString();
|
||||
QString toPin = con.nDestPortId.toString();
|
||||
QJsonObject context;
|
||||
context["from_pin"] = fromPin;
|
||||
context["to_pin"] = toPin;
|
||||
if(pData->type() == 8){
|
||||
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:
|
||||
if(pCon){
|
||||
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)
|
||||
|
|
@ -602,7 +639,22 @@ void FixedPortsModel::onSignal_generateDiagram(const QString& sName)
|
|||
{
|
||||
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()
|
||||
|
|
@ -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); //创建拓扑连接(逻辑)
|
||||
if(pCon)
|
||||
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);
|
||||
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);
|
||||
}
|
||||
|
||||
void FixedPortsModel::generateProjectModel(const QString& sPageName,QList<GraphicsBaseModelItem*> lstItem)
|
||||
void FixedPortsModel::generateProjectModel(const QString& sPageName,QList<GraphicsBaseModelItem*> lstItem,QList<GraphicsNonStandardItem*> lstOther)
|
||||
{
|
||||
DrawingPanel* pProPanel = nullptr;
|
||||
if(_cavas){
|
||||
|
|
@ -951,20 +1003,6 @@ void FixedPortsModel::generateProjectModel(const QString& sPageName,QList<Graphi
|
|||
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) //第二次循环处理所有连线对象
|
||||
{
|
||||
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(_baseItem.contains(pBase->uuid())){
|
||||
GraphicsProjectModelItem* pProItem = nullptr;
|
||||
GraphicsBaseModelItem* pBaseItem = _baseItem.value(pBase->uuid());
|
||||
pPro->setSourceItemId(pBaseItem->itemId().toString()); //设置被哪个对象生成
|
||||
pPro->setMetaModelName(pBase->metaModelName()); //传递基模名
|
||||
int type = pBase->graphicsType();
|
||||
if(type == GIT_baseBus)
|
||||
{
|
||||
|
|
@ -1105,6 +1165,10 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
QString proToItemId;
|
||||
QString proFromTerId;
|
||||
QString proToTerId;
|
||||
HandleType proFromType;
|
||||
PortPos proFromPos;
|
||||
HandleType proToType;
|
||||
PortPos proToPos;
|
||||
for(auto& pPro:mapPro)
|
||||
{
|
||||
if(pPro->getSourceItemId() == baseFromComponentId){
|
||||
|
|
@ -1144,6 +1208,8 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
for(auto& port:mapFrom){
|
||||
if(port->getSourcePortId() == baseFromTerId){
|
||||
proFromTerId = port->getId();
|
||||
proFromType = port->getType();
|
||||
proFromPos = port->portPos();
|
||||
auto pLine = dynamic_cast<ElectricConnectLineItem*>(pProItem);
|
||||
if(pLine)
|
||||
pLine->setStartPoint(port->scenePos());
|
||||
|
|
@ -1156,6 +1222,8 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
for(auto& port:mapTo){
|
||||
if(port->getSourcePortId() == baseToTerId){
|
||||
proToTerId = port->getId();
|
||||
proToType = port->getType();
|
||||
proToPos = port->portPos();
|
||||
auto pLine = dynamic_cast<ElectricConnectLineItem*>(pProItem);
|
||||
if(pLine)
|
||||
pLine->setEndPoint(port->scenePos());
|
||||
|
|
@ -1167,6 +1235,9 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
auto pLine = dynamic_cast<ElectricConnectLineItem*>(pProItem);
|
||||
if(pLine)
|
||||
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;
|
||||
|
|
@ -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()
|
||||
{
|
||||
QUuid breakerId = QUuid::createUuid();
|
||||
|
|
@ -1236,4 +1460,20 @@ void FixedPortsModel::addTestData()
|
|||
addBaseItem(lineId,pLine);
|
||||
establishConnection(pBreaker,pBus,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;
|
||||
if(_property)
|
||||
{
|
||||
for(auto ptr:m_mapPort)
|
||||
for(auto &ptr:m_mapPort)
|
||||
{
|
||||
//if(ptr->connected())
|
||||
{
|
||||
QJsonObject port;
|
||||
port["portId"] = ptr->getId();
|
||||
auto pLine = ptr->getConnectPtr();
|
||||
//auto pLine = ptr->getConnectPtr();
|
||||
port["x"] = ptr->pos().x();
|
||||
port["y"] = ptr->pos().y();
|
||||
port["portType"] = ptr->getType();
|
||||
|
|
@ -50,6 +50,7 @@ void ElectricSvgItemBus::updateConnectData()
|
|||
}
|
||||
|
||||
obj["port"] = arr;
|
||||
obj["metaModel"] = _property->metaModelName();
|
||||
_property->setContext(obj);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -414,6 +414,7 @@ void GraphicsProjectModelItem::updateConnectData()
|
|||
}
|
||||
|
||||
obj["port"] = arr;
|
||||
obj["metaModel"] = _property->metaModelName();
|
||||
_property->setContext(obj);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include "topologyManager.h"
|
||||
#include "graphicsItem/itemPort.h"
|
||||
#include "graphicsItem/electricConnectLineItem.h"
|
||||
#include "graphicsItem/electricBayItem.h"
|
||||
#include "topologyManager.h"
|
||||
|
||||
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) //可以多个选中同时移动
|
||||
|
|
@ -166,6 +182,20 @@ void BaseSelector::mousePressEvent(QGraphicsSceneMouseEvent* event, DesignerScen
|
|||
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());
|
||||
if(item)
|
||||
{
|
||||
if(item->getItemType() == GIT_bay)
|
||||
return;
|
||||
if(ms_nDragHandle == H_none)
|
||||
{
|
||||
//设置光标样式
|
||||
|
|
@ -409,6 +441,8 @@ void BaseSelector::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event, Design
|
|||
GraphicsProjectModelItem* item = qgraphicsitem_cast<GraphicsProjectModelItem*>(items.first());
|
||||
if(item)
|
||||
{
|
||||
if(item->getItemType() == GIT_bay) //间隔暂时返回
|
||||
return;
|
||||
QString modelName = item->getModelName(); //todo:additem时填写模型类型
|
||||
QUuid uuid = item->itemId();
|
||||
_model->showModelDlg(modelName,uuid,item);
|
||||
|
|
@ -421,7 +455,7 @@ void BaseSelector::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event, Design
|
|||
if(items.count() == 1)
|
||||
{
|
||||
GraphicsBaseModelItem* item = qgraphicsitem_cast<GraphicsBaseModelItem*>(items.first());
|
||||
if(item)
|
||||
if(item && item->getItemType() != GIT_bay)
|
||||
{
|
||||
_model->showProjectModelSettingDlg(item);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#include <QGraphicsSceneMouseEvent>
|
||||
#include <QGraphicsView>
|
||||
#include <graphicsItem/graphicsBaseItem.h>
|
||||
#include "baseProperty.h"
|
||||
#include <QMessageBox>
|
||||
|
||||
ConnectingSelector::ConnectingSelector(FixedPortsModel* model,QObject *parent)
|
||||
|
|
@ -135,7 +136,7 @@ void ConnectingSelector::createConnectLline(GraphicsProjectModelItem* connecting
|
|||
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);
|
||||
auto srcParent = ptSrc->getParentPtr();
|
||||
auto destParent = ptDest->getParentPtr();
|
||||
|
|
|
|||
|
|
@ -147,7 +147,14 @@
|
|||
</widget>
|
||||
</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>
|
||||
</layout>
|
||||
</item>
|
||||
|
|
@ -173,9 +180,6 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QComboBox" name="cb_jk"/>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
|
|
@ -186,9 +190,6 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QComboBox" name="cb_qt"/>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
|
|
@ -221,9 +222,6 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QComboBox" name="cb_dtgz"/>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1,0,0,0,0">
|
||||
<item>
|
||||
|
|
@ -237,7 +235,11 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="le_bayName"/>
|
||||
<widget class="QLineEdit" name="le_bayName">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_8">
|
||||
|
|
@ -267,9 +269,6 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QComboBox" name="cb_gzlb"/>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
|
|
@ -280,12 +279,6 @@
|
|||
</property>
|
||||
</widget>
|
||||
</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">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
|
|
@ -296,6 +289,48 @@
|
|||
</property>
|
||||
</widget>
|
||||
</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>
|
||||
</widget>
|
||||
<resources/>
|
||||
|
|
|
|||
|
|
@ -28,33 +28,16 @@
|
|||
<property name="horizontalSpacing">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<item row="2" column="1">
|
||||
<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">
|
||||
<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>
|
||||
<string>联结 从</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
|
||||
|
|
@ -64,12 +47,8 @@
|
|||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="le_type"/>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>服役状态</string>
|
||||
</property>
|
||||
</widget>
|
||||
<item row="0" column="3">
|
||||
<widget class="QLineEdit" name="le_index"/>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
|
|
@ -89,18 +68,19 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<item row="0" column="2">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>联结 从</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
|
||||
<string>间隔序号</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="le_from"/>
|
||||
<item row="3" column="0" colspan="4">
|
||||
<widget class="Line" name="line">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<widget class="QLabel" name="label_9">
|
||||
|
|
@ -112,13 +92,13 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="3">
|
||||
<widget class="QLineEdit" name="le_to"/>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="4">
|
||||
<widget class="QSlider" name="horizontalSlider">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>类型</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
@ -135,6 +115,9 @@
|
|||
<item row="4" column="1">
|
||||
<widget class="QLineEdit" name="le_voltage"/>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QLineEdit" name="le_capacity"/>
|
||||
</item>
|
||||
<item row="4" column="2">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
|
|
@ -145,8 +128,25 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<widget class="QLineEdit" name="le_fla"/>
|
||||
<item row="0" column="1">
|
||||
<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 row="5" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
|
|
@ -158,8 +158,8 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QLineEdit" name="le_capacity"/>
|
||||
<item row="2" column="3">
|
||||
<widget class="QLineEdit" name="le_to"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
|
|
|||
|
|
@ -36,6 +36,12 @@
|
|||
</property>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>21</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
|
|
@ -46,6 +52,15 @@
|
|||
<string notr="true">background-color: rgb(209, 209, 209);</string>
|
||||
</property>
|
||||
<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>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="font">
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
class BaseProperty;
|
||||
class BaseModelProperty;
|
||||
class BayProperty;
|
||||
|
||||
class DIAGRAM_DESIGNER_PUBLIC BasePropertyManager : public QObject
|
||||
{
|
||||
|
|
@ -29,6 +30,11 @@ public:
|
|||
BaseModelProperty* findBaseEntityData(QUuid);
|
||||
void deleteBaseEntityData(QUuid);
|
||||
QMap<QUuid,BaseModelProperty*> getBaseEntityData() const;
|
||||
|
||||
void insertBayData(QUuid,BayProperty*);
|
||||
BayProperty* findBayData(QUuid);
|
||||
void deleteBayData(QUuid);
|
||||
QMap<QUuid,BayProperty*> getBayData() const;
|
||||
signals:
|
||||
void dataCreated(QString uuid);
|
||||
void dataChanged(QString uuid);
|
||||
|
|
@ -37,5 +43,6 @@ public slots:
|
|||
private:
|
||||
QMap<QUuid,BaseProperty*> m_entityData; //工程模实例化元件的唯一数据
|
||||
QMap<QUuid,BaseModelProperty*> m_baseEntityData; //基模实例元件数据
|
||||
QMap<QUuid,BayProperty*> m_bayData; //间隔数据
|
||||
};
|
||||
#endif // BASEPROPERTYMANAGER_H
|
||||
|
|
|
|||
|
|
@ -69,3 +69,27 @@ QMap<QUuid,BaseModelProperty*> BasePropertyManager::getBaseEntityData() const
|
|||
{
|
||||
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"编辑工程模"));
|
||||
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);
|
||||
|
||||
QAction* testAct = ui->menuTest->addAction(QString::fromWCharArray(L"生成测试基模"));
|
||||
|
|
@ -212,6 +212,7 @@ void CMainWindow::onAction_editProject()
|
|||
|
||||
void CMainWindow::onAction_editBay()
|
||||
{
|
||||
m_pDiagramCavas->onSignl_openCurrentBay();
|
||||
}
|
||||
|
||||
void CMainWindow::onSignal_addItem(QGraphicsItem* item)
|
||||
|
|
|
|||
Loading…
Reference in New Issue