mod header structure

This commit is contained in:
baiYue 2026-03-13 08:31:37 +08:00
parent 7252d5ade2
commit d5609bd466
204 changed files with 5855 additions and 2492 deletions

View File

@ -62,7 +62,7 @@ set(H_HEADER_FILES
include/monitorPagesDlg.h
include/baseDockWidget.h
common/include/global.h
#common/include/global.h
common/include/tools.h
common/include/httpInterface.h
common/include/baseProperty.h
@ -71,6 +71,12 @@ set(H_HEADER_FILES
common/include/operatingSystem.hpp
common/include/structDataSource.h
common/include/extraPropertyManager.h
common/core_model/types.h
common/core_model/topology.h
common/core_model/diagram.h
common/backend/project_model.h
common/backend/meta_model.h
)
set(CPP_SOURCE_FILES
source/main.cpp
@ -95,11 +101,13 @@ set(CPP_SOURCE_FILES
source/baseDockWidget.cpp
common/source/httpInterface.cpp
common/source/global.cpp
#common/source/global.cpp
common/source/tools.cpp
common/source/baseProperty.cpp
common/source/structDataSource.cpp
common/source/extraPropertyManager.cpp
common/core_model/types.cpp
)
set(UI_FILES
ui/mainwindow.ui
@ -147,6 +155,7 @@ include_directories(common/include)
include_directories(${PostgreSQL_INCLUDE_DIRS})
target_include_directories(DiagramDesigner PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include")
target_include_directories(DiagramDesigner PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/common")
target_include_directories(DiagramDesigner PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/PropertyEditor/source/include)")
target_link_libraries(DiagramDesigner PUBLIC Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Gui

View File

@ -0,0 +1,72 @@
#ifndef META_MODEL_H
#define META_MODEL_H
/*********元模型********/
#include <QString>
#include <QJsonObject>
struct attributeGroup {
int id = 0;
QString groupType;
QString groupName;
int isPublic = -1;
QString remark;
};
struct dataType //数据类型(元模)
{
int id = 0;
QString dataType;
QString databaseType;
};
struct modelType {
int id = 0;
QString modelType;
QString modelName;
int graphicElement; // 图形元素类型
QByteArray icon; //图片
QString remark;
};
struct modelGroup
{
int id = 0;
qint64 modelTypeId = 0;
qint64 attributeGroupId = 0;
};
struct attribute {
int id = 0;
QString attribute; // 属性名
QString attributeName; // 别名
qint64 dataTypeId = 0; //数据类型id
int lengthPrecision = 0; //长度限制(varchar)
int scale = 0; //小数点位数
int isNotNull = 0; //是否非空
QString defaultValue; //默认值
QString valueRange; //数值范围
int isVisible = 1;
};
struct modelAttribute //模型属性表(所有模型属性的索引)
{
int id = 0;
qint64 modelTypeId = 0;
qint64 attributeGroupId = 0;
qint64 attributeId = 0;
};
struct modelAttributePublic //公共属性表
{
int id = 0;
qint64 attributeGroupId = 0;
qint64 attributeId = 0;
};
struct modelConnectivity { //模型连接性表(元模是否可以连接)
int id = 0;
QString fromModel; //属性名
QString toModel;
int connectivity = 0; //是否可连
};
#endif

View File

@ -0,0 +1,283 @@
#ifndef PROJECT_MODEL_H
#define PROJECT_MODEL_H
#include <QWidget>
#include <QString>
#include <QJsonObject>
#include <QMap>
#include <QStandardItemModel>
#include "tools.h"
struct ProjectManagerStruct {
int id = 0;
QString name; // 工程模表名
QString tag; // 工程模名称
QString metaModel; // 元模名
QString groupName; // 属性组名
int linkType; // 图元链接类型
QJsonObject checkState; // 属性选择状态
};
struct ProjectModelSettingStruct //工程模设定类,如图标
{
QString modelName; //工程模名
QMap<QString,QByteArray> mapSvg; //存放选择的svg图片
QMap<QString,QByteArray> mapUsedSvg; //存放使用的svg
};
struct PropertyState {
bool checkState = false;
QString dataType;
bool editable = true;
};
struct PropertyPage {
QMap<QString, PropertyState> checkState;
bool isPublic = false;
};
struct FormerName //曾用名,记录修改前名称
{
QString sName;
bool bChanged = false; //是否改变过
};
typedef QMap<QString, PropertyPage> MapProperty;
struct PropertyModel {
MapProperty mapProperty;
int nType = 0; //工程模类型,选择图标后确定
QStandardItemModel* pBase = nullptr; //基础属性
QStandardItemModel* pSelect = nullptr; //已选择属性
FormerName formerMeta; //曾用元模名
FormerName formerProject; //曾用工程模名
QMap<QString,ProjectManagerStruct> dataInfo; //存放数据库内容
ProjectModelSettingStruct modelSetting;
PropertyModel deepCopy() //深拷贝
{
PropertyModel copy;
copy.mapProperty = mapProperty;
copy.nType = nType;
copy.pBase = deepCloneModel(pBase);
copy.pSelect = deepCloneModel(pSelect);
copy.formerMeta = formerMeta;
copy.formerProject = formerProject;
copy.dataInfo = dataInfo;
copy.modelSetting = modelSetting;
return copy;
}
void release()
{
delete pBase;
delete pSelect;
pBase = nullptr;
pSelect = nullptr;
}
};
typedef QMap<QString,PropertyModel> MapProject; //str为工程名PropertyModel为工程属性
typedef QMap<QString,MapProject> MapMeta; //str为元模名,PropertyModel为工程模集
struct PropertyStateInfo {
QString name; // 属性名
QString tagName; // 别名
QString type; // 属性类型
QVariant defaultValue; // 默认值
int lengthPrecision = 999; // 长度限制
int isVisible = 1; // 是否可见0不可见,1可见,2特殊项
bool lock = false; // 值手动改变时置true下次保存时恢复
};
Q_DECLARE_METATYPE(PropertyStateInfo)
// 属性值信息映射
typedef QMap<QString, PropertyStateInfo> PropertyValueInfo;
// 属性组状态信息
struct GroupStateInfo {
QString groupName; // 组名
QString tableName; // 表名
bool isPublic = false; // 是否公共
PropertyValueInfo info; // 属性信息
};
// 属性组实时数据
struct GroupStateValue {
QString groupName; // 组名
QString tableName; // 表名
QMap<QUuid, PropertyValueInfo> mapInfo; // 实时信息映射
};
struct ModelStateInfo //模型结构信息
{
QString modelName;
int modelType;
QWidget* _PropertyDlg = NULL; //属性设置界面,每个模型维护一种界面
QMap<QString,GroupStateInfo> groupInfo; //属性组信息
void release()
{
if(_PropertyDlg){
delete _PropertyDlg;
_PropertyDlg = nullptr;
}
}
};
struct ModelDataInfo //模型数据信息
{
QString modelName;
int modelType;
QMap<QString,GroupStateValue> groupInfo; //属性组实时信息
};
struct PropertyGroupState {
QString groupName; // 属性组名称
QString tableName; // 属性组表名
QJsonObject propertyState; // 属性状态信息
};
struct MeasureAttributeType //量测可用属性类型(从基模获取的占位符变量)
{
QString tag;
QString name;
};
// 属性内容信息
struct PropertyContentInfo {
QString proTag; // 属性标签
QString proName; // 属性名称
QString proType; // 属性类型
QWidget* proEditor = nullptr; // 编辑窗口对象
bool isValid() const {
return !proTag.isEmpty() && !proName.isEmpty();
}
};
struct PtExtraInfo
{
int index = 0;
QString scope; //变比标签
QString accuracy; //精度等级标签
QString volume; //二次负载容量标签
QString star; //线圈接法
double ratio; //变比
int polarity = 1; //极性
};
struct CtExtraInfo
{
int index = 0;
QString scope; //变比标签
QString accuracy; //精度等级标签
QString volume; //二次负载容量标签
double ratio; //变比
int polarity = 1; //极性
};
struct MeasurementInfo //量测
{
QString tag; //量测tag
QString name; //量测名称
int type; //量测类型 0:遥测 1:遥信 2:遥控
int size; //量测size
QUuid bayUuid; //所属间隔
QUuid componentUuid; //所属设备
//通讯
int nSource; //数据来源 1:cl3611 2:104
QString sStation; //子站名称
QString sDevice; //设备名称
QString sChannel; //通道名(cl3611) 遥测TMx(1-8); P; Q; S; PF; F; deltaF; UAB; UBC; UCA; 遥信: TSxx(01-10); 遥控: TCx;
int nPacket; //包号(104)
int nOffset; //偏移量(104)
//事件
bool bEnable = false; //"enable"开启标志
QMap<QString,double> mapTE; //遥测"cause" key:upup,up,down,downdown可选val:0-100
QString sEdge; //遥信"cause:edge" raising, falling 字符串单选
QString sCommand; //"action:command" info, warning, error, critical, exception 字符串单选
QStringList lstParameter; //"action:parameters" 字符串数组
QString sWindType; //绕组类型 ctpt
int nRatio; //变比
int nPolarity; //极性
int nIndex; //对应绕组序号
QString sSymmetry; //对称量测的name
};
// 定义比较键的结构
struct MeasurementKey {
int nSource;
QString sStation;
QString sDevice;
QString sChannel;
int nPacket;
int nOffset;
MeasurementKey(const MeasurementInfo& info)
: nSource(info.nSource)
, sStation(info.sStation)
, sDevice(info.sDevice)
, sChannel(info.sChannel)
, nPacket(info.nPacket)
, nOffset(info.nOffset) {}
// 用于QMap排序
bool operator<(const MeasurementKey& other) const {
if (nSource != other.nSource) return nSource < other.nSource;
if (sStation != other.sStation) return sStation < other.sStation;
if (sDevice != other.sDevice) return sDevice < other.sDevice;
if (sChannel != other.sChannel) return sChannel < other.sChannel;
if (nPacket != other.nPacket) return nPacket < other.nPacket;
return nOffset < other.nOffset;
}
};
struct ComponentInfo //工程模图元数据
{
QUuid uuid;
QString modelName;
QString nspath;
QString tag;
QString name;
QString description;
QString grid;
QString zone;
QString station;
int type = 0;
bool inService = true;
int state = 0;
QJsonObject connected_bus;
QJsonObject label;
QJsonObject context;
int op = 0;
};
struct ComponentTypeInfo //元件类型
{
int id = 0;
QString type;
QString name;
QJsonObject config;
};
struct PageInfo
{
int id = -1;
QString tag;
QString name;
QJsonObject label;
QJsonObject context;
QString description;
int op;
};
// 页面中保存的项信息
struct ItemPageInfo {
QPointF pos;
double dWidth = 0.0;
double dHeight = 0.0;
double dRotate = 0.0;
};
#endif

View File

@ -0,0 +1,15 @@
#ifndef CONSTANTS_H
#define CONSTANTS_H
/*********常量定义********/
namespace Constants {
const double SCENE_WIDTH = 800;
const double SCENE_HEIGHT = 600;
const int EDITOR_ITEM_WIDTH = 150;
const int EDITOR_ITEM_HEIGHT = 80;
const int EDITOR_BUS_HEIGHT = 10;
const int V_DIAGRAM_SPACING = 80;
const int H_DIAGRAM_SPACING = 80;
const int TRANSFORMER_LEVEL = 999; // 层级结构中变压器所处层级
}
#endif

View File

@ -0,0 +1,14 @@
#ifndef DATA_TRANSMISSION_H
#define DATA_TRANSMISSION_H
/*********数据传输********/
#include <QString>
#include <QStringList>
/*******************传递的数据************************/
struct HttpRecommandInfo{ //推荐数据服务
QString sInput; //输入的前缀
int nOffset = 0; //正确位置计数
QStringList lstRecommand; //推荐列表
};
#endif

372
common/core_model/diagram.h Normal file
View File

@ -0,0 +1,372 @@
#ifndef DIAGRAM_H
#define DIAGRAM_H
/*********组态图********/
#include <QString>
#include <QUuid>
#include <QJsonObject>
#include <QHash>
#include <QList>
#include <QPointF>
#include <QRectF>
// 组态图信息
struct DiagramInfo {
QVariant id; //临时id使用uuidload数据使用数据库自增id
QString sName;
QString sTag;
QVariant parentId;
QString sBasePageName; //父组态图名称
};
struct DiagramEditorWizardBusInfo //组态编辑母线信息
{
int nIndex = 0;
double dVoltage = 0; //电压等级
int nLineType = 1; //1单母线2双母线
int nNum1 = 0; //1母
int nNum2 = 0; //2母
int connectType = 0; //接线方式1为分段连接
int nState = 0; //母线状态位 0已保存1新建2修改
friend QDataStream &operator<<(QDataStream &out, const DiagramEditorWizardBusInfo &data) {
out << data.nIndex << data.dVoltage << data.nLineType << data.nNum1 << data.nNum2 << data.connectType << data.nState;
return out;
}
friend QDataStream &operator>>(QDataStream &in, DiagramEditorWizardBusInfo &data) {
in >> data.nIndex >> data.dVoltage >> data.nLineType >> data.nNum1 >> data.nNum2 >> data.connectType >> data.nState;
return in;
}
};
enum class TransformerType //变压器类型
{
twoWinding = 0, //两绕组
threeWinding //三绕组
};
enum class BayType //间隔类型
{
busSectionBay = 0, //分段
busCouplerBay, //母联
ptBay, //pt
incomingBay, //进线
outcomingBay, //出线
compensationBay, //无功补偿
bypassBay, //旁路
mainTransformerBay //主变
};
enum class EditorItemType //组态编辑中的图形项类型
{
bus = 1, //母线
bay, //间隔
trans, //变压器
line, //连接线
None //空白占位图
};
struct EditorTransConnection //组态变压器连接信息
{
QString sName;
int nPara = 0; //012,高中低侧
};
struct DiagramEditorWizardTransformerInfo //组态变压器信息
{
QString sName;
TransformerType nType;
double dVoltageLevel;
QList<EditorTransConnection> lstBindObj; //连接的对象
};
struct DiagramEditorWizardBayInfo //组态间隔信息
{
QString sName;
BayType nType;
double dVoltageLevel;
QList<QString> lstBindObj; //连接的对象
};
struct DiagramEditorComponentInfo //组态设备信息
{
int nCategory = 0; //分类 0电气设备1连接关系
QString sName;
int nType = 0; //类型 1母线2异步电动机3断路器4电缆5电流互感器6电压互感器7隔离开关8接地开关9快速接地开关10双掷接地隔离开关11带电指示器12避雷器13电缆出线套筒14电缆端
QString sBindObj; //所关联的实体名 (母线block,间隔block变压器高中低端子)
int nBindType = 0; //关联实体的类型 1母线2间隔3变压器
int nBindPara = 0; //关联额外参数,关联变压器时为(0高1中2低)
QString sBindParent; //关联父item名关联变压器时为变压器名
QStringList sUsedRoute; //使用设备的线路名
int nUsedDirection = 0; //被占用的方向 8421 上下左右
QPoint deltaPos = QPoint(0,0); //相对坐标(相对间隔)
QUuid uid;
int nFlag = 0; //标志0未使用1新建2修改
int nRotate = 0; //旋转角
bool operator ==(const DiagramEditorComponentInfo& obj) const {
if(nCategory == obj.nCategory && sName == obj.sName && nType == obj.nType && sBindObj == obj.sBindObj && nBindType == obj.nBindType &&
sUsedRoute == obj.sUsedRoute && nUsedDirection == obj.nUsedDirection && deltaPos == obj.deltaPos && uid == obj.uid && nFlag == obj.nFlag && nRotate == obj.nRotate)
return true;
else
return false;
}
friend QDataStream &operator<<(QDataStream &out, const DiagramEditorComponentInfo &data) {
out << data.nCategory << data.sName << data.nType << data.sBindObj << data.nBindType << data.nBindPara << data.sBindParent << data.sUsedRoute << data.nUsedDirection << data.deltaPos << data.uid << data.nFlag << data.nRotate;
return out;
}
friend QDataStream &operator>>(QDataStream &in, DiagramEditorComponentInfo &data) {
in >> data.nCategory >> data.sName >> data.nType >> data.sBindObj >> data.nBindType >> data.nBindPara >> data.sBindParent >> data.sUsedRoute >> data.nUsedDirection >> data.deltaPos >> data.uid >> data.nFlag >> data.nRotate;
return in;
}
};
inline uint qHash(const DiagramEditorComponentInfo &key, uint seed = 0) {
return qHash(key.uid, seed);
}
struct DiagramEditorRouteInfo //间隔中单条线路信息
{
QString sRouteName;
bool bMainRoute = false; //主线路(包含设备最多的线路,决定整体布局)
QList<DiagramEditorComponentInfo> lstCompo;
QList<DiagramEditorComponentInfo> lstOrder; //线路顺序容器(计算用)
QList<DiagramEditorComponentInfo> lstReverse; //逆序容器(计算用)
friend QDataStream &operator<<(QDataStream &out, const DiagramEditorRouteInfo &data) {
out << data.sRouteName << data.bMainRoute << data.lstCompo << data.lstOrder << data.lstReverse;
return out;
}
friend QDataStream &operator>>(QDataStream &in, DiagramEditorRouteInfo &data) {
in >> data.sRouteName >> data.bMainRoute >> data.lstCompo >> data.lstOrder >> data.lstReverse;
return in;
}
};
struct DiagramEditorBayInfo //组态编辑间隔信息
{
QString name; //间隔名
int nLayout; //布局 0纵向1横向
QList<QUuid> lstFrom; //起始
QList<QUuid> lstTo; //结束
QMap<QString,DiagramEditorRouteInfo> mapRoute; //线路信息
QMap<QString,DiagramEditorComponentInfo> mapComponent; //设备信息
friend QDataStream &operator<<(QDataStream &out, const DiagramEditorBayInfo &data) {
out << data.name << data.nLayout << data.lstFrom << data.lstTo << data.mapRoute << data.mapComponent;
return out;
}
friend QDataStream &operator>>(QDataStream &in, DiagramEditorBayInfo &data) {
in >> data.name >> data.nLayout >> data.lstFrom >> data.lstTo >> data.mapRoute >> data.mapComponent;
return in;
}
};
struct DiagramEditorTransNeutralInfo //组态编辑变压器中性点信息
{
QString name; //中性点名
int nType = 0; //中性点类型 0高1中2低
QPointF delPoint; //相对变压器偏移量
QMap<QString,DiagramEditorRouteInfo> mapRoute; //中性点对应的线路结构
friend QDataStream &operator<<(QDataStream &out, const DiagramEditorTransNeutralInfo &data) {
out << data.name << data.nType << data.delPoint << data.mapRoute;
return out;
}
friend QDataStream &operator>>(QDataStream &in, DiagramEditorTransNeutralInfo &data) {
in >> data.name >> data.nType >> data.delPoint >> data.mapRoute;
return in;
}
};
struct DiagramEditorTransInfo //组态编辑变压器信息
{
QString name; //变压器名
QMap<int,DiagramEditorTransNeutralInfo> mapNeutral; //中性点结构
QMap<QString,DiagramEditorComponentInfo> mapComponent; //设备信息
friend QDataStream &operator<<(QDataStream &out, const DiagramEditorTransInfo &data) {
out << data.name << data.mapNeutral << data.mapComponent;
return out;
}
friend QDataStream &operator>>(QDataStream &in, DiagramEditorTransInfo &data) {
in >> data.name >> data.mapNeutral >> data.mapComponent;
return in;
}
};
enum class DiagramEditorStructType
{
block = 0, //模块(母线段、间隔、变压器)
blockContainer, //模块容器(包含若干模块)
rowData //行数据(包含若干容器)
};
struct DiagramEditorConnectType //组态编辑连接信息
{
QString sName;
int nType = 0; //1母线2间隔,3变压器
friend QDataStream &operator<<(QDataStream &out, const DiagramEditorConnectType &data) {
out << data.sName << data.nType;
return out;
}
friend QDataStream &operator>>(QDataStream &in, DiagramEditorConnectType &data) {
in >> data.sName >> data.nType;
return in;
}
};
struct DiagramEditorBriefConnect //组态编辑时连接信息
{
QUuid uid;
DiagramEditorConnectType con1;
DiagramEditorConnectType con2;
int nPara = 0; //万用参数(变压器中表示连接位置,0高压侧1中压侧2低压侧)
bool operator==(const DiagramEditorBriefConnect& obj)
{
if(this == &obj)
return false;
if((con1.sName == obj.con1.sName && con2.sName == obj.con2.sName)||(con1.sName == obj.con2.sName && con2.sName == obj.con1.sName))
return true;
else
return false;
}
friend QDataStream &operator<<(QDataStream &out, const DiagramEditorBriefConnect &data) {
out << data.uid << data.con1 << data.con2 << data.nPara;
return out;
}
friend QDataStream &operator>>(QDataStream &in, DiagramEditorBriefConnect &data) {
in >> data.uid >> data.con1 >> data.con2 >> data.nPara;
return in;
}
DiagramEditorConnectType getOpposite(const QString& s){ //获取另一端名称
if(con1.sName == s)
return con2;
else if(con2.sName == s)
return con1;
return DiagramEditorConnectType();
}
};
struct DiagramEditorBlockInfo //组态编辑block信息
{
QString sName;
QString sContainerId; //所属的容器id
int nType; //1母线,2间隔,3变压器
int nContainerLevel; //所处容器的层级 0,1,2,3
QUuid uid;
QList<QUuid> _lstCon; //连接信息
QList<QPair<int,QUuid>> _lstSub; //子对象列表(非拓扑计算使用) 如母线子对象为间隔间隔子对象为item电动机子对象为item <类型uid> 类型0设备1间隔
QRectF recSize; //当前大小(根据内容确定)
QPointF sceneDelta; //block中心相对位移(计算布局位置
bool bEditState; //详细编辑状态
//bus
float fVoltage; //母线电压
int nBusType; //0无前缀,1:Ⅰ母,2Ⅱ母
int nIndex; //第几段,1A,2B,3C,4D,5E,6F,7G,8H
//bay
BayType nBayType;
DiagramEditorBayInfo bayInfo; //间隔信息
//transformer
TransformerType nTransType;
DiagramEditorTransInfo transInfo;
friend QDataStream &operator<<(QDataStream &out, const DiagramEditorBlockInfo &data) {
out << data.sName << data.sContainerId << data.nType << data.nContainerLevel << data.uid << data._lstCon << data.recSize << data.sceneDelta
<< data.bEditState << data.fVoltage << data.nBusType << data.nIndex << data.nBayType << data.bayInfo << data.nTransType << data.transInfo;
return out;
}
friend QDataStream &operator>>(QDataStream &in, DiagramEditorBlockInfo &data) {
in >> data.sName >> data.sContainerId >> data.nType >> data.nContainerLevel >> data.uid >> data._lstCon >> data.recSize >> data.sceneDelta
>> data.bEditState >> data.fVoltage >> data.nBusType >> data.nIndex >> data.nBayType >> data.bayInfo >> data.nTransType >> data.transInfo;
return in;
}
};
struct DiagramEditorContainerInfo //组态编辑容器信息
{
QString sId;
double dMidUpY; //1母上边界
double dMidDownY; //2母下边界
double dStartX; //起始x
double dStartY; //起始y
double dWidth; //宽度
double dHeight;
double dMaxUpH; //上方最大高度(1母线到上边界)
double dMaxDownH; //下方最大高度(2母线到下边界)
QMap<int,QList<DiagramEditorBlockInfo>> mapBlockInfo;
friend QDataStream &operator<<(QDataStream &out, const DiagramEditorContainerInfo &data) {
out << data.sId << data.dMidUpY << data.dMidDownY << data.dStartX << data.dStartY << data.dWidth << data.dHeight << data.dMaxUpH << data.dMaxDownH << data.mapBlockInfo;
return out;
}
friend QDataStream &operator>>(QDataStream &in, DiagramEditorContainerInfo &data) {
in >> data.sId >> data.dMidUpY >> data.dMidDownY >> data.dStartX >> data.dStartY >> data.dWidth >> data.dHeight >> data.dMaxUpH >> data.dMaxDownH >> data.mapBlockInfo;
return in;
}
};
struct DiagramEditorProjectInfo //editor工程信息
{
QString sName;
QUuid uid;
QMap<int,DiagramEditorWizardBusInfo> mapBus;
QMap<int,QList<DiagramEditorContainerInfo>> mapSturctContainer;
QMap<QUuid,DiagramEditorBriefConnect> mapConnect;
friend QDataStream &operator<<(QDataStream &out, const DiagramEditorProjectInfo &data) {
out << data.sName << data.uid << data.mapBus << data.mapSturctContainer << data.mapConnect;
return out;
}
friend QDataStream &operator>>(QDataStream &in, DiagramEditorProjectInfo &data) {
in >> data.sName >> data.uid >> data.mapBus >> data.mapSturctContainer >> data.mapConnect;
return in;
}
};
struct DiagramContent {
QString diagramId; // 对应的PowerEntity ID
// 元素位置信息 <元素ID, 位置>
QHash<QString, QPointF> elementPositions;
QHash<QString, QList<QPointF>> connectionPaths; // 自定义路径点
};
struct BaseComponentInfo //基模图元数据
{
int id = 0;
QUuid uuid;
QString name;
QString tag;
int typeId = 0;
QJsonObject context;
QString metaMmodel;
QString projectModel;
};
struct EditorProjectInfo //editor工程数据
{
int id = 0;
QUuid uuid;
QString name;
QString tag;
};
struct EditorBaseSettingInfo //editor基础设置
{
int id = 0;
QUuid uuid;
QString projectName; //所属工程名
QString autor; //作者
QByteArray context; //内容
QUuid generateUid; //生成的图uuid
QString ts; //时间戳
};
#endif // DIAGRAM_H

View File

@ -0,0 +1,413 @@
#ifndef TOPOLOGY_H
#define TOPOLOGY_H
/*********拓扑相关结构********/
#include <QString>
#include <QUuid>
#include <QJsonObject>
#include <QList>
#include <QMap>
#include <QJsonArray>
// 数据状态
enum class DataState {
Unchanged = 0,
Changed,
PrepareDelete
};
// 端口位置
enum PortPos {
P_top = 0,
P_down,
P_left,
P_right
};
enum HandleType
{
T_none = 0,
T_resize, //调整大小
T_rotate, //旋转
T_editShape, //编辑形状
T_text, //文本
T_lineIn, //入线口
T_lineOut, //出线口
T_lineInOut, //双端线
T_newTral //中性点
};
struct Connection
{
QUuid nSrcNodeId;
QUuid nSrcPortId;
HandleType srcType;
PortPos srcPos;
QUuid nDestNodeId;
QUuid nDestPortId;
HandleType destType;
PortPos destPos;
Connection()
{
srcType = T_none;
srcPos = P_top;
destType = T_none;
destPos = P_top;
nSrcNodeId = QUuid();
nSrcPortId = QUuid();
nDestNodeId = QUuid();
nDestPortId = QUuid();
}
Connection(const Connection& obj)
{
nSrcNodeId = obj.nSrcNodeId;
nSrcPortId = obj.nSrcPortId;
srcType = obj.srcType;
srcPos = obj.srcPos;
nDestNodeId = obj.nDestNodeId;
nDestPortId = obj.nDestPortId;
destType = obj.destType;
destPos = obj.destPos;
}
Connection(QUuid nSNI,QUuid nSPI,HandleType sT,PortPos sPOS,QUuid nDNI,QUuid nDPI,HandleType dT,PortPos dPOS)
{
nSrcNodeId = nSNI;
nSrcPortId = nSPI;
srcType = sT;
srcPos = sPOS;
nDestNodeId = nDNI;
nDestPortId = nDPI;
destType = dT;
destPos = dPOS;
}
bool operator==(const Connection& obj)
{
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)
return *this;
nSrcNodeId = obj.nSrcNodeId;
nSrcPortId = obj.nSrcPortId;
srcType = obj.srcType;
srcPos = obj.srcPos;
nDestNodeId = obj.nDestNodeId;
nDestPortId = obj.nDestPortId;
destType = obj.destType;
destPos = obj.destPos;
return *this;
}
};
// 拓扑连接信息
struct TopologyInfo
{
int id = -1;
QUuid uuid_from;
QUuid uuid_to;
QJsonObject context;
int flag;
QString description;
int op;
};
// 电网信息
struct GridInfo
{
int id = -1;
QString tagname;
QString name;
QString description;
};
// 区域信息
struct ZoneInfo
{
int id = -1;
int grid_id = -1;
QString tagname;
QString name;
QString description;
};
// 电站信息
struct StationInfo
{
int id = -1;
int zone_id = -1;
QString tagname;
QString name;
QString description;
bool is_local = true;
};
// 间隔信息
struct BayInfo
{
QUuid uuid;
QString name;
QString tag;
QString type;
double unom;
double fla;
double capacity;
QString description;
bool inService;
int nState;
QString grid;
QString zone;
QString station;
QJsonObject business;
QJsonObject fromUuid;
QJsonObject toUuid;
QJsonObject protect;
QJsonObject faultRec;
QJsonObject status;
QJsonObject dynSense;
QJsonObject instruct;
QJsonObject etc;
QJsonObject context;
QList<QUuid> components;
};
// 层级关系结构项
struct HierarchyStructItem {
QString sVoltageLevel;
int nCategory; //类型 0设备1间隔
int nEquipType; //设备类别
QString sName; //名称
QUuid uid; //id
QString grid; //电网
QString zone; //区域
QString station; //电站
QJsonObject toJson() const {
QJsonObject obj;
obj["sVoltageLevel"] = sVoltageLevel;
obj["nCategory"] = nCategory;
obj["nEquipType"] = nEquipType;
obj["sName"] = sName;
obj["uid"] = uid.toString();
obj["grid"] = grid;
obj["zone"] = zone;
obj["station"] = station;
return obj;
}
// 从JSON对象解析
void fromJson(const QJsonObject& json) {
sVoltageLevel = json["sVoltageLevel"].toString();
nCategory = json["nCategory"].toInt();
nEquipType = json["nEquipType"].toInt();
sName = json["sName"].toString();
uid = QUuid::fromString(json["uid"].toString());
grid = json["grid"].toString();
zone = json["zone"].toString();
station = json["station"].toString();
}
// 检查有效性
bool isValid() const {
return !uid.isNull() && !sName.isEmpty();
}
// 重载相等运算符
bool operator==(const HierarchyStructItem& other) const {
return uid == other.uid &&
sName == other.sName &&
nCategory == other.nCategory;
}
};
// 层级关系项
struct HierarchyItem {
HierarchyStructItem parent;
HierarchyStructItem item;
QList<HierarchyStructItem> subList;
QJsonObject toJson() const {
QJsonObject obj;
obj["parent"] = parent.toJson();
obj["item"] = item.toJson();
// 序列化子列表
QJsonArray subArray;
for (const auto& subItem : subList) {
subArray.append(subItem.toJson());
}
obj["subList"] = subArray;
obj["subCount"] = subList.size();
return obj;
}
// 从JSON对象解析
void fromJson(const QJsonObject& json) {
parent.fromJson(json["parent"].toObject());
item.fromJson(json["item"].toObject());
// 解析子列表
subList.clear();
QJsonArray subArray = json["subList"].toArray();
for (const QJsonValue& subValue : subArray) {
HierarchyStructItem sub;
sub.fromJson(subValue.toObject());
subList.append(sub);
}
}
// 检查有效性
bool isValid() const {
return parent.isValid() && item.isValid();
}
// 添加子项
void addSubItem(const HierarchyStructItem& subItem) {
subList.append(subItem);
}
// 移除子项
bool removeSubItem(const QUuid& subUid) {
for (int i = 0; i < subList.size(); ++i) {
if (subList[i].uid == subUid) {
subList.removeAt(i);
return true;
}
}
return false;
}
// 查找子项
HierarchyStructItem* findSubItem(const QUuid& subUid) {
for (auto& sub : subList) {
if (sub.uid == subUid) {
return &sub;
}
}
return nullptr;
}
};
//属性其他参数与层级关系
struct ExtraProperty
{
int id = 0;
QString code; // 唯一编码(拼接字符串)
QString tag; // 属性tag
QString name; // 显示名称
QString connect_para; // 连接参数
// 层级名称
QString grid_name;
QString zone_name;
QString station_name;
QString currentLevel;
QString bay_name;
QString component_name;
QString group_name;
QString type_name;
//层级索引
QString grid_tag;
QString zone_tag;
QString station_tag;
QString page_tag;
QString bay_tag;
QUuid component_uuid;
QString component_tag;
QString group_tag;
QString type_tag;
// 数据源配置
QString sourceType; // "property", "measurement"
QVariantMap sourceConfig;
bool bDataChanged = false; //数据改变标志(临时)
// 获取完整路径
QString getFullName() const {
QStringList parts = {grid_name, zone_name, station_name, currentLevel, bay_name, component_name, group_name, name};
parts.removeAll("");
return parts.join(".");
}
//获取完整索引
QString getFullTag() const {
QStringList parts = {grid_tag, zone_tag, station_tag, page_tag, currentLevel, bay_tag, component_uuid.toString(), group_tag, tag};
parts.removeAll("");
return parts.join(".");
}
// 检查是否匹配过滤条件
bool matches(const QVariantMap& filter,const QString& type) const {
for (auto it = filter.begin(); it != filter.end(); ++it) {
QString field = it.key();
QString filterValue = it.value().toString();
QString fieldValue;
if(type == "name"){
fieldValue = getFieldName(field);
}
else if(type == "tag"){
fieldValue = getFieldTag(field);
}
if (!filterValue.isEmpty() && fieldValue != filterValue) {
return false;
}
}
return true;
}
QString getFieldName(const QString& field) const {
if (field == "grid") return grid_name;
if (field == "zone") return zone_name;
if (field == "station") return station_name;
if (field == "currentLevel") return currentLevel;
if (field == "bay") return bay_name;
if (field == "component") return component_name;
if (field == "group") return group_name;
if (field == "property") return name;
return "";
}
QString getFieldTag(const QString& field) const {
if (field == "grid") return grid_tag;
if (field == "zone") return zone_tag;
if (field == "station") return station_tag;
if (field == "page") return page_tag;
if (field == "currentLevel") return currentLevel;
if (field == "bay") return bay_tag;
if (field == "component") return component_name;
if (field == "group") return component_uuid.toString();
if (field == "tag") return name;
return "";
}
};
struct ExtraPropertyLevelInfo { //层级关系item信息
QString displayText; // 显示文本
QString nameValue; // 名称值
QString tagValue; // 标签值
bool isRequired; // 是否必填
QString placeholder; // 缺省占位符
};
// 基础实体类型
enum class EntityType {
Grid,
Zone,
Station,
ConfigurationDiagram,
Component
};
struct EntityInfo {
QString sName;
QString sUuid;
QString sParentId;
EntityType eType;
};
#endif // TOPOLOGY_H

View File

@ -1,4 +1,4 @@
#include "global.h"
#include "types.h"
const QMap<AbstractItemType,GraphicsItemType> linkType = {
{AIT_motor,GIT_itemRect},{AIT_bus,GIT_bus},

172
common/core_model/types.h Normal file
View File

@ -0,0 +1,172 @@
#ifndef TYPES_H
#define TYPES_H
/*********枚举类型********/
#include <QGraphicsItem>
#include <QObject>
#include <QMetaType>
// 图形项类型
enum GraphicsItemType
{
GIT_base = QGraphicsItem::UserType + 1,
GIT_line = QGraphicsItem::UserType + 2,
GIT_rect = QGraphicsItem::UserType + 3,
GIT_roundRect = QGraphicsItem::UserType + 4,
GIT_ellipse = QGraphicsItem::UserType + 5,
GIT_polygon = QGraphicsItem::UserType + 6,
//======================================
GIT_bus = QGraphicsItem::UserType + 50,
GIT_itemRect = QGraphicsItem::UserType + 51,
GIT_itemTri = QGraphicsItem::UserType + 52,
GIT_link= QGraphicsItem::UserType + 53,
GIT_ctItem= QGraphicsItem::UserType + 54,
GIT_ctGroup= QGraphicsItem::UserType + 55,
GIT_ptItem= QGraphicsItem::UserType + 56,
GIT_ptGroup= QGraphicsItem::UserType + 57,
GIT_ES= QGraphicsItem::UserType + 58,
GIT_DS= QGraphicsItem::UserType + 59,
GIT_FES= QGraphicsItem::UserType + 60,
GIT_DTEDS= QGraphicsItem::UserType + 61,
GIT_PI= QGraphicsItem::UserType + 62,
GIT_LA= QGraphicsItem::UserType + 63,
GIT_cableTer= QGraphicsItem::UserType + 64,
GIT_cableEnd= QGraphicsItem::UserType + 65,
GIT_2wTransformer= QGraphicsItem::UserType + 66,
GIT_3wTransformer= QGraphicsItem::UserType + 67,
GIT_node= QGraphicsItem::UserType + 79,
GIT_bay= QGraphicsItem::UserType + 80, //间隔
//======================================
GIT_baseNode = QGraphicsItem::UserType + 199,
GIT_baseBus = QGraphicsItem::UserType + 200,
GIT_baseLine = QGraphicsItem::UserType + 201,
GIT_baseBreaker = QGraphicsItem::UserType + 202,
GIT_baseCT = QGraphicsItem::UserType + 203,
GIT_basePT = QGraphicsItem::UserType + 204,
GIT_baseDS = QGraphicsItem::UserType + 205, //隔离开关
GIT_baseES = QGraphicsItem::UserType + 206, //接地开关
GIT_baseFES = QGraphicsItem::UserType + 207, //快速接地
GIT_baseDTEDS = QGraphicsItem::UserType + 208, //双掷接地隔离开关
GIT_basePI = QGraphicsItem::UserType + 209, //带电指示器
GIT_baseLightningArrester = QGraphicsItem::UserType + 210, //避雷器
GIT_baseCableTer = QGraphicsItem::UserType + 211, //电缆出线套筒
GIT_baseCableEnd = QGraphicsItem::UserType + 212,
GIT_base2wTransformer = QGraphicsItem::UserType + 213, //两绕阻变压器
GIT_base3wTransformer = QGraphicsItem::UserType + 214, //三绕组变压器
};
enum AttributeField //元模属性字段对照
{
Id = Qt::UserRole + 1,
Attribute = Qt::UserRole + 2,
AttributeName = Qt::UserRole + 3,
DataType = Qt::UserRole + 4,
LengthPrecision = Qt::UserRole + 5,
Scale = Qt::UserRole + 6,
IsNotNull = Qt::UserRole + 7,
DefaultValue = Qt::UserRole + 8,
ValueRange = Qt::UserRole + 9,
IsVisible = Qt::UserRole + 10
};
// 抽象项类型
enum AbstractItemType {
AIT_motor = 1,
AIT_bus
};
// 模型功能类型
enum class ModelFunctionType {
ProjectModel = 0,
BaseModel,
EditorModel,
BlockEditorModel,
RuntimeModel
};
// 组态图模式
enum DiagramMode {
DM_edit = 0,
DM_run,
DM_academic,
DM_baseModel
};
//端口类型
enum PortState
{
P_const = 0, //固定端口
p_movable, //移动端口
};
// 项目状态
enum ProjectState {
Error = -1, // 错误
NotExist = 0, // 不存在
Exist, // 已存在
Changed // 已改变
};
// 表单项状态
enum TableItemState {
TS_Create = 1, // 创建
TS_Select = 2, // 选择
TS_Edit = 4 // 编辑
};
// 警告提示信息
enum class AlertInfo {
Success = 1, // 成功
Fail = 2, // 失败
Exist = 4 // 已存在
};
// 选择对话框类型
enum SelectorDialogType {
ST_MetaModel = 0, // 元模对话框
ST_ComponentType // 元件选择
};
// 表格代理内容
enum TableDelegateContent {
TD_ProjectModel = 0, // 工程模
TD_MetaModel, // 基模
TD_ComponentType // 元件类型
};
// 变种图标
enum VariantIcon {
VI_Thumbnail = 0, // 缩略图
VI_Normal_1, // 常规1
VI_Normal_2, // 常规2
VI_Normal_3, // 常规3
VI_Normal_4, // 常规4
VI_Normal_5 // 常规5
};
// 组件类型枚举
enum class ComponentCategory {
ElectricalEquipment = 0, // 电气设备
ConnectionRelation = 1 // 连接关系
};
enum class ComponentType {
Bus = 1, // 母线
AsynchronousMotor = 2, // 异步电动机
CircuitBreaker = 3, // 断路器
Cable = 4, // 电缆
CurrentTransformer = 5, // 电流互感器
VoltageTransformer = 6, // 电压互感器
Disconnector = 7, // 隔离开关
EarthingSwitch = 8, // 接地开关
FastEarthingSwitch = 9, // 快速接地开关
DoubleThrowEarthingSwitch = 10, // 双掷接地隔离开关
VoltageIndicator = 11, // 带电指示器
LightningArrester = 12, // 避雷器
CableTerminal = 13, // 电缆出线套筒
CableEnd = 14 // 电缆端
};
extern const QMap<AbstractItemType,GraphicsItemType> linkType;
//类型转换
extern const QMap<int,GraphicsItemType> typeToProGraphic;
#endif

View File

@ -0,0 +1,28 @@
#ifndef GRAPHICS_ITEMS_H
#define GRAPHICS_ITEMS_H
/*********图元********/
#include <QGraphicsItem>
// 句柄标签
enum HandleTag {
H_none = 0,
H_leftTop,
H_top,
H_rightTop,
H_right,
H_rightBottom,
H_bottom,
H_leftBottom,
H_left,
H_rotate_leftTop,
H_rotate_rightTop,
H_rotate_rightBottom,
H_rotate_leftBottom,
H_edit,
H_textCaption = 40, // 标题文本
H_textCurrent, // 电流
H_textVoltage, // 电压
H_connect = 50 // 连接操作点
};
#endif

View File

@ -0,0 +1,236 @@
#ifndef MONITOR_ITEM_H
#define MONITOR_ITEM_H
/*********人机界面********/
#include <QString>
#include <QMap>
#include <QJsonObject>
enum class MonitorItemState { //监控item的状态
Normal = 0, //正常
Closing, //合闸
Opening, //分闸
AccidentTrip, //事故跳闸
StatusFault, //状态故障
Energized, //带电
DeEnergized, //失电
Grounding, //接地
Running, //运行
ShutDown, //停运
Alarm, //告警
LineBreak, //断线
MeasureMentOutLimit //量测越限
};
struct MonitorItemAttributeInfo //单个监控item属性
{
QString sGroup; //所属组别
QString sTag; //索引名
QString sName; //显示名
int nConnectType = 0; //关联数据类别 0字段 1量测
QString sConnectPara; //查询参数(参数服务使用)
int nShowType = 0; //显示类别 0字符 1图表
bool bShowDiagram = false; //显示到组态中
int nGraphType = 0; //图表类型 0折线1柱状
QString sTimeRange; //时间范围(分)
QMap<quint64,double> mapValue; //属性值
bool bSelected = false;
// 转换为JSON对象
QJsonObject toJson() const {
QJsonObject obj;
obj["sGroup"] = sGroup;
obj["sTag"] = sTag;
obj["sName"] = sName;
obj["nConnectType"] = nConnectType;
obj["sConnectPara"] = sConnectPara;
obj["nShowType"] = nShowType;
obj["bShowDiagram"] = bShowDiagram;
obj["nGraphType"] = nGraphType;
obj["sTimeRange"] = sTimeRange;
obj["sValue"] = mapToJson(mapValue);
obj["bSelected"] = bSelected;
return obj;
}
// 从JSON对象解析
void fromJson(const QJsonObject& json) {
sGroup = json["sGroup"].toString();
sTag = json["sTag"].toString();
sName = json["sName"].toString();
nConnectType = json["nConnectType"].toInt();
sConnectPara = json["sConnectPara"].toString();
nShowType = json["nShowType"].toInt();
bShowDiagram = json["bShowDiagram"].toBool();
nGraphType = json["nGraphType"].toInt();
sTimeRange = json["sTimeRange"].toString();
mapValue = jsonToMap(json["sValue"].toObject());
bSelected = json["bSelected"].toBool();
}
// 检查有效性
bool isValid() const {
return !sTag.isEmpty() && !sName.isEmpty();
}
// 重载相等运算符
bool operator==(const MonitorItemAttributeInfo& other) const {
return sTag == other.sTag &&
sName == other.sName &&
sGroup == other.sGroup;
}
QJsonObject mapToJson(const QMap<quint64, double>& map) const{
QJsonObject jsonObj;
for (auto it = map.constBegin(); it != map.constEnd(); ++it) {
// 将quint64的key转换为QString
QString key = QString::number(it.key());
jsonObj[key] = it.value();
}
return jsonObj;
}
// 从JSON转换回来
QMap<quint64, double> jsonToMap(const QJsonObject& jsonObj) const{
QMap<quint64, double> map;
for (auto it = jsonObj.constBegin(); it != jsonObj.constEnd(); ++it) {
bool ok;
quint64 key = it.key().toULongLong(&ok);
if (ok) {
double value = it.value().toDouble();
map[key] = value;
}
}
return map;
}
};
struct MonitorItemTypeStruct //监控设备类型
{
QString sTag;
QString sName;
bool isValid() const {
return !sTag.isEmpty() && !sName.isEmpty();
}
bool operator==(const MonitorItemTypeStruct& other) const {
return sTag == other.sTag && sName == other.sName;
}
bool operator<(const MonitorItemTypeStruct& other) const {
return sTag < other.sTag || (sTag == other.sTag && sName < other.sName);
}
// 转换为JSON对象 - 成员函数
QJsonObject toJson() const {
QJsonObject obj;
obj["sTag"] = sTag;
obj["sName"] = sName;
return obj;
}
// 从JSON对象解析 - 成员函数
void fromJson(const QJsonObject& json) {
sTag = json["sTag"].toString();
sName = json["sName"].toString();
}
};
struct MonitorItemStateStruct //监控设备状态
{
QString sState;
MonitorItemState eState;
bool isValid() const {
return !sState.isEmpty();
}
bool operator==(const MonitorItemStateStruct& other) const {
return sState == other.sState && eState == other.eState;
}
bool operator<(const MonitorItemStateStruct& other) const {
return sState < other.sState || (sState == other.sState && eState < other.eState);
}
// 转换为JSON对象 - 成员函数
QJsonObject toJson() const {
QJsonObject obj;
obj["sState"] = sState;
obj["eState"] = static_cast<int>(eState);
return obj;
}
// 从JSON对象解析 - 成员函数
void fromJson(const QJsonObject& json) {
sState = json["sState"].toString();
eState = static_cast<MonitorItemState>(json["eState"].toInt());
}
};
struct ModelTypeInfo{ //类型临时信息
int nType;
QString sType;
QString sName;
QString sMeta; //该类型元模名
QString sModel; //该类型工程模名
};
struct MonitorPageInfo //运行时page
{
int id = -1;
QUuid uid;
QString tag;
QString name;
QString parent;
QJsonObject context;
QString ts;
};
struct MonitorItemDisplayInfo //监控模式显示信息
{
int nItemType; //设备类型
QString sStateName; //状态名
bool bEnable = false;
QString sColor;
QByteArray bytPicture; //存储二进制数据
int nWidth;
int nHeight;
QString sMeta; //元模型名
QString sModel; //工程模名
QJsonObject toJson() const {
QJsonObject obj;
obj["nItemType"] = nItemType;
obj["sStateName"] = sStateName;
obj["bEnable"] = bEnable;
obj["sColor"] = sColor;
obj["bytPicture"] = QString(bytPicture.toBase64());
obj["nWidth"] = nWidth;
obj["nHeight"] = nHeight;
obj["sMeta"] = sMeta;
obj["sModel"] = sModel;
return obj;
}
// 从JSON对象解析 - 成员函数
void fromJson(const QJsonObject& json) {
nItemType = json["nItemType"].toInt();
sStateName = json["sStateName"].toString();
bEnable = json["bEnable"].toBool();
sColor = json["sColor"].toString();
QString pictureBase64 = json["bytPicture"].toString();
bytPicture = QByteArray::fromBase64(pictureBase64.toUtf8());
nWidth = json["nWidth"].toInt();
nHeight = json["nHeight"].toInt();
sMeta = json["sMeta"].toString();
sModel = json["sModel"].toString();
}
};
#endif

View File

@ -3,7 +3,9 @@
#include <QObject>
#include <QJsonObject>
#include "global.h"
//#include "global.h"
#include "common/backend/project_model.h"
#include "common/core_model/topology.h"
class AbstractProperty:public QObject //抽象属性类
{
@ -217,6 +219,6 @@ public:
VariableProperty(QObject* parent = nullptr);
~VariableProperty();
modelDataInfo& getPropertyValue() const;
ModelDataInfo& getPropertyValue() const;
};
#endif // DATABASE_H

View File

@ -3,7 +3,8 @@
#include <QObject>
#include <QVector>
#include <QMap>
#include "global.h"
//#include "global.h"
#include "common/core_model/topology.h"
/**
*

File diff suppressed because it is too large Load Diff

View File

@ -5,9 +5,9 @@
**/
#include <QVariant>
struct ExtraProperty;
struct propertyStateInfo;
struct PropertyStateInfo;
struct MeasurementInfo;
struct modelDataInfo;
struct ModelDataInfo;
class StructDataSource : public QObject
{
@ -52,7 +52,7 @@ public:
// 加载数据
void loadExtrapro(QMap<QString, ExtraProperty> vec);
void loadPropertyData(QMap<QString, modelDataInfo> map);
void loadPropertyData(QMap<QString, ModelDataInfo> map);
void loadMeasurementData(QMap<QString, MeasurementInfo> map);
@ -63,7 +63,7 @@ public:
QVector<ExtraProperty> getAllProperties() const;
// 获取property数据
propertyStateInfo* getPropertyData(const ExtraProperty& prop);
PropertyStateInfo* getPropertyData(const ExtraProperty& prop);
// 获取measurement数据
MeasurementInfo* getMeasurementData(const ExtraProperty& prop);
@ -78,7 +78,7 @@ signals:
public:
QMap<QString, ExtraProperty> allProperties;
private:
QMap<QString, modelDataInfo> m_propertyData; //参量
QMap<QString, ModelDataInfo> m_propertyData; //参量
QMap<QString, MeasurementInfo> m_measurementData; //量测
};
#endif

View File

@ -90,7 +90,7 @@ VariableProperty::~VariableProperty()
}
modelDataInfo& VariableProperty::getPropertyValue() const
ModelDataInfo& VariableProperty::getPropertyValue() const
{
return DataManager::instance().modelData()[sModelName];
}

View File

@ -1,6 +1,6 @@
#include "structDataSource.h"
#include "dataBase.h"
#include "global.h"
//#include "global.h"
StructDataSource::StructDataSource(QObject* parent) : QObject(parent) {
@ -194,7 +194,7 @@ QVector<ExtraProperty> StructDataSource::getAllProperties() const {
}
// 获取property数据
propertyStateInfo* StructDataSource::getPropertyData(const ExtraProperty& prop) {
PropertyStateInfo* StructDataSource::getPropertyData(const ExtraProperty& prop) {
QString modelName = prop.sourceConfig.value("modelName").toString();
QString groupTag = prop.group_tag;
QUuid componentUuid = prop.component_uuid;
@ -259,7 +259,7 @@ void StructDataSource::loadExtrapro(QMap<QString, ExtraProperty> vec)
allProperties = vec;
}
void StructDataSource::loadPropertyData(QMap<QString, modelDataInfo> map)
void StructDataSource::loadPropertyData(QMap<QString, ModelDataInfo> map)
{
m_propertyData = map;
}

View File

@ -135,13 +135,22 @@ set(DIAGRAMCAVAS_HEADER_FILES
include/propertyType/pannelColorGadget.h
../common/include/httpInterface.h
../common/include/tools.h
../common/include/global.h
#../common/include/global.h
../common/include/baseProperty.h
../common/include/compiler.hpp
../common/include/export.hpp
../common/include/operatingSystem.hpp
../common/include/structDataSource.h
../common/include/extraPropertyManager.h
../common/core_model/types.h
../common/core_model/diagram.h
../common/core_model/topology.h
../common/core_model/data_transmission.h
../common/core_model/constants.h
../common/frontend/monitor_item.h
../common/backend/project_model.h
../common/frontend/graphics_items.h
)
set(DIAGRAMCAVAS_SOURCE_FILES
@ -276,9 +285,11 @@ set(DIAGRAMCAVAS_SOURCE_FILES
../common/source/httpInterface.cpp
../common/source/baseProperty.cpp
../common/source/tools.cpp
../common/source/global.cpp
#../common/source/global.cpp
../common/source/structDataSource.cpp
../common/source/extraPropertyManager.cpp
../common/core_model/types.cpp
)
set(UI_FILES

View File

@ -4,7 +4,8 @@
#include <QDialog>
#include <QVBoxLayout>
#include <QFormLayout>
#include "global.h"
//#include "global.h"
#include "common/backend/project_model.h"
/*******************************************************
********************************************************/
@ -19,19 +20,19 @@ class BaseContentDlg : public QDialog
public:
BaseContentDlg(QWidget *parent = nullptr);
virtual ~BaseContentDlg();
virtual void createGroupView(groupStateInfo) = 0; //创建页面
virtual QMap<QString,propertyStateInfo> getPropertyValue(BaseProperty* = nullptr) = 0; //返回当前页面的属性值
virtual void createGroupView(GroupStateInfo) = 0; //创建页面
virtual QMap<QString,PropertyStateInfo> getPropertyValue(BaseProperty* = nullptr) = 0; //返回当前页面的属性值
//void setPropertyValue(QMap<QString,propertyStateInfo>);
//void setPropertyValue(BaseProperty*);
virtual void setPropertyValue(QVariant) = 0;
void setModelController(FixedPortsModel* p){_curModelController = p;}
auto getModelController() {return _curModelController;}
void setExtendProperty(propertyStateInfo info) {_extendInfo = info;} //设置跨组别使用的公共变量(ct,pt使用extend绕组信息)
void setExtendProperty(PropertyStateInfo info) {_extendInfo = info;} //设置跨组别使用的公共变量(ct,pt使用extend绕组信息)
protected:
QMap<QString,propertyContentInfo> _mapPro;
QMap<QString,PropertyContentInfo> _mapPro;
QFormLayout* createFormLayout(QWidget* parent);
FixedPortsModel* _curModelController;
propertyStateInfo _extendInfo;
PropertyStateInfo _extendInfo;
};
#endif

View File

@ -6,7 +6,7 @@
#include <QWidget>
#include <QHBoxLayout>
#include <QSplitter>
#include "global.h"
//#include "global.h"
#include "designerScene.h"
class DesignerView;

View File

@ -20,8 +20,8 @@ public:
void initial();
virtual void createGroupView(groupStateInfo);
virtual QMap<QString,propertyStateInfo> getPropertyValue(BaseProperty* = nullptr);
virtual void createGroupView(GroupStateInfo);
virtual QMap<QString,PropertyStateInfo> getPropertyValue(BaseProperty* = nullptr);
virtual void setPropertyValue(QVariant);
void setParentDlg(ItemPropertyDlg* p) {_parentDlg = p;}
public slots:

View File

@ -5,7 +5,7 @@
#include <QtWidgets/QMenu>
#include "graphicsDataModel/baseModel.h"
#include "global.h"
//#include "global.h"
class QUndoStack;

View File

@ -3,7 +3,8 @@
#include <QWidget>
#include "baseContentDlg.h"
#include "global.h"
//#include "global.h"
#include "common/core_model/data_transmission.h"
/*******************************************************
********************************************************/
@ -20,8 +21,8 @@ class BayInfoDlg : public BaseContentDlg
public:
BayInfoDlg(QWidget *parent = nullptr);
virtual ~BayInfoDlg();
virtual void createGroupView(groupStateInfo);
virtual QMap<QString,propertyStateInfo> getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值
virtual void createGroupView(GroupStateInfo);
virtual QMap<QString,PropertyStateInfo> getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值
virtual void setPropertyValue(QVariant);
auto& getValidType() {return _validType;} //获取可用的量测属性
void setUi();
@ -42,7 +43,7 @@ private:
BayProperty* _bayProperty; //当前间隔属性
BaseProperty* _itemProperty; //当前对象属性
MeasureSettingDlg* _measureDlg;
QList<measureAttributeType> _validType; //可用的属性列表
QList<MeasureAttributeType> _validType; //可用的属性列表
QMap<QString,MeasurementInfo> _mapMeasure; //量测列表
bool bShowDouble = false; //显示double界面
};

View File

@ -2,7 +2,8 @@
#define BAYMEASUREDLG_H
#include <QDialog>
#include "global.h"
//#include "global.h"
#include "common/backend/project_model.h"
/*******************************************************
********************************************************/
@ -40,7 +41,7 @@ private:
Ui::bayMeasureDlg *ui;
BayProperty* _bayProperty; //当前间隔属性
MeasureSettingDlg* _measureDlg;
QList<measureAttributeType> _validType; //可用的属性列表
QList<MeasureAttributeType> _validType; //可用的属性列表
QMap<QString,MeasurementInfo> _mapMeasure; //量测列表
};

View File

@ -3,7 +3,7 @@
#include <QWidget>
#include "baseContentDlg.h"
#include "global.h"
//#include "global.h"
/*******************************************************
ct扩展信息界面
********************************************************/
@ -21,8 +21,8 @@ class CtExtraInfoDlg : public BaseContentDlg
public:
CtExtraInfoDlg(QWidget *parent = nullptr);
virtual ~CtExtraInfoDlg();
virtual void createGroupView(groupStateInfo);
virtual QMap<QString,propertyStateInfo> getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值
virtual void createGroupView(GroupStateInfo);
virtual QMap<QString,PropertyStateInfo> getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值
virtual void setPropertyValue(QVariant);
public slots:
void onAddClicked();

View File

@ -2,7 +2,11 @@
#define DIAGRAMCAVAS_H
#include <QMdiArea>
#include "global.h"
//#include "global.h"
#include "common/backend/project_model.h"
#include "common/core_model/topology.h"
#include "common/core_model/types.h"
#include "common/core_model/diagram.h"
#include "export.hpp"
QT_BEGIN_NAMESPACE
@ -45,17 +49,17 @@ public:
public:
void initial();
signals:
void prepareUpdateItems(QList<RelationItem>,bool refresh);
void prepareSelectItems(QList<RelationItem>);
void prepareUpdateItems(QList<HierarchyItem>,bool refresh);
void prepareSelectItems(QList<HierarchyItem>);
void updateMonitorList(QString,QPair<QString,QUuid>,int nMode = 0); //0新增1删除
void createdMonitorItems(QList<RelationItem>); //创建的监控中item个数
void createdMonitorItems(QList<HierarchyItem>); //创建的监控中item个数
void selectTarget(QObject*);
void prepareUpdateTopology(QList<RelationItem>,bool refresh,bool showFull); //更新层级数 refresh:刷新标志,showFull:显示全部层级
void prepareUpdateTopology(QList<HierarchyItem>,bool refresh,bool showFull); //更新层级数 refresh:刷新标志,showFull:显示全部层级
void updateMonitorTopology(QList<QUuid>);
public slots:
void onSignal_addDrawingPanel(PowerEntity* p,DiagramMode = DM_edit,QString parent = QString()); //parent:派生运行时的page
void onSignal_addGraphicsItem(modelStateInfo&);
void onSignal_addGraphicsItem(ModelStateInfo&);
void onSignal_addPage();
void onSignal_savePage();
void onSignal_loadPage(PowerEntity* p);
@ -84,7 +88,7 @@ public slots:
void onCreateTestBaseModelDiagram(); //生成测试基模图
/****************************拓扑关系(层级关系)******************************/
void onSignal_updateTopology(QList<RelationItem>,bool,bool); //更新拓扑列表
void onSignal_updateTopology(QList<HierarchyItem>,bool,bool); //更新拓扑列表
/******************************生成组态***********************************/
void onSignal_createEditPanel(QString,QUuid);
void onSignal_prepareOpenSetting(QString);
@ -97,11 +101,11 @@ public slots:
/*********************************间隔**************************************/
void onSignl_openCurrentBay();
/********************************运行时**********************************/
void onSignal_updateCurItems(QList<RelationItem>,bool); //更新当前设备列表
void onSignal_selectedItems(QList<RelationItem>); //当前选中设备
void onSignal_generate(QString,QList<RelationItem>); //使用选中设备生成监控 (监控名,设备)
void onSignal_updateCurItems(QList<HierarchyItem>,bool); //更新当前设备列表
void onSignal_selectedItems(QList<HierarchyItem>); //当前选中设备
void onSignal_generate(QString,QList<HierarchyItem>); //使用选中设备生成监控 (监控名,设备)
void onSignal_monitorCreated(QString,QPair<QString,QUuid>); //监控已创建
void onSignal_monitorItemCreated(QList<RelationItem>); //监控中创建的对象
void onSignal_monitorItemCreated(QList<HierarchyItem>); //监控中创建的对象
void onSignal_monitorSelected(DiagramInfo); //监控选中
void onSignal_saveMonitor(QList<QPair<QString,QUuid>>); //保存选中的监控

View File

@ -2,7 +2,7 @@
#define DIAGRAMCONNECTSETTING_H
#include <QDialog>
#include "global.h"
//#include "global.h"
/*******************************************************
********************************************************/

View File

@ -3,7 +3,8 @@
//组态编辑基础块(分段母线、间隔等)
#include <QObject>
#include "global.h"
//#include "global.h"
#include "common/core_model/diagram.h"
class DiagramEditorStructContainer;

View File

@ -2,13 +2,15 @@
#define DIAGRAMEDITORBAYDETAILADDDLG_H
#include <QDialog>
#include "global.h"
//#include "global.h"
#include "common/core_model/diagram.h"
QT_BEGIN_NAMESPACE
namespace Ui { class diagramEditorBayDetailAddDlg; }
QT_END_NAMESPACE
class DiagramEditorBayDetailSettingDlg;
class QStandardItemModel;
class DiagramEditorBayDetailAddDlg : public QDialog
{

View File

@ -2,7 +2,8 @@
#define DIAGRAMEDITORBAYDETAILSETTINGDLG_H
#include <QDialog>
#include "global.h"
//#include "global.h"
#include "common/core_model/diagram.h"
QT_BEGIN_NAMESPACE
namespace Ui { class diagramEditorBayDetailSettingDlg; }
@ -13,6 +14,7 @@ class DiagramEditorBayDetailAddDlg;
class DiagramEditorBayBlock;
class DiagramEditorBayPreviewDlg;
class DiagramEditorModel;
class QStandardItemModel;
class DiagramEditorBayDetailSettingDlg : public QDialog
{

View File

@ -4,7 +4,7 @@
#include <QDialog>
#include <QVBoxLayout>
#include <QStandardItem>
#include "global.h"
//#include "global.h"
class EditView;
class EditPreviewScene;

View File

@ -2,7 +2,7 @@
#define DIAGRAMEDITORBAYSETTINGDLG_H
#include <QDialog>
#include "global.h"
//#include "global.h"
QT_BEGIN_NAMESPACE
namespace Ui { class diagramEditorBaySettingDlg; }

View File

@ -4,7 +4,7 @@
#include <QDialog>
#include <QVBoxLayout>
#include <QStandardItem>
#include "global.h"
//#include "global.h"
class EditView;
class EditPreviewScene;

View File

@ -4,7 +4,8 @@
//组态划分后结构的容器,可包含分段母线及间隔、独立间隔、变压器等,以确定组态图空间结构
#include <QObject>
#include <QVector2D>
#include "global.h"
//#include "global.h"
#include "common/core_model/diagram.h"
class DiagramEditorBaseBlock;

View File

@ -2,7 +2,9 @@
#define DIAGRAMEDITORTRANSDETAILADDDLG_H
#include <QDialog>
#include "global.h"
#include <QStandardItemModel>
#include "common/core_model/diagram.h"
//#include "global.h"
QT_BEGIN_NAMESPACE
namespace Ui { class diagramEditorTransDetailAddDlg; }

View File

@ -2,7 +2,9 @@
#define DIAGRAMEDITORTRANSDETAILSETTINGDLG_H
#include <QDialog>
#include "global.h"
#include <QStandardItemModel>
//#include "global.h"
#include "common/core_model/diagram.h"
QT_BEGIN_NAMESPACE
namespace Ui { class diagramEditorTransDetailSettingDlg; }

View File

@ -2,7 +2,7 @@
#define DIAGRAMEDITORTRANSSETTINGDLG_H
#include <QDialog>
#include "global.h"
//#include "global.h"
QT_BEGIN_NAMESPACE
namespace Ui { class diagramEditorTransSettingDlg; }

View File

@ -2,7 +2,9 @@
#define DIAGRAMEDITORWIZARD_H
#include <QDialog>
#include "global.h"
//#include "global.h"
#include "tools.h"
#include "common/core_model/diagram.h"
QT_BEGIN_NAMESPACE
namespace Ui { class diagramEditorWizard; }

View File

@ -3,7 +3,8 @@
//编辑器基础空间结构
#include <QGraphicsWidget>
#include "global.h"
//#include "global.h"
#include "common/core_model/diagram.h"
class EditBaseStruct : public QGraphicsWidget
{

View File

@ -4,7 +4,8 @@
//组态过程中的item
#include <QGraphicsWidget>
#include <QPointer>
#include "global.h"
//#include "global.h"
#include "common/core_model/diagram.h"
class DiagramEditorBaseBlock;

View File

@ -3,7 +3,8 @@
//编辑文本项生成组态图
#include <QWidget>
#include <QPointer>
#include "global.h"
//#include "global.h"
#include "common/core_model/diagram.h"
class EditView;
class EditScene;
@ -40,7 +41,7 @@ public:
DiagramEditorModel* getModel() {return _pModel;}
EditScene* getScene() {return m_pEditScene;}
QList<EditBaseItem*> getBlockItems(EditorItemType typ = EditorItemType::none); //返回block对应的item,如母线,间隔,变压器, none返回所有类型
QList<EditBaseItem*> getBlockItems(EditorItemType typ = EditorItemType::None); //返回block对应的item,如母线,间隔,变压器, none返回所有类型
void setProjectName(const QString& s){_projectName = s;};
QString getProjectName(){return _projectName;}

View File

@ -3,7 +3,8 @@
//向导bay设置右侧table
#include <QTableWidget>
#include "global.h"
//#include "global.h"
#include "common/core_model/diagram.h"
class DiagramEditorWizard;

View File

@ -21,7 +21,7 @@ public:
protected:
void closeEvent(QCloseEvent *closeEvent) override;
public slots:
void onSignal_addGraphicsItem(modelStateInfo&);
void onSignal_addGraphicsItem(ModelStateInfo&);
void onSignal_Generate(); //由基模组态生成工程模组态
private:
ProjectDiagramNameInput* m_pDiagramNameInputer;

View File

@ -9,7 +9,8 @@
#include <QtCore/QVariant>
#include <QUuid>
#include "global.h"
//#include "global.h"
#include "common/core_model/types.h"
class GraphicsBaseItem;
class ItemPort;

View File

@ -2,6 +2,9 @@
/**组态编辑时的数据模型*/
#include "graphicsDataModel/baseModel.h"
#include <QPointer>
#include <QStandardItemModel>
#include "common/core_model/diagram.h"
#include "common/core_model/topology.h"
class GraphicsBaseModelItem;
class DiagramEditorItemProperty;
@ -61,7 +64,7 @@ public:
void generateItemByModel(QStandardItemModel* pModel,DiagramEditorBaseBlock* pBlock,int nFrom = 0,QPoint delta = QPoint(0,0)); //0间隔1变压器
QList<DiagramEditorComponentInfo> generateItemByInfo(QMap<QString,DiagramEditorRouteInfo> mapRoute,QMap<QString,DiagramEditorComponentInfo> mapCompo,QPointF delta = QPointF(0,0),DiagramEditorBaseBlock* pParent = nullptr); //根据data生成item parent:生成的对象添加到parent下(非拓扑计算)
QMultiMap<int,QUuid> generateOutConnection(QList<DiagramEditorComponentInfo>,QList<RelationItem>&,int nTypeTransCon,int nPos = 0,DiagramEditorBaseBlock* pParent = nullptr); //生成外部连接手动bind的连接relation:层级关系引用 nTypeTransCon变压器连线类型,1中性点连接2外部连接,nPos中性点连接时的位置
QMultiMap<int,QUuid> generateOutConnection(QList<DiagramEditorComponentInfo>,QList<HierarchyItem>&,int nTypeTransCon,int nPos = 0,DiagramEditorBaseBlock* pParent = nullptr); //生成外部连接手动bind的连接relation:层级关系引用 nTypeTransCon变压器连线类型,1中性点连接2外部连接,nPos中性点连接时的位置
QRectF updateTarget(QMap<QString,DiagramEditorRouteInfo>&,QMap<QString,DiagramEditorComponentInfo>&,int nLayout,int nSource,bool saveToModel = true); //更新位置 nLayout主次朝向:8421,8421 上下左右,上下左右 nSource:0间隔1变压器 regenerate重新生成标志 saveToModel:生成到模型或map
void clearCompoDir(QMap<QString,DiagramEditorRouteInfo>&,QMap<QString,DiagramEditorComponentInfo>&,int nSource); //清空component中的dir(updateTarget前调用)
@ -70,7 +73,7 @@ public:
QByteArray getWizardInfo(); //返回二进制wizard设置
void setWizardInfo(const QByteArray&); //二进制设置wizard
signals:
void updateTopologyItems(QList<RelationItem>,bool,bool); //更新当前拓扑列表 <连接关系,是否刷新,显示全部层级>
void updateTopologyItems(QList<HierarchyItem>,bool,bool); //更新当前拓扑列表 <连接关系,是否刷新,显示全部层级>
private:
void bulidAndLinkComponent(QList<DiagramEditorComponentInfo>,QMap<QString,DiagramEditorComponentInfo>,DiagramEditorBaseBlock* pParent = nullptr); //生成并连接线路上的设备 lstmapComponents(从map中获取正确数据)
QByteArray serializeWizardData(const DiagramEditorProjectInfo &data); //序列化eidtor向导设置数据

View File

@ -9,6 +9,9 @@
#include <QTimer>
#include <QPointer>
#include "common/frontend/monitor_item.h"
#include "common/backend/project_model.h"
class BaseDrawingPanel;
class DrawingPanel;
class GraphicsBaseItem;
@ -30,11 +33,12 @@ class GraphicsNonStandardItem;
class BayProperty;
class BayManagerDlg;
class ModelProperty;
struct itemPageInfo;
struct ItemPageInfo;
class EditBaseItem;
class MonitorPanel;
class ItemPropertyDlg;
class BayMeasureDlg;
struct MeasurementInfo;
class FixedPortsModel : public BaseModel, public Serializable
{
@ -44,7 +48,7 @@ public:
FixedPortsModel(PowerEntity*);
~FixedPortsModel();
public:
QMap<QUuid,itemPageInfo> allNodePos() const;
QMap<QUuid,ItemPageInfo> allNodePos() const;
QVector<ModelProperty*> allConnectionProperty();
QMap<QUuid,GraphicsProjectModelItem*>& allItems();
bool addNodeItem(QUuid uuid,GraphicsProjectModelItem*);
@ -106,12 +110,12 @@ public:
QJsonObject turnListToJson(QList<QUuid> lst,QString sInerTag,QString sOutTag); //将list转换为QJsonObject,<lst,内部标签,外部标签>
QList<QUuid> turnJsonArrToList(QJsonObject obj,QString sInner,QString sOut);
/*************************监控(运行时)**************************/
void generateMonitor(QString,QList<RelationItem>); //生成监控 (监控名,选中的设备列表)
void generateMonitor(QString,QList<HierarchyItem>); //生成监控 (监控名,选中的设备列表)
void generateMonitorConfig(MonitorPanel*); //生成监控配置参数结构
void setMonitorPara(QMap<QUuid,QList<monitorItemAttributeInfo>> map){m_monitorPara = map;}
QMap<QUuid,QList<monitorItemAttributeInfo>>& getMonitorPara() {return m_monitorPara;}
void setMonitorRelation(QList<RelationItem> lst){m_lstMonitorRelation = lst;}
QList<RelationItem> getMonitorRelation() {return m_lstMonitorRelation;}
void setMonitorPara(QMap<QUuid,QList<MonitorItemAttributeInfo>> map){m_monitorPara = map;}
QMap<QUuid,QList<MonitorItemAttributeInfo>>& getMonitorPara() {return m_monitorPara;}
void setMonitorRelation(QList<HierarchyItem> lst){m_lstMonitorRelation = lst;}
QList<HierarchyItem> getMonitorRelation() {return m_lstMonitorRelation;}
void monitorItemSelected(QUuid); //运行时item选中事件
void monitorItemDetailAttr(QUuid); //显示属性详情
@ -122,21 +126,21 @@ public:
void startAcceptData(); //开始接收实时数据
void stopAcceptData(QString); //停止接收实时数据
QMap<int,QList<QPair<monitorItemState,QString>>>& getMonitorStateMap(){return m_monitorStateMap;}
void setMonitorDisplaySetting(QMap<monitorItemTypeStruct,QMap<monitorItemStateStruct,monitorItemDisplayInfo>> map){m_monitorDisplaySetting = map;}
QMap<monitorItemTypeStruct,QMap<monitorItemStateStruct,monitorItemDisplayInfo>>& getMonitorDisplaySetting(){return m_monitorDisplaySetting;}
QMap<int,QList<QPair<MonitorItemState,QString>>>& getMonitorStateMap(){return m_monitorStateMap;}
void setMonitorDisplaySetting(QMap<MonitorItemTypeStruct,QMap<MonitorItemStateStruct,MonitorItemDisplayInfo>> map){m_monitorDisplaySetting = map;}
QMap<MonitorItemTypeStruct,QMap<MonitorItemStateStruct,MonitorItemDisplayInfo>>& getMonitorDisplaySetting(){return m_monitorDisplaySetting;}
/************************数据显示*************************/
void setCurItemPropertyDlg(ItemPropertyDlg* p) {m_curPropertyDlg = p;}
ItemPropertyDlg* getCurItemPropertyDlg() {return m_curPropertyDlg;}
Q_SIGNALS:
void activatePage(const QString&); //激活当前model所在page
void updateCurrentItems(QList<RelationItem>,bool); //更新当前组态元件列表 <连接关系,是否刷新>
void itemSelected(QList<RelationItem>); //发送选中的元件
void updateCurrentItems(QList<HierarchyItem>,bool); //更新当前组态元件列表 <连接关系,是否刷新>
void itemSelected(QList<HierarchyItem>); //发送选中的元件
void monitorCreated(QString,QPair<QString,QUuid>); //监控创建信号 <工程page,<监控page,page_uid>>
void monitorItems(QList<RelationItem>); //发送创建成功的Items
void monitorItems(QList<HierarchyItem>); //发送创建成功的Items
void dataUpdated(); //数据更新通知
void updateTopologyItems(QList<RelationItem>,bool,bool); //更新当前拓扑列表 <连接关系,是否刷新,显示全部层级>
void updateTopologyItems(QList<HierarchyItem>,bool,bool); //更新当前拓扑列表 <连接关系,是否刷新,显示全部层级>
void notifyUpdateMonitorTopology(QList<QUuid>); //使用列表中的item id更新总拓扑
public:
void setPageName(QString s) {_pageName = s;} //设置表名称
@ -159,7 +163,7 @@ public Q_SLOTS:
void onDataTimerOut();
void onSelectionChanged();
private:
void addPortsToItem_json(PortState,QJsonArray,GraphicsProjectModelItem*); //将json格式的port添加到item
void addPortsToItem_json(PortState,QJsonArray,GraphicsBaseItem*); //将json格式的port添加到item
void autoSetModelName(GraphicsBaseModelItem*); //如果此页的工程模已被设置将projectName更新到item
QString removeSuffix(const QString& str); //移除最后一个下划线后的内容 (处理各种tag后缀)
ModelProperty* getItemByUid(QList<GraphicsBaseItem*>,QUuid); //返回uid对应的data
@ -181,15 +185,15 @@ private:
PowerEntity* _pEntity; //拓扑实体
QMap<QString,QString> _projectModelName; //该图中所有元件对应的工程模类型(todo:扩展为每张图独立的结构体) uuid,工程模名称
QMap<QString,modelStateInfo> _modelStateInfo; //模型结构信息
QMap<QString,modelDataInfo> _modelDataInfo; //模型数据信息
QMap<QString,ModelStateInfo> _modelStateInfo; //模型结构信息
QMap<QString,ModelDataInfo> _modelDataInfo; //模型数据信息
ProjectModelSetting* m_proModelSettingDlg;
ProjectIconSetting* m_projectIconSettingDlg;
BayManagerDlg* m_pBayManager;
QMap<QUuid,QList<monitorItemAttributeInfo>> m_monitorPara; //监控参数
QMap<int,QList<QPair<monitorItemState,QString>>> m_monitorStateMap; //元件状态对照表 <type,<state,状态名>>
QMap<monitorItemTypeStruct,QMap<monitorItemStateStruct,monitorItemDisplayInfo>> m_monitorDisplaySetting; //元件设置
QList<RelationItem> m_lstMonitorRelation; //监控item层级关系
QMap<QUuid,QList<MonitorItemAttributeInfo>> m_monitorPara; //监控参数
QMap<int,QList<QPair<MonitorItemState,QString>>> m_monitorStateMap; //元件状态对照表 <type,<state,状态名>>
QMap<MonitorItemTypeStruct,QMap<MonitorItemStateStruct,MonitorItemDisplayInfo>> m_monitorDisplaySetting; //元件设置
QList<HierarchyItem> m_lstMonitorRelation; //监控item层级关系
ItemPropertyDlg* m_curPropertyDlg;
QTimer* m_dataTimer; //获取数据的定时器

View File

@ -19,13 +19,13 @@ public:
void move(const QPointF&) override;
virtual void addSvgItem(ElectricSvgItem* item);
virtual void updateMapSvg(QMap<QString,QByteArray> map,QString sIndex = ""); //工程模property不含图片额外存储
virtual void setMonitorDisplayInfo(QMap<monitorItemStateStruct,monitorItemDisplayInfo> info) override; //将显示数据更新到子item中
virtual void setMonitorDisplayInfo(QMap<MonitorItemStateStruct,MonitorItemDisplayInfo> info) override; //将显示数据更新到子item中
protected:
virtual QPainterPath shape() override;
virtual void editShape(int, const QPointF&) override;
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
protected:
virtual void updateCurState(monitorItemState e) override;
virtual void updateCurState(MonitorItemState e) override;
protected:
QRectF m_lastBoudingRect; //记录上一时刻的boundingRect
QMap<QString,QByteArray> m_mapSvg;

View File

@ -18,7 +18,7 @@ public:
virtual void loadSvg(){};
virtual void loadSvg(QByteArray); //第二种load直接加载图片
virtual void updateMapSvg(QMap<QString,QByteArray> map,QString sIndex = ""); //index:空全部更新
virtual void updateCurState(monitorItemState e) override;
virtual void updateCurState(MonitorItemState e) override;
protected:
virtual QPainterPath shape() override;
virtual void editShape(int, const QPointF&) override;

View File

@ -0,0 +1,95 @@
#ifndef ELECTRICFUNCTIONMODELCONNECTLINEITEM_H
#define ELECTRICFUNCTIONMODELCONNECTLINEITEM_H
#include <QPainterPath>
#include <QUuid>
#include "graphicsFunctionModelItem.h"
class ElectricFunctionModelConnectLineItem : public GraphicsFunctionModelItem
{
public:
enum UShapeType {
UShape_Unknown,
UShape_TopOpen, // 开口向上
UShape_BottomOpen, // 开口向下
UShape_LeftOpen, // 开口向左
UShape_RightOpen // 开口向右
};
public:
ElectricFunctionModelConnectLineItem(QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelConnectLineItem();
void setStartPoint(const QPointF& p);
void setEndPoint(const QPointF& p);
QPainterPath getPoints(void) const { return m_points; }
void startDrag(const QPointF& scenePos);
void updateDrag(const QPointF& scenePos);
void endDrag();
void setLastPoint(const QPointF& point);
void setPath(const QPainterPath& path);
QPainterPath path() const;
void resetCurLine(){_curLine = QPoint();}
void calculatePath();
virtual QPainterPath shape() const override;
virtual QRectF boundingRect() const override;
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
protected:
void initial();
private:
//路径计算相关
void generateAvoidancePath(const QPointF& start, const QPointF& end,const QList<QRectF>& obstacleShapes); // 使用形状进行避障
double calculatePathLength(const QList<QPointF>& path);
bool lineIntersectsRect(const QLineF& line, const QRectF& rect) const;
bool isSegmentSafe(const QPointF& p1, const QPointF& p2,const QList<QRectF>& components);
bool isPathSafe(const QList<QPointF>& path,const QList<QRectF>& components);
bool segmentPenetratesComponent(const QLineF& segment,const QRectF& component);
QRectF getTotalComponentsBounds(const QList<QRectF>& components);
void collectRectilinearPaths(const QPointF& start, const QPointF& end,const QList<QRectF>& components,QMultiMap<double, QList<QPointF>>& paths);
void addPathIfRectilinear(const QList<QPointF>& path,QMultiMap<double, QList<QPointF>>& paths);
void collectBypassPaths(const QPointF& start, const QPointF& end,const QList<QRectF>& components,QMultiMap<double, QList<QPointF>>& paths);
void generateForcedRectilinearBypass(const QPointF& start, const QPointF& end,const QList<QRectF>& components);
QRectF findFirstBlockingComponent(const QPointF& start, const QPointF& end,const QList<QRectF>& components);
//线段拖拽相关
double distancePointToLine(const QLineF& line, const QPointF& point) const;
void ensureEnoughPointsForDrag();
void debugPathState(const QString& context) const;
QVector<QLineF> extractSegmentsFromPainterPath() const;
void collectBoundaryBypassPaths(const QPointF& start, const QPointF& end,const QList<QRectF>& obstacles,QMultiMap<double, QList<QPointF>>& paths);
void collectBoundaryPath(const QPointF& start, const QPointF& end,const QList<QRectF>& obstacles,QMultiMap<double, QList<QPointF>>& paths,const QRectF& bounds, bool useTop);
QRectF getSceneBounds() const;
QList<QPointF> generateForcedBypass(const QPointF& start, const QPointF& end,const QList<QRectF>& components);
// 拖拽实现
int findSegmentAt(const QList<QPointF>& points,const QPointF& itemPos) const;
double distanceToSegment(const QLineF& segment, const QPointF& point) const;
void fixConnections(int segmentIndex, bool isVertical);
QList<QPointF> extractPointsFromPath() const;
QList<QPointF> extractPointsFromPath(const QPainterPath& path) const;
void applyPointsToPath(const QList<QPointF>& points);
void fixConnections(QList<QPointF>& points, int segmentIndex, bool isVertical);
void validateAndFixPath();
void updateBoundingRect();
private:
QPainterPath m_points;
QList<QPointF> m_lstPoints;
QPoint _curLine; //参数1用点序号表示的当前线段起始点,参数2表示线段方向
struct DragState {
bool isActive = false;
int segmentIndex = -1;
bool isVertical = false;
QPointF startScenePos;
QPainterPath originalPath;
};
DragState m_dragData;
};
#endif

View File

@ -0,0 +1,24 @@
#ifndef ELECTRICFUNCTIONMODELPORTITEM_H
#define ELECTRICFUNCTIONMODELPORTITEM_H
#include "graphicsItem/functionModelItem/graphicsFunctionModelItem.h"
//node节点
class ElectricFunctionModelPortItem :public GraphicsFunctionModelItem
{
Q_OBJECT
public:
ElectricFunctionModelPortItem(QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelPortItem();
void addPort();
public:
virtual void updateConnectData() override;
protected:
virtual QRectF boundingRect() const override;
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
void initial();
};
#endif

View File

@ -0,0 +1,26 @@
#ifndef ELECTRICFUNCTIONMODELSVGGROUPCT_H
#define ELECTRICFUNCTIONMODELSVGGROUPCT_H
#include "graphicsItem/functionModelItem/graphicsFunctionModelSvgGroup.h"
class ElectricFunctionModelSvgGroupCT :public ElectricFunctionModelSvgGroup
{
Q_OBJECT
public:
ElectricFunctionModelSvgGroupCT(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgGroupCT();
virtual void setupFinish(QVariant) override;
virtual void updateItem() override;
void setCtType(int n){_nType = n;}
void setCtSize(int n){_nSize = n;}
virtual void setImage_1(QFileInfo) override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
void initial();
protected:
int _nType = 0; //Ct类型 1三相0零相
int _nSize = 0; //ct个数
};
#endif

View File

@ -0,0 +1,25 @@
#ifndef ELECTRICFUNCTIONMODELSVGGROUPPT_H
#define ELECTRICFUNCTIONMODELSVGGROUPPT_H
#include "graphicsItem/functionModelItem/graphicsFunctionModelSvgGroup.h"
class ElectricFunctionModelSvgGroupPT :public ElectricFunctionModelSvgGroup
{
Q_OBJECT
public:
ElectricFunctionModelSvgGroupPT(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgGroupPT();
virtual void setupFinish(QVariant) override;
virtual void updateItem() override;
virtual void updateLayout() override;
QList<int>& getLstType() {return m_lstType;}
virtual void setImage_1(QFileInfo) override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
void initial();
protected:
QList<int> m_lstType; //绕组类型 1星型 0三角
};
#endif

View File

@ -0,0 +1,30 @@
#ifndef ELECTRICFUNCTIONMODELSVGITEM_H
#define ELECTRICFUNCTIONMODELSVGITEM_H
#include "graphicsFunctionModelItem.h"
class ElectricFunctionModelSvgItem :public GraphicsFunctionModelItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItem(const QRect &rect, bool genNewPort = true,QGraphicsItem *parent = 0); //genNewPort生成新接线点
virtual ~ElectricFunctionModelSvgItem();
void resize(int,double, double, const QPointF&) override;
void updateCoordinate() override;
void move(const QPointF&) override;
virtual void loadSvg(){};
virtual void loadSvg(QByteArray); //第二种load直接加载图片
virtual void updateMapSvg(QMap<QString,QByteArray> map,QString sIndex = ""); //index:空全部更新
virtual void updateCurState(MonitorItemState e) override;
protected:
virtual QPainterPath shape() override;
virtual void editShape(int, const QPointF&) override;
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
protected:
QRectF m_lastBoudingRect; //记录上一时刻的boundingRect
QSvgRenderer* m_pRender; //默认
QSvgRenderer* m_pCustomRender; //定制
QMap<QString,QByteArray> m_mapSvg;
QByteArray _tempSvg; //保存直接加载的svg数据
};
#endif

View File

@ -0,0 +1,20 @@
#ifndef ELECTRICFUNCTIONMODELSVGITEM2WTRANSFORMER_H
#define ELECTRICFUNCTIONMODELSVGITEM2WTRANSFORMER_H
/*************两绕组变压器***********/
#include "electricFunctionModelSvgItem.h"
class ElectricFunctionModelSvgItem2wTransformer :public ElectricFunctionModelSvgItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItem2wTransformer(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgItem2wTransformer();
virtual void setImage_1(QFileInfo) override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
void initial();
};
#endif

View File

@ -0,0 +1,20 @@
#ifndef ELECTRICFUNCTIONMODELSVGITEM3WTRANSFORMER_H
#define ELECTRICFUNCTIONMODELSVGITEM3WTRANSFORMER_H
/*************三绕组变压器***********/
#include "electricFunctionModelSvgItem.h"
class ElectricFunctionModelSvgItem3wTransformer :public ElectricFunctionModelSvgItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItem3wTransformer(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgItem3wTransformer();
virtual void setImage_1(QFileInfo) override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
void initial();
};
#endif

View File

@ -0,0 +1,23 @@
#ifndef ELECTRICFUNCTIONMODELSVGITEMBUS_H
#define ELECTRICFUNCTIONMODELSVGITEMBUS_H
#include "electricFunctionModelSvgItem.h"
class ElectricFunctionModelSvgItemBus :public ElectricFunctionModelSvgItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItemBus(const QRect &rect, QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgItemBus();
virtual void setImage_1(QFileInfo) override;
void addPort();
public:
virtual void updateConnectData() override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
virtual void updateHandles() override;
private:
void initial();
};
#endif

View File

@ -0,0 +1,22 @@
#ifndef ELECTRICFUNCTIONMODELSVGITEMCB_H
#define ELECTRICFUNCTIONMODELSVGITEMCB_H
/*****************断路器*******************/
#include "electricFunctionModelSvgItem.h"
class ElectricFunctionModelSvgItemCB :public ElectricFunctionModelSvgItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItemCB(const QRect &rect, bool genNewPort = true,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgItemCB();
virtual void setImage_1(QFileInfo) override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
virtual void updateHandles() override;
private:
void initial();
};
#endif

View File

@ -0,0 +1,21 @@
#ifndef ELECTRICSVGITEMCT_H
#define ELECTRICSVGITEMCT_H
#include "electricFunctionModelSvgItem.h"
class ElectricFunctionModelSvgItemCT :public ElectricFunctionModelSvgItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItemCT(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgItemCT();
void setItemType(int n){_itemType = n;}
private:
void initial();
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
int _itemType = 0; //1三相0零相
};
#endif

View File

@ -0,0 +1,20 @@
#ifndef ELECTRICFUNCTIONMODELSVGITEMCABLEEND_H
#define ELECTRICFUNCTIONMODELSVGITEMCABLEEND_H
/*****************电缆端*******************/
#include "electricFunctionModelSvgItem.h"
class ElectricFunctionModelSvgItemCableEnd :public ElectricFunctionModelSvgItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItemCableEnd(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgItemCableEnd();
virtual void setImage_1(QFileInfo) override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
void initial();
};
#endif

View File

@ -0,0 +1,20 @@
#ifndef ELECTRICFUNCTIONMODELSVGITEMCABLETER_H
#define ELECTRICFUNCTIONMODELSVGITEMCABLETER_H
/*****************电缆出线套筒*******************/
#include "electricFunctionModelSvgItem.h"
class ElectricFunctionModelSvgItemCableTer :public ElectricFunctionModelSvgItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItemCableTer(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgItemCableTer();
virtual void setImage_1(QFileInfo) override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
void initial();
};
#endif

View File

@ -0,0 +1,19 @@
#ifndef ELECTRICFUNCTIONMODELSVGITEMDS_H
#define ELECTRICFUNCTIONMODELSVGITEMDS_H
#include "electricFunctionModelSvgItem.h"
class ElectricFunctionModelSvgItemDS :public ElectricFunctionModelSvgItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItemDS(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgItemDS();
virtual void setImage_1(QFileInfo) override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
void initial();
};
#endif

View File

@ -0,0 +1,20 @@
#ifndef ELECTRICFUNCTIONMODELSVGITEMDTEDS_H
#define ELECTRICFUNCTIONMODELSVGITEMDTEDS_H
/**********双掷接地隔离开关*********/
#include "electricFunctionModelSvgItem.h"
class ElectricFunctionModelSvgItemDTEDS:public ElectricFunctionModelSvgItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItemDTEDS(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgItemDTEDS();
virtual void setImage_1(QFileInfo) override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
void inital();
};
#endif

View File

@ -0,0 +1,19 @@
#ifndef ELECTRICFUNCTIONMODELSVGITEMES_H
#define ELECTRICFUNCTIONMODELSVGITEMES_H
#include "electricFunctionModelSvgItem.h"
class ElectricFunctionModelSvgItemES :public ElectricFunctionModelSvgItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItemES(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgItemES();
virtual void setImage_1(QFileInfo) override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
void initial();
};
#endif

View File

@ -0,0 +1,19 @@
#ifndef ELECTRICFUNCTIONMODELSVGITEMFES_H
#define ELECTRICFUNCTIONMODELSVGITEMFES_H
#include "electricFunctionModelSvgItem.h"
class ElectricFunctionModelSvgItemFES :public ElectricFunctionModelSvgItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItemFES(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgItemFES();
virtual void setImage_1(QFileInfo) override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
void initial();
};
#endif

View File

@ -0,0 +1,20 @@
#ifndef ELECTRICFUNCTIONMODELSVGITEMLA_H
#define ELECTRICFUNCTIONMODELSVGITEMLA_H
/***********避雷器************/
#include "electricFunctionModelSvgItem.h"
class ElectricFunctionModelSvgItemLA :public ElectricFunctionModelSvgItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItemLA(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgItemLA();
virtual void setImage_1(QFileInfo) override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
void initial();
};
#endif

View File

@ -0,0 +1,20 @@
#ifndef ELECTRICFUNCTIONMODELSVGITEMPI_H
#define ELECTRICFUNCTIONMODELSVGITEMPI_H
/*************带点指示器***************/
#include "electricFunctionModelSvgItem.h"
class ElectricFunctionModelSvgItemPI :public ElectricFunctionModelSvgItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItemPI(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgItemPI();
virtual void setImage_1(QFileInfo) override;
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
void initial();
};
#endif

View File

@ -0,0 +1,21 @@
#ifndef ELECTRICFUNCTIONMODELSVGITEMPT_H
#define ELECTRICFUNCTIONMODELSVGITEMPT_H
#include "electricFunctionModelSvgItem.h"
class ElectricFunctionModelSvgItemPT :public ElectricFunctionModelSvgItem
{
Q_OBJECT
public:
ElectricFunctionModelSvgItemPT(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgItemPT();
void setItemType(int n){_itemType = n;}
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
private:
void initial();
int _itemType = 0; //1星型 0三角
};
#endif

View File

@ -0,0 +1,41 @@
#ifndef GRAPHICSFUNCTIONMODELITEM_H
#define GRAPHICSFUNCTIONMODELITEM_H
#include "../graphicsBaseItem.h"
class GraphicsFunctionModelItem : public GraphicsProjectModelItem //功能模item
{
Q_OBJECT
public:
GraphicsFunctionModelItem(QGraphicsItem *parent);
virtual ~GraphicsFunctionModelItem();
protected:
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
};
class GraphicsFunctionModelGroup : public GraphicsFunctionModelItem //功能模group
{
Q_OBJECT
public:
GraphicsFunctionModelGroup(QGraphicsItem *parent);
virtual ~GraphicsFunctionModelGroup();
virtual void addItem(GraphicsFunctionModelItem* item);
virtual void updateLayout();
virtual void setLayout(int n) {m_direction = n;}
virtual void setGroupType(int n) {_groupType = n;}
virtual int getGroupType() {return _groupType;}
virtual void setSpacing(qreal spacing) {
if (m_spacing != spacing) {
m_spacing = spacing;
updateLayout();
}
}
QRectF updateBoundRect();
protected:
QList<GraphicsBaseItem*> m_childItems;
int m_direction = 1; //组内布局0横1纵
int m_spacing = 0; //间距
int _groupType = 0; //组类型0联合(子item独立连接),1聚合(子item仅作展示)
};
#endif

View File

@ -0,0 +1,32 @@
#ifndef ELECTRICFUNCTIONMODELSVGGROUP_H
#define ELECTRICFUNCTIONMODELSVGGROUP_H
#include "graphicsFunctionModelItem.h"
#include <QGraphicsSvgItem>
class ElectricFunctionModelSvgItem;
class ElectricFunctionModelSvgGroup :public GraphicsFunctionModelGroup
{
Q_OBJECT
public:
ElectricFunctionModelSvgGroup(const QRect &rect,QGraphicsItem *parent = 0);
virtual ~ElectricFunctionModelSvgGroup();
void resize(int,double, double, const QPointF&) override;
void updateCoordinate() override;
void move(const QPointF&) override;
virtual void addSvgItem(ElectricFunctionModelSvgItem* item);
virtual void updateMapSvg(QMap<QString,QByteArray> map,QString sIndex = ""); //工程模property不含图片额外存储
virtual void setMonitorDisplayInfo(QMap<MonitorItemStateStruct,MonitorItemDisplayInfo> info) override; //将显示数据更新到子item中
protected:
virtual QPainterPath shape() override;
virtual void editShape(int, const QPointF&) override;
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
protected:
virtual void updateCurState(MonitorItemState e) override;
protected:
QRectF m_lastBoudingRect; //记录上一时刻的boundingRect
QMap<QString,QByteArray> m_mapSvg;
};
#endif

View File

@ -2,7 +2,11 @@
#define GRAPHICSBASEITEM_H
#include "itemControlHandle.h"
#include "global.h"
//#include "global.h"
#include "common/core_model/types.h"
#include "common/core_model/topology.h"
#include "common/frontend/graphics_items.h"
#include "common/frontend/monitor_item.h"
#include <QObject>
#include <QGraphicsItem>
@ -602,11 +606,6 @@ public:
virtual void setLabelTag(const QString& name); //设置名字牌
virtual QString getLabelTag() const;
virtual void setLabelCurrent(const QString& str); //设置电流标签
virtual QString getLabelCurrent() const;
virtual void setLabelVoltage(const QString& str); //设置电压标签
virtual QString getLabelVoltage() const;
//virtual void addPort(PortState typ,int ntagId,QPointF vec); //载入 PortState为P_const时QPointF中为(0~10~1)的相对位置;PortState为p_movable时QPointF为坐标值
virtual void setState(ItemState s){m_state = s;}
virtual void setBeginConnectPos(QPointF p){m_beginConnectPoint = p;}
virtual void setEndConnectPos(QPointF p){m_endConnectPoint = p;}
@ -620,9 +619,10 @@ public:
virtual void setupFinish(QVariant){} //设置完成后调用(如ctpt)
virtual void updateItem(){}; //更新自身(如ct,pt)
virtual void updateTerPos(); //ct,pt等item大小变动后重新计算端点位置
virtual void setCurMonitorState(monitorItemState sta) {_curMonitorState = sta;} //设置当前运行时模式
virtual void setMonitorDisplayInfo(QMap<monitorItemStateStruct,monitorItemDisplayInfo> info){_displaySetting = info;}
virtual void updateCurState(monitorItemState e){ //更新当前显示模式(运行时)
virtual void setCurMonitorState(MonitorItemState sta) {_curMonitorState = sta;} //设置当前运行时模式
virtual void setMonitorDisplayInfo(QMap<MonitorItemStateStruct,MonitorItemDisplayInfo> info){_displaySetting = info;}
virtual void updateCurState(MonitorItemState e){ //更新当前显示模式(运行时)
if(ifStateExist(e)){
_curMonitorState = e;
auto info = getInfoByState(e);
@ -643,7 +643,7 @@ signals:
public slots:
void onEditNameFinish(const QString&);
protected:
bool ifStateExist(monitorItemState sta){ //判断指定状态存在
bool ifStateExist(MonitorItemState sta){ //判断指定状态存在
for(auto iter = _displaySetting.begin();iter != _displaySetting.end();++iter){
if(iter.key().eState == sta){
return true;
@ -651,13 +651,13 @@ protected:
}
return false;
}
monitorItemDisplayInfo getInfoByState(monitorItemState sta){ //返回指定状态设置值
MonitorItemDisplayInfo getInfoByState(MonitorItemState sta){ //返回指定状态设置值
for(auto iter = _displaySetting.begin();iter != _displaySetting.end();++iter){
if(iter.key().eState == sta){
return iter.value();
}
}
return monitorItemDisplayInfo();
return MonitorItemDisplayInfo();
}
protected:
ItemState m_state;
@ -665,11 +665,12 @@ protected:
QPointF m_endConnectPoint;
int _lastPort; //最后触碰的port
QString _modelName; //当前图元使用的模型名用来在model中检索属性信息
monitorItemState _curMonitorState; //当前运行时模式
MonitorItemState _curMonitorState; //当前运行时模式
QColor _curMonitorStateColor;
QByteArray _curMonitorStateSvg;
bool _curMonitorStateEnable;
QMap<monitorItemStateStruct,monitorItemDisplayInfo> _displaySetting; //显示设置
QMap<MonitorItemStateStruct,MonitorItemDisplayInfo> _displaySetting; //显示设置
DataSourceType _sourceType;
};

View File

@ -2,7 +2,8 @@
#define ITEMCONTROLHANDLE_H
#include <QGraphicsRectItem>
#include "global.h"
//#include "global.h"
#include "common/core_model/topology.h"
const int HNDLE_SIZE = 8;

View File

@ -5,7 +5,9 @@
#include <QMetaType>
#include <QButtonGroup>
#include <QVBoxLayout>
#include "global.h"
//#include "global.h"
#include "common/backend/project_model.h"
#include "common/core_model/data_transmission.h"
QT_BEGIN_NAMESPACE
namespace Ui { class itemPropertyDlg; }
@ -23,9 +25,9 @@ public:
~ItemPropertyDlg();
void initial();
void loadGroupButton(QMap<QString,groupStateInfo>); //加载属性组列表
void loadGroupButton(QMap<QString,GroupStateInfo>); //加载属性组列表
void createGroupView(const QString&); //创建属性页
void showDlg(modelDataInfo,QUuid,GraphicsProjectModelItem*); //显示属性页面
void showDlg(ModelDataInfo,QUuid,GraphicsProjectModelItem*); //显示属性页面
void setModelController(FixedPortsModel* p) {_curModelController = p;}
auto getModelController() {return _curModelController;}
auto getCurItem() {return _curItem;}
@ -44,8 +46,8 @@ private:
QMap<QString, QAbstractButton*> btnMap_;
QMap<QString, QWidget*> groupViews_; //stack中存储的属性页
QMap<QString,groupStateInfo> groupInfo_; //属性组结构信息
QMap<QString,groupStateValue> groupValue_; //属性数据
QMap<QString,GroupStateInfo> groupInfo_; //属性组结构信息
QMap<QString,GroupStateValue> groupValue_; //属性数据
QUuid curUuid_; //当前显示对象的uuid
QString _curModel; //当前模型名
GraphicsProjectModelItem* _curItem;

View File

@ -3,7 +3,9 @@
#include <QDialog>
#include <QButtonGroup>
#include "global.h"
//#include "global.h"
#include "common/backend/project_model.h"
#include "common/core_model/data_transmission.h"
/*******************************************************
********************************************************/
@ -25,8 +27,8 @@ public:
void setParentType(int n) {_nParentType = n;}
void setBayComponent(BayInfoDlg* p) {_pBayComponent = p;}
void setBayMeasure(BayMeasureDlg* p) {_pBayMeasure = p;}
void showDlg(int type,propertyStateInfo,bool isDouble = false);
void showDlg(MeasurementInfo,propertyStateInfo,bool isDouble = false,MeasurementInfo symmetryInfo = MeasurementInfo()); //修改
void showDlg(int type,PropertyStateInfo,bool isDouble = false);
void showDlg(MeasurementInfo,PropertyStateInfo,bool isDouble = false,MeasurementInfo symmetryInfo = MeasurementInfo()); //修改
public slots:
void onOkClicked();
void onCancelClicked();

View File

@ -8,7 +8,7 @@
class MonitorToolBox;
class MonitorAttributeGroupDlg;
class MonitorSideBarDlg;
struct monitorItemAttributeInfo;
struct MonitorItemAttributeInfo;
class MonitorAttributeDlg : public QDialog
{

View File

@ -6,7 +6,7 @@
#include <QVBoxLayout>
class MonitorAttributeDlg;
struct monitorItemAttributeInfo;
struct MonitorItemAttributeInfo;
class QChartView;
class QLabel;
class FixedPortsModel;
@ -20,14 +20,14 @@ public:
~MonitorAttributeGroupDlg();
void initial();
void createGroupView(QList<monitorItemAttributeInfo>,int nType = 0); //0小型 1中型
void createGroupView(QList<MonitorItemAttributeInfo>,int nType = 0); //0小型 1中型
void setParent(MonitorAttributeDlg* p) {_pParent = p;}
void setDetailParent(MonitorDetailAttributeDlg* p){_pDetailParent = p;}
void setCurMode(int n) {_curMode = n;}
public slots:
void updateData(); //使用数据更新当前界面
private:
QWidget* createEditor(monitorItemAttributeInfo,int nType = 0); //nType:0小 1中
QWidget* createEditor(MonitorItemAttributeInfo,int nType = 0); //nType:0小 1中
void updateLineChartData(QChartView* chartView, const QVector<QPointF>& data);
FixedPortsModel* getModelController();
QUuid getCurUid();

View File

@ -13,7 +13,7 @@ class MonitorPanel;
class QItemSelection;
class QStandardItemModel;
class QStandardItem;
struct monitorItemAttributeInfo;
struct MonitorItemAttributeInfo;
class QCompleter;
class QStringListModel;
@ -46,7 +46,7 @@ private:
private:
Ui::monitorConfigDlg *ui;
MonitorPanel* _parent;
QMap<QUuid,QList<monitorItemAttributeInfo>> _tempConfig;
QMap<QUuid,QList<MonitorItemAttributeInfo>> _tempConfig;
QStandardItemModel* _curItemModel;
QUuid _curUuid;
QStringList _curRecommandLst; //当前推荐列表

View File

@ -3,7 +3,8 @@
/*******************监控图元设置界面**********************/
#include <QDialog>
#include "global.h"
//#include "global.h"
#include "common/frontend/monitor_item.h"
QT_BEGIN_NAMESPACE
namespace Ui { class monitorDisplaySettingDlg; }
@ -30,7 +31,7 @@ public slots:
void onStateComboBoxChanged(const QString&);
private:
void loadSetting(monitorItemTypeStruct type, monitorItemStateStruct state);
void loadSetting(MonitorItemTypeStruct type, MonitorItemStateStruct state);
bool saveCurrentSettingsWithIcon();
void loadFirstStateSafely();
@ -45,12 +46,12 @@ private:
private:
Ui::monitorDisplaySettingDlg *ui;
MonitorPanel* _parent;
monitorItemTypeStruct _curType; //当前类型
monitorItemStateStruct _curState; //当前状态
MonitorItemTypeStruct _curType; //当前类型
MonitorItemStateStruct _curState; //当前状态
QColor _curColor;
QString _curMeta;
QString _curModel;
QMap<monitorItemTypeStruct,QMap<monitorItemStateStruct,monitorItemDisplayInfo>> _tempSetting;
QMap<MonitorItemTypeStruct,QMap<MonitorItemStateStruct,MonitorItemDisplayInfo>> _tempSetting;
};

View File

@ -26,7 +26,7 @@ public:
void setParentPage(const QString& str) {_sParentPage = str;}
QString getParentPage() {return _sParentPage;}
void updateSelectedItems(QList<RelationItem>,bool);
void updateSelectedItems(QList<HierarchyItem>,bool);
QStandardItemModel* getLstModel() {return _itemListmodel;}
void initMonitorConfig(); //初始化参数设置(每个运行时可能不同)
@ -39,14 +39,14 @@ public:
MonitorConfigDlg* getMonitorConfigDlg() {return _pConfigDlg;}
public:
//对层级关系的序列化与反序列化
QJsonArray serializeRelationToJsonArray(const QList<RelationItem>& data) const;
bool deserializeRelationFromJsonArray(const QJsonArray& jsonArray, QList<RelationItem>& result);
QJsonArray serializeRelationToJsonArray(const QList<HierarchyItem>& data) const;
bool deserializeRelationFromJsonArray(const QJsonArray& jsonArray, QList<HierarchyItem>& result);
//对para的序列化与反序列化
QJsonArray serializeParaToJsonArray(const QMap<QUuid, QList<monitorItemAttributeInfo>>& data) const;
bool deserializeParaFromJsonArray(const QJsonArray& jsonArray,QMap<QUuid, QList<monitorItemAttributeInfo>>& result);
QJsonArray serializeParaToJsonArray(const QMap<QUuid, QList<MonitorItemAttributeInfo>>& data) const;
bool deserializeParaFromJsonArray(const QJsonArray& jsonArray,QMap<QUuid, QList<MonitorItemAttributeInfo>>& result);
//对displaySetiing的序列化与反序列化
QJsonArray serializeDisplayToJsonArray(const QMap<monitorItemTypeStruct, QMap<monitorItemStateStruct, monitorItemDisplayInfo>>& data) const;
void deserializeDisplayFromJsonArray(const QJsonArray& jsonArray,QMap<monitorItemTypeStruct, QMap<monitorItemStateStruct, monitorItemDisplayInfo>>& result);
QJsonArray serializeDisplayToJsonArray(const QMap<MonitorItemTypeStruct, QMap<MonitorItemStateStruct, MonitorItemDisplayInfo>>& data) const;
void deserializeDisplayFromJsonArray(const QJsonArray& jsonArray,QMap<MonitorItemTypeStruct, QMap<MonitorItemStateStruct, MonitorItemDisplayInfo>>& result);
public slots:
void onRunClicked();
void onStopClicked();

View File

@ -5,7 +5,6 @@
#include <QTreeView>
#include <QStandardItemModel>
struct RelationItem;
class MonitorSideBarDlg;
class QVBoxLayout;

View File

@ -5,7 +5,8 @@
* *************************/
#include <QObject>
#include <QVariant>
#include "global.h"
//#include "global.h"
#include "common/core_model/topology.h"
// 连接线元数据(抽象连接关系)
class PowerConnection : public QObject {

View File

@ -7,7 +7,7 @@
#include <QList>
#include "powerTerminal.h"
#include "topologyManager.h"
#include "global.h"
//#include "global.h"
class PowerTerminal;

View File

@ -4,7 +4,7 @@
#include <QDialog>
#include <QVBoxLayout>
#include <QFormLayout>
#include "global.h"
//#include "global.h"
#include "baseContentDlg.h"
/*******************************************************
itemPropertyDlg
@ -18,15 +18,15 @@ public:
PropertyContentDlg(QWidget *parent = nullptr);
~PropertyContentDlg();
virtual void createGroupView(groupStateInfo); //创建页面
virtual QMap<QString,propertyStateInfo> getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值
virtual void createGroupView(GroupStateInfo); //创建页面
virtual QMap<QString,PropertyStateInfo> getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值
//void setPropertyValue(QMap<QString,propertyStateInfo>);
virtual void setPropertyValue(QVariant);
protected:
QVBoxLayout* _layout;
QWidget* createEditor(propertyStateInfo); //创建属性
QWidget* createEditor(PropertyStateInfo); //创建属性
private:
QMap<QString,propertyStateInfo> _curValue;
QMap<QString,PropertyStateInfo> _curValue;
};
#endif

View File

@ -3,7 +3,7 @@
#include <QWidget>
#include "baseContentDlg.h"
#include "global.h"
//#include "global.h"
/*******************************************************
********************************************************/
@ -21,8 +21,8 @@ class PtExtraInfoDlg : public BaseContentDlg
public:
PtExtraInfoDlg(QWidget *parent = nullptr);
virtual ~PtExtraInfoDlg();
virtual void createGroupView(groupStateInfo);
virtual QMap<QString,propertyStateInfo> getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值
virtual void createGroupView(GroupStateInfo);
virtual QMap<QString,PropertyStateInfo> getPropertyValue(BaseProperty* = nullptr); //返回当前页面的属性值
virtual void setPropertyValue(QVariant);
public slots:
void onAddClicked();

View File

@ -4,10 +4,10 @@
* ui的量测类型model
* */
#include <QAbstractTableModel>
#include "common/core_model/topology.h"
class StructDataSource;
struct MeasurementInfo;
struct ExtraProperty;
class StructDataMeasurementModel : public QAbstractTableModel
{

View File

@ -5,10 +5,10 @@
* */
#include <QAbstractTableModel>
#include "common/core_model/topology.h"
class StructDataSource;
struct ExtraProperty;
struct propertyStateInfo;
struct PropertyStateInfo;
class StructDataPropertyModel : public QAbstractTableModel
{
@ -68,7 +68,7 @@ private:
QVariant getPropertyData(const ExtraProperty& prop, int col) const;
bool updatePropertyData(propertyStateInfo* data, int col, const QVariant& value);
bool updatePropertyData(PropertyStateInfo* data, int col, const QVariant& value);
private:
StructDataSource* m_dataManager = nullptr;

View File

@ -7,7 +7,8 @@
#include <QList>
#include "powerConnection.h"
#include "powerTerminal.h"
#include "global.h"
//#include "global.h"
#include "common/core_model/types.h"
class PowerEntity;
class BaseProperty;

View File

@ -10,7 +10,7 @@
#define CREATINGSELECTOR_H
#include "baseSelector.h"
#include "global.h"
//#include "global.h"
enum CreatingMethod
@ -35,10 +35,10 @@ public:
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*, DesignerScene*,DiagramMode sceneMode);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent*, DesignerScene*,DiagramMode sceneMode);
void setCreatingItem(modelStateInfo& info) { m_creatingItemInfo=info; }
void setCreatingItem(ModelStateInfo& info) { m_creatingItemInfo=info; }
private:
CreatingMethod m_creatingMethod;
modelStateInfo m_creatingItemInfo;
ModelStateInfo m_creatingItemInfo;
GraphicsProjectModelItem* m_pCreatingItem;
QPointF m_scalBasePoint;
};

View File

@ -10,7 +10,7 @@
#define EDITINGSELECTOR_H
#include "baseSelector.h"
#include "global.h"
//#include "global.h"
#include <graphicsItem/graphicsBaseItem.h>

View File

@ -11,7 +11,7 @@
#include <QObject>
#include "baseSelector.h"
#include "global.h"
//#include "global.h"
#include "graphicsDataModel/fixedPortsModel.h"
@ -28,7 +28,7 @@ public:
void setWorkingSelector(SelectorType s) { m_curSelector=s; }
BaseSelector* getWorkingSelector(); //根据操作方式获取selector
void setDrawGraphicsItem(modelStateInfo&);
void setDrawGraphicsItem(ModelStateInfo&);
void setName(const QString&);
public slots:
void onSignal_setWorkingSelector(SelectorType);

View File

@ -11,6 +11,7 @@
#include "diagramCavas.h"
#include "topologyManager.h"
#include "basePannelPropertyProxy.h"
#include "common/core_model/constants.h"
BaseDrawingPanel::BaseDrawingPanel(PowerEntity* pEntity,QWidget *parent,DiagramMode mode)
: QWidget(parent)
@ -27,7 +28,7 @@ BaseDrawingPanel::BaseDrawingPanel(PowerEntity* pEntity,QWidget *parent,DiagramM
m_pSelectorManager = new SelectorManager(_pModel,this);
m_pGraphicsScene = new DesignerScene(_pModel,this);
//设置场景大小.前两个参数为scene的坐标远点设置到view的中心点后无论view如何缩放secne的坐标原点都不会动方便后续的位置计算
m_pGraphicsScene->setSceneRect(0,0, g_dGriaphicsScene_Width*4, g_dGriaphicsScene_Height*4);
m_pGraphicsScene->setSceneRect(0,0, Constants::SCENE_WIDTH*4, Constants::SCENE_HEIGHT*4);
m_pGraphicsScene->setGridVisible(true);
m_pGraphicsView = new DesignerView(this);

View File

@ -3,7 +3,7 @@
#include "graphicsDataModel/fixedPortsModel.h"
#include "ui_baseInfoDlg.h"
#include "dataBase.h"
#include "global.h"
//#include "global.h"
#include "baseProperty.h"
#include "basePropertyManager.h"
#include "itemPropertyDlg.h"
@ -32,11 +32,11 @@ void BaseInfoDlg::initial()
connect(ui->btn_icon,&QPushButton::clicked,this,&BaseInfoDlg::onIconManagerClicked);
}
void BaseInfoDlg::createGroupView(groupStateInfo infos)
void BaseInfoDlg::createGroupView(GroupStateInfo infos)
{
QList<gridInfo> lstGrid = DataBase::GetInstance()->getAllGrid();
QList<zoneInfo> lstZone = DataBase::GetInstance()->getAllZone();
QList<stationInfo> lstStation = DataBase::GetInstance()->getAllStation();
QList<GridInfo> lstGrid = DataBase::GetInstance()->getAllGrid();
QList<ZoneInfo> lstZone = DataBase::GetInstance()->getAllZone();
QList<StationInfo> lstStation = DataBase::GetInstance()->getAllStation();
for(auto &info:lstGrid)
{
@ -54,9 +54,9 @@ void BaseInfoDlg::createGroupView(groupStateInfo infos)
}
}
QMap<QString,propertyStateInfo> BaseInfoDlg::getPropertyValue(BaseProperty* pPro)
QMap<QString,PropertyStateInfo> BaseInfoDlg::getPropertyValue(BaseProperty* pPro)
{
QMap<QString,propertyStateInfo> map;
QMap<QString,PropertyStateInfo> map;
if(pPro)
{

View File

@ -35,10 +35,10 @@ void BayInfoDlg::initial()
connect(ui->tableWidget_local, &QTableWidget::customContextMenuRequested, this, &BayInfoDlg::onIndexRbtnClicked);
}
void BayInfoDlg::createGroupView(groupStateInfo infos)
void BayInfoDlg::createGroupView(GroupStateInfo infos)
{
for(auto& info:infos.info) {
propertyContentInfo inf;
PropertyContentInfo inf;
inf.proTag = info.tagName;
inf.proName = info.name;
inf.proType = info.type;
@ -46,9 +46,9 @@ void BayInfoDlg::createGroupView(groupStateInfo infos)
}
}
QMap<QString,propertyStateInfo> BayInfoDlg::getPropertyValue(BaseProperty* pPro)
QMap<QString,PropertyStateInfo> BayInfoDlg::getPropertyValue(BaseProperty* pPro)
{
QMap<QString,propertyStateInfo> map;
QMap<QString,PropertyStateInfo> map;
pPro->setDataChanged(true);
pPro->setMeasurement(_mapMeasure);
@ -71,7 +71,7 @@ void BayInfoDlg::setPropertyValue(QVariant var)
if(property)
{
_itemProperty = property;
QList<measureAttributeType> lstType = DataBase::GetInstance()->getMeasureAttributeTypes();
QList<MeasureAttributeType> lstType = DataBase::GetInstance()->getMeasureAttributeTypes();
_validType = lstType;

View File

@ -55,7 +55,7 @@ void BayMeasureDlg::setPropertyValue(BayProperty* pBay)
if(pBay)
{
QList<measureAttributeType> lstType = DataBase::GetInstance()->getMeasureAttributeTypes();
QList<MeasureAttributeType> lstType = DataBase::GetInstance()->getMeasureAttributeTypes();
_validType = lstType;
@ -355,7 +355,7 @@ void BayMeasureDlg::onAddClicked()
_measureDlg->setBayMeasure(this);
}
int curType = 0; //当前对象类型
_measureDlg->showDlg(curType,propertyStateInfo());
_measureDlg->showDlg(curType,PropertyStateInfo());
}
void BayMeasureDlg::onDeleteClicked()
@ -410,7 +410,7 @@ void BayMeasureDlg::onModifyClicked()
_measureDlg->setBayMeasure(this);
}
_measureDlg->showDlg(info,propertyStateInfo());
_measureDlg->showDlg(info,PropertyStateInfo());
}
}

View File

@ -30,10 +30,10 @@ CtExtraInfoDlg::~CtExtraInfoDlg()
delete ui;
}
void CtExtraInfoDlg::createGroupView(groupStateInfo infos)
void CtExtraInfoDlg::createGroupView(GroupStateInfo infos)
{
for(auto& info:infos.info) {
propertyContentInfo inf;
PropertyContentInfo inf;
inf.proTag = info.tagName;
inf.proName = info.name;
inf.proType = info.type;
@ -41,13 +41,13 @@ void CtExtraInfoDlg::createGroupView(groupStateInfo infos)
}
}
QMap<QString,propertyStateInfo> CtExtraInfoDlg::getPropertyValue(BaseProperty* pPro)
QMap<QString,PropertyStateInfo> CtExtraInfoDlg::getPropertyValue(BaseProperty* pPro)
{
QMap<QString,propertyStateInfo> map;
QMap<QString,PropertyStateInfo> map;
for(auto &pro:_mapPro)
{
propertyStateInfo info;
PropertyStateInfo info;
info.tagName = pro.proTag;
info.type = pro.proType;
info.name = pro.proName;
@ -112,7 +112,7 @@ QMap<QString,propertyStateInfo> CtExtraInfoDlg::getPropertyValue(BaseProperty* p
void CtExtraInfoDlg::setPropertyValue(QVariant var)
{
QMap<QString,propertyStateInfo> map = var.value<QMap<QString,propertyStateInfo>>();
QMap<QString,PropertyStateInfo> map = var.value<QMap<QString,PropertyStateInfo>>();
for(auto &info:map)
{
if(info.name == "额定电流(A)" || info.tagName == "in_a") //此处应为类型名

View File

@ -6,7 +6,7 @@
#include "extraPropertyManager.h"
#include "propertyType/dataSourceType.h"
#include <QTimer>
#include "global.h"
//#include "global.h"
DataSourceDlg::DataSourceDlg(QWidget *parent)
: QDialog(parent)

View File

@ -1,8 +1,8 @@
#include "designerScene.h"
#include "util/selectorManager.h"
#include "graphicsItem/graphicsItemGroup.h"
#include "drawingPanel.h"
#include "global.h"
#include "baseDrawingPanel.h"
#include "util/selectorManager.h"
//#include "global.h"
#include <QPainter>
#include <QKeyEvent>

View File

@ -130,7 +130,7 @@ void DiagramCavas::passRecommmandHttpData(HttpRecommandInfo info)
void DiagramCavas::initial()
{
//todo:读取数据并初始化
QList<pageInfo> lst = DataBase::GetInstance()->getAllPage();
QList<PageInfo> lst = DataBase::GetInstance()->getAllPage();
for(auto &info:lst)
{
TopologyManager::instance().createDiagram(QString::number(info.id),info.name);
@ -221,7 +221,7 @@ void DiagramCavas::onSignal_addDrawingPanel(PowerEntity* pItem,DiagramMode mode,
calculateLauncherVisible();
}
void DiagramCavas::onSignal_addGraphicsItem(modelStateInfo& info)
void DiagramCavas::onSignal_addGraphicsItem(ModelStateInfo& info)
{
QMdiSubWindow* actWindow = activeSubWindow();
if(!actWindow)
@ -581,7 +581,7 @@ void DiagramCavas::onTargetSelected(QObject* obj)
}
/****************************************************/
void DiagramCavas::onSignal_updateTopology(QList<RelationItem> lst,bool refresh,bool showFull)
void DiagramCavas::onSignal_updateTopology(QList<HierarchyItem> lst,bool refresh,bool showFull)
{
emit prepareUpdateTopology(lst,refresh,showFull);
}
@ -704,17 +704,17 @@ void DiagramCavas::onSignl_openCurrentBay()
}
}
/*********************monitor**************************/
void DiagramCavas::onSignal_updateCurItems(QList<RelationItem> lst,bool refresh)
void DiagramCavas::onSignal_updateCurItems(QList<HierarchyItem> lst,bool refresh)
{
emit prepareUpdateItems(lst,refresh);
}
void DiagramCavas::onSignal_selectedItems(QList<RelationItem> lst)
void DiagramCavas::onSignal_selectedItems(QList<HierarchyItem> lst)
{
emit prepareSelectItems(lst);
}
void DiagramCavas::onSignal_generate(QString sPage,QList<RelationItem> lst)
void DiagramCavas::onSignal_generate(QString sPage,QList<HierarchyItem> lst)
{
QWidget* pWindow= currentSubWindow()->widget();
DrawingPanel* pPanel = dynamic_cast<DrawingPanel*>(pWindow);
@ -729,7 +729,7 @@ void DiagramCavas::onSignal_monitorCreated(QString sProj,QPair<QString,QUuid> pa
emit updateMonitorList(sProj,pair);
}
void DiagramCavas::onSignal_monitorItemCreated(QList<RelationItem> lst)
void DiagramCavas::onSignal_monitorItemCreated(QList<HierarchyItem> lst)
{
emit createdMonitorItems(lst);
}
@ -772,7 +772,7 @@ void DiagramCavas::updateMonitorListFromDB(int dest)
if(dest != 0)
_loadMonitorPageDlg->clearItems();
QList<monitorPageInfo> lstMonitor = DataBase::GetInstance()->getAllMonitor();
QList<MonitorPageInfo> lstMonitor = DataBase::GetInstance()->getAllMonitor();
for(auto &info:lstMonitor)
{
auto p = TopologyManager::instance().findDiagram(info.uid.toString(),ModelFunctionType::RuntimeModel);

View File

@ -6,7 +6,6 @@
#include "ui_diagramEditorBayDetailAddDlg.h"
#include "diagramEditor/diagramEditorBaseBlock.h"
#include "diagramEditor/diagramEditorWizard.h"
#include "diagramEditor/diagramEditorStructContainer.h"
DiagramEditorBayDetailAddDlg::DiagramEditorBayDetailAddDlg(QWidget *parent)
: QDialog(parent)

View File

@ -3,7 +3,8 @@
#include "diagramEditor/editView.h"
#include "diagramEditor/editScene.h"
#include "graphicsDataModel/diagramEditorModel.h"
#include "global.h"
//#include "global.h"
#include "common/core_model/constants.h"
DiagramEditorBayPreviewDlg::DiagramEditorBayPreviewDlg(QWidget *parent)
: QDialog(parent)
@ -30,7 +31,7 @@ void DiagramEditorBayPreviewDlg::initial()
_pView->scale(0.5,0.5); //缩放为一半
_pMainLayout->addWidget(_pView);
_pScene = new EditPreviewScene(this);
_pScene->setSceneRect(-g_dGriaphicsScene_Width / 2, -g_dGriaphicsScene_Height / 2, g_dGriaphicsScene_Width, g_dGriaphicsScene_Height); //初始大小
_pScene->setSceneRect(-Constants::SCENE_WIDTH / 2, -Constants::SCENE_HEIGHT / 2, Constants::SCENE_WIDTH, Constants::SCENE_HEIGHT); //初始大小
_pView->setScene(_pScene);
}

View File

@ -2,6 +2,8 @@
#include "diagramEditor/diagramEditorBaySettingDlg.h"
#include "diagramEditor/diagramEditorWizard.h"
#include "diagramEditor/diagramEditorBaseBlock.h"
//#include "global.h"
#include "common/core_model/constants.h"
#include "ui_diagramEditorBaySettingDlg.h"
#include "diagramEditor/diagramEditorStructContainer.h"
#include "diagramEditor/wizardBayContentDlg.h"
@ -74,7 +76,7 @@ void DiagramEditorBaySettingDlg::addNewBay()
if(_pWizard){
auto mapAllCon = _pWizard->getContainerStruct();
for(auto iter = mapAllCon.begin();iter != mapAllCon.end();++iter){
if(iter.key() == g_transformerLevel)
if(iter.key() == Constants::TRANSFORMER_LEVEL)
continue;
ui->cb_level->addItem(""+QString::number(iter.key()+1)+"",iter.key());
}

Some files were not shown because too many files have changed in this diff Show More