fix project model layout
This commit is contained in:
parent
660a7649c9
commit
8c1b772f50
|
|
@ -191,6 +191,8 @@ public:
|
|||
QString zone() const {return sZone;}
|
||||
void setStation(const QString& s) {sStation = s;}
|
||||
QString station() const {return sStation;}
|
||||
void setStationId(int id) {nStationId = id;}
|
||||
int stationId() const{return nStationId;}
|
||||
void setSourceItemId(const QString& s) {sSourceItemId = s;}
|
||||
QString getSourceItemId() {return sSourceItemId;}
|
||||
void setMeasurement(QMap<QString,MeasurementInfo> map) {mMeasurement = map;}
|
||||
|
|
@ -201,6 +203,7 @@ protected:
|
|||
QString sGrid;
|
||||
QString sZone;
|
||||
QString sStation;
|
||||
int nStationId = 0;
|
||||
bool bInService;
|
||||
int nState;
|
||||
int nStatus;
|
||||
|
|
@ -219,6 +222,6 @@ public:
|
|||
VariableProperty(QObject* parent = nullptr);
|
||||
~VariableProperty();
|
||||
|
||||
ModelDataInfo& getPropertyValue() const;
|
||||
ModelDataInfo& getPropertyValue(bool useCatch = false) const;
|
||||
};
|
||||
#endif // DATABASE_H
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ VariableProperty::~VariableProperty()
|
|||
|
||||
}
|
||||
|
||||
ModelDataInfo& VariableProperty::getPropertyValue() const
|
||||
ModelDataInfo& VariableProperty::getPropertyValue(bool useCatch) const
|
||||
{
|
||||
return DataManager::instance().modelData()[sModelName];
|
||||
return DataManager::instance().modelData(useCatch)[sModelName];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ signals:
|
|||
void updateMonitorTopology(QList<QUuid>);
|
||||
void pannelSelected(QString sPanel,int nType); //界面选择信号,名称,类型(0:editor)
|
||||
void clearTopology();
|
||||
void projectSaved(const QString,int);
|
||||
public slots:
|
||||
void onSignal_addDrawingPanel(PowerEntity* p,DiagramMode = DM_edit,QString parent = QString()); //parent:派生运行时的page
|
||||
void onSignal_addGraphicsItem(ModelStateInfo&);
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ public:
|
|||
|
||||
void showProjectModelSettingDlg(GraphicsBaseModelItem*); //在基模拓扑图上打开工程模设置对话框
|
||||
void generateProjectModel(const QString&,QList<GraphicsBaseModelItem*>,QList<GraphicsNonStandardItem*>); //由基模生成工程模
|
||||
void addProjectItemByBaseData(DrawingPanel*,GraphicsBaseModelItem*,BaseProperty*,QString sGrid = "",QString sZone = "",QString sStation = ""); //从基模item生成工程模item
|
||||
void addProjectItemByBaseData(DrawingPanel*,GraphicsBaseModelItem*,BaseProperty*,QString sGrid = "",QString sZone = "",QString sStation = "",int stationId = 0); //从基模item生成工程模item
|
||||
void onWizardFinished(QMap<QUuid,GraphicsBaseModelItem*> mapItem,QList<EditBaseItem*> mapBay); //editor结束生成基模
|
||||
/*************************间隔*****************************/
|
||||
void addBayItem(QUuid,ModelFunctionType = ModelFunctionType::ProjectModel);
|
||||
|
|
@ -142,6 +142,7 @@ Q_SIGNALS:
|
|||
void dataUpdated(); //数据更新通知
|
||||
void updateTopologyItems(QList<HierarchyItem>,bool,bool); //更新当前拓扑列表 <连接关系,是否刷新,显示全部层级>
|
||||
void notifyUpdateMonitorTopology(QList<QUuid>); //使用列表中的item id更新总拓扑
|
||||
void projectSaved(QString,int id); //工程模保存完成信号
|
||||
public:
|
||||
void setPageName(QString s) {_pageName = s;} //设置表名称
|
||||
QString pageName() const {return _pageName;}
|
||||
|
|
@ -149,6 +150,7 @@ public:
|
|||
void startHttpRequest(); //开始请求数据(运行时)
|
||||
void setCavas(QPointer<DiagramCavas> p) {_cavas = p;} //设置所属顶层容器
|
||||
DiagramCavas* getCavas();
|
||||
void refreshConnection();
|
||||
void updateTopologyLst(); //更新拓扑列表
|
||||
|
||||
QMap<QUuid,GraphicsProjectModelItem*> getProjectItems(){return _nodeItem;}
|
||||
|
|
@ -166,7 +168,7 @@ public Q_SLOTS:
|
|||
private:
|
||||
void addPortsToItem_json(PortState,QJsonArray,GraphicsBaseItem*); //将json格式的port添加到item
|
||||
void autoSetModelName(GraphicsBaseModelItem*); //如果此页的工程模已被设置,将projectName更新到item
|
||||
QString removeSuffix(const QString& str); //移除最后一个下划线后的内容 (处理各种tag后缀)
|
||||
QString removeSuffix(const QString& str,QChar symbol = '_'); //移除最后一个符号后的内容 (处理各种tag后缀,默认'_')
|
||||
ModelProperty* getItemByUid(QList<GraphicsBaseItem*>,QUuid); //返回uid对应的data
|
||||
void updateMonitor(QMap<QString,QMap<quint64,double>>); //使用当前数据更新运行时
|
||||
void assignMeasureSymmetry(QMap<QString, MeasurementInfo>& measurementMap); //设置量测中互为double的name
|
||||
|
|
|
|||
|
|
@ -203,6 +203,9 @@ void DiagramCavas::onSignal_addDrawingPanel(PowerEntity* pItem,DiagramMode mode,
|
|||
connect(pModel,&FixedPortsModel::updateTopologyItems,this,&DiagramCavas::onSignal_updateTopology);
|
||||
connect(pModel,&FixedPortsModel::itemSelected,this,&DiagramCavas::onSignal_selectedItems);
|
||||
connect(pModel,&FixedPortsModel::notifyUpdateMonitorTopology,this,&DiagramCavas::onSignal_updateMonitorTopology);
|
||||
connect(pModel,&FixedPortsModel::projectSaved,this,[&](const QString sPage,int id){
|
||||
emit projectSaved(sPage,id);
|
||||
});
|
||||
connect(pPanel,&DrawingPanel::panelDelete,this,&DiagramCavas::onSignal_panelDelete);
|
||||
}
|
||||
else if(mode == DM_run){
|
||||
|
|
|
|||
|
|
@ -930,7 +930,7 @@ void DiagramEditorModel::refreshConnection()
|
|||
if(pTopoFrom && pTopoTo){
|
||||
QPointF p1 = pFrom->pos();
|
||||
QPointF p2 = pTo->pos();
|
||||
pTopoFrom->setRelativePosition(p1);
|
||||
pTopoFrom->setRelativePosition(p1); //重绘连接位置时保存
|
||||
pTopoTo->setRelativePosition(p2);
|
||||
}
|
||||
}
|
||||
|
|
@ -939,12 +939,6 @@ void DiagramEditorModel::refreshConnection()
|
|||
}
|
||||
}
|
||||
}
|
||||
if(_pCurPreviewScene){
|
||||
for (QGraphicsItem *item : _pCurPreviewScene->items()) {
|
||||
item->setSelected(true);
|
||||
}
|
||||
_pCurPreviewScene->clearSelection();
|
||||
}
|
||||
}
|
||||
|
||||
void DiagramEditorModel::applyLayoutResult(const LayoutResult& result) {
|
||||
|
|
|
|||
|
|
@ -179,7 +179,7 @@ QString FixedPortsModel::addNodeItem(QUuid id,QPointF pos,double width,double he
|
|||
QString sMeta = pro->metaModelName();
|
||||
QString sProModel = pro->modelName();
|
||||
|
||||
ModelDataInfo mapValue = DataManager::instance().modelData()[sProModel];
|
||||
ModelDataInfo mapValue = DataManager::instance().modelData(true)[sProModel];
|
||||
PropertyValueInfo valueInfo; //属性组设置的数据 (ct,pt二次绕组)
|
||||
if(mapValue.groupInfo.contains("base_extend"))
|
||||
{
|
||||
|
|
@ -735,8 +735,8 @@ void FixedPortsModel::loadNodeDataFromDataBase()
|
|||
QList<ComponentInfo> lst= DataBase::GetInstance()->getAllComponents();
|
||||
for(auto &info:lst)
|
||||
{
|
||||
QString preTag = removeSuffix(info.tag);
|
||||
QString prePath = removeSuffix(info.nspath);
|
||||
QString preTag = removeSuffix(info.tag,'-');
|
||||
QString prePath = removeSuffix(info.nspath,'-');
|
||||
BaseProperty* pData = addNodeData(info.uuid,info.type,info.name,info.modelName);
|
||||
pData->setTag(preTag);
|
||||
pData->setName(info.name);
|
||||
|
|
@ -962,7 +962,7 @@ void FixedPortsModel::saveNode(int nPageId)
|
|||
BayProperty* pBay = dynamic_cast<BayProperty*>(pro);
|
||||
if(pBay){
|
||||
bool val = DataBase::GetInstance()->ifBayExist(pBay->uuid());
|
||||
QString tempTag = pBay->tag()+"_"+_pageName; //tag后加工程名保持全局唯一
|
||||
QString tempTag = pBay->tag()+"-"+_pageName; //tag后加工程名保持全局唯一
|
||||
if(!val){
|
||||
QJsonObject objFrom = turnListToJson(pBay->getLstFrom(),"id","ids");
|
||||
QJsonObject objTo= turnListToJson(pBay->getLstTo(),"id","ids");
|
||||
|
|
@ -993,6 +993,7 @@ void FixedPortsModel::saveNode(int nPageId)
|
|||
QString sZoneTag;
|
||||
QString sZoneName;
|
||||
QString sStationTag;
|
||||
int nStationId;
|
||||
QString sStationName;
|
||||
QList<QUuid> lstId = pBay->getLstComponent(); //获取间隔下的所有item,取一个item所属的层级关系
|
||||
if(!lstId.isEmpty()){
|
||||
|
|
@ -1017,6 +1018,7 @@ void FixedPortsModel::saveNode(int nPageId)
|
|||
for(auto& stationInfo:lstStation){
|
||||
if(pItemData->station() == stationInfo.tagname){
|
||||
sStationTag = stationInfo.tagname;
|
||||
nStationId = stationInfo.id;
|
||||
sStationName = stationInfo.name;
|
||||
break;
|
||||
}
|
||||
|
|
@ -1026,7 +1028,7 @@ void FixedPortsModel::saveNode(int nPageId)
|
|||
|
||||
if(!bExist){
|
||||
if(!bSaveFlag){
|
||||
DataBase::GetInstance()->insertComponent(QUuid("11111111-1111-1111-1111-111111111111"),"","","","","","","",sStationTag,-1,false,-1,-1,QJsonObject(),QJsonObject(),QJsonObject(),1);
|
||||
DataBase::GetInstance()->insertComponent(QUuid("11111111-1111-1111-1111-111111111111"),"","","","","","","",sStationTag,nStationId,-1,false,-1,-1,QJsonObject(),QJsonObject(),QJsonObject(),1);
|
||||
bSaveFlag = true;
|
||||
}
|
||||
}
|
||||
|
|
@ -1184,6 +1186,7 @@ void FixedPortsModel::saveNode(int nPageId)
|
|||
}
|
||||
|
||||
QMap<QUuid,GraphicsProjectModelItem*> mapItems = allItems();
|
||||
bool updated = false;
|
||||
for(auto& pItem:mapItems)
|
||||
{
|
||||
BaseProperty* pData = dynamic_cast<BaseProperty*>(pItem->getProperty());
|
||||
|
|
@ -1213,8 +1216,11 @@ void FixedPortsModel::saveNode(int nPageId)
|
|||
VariableProperty* pVariable = dynamic_cast<VariableProperty*>(pData);
|
||||
if(pVariable)
|
||||
{
|
||||
ModelDataInfo& dataInfo = pVariable->getPropertyValue();
|
||||
QString tempTag = pData->tag()+"_"+_pageName; //tag后加工程名使得全局唯一
|
||||
bool useCatch = updated?true:false;
|
||||
ModelDataInfo& dataInfo = pVariable->getPropertyValue(useCatch);
|
||||
if(updated == false)
|
||||
updated = true;
|
||||
QString tempTag = pData->tag()+"-"+_pageName+pData->getBay(); //tag后加工程名使得全局唯一
|
||||
if(exist) //已存在更新
|
||||
{
|
||||
DataBase::GetInstance()->updateComponent(pData->uuid(),tempTag,pData->name(),pData->context(),pData->inService(),pData->state(),pData->status());
|
||||
|
|
@ -1234,8 +1240,8 @@ void FixedPortsModel::saveNode(int nPageId)
|
|||
}
|
||||
else
|
||||
{
|
||||
QString tempPath = pData->path()+"_"+_pageName;
|
||||
DataBase::GetInstance()->insertComponent(pData->uuid(),pData->modelName(),tempPath,tempTag,pData->name(),pData->description(),pData->grid(),pData->zone(),pData->station(),pData->type(),true,pData->state(),pData->status(),pData->connectedBus(),pData->label(),pData->context(),1);
|
||||
QString tempPath = pData->path()+"-"+_pageName;
|
||||
DataBase::GetInstance()->insertComponent(pData->uuid(),pData->modelName(),tempPath,tempTag,pData->name(),pData->description(),pData->grid(),pData->zone(),pData->station(),pData->stationId(),pData->type(),true,pData->state(),pData->status(),pData->connectedBus(),pData->label(),pData->context(),1);
|
||||
for(auto &val:dataInfo.groupInfo)
|
||||
{
|
||||
if(val.groupName == "component")
|
||||
|
|
@ -1691,6 +1697,65 @@ DiagramCavas* FixedPortsModel::getCavas()
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
void FixedPortsModel::refreshConnection()
|
||||
{
|
||||
for(auto& item:_nodeItem){
|
||||
auto pData = item->getProperty();
|
||||
if(pData){
|
||||
int nType = pData->type();
|
||||
QUuid uid = pData->uuid();
|
||||
if(nType == 8){ //是电缆
|
||||
auto pLine = dynamic_cast<ElectricConnectLineItem*>(item);
|
||||
if(pLine){
|
||||
PowerConnection* pCon = TopologyManager::instance().connection(uid.toString(),ModelFunctionType::EditorModel);
|
||||
if(pCon){
|
||||
QString fromTerId = pCon->fromTerminalId();
|
||||
QString toTerId = pCon->toTerminalId();
|
||||
QString fromId = pCon->fromComponent();
|
||||
QString toId = pCon->toComponent();
|
||||
|
||||
GraphicsProjectModelItem* pFromItem = _nodeItem.value(QUuid(fromId));
|
||||
GraphicsProjectModelItem* pToItem = _nodeItem.value(QUuid(toId));
|
||||
|
||||
auto pFromData = pFromItem->getProperty();
|
||||
auto pToData = pToItem->getProperty();
|
||||
if(pFromData->type() == 1){ //from是母线
|
||||
auto pToPort = pToItem->getPortById(toTerId);
|
||||
QPointF p = calculateBusPortPos(pFromItem,pToItem,pToPort->scenePos());
|
||||
pFromItem->movePort(fromTerId,pFromItem->mapFromScene(p));
|
||||
}
|
||||
else if(pToData->type() == 1){ //to是母线
|
||||
auto pFromPort = pFromItem->getPortById(fromTerId);
|
||||
QPointF p = calculateBusPortPos(pToItem,pFromItem,pFromPort->scenePos());
|
||||
pToItem->movePort(toTerId,pToItem->mapFromScene(p));
|
||||
}
|
||||
|
||||
auto portsFrom = pFromItem->getPorts();
|
||||
auto portsTo = pToItem->getPorts();
|
||||
|
||||
ItemPort* pFrom = portsFrom.value(fromTerId);
|
||||
ItemPort* pTo = portsTo.value(toTerId);
|
||||
if(pFrom && pTo){ //更新连线起点终点位置
|
||||
pLine->setStartPoint(pFrom->scenePos());
|
||||
pLine->setEndPoint(pTo->scenePos());
|
||||
pLine->calculatePath();
|
||||
|
||||
PowerTerminal* pTopoFrom = TopologyManager::instance().getTerminal(fromTerId,ModelFunctionType::EditorModel);
|
||||
PowerTerminal* pTopoTo = TopologyManager::instance().getTerminal(toTerId,ModelFunctionType::EditorModel);
|
||||
if(pTopoFrom && pTopoTo){
|
||||
QPointF p1 = pFrom->pos();
|
||||
QPointF p2 = pTo->pos();
|
||||
pTopoFrom->setRelativePosition(p1);
|
||||
pTopoTo->setRelativePosition(p2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FixedPortsModel::updateTopologyLst()
|
||||
{
|
||||
QString sG;
|
||||
|
|
@ -1834,9 +1899,9 @@ void FixedPortsModel::autoSetModelName(GraphicsBaseModelItem* pItem)
|
|||
}
|
||||
}
|
||||
|
||||
QString FixedPortsModel::removeSuffix(const QString& str)
|
||||
QString FixedPortsModel::removeSuffix(const QString& str,QChar symbol)
|
||||
{
|
||||
int lastUnderscore = str.lastIndexOf('_');
|
||||
int lastUnderscore = str.lastIndexOf(symbol);
|
||||
if (lastUnderscore == -1) return str; // 没有下划线
|
||||
|
||||
return str.left(lastUnderscore);
|
||||
|
|
@ -2149,6 +2214,8 @@ void FixedPortsModel::saveProject()
|
|||
DataBase::GetInstance()->updatePage(sPage,sPage,context);
|
||||
int pageId = DataBase::GetInstance()->getPageIdByName(sPage);
|
||||
pPanel->saveNodes(pageId);
|
||||
emit projectSaved(sPage,pageId);
|
||||
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"保存完成"));
|
||||
}
|
||||
/*********************baseModel**********************/
|
||||
|
||||
|
|
@ -2246,12 +2313,16 @@ void FixedPortsModel::generateProjectModel(const QString& sPageName,QList<Graphi
|
|||
QString sG;
|
||||
QString sZ;
|
||||
QString sS;
|
||||
int nStationId;
|
||||
if(!lstGrid.isEmpty())
|
||||
sG = lstGrid.first().tagname;
|
||||
if(!lstZone.isEmpty())
|
||||
sZ = lstZone.first().tagname;
|
||||
if(!lstStation.isEmpty())
|
||||
if(!lstStation.isEmpty()){
|
||||
sS = lstStation.first().tagname;
|
||||
nStationId = lstStation.first().id;
|
||||
}
|
||||
|
||||
|
||||
for(auto& pBaseItem:lstItem) //先处理连线,递归处理连线连接的item
|
||||
{
|
||||
|
|
@ -2266,7 +2337,8 @@ void FixedPortsModel::generateProjectModel(const QString& sPageName,QList<Graphi
|
|||
pData->setGrid(sG);
|
||||
pData->setZone(sZ);
|
||||
pData->setStation(sS);
|
||||
addProjectItemByBaseData(pProPanel,pBaseItem,pData,sG,sZ,sS);
|
||||
pData->setStationId(nStationId);
|
||||
addProjectItemByBaseData(pProPanel,pBaseItem,pData,sG,sZ,sS,nStationId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2386,6 +2458,7 @@ void FixedPortsModel::generateProjectModel(const QString& sPageName,QList<Graphi
|
|||
}
|
||||
}
|
||||
}
|
||||
//refreshConnection();
|
||||
}
|
||||
|
||||
void FixedPortsModel::onWizardFinished(QMap<QUuid,GraphicsBaseModelItem*> mapItem,QList<EditBaseItem*> mapBlock)
|
||||
|
|
@ -2723,7 +2796,7 @@ void FixedPortsModel::onWizardFinished(QMap<QUuid,GraphicsBaseModelItem*> mapIte
|
|||
emit updateTopologyItems(lstItem,false,false);
|
||||
}
|
||||
|
||||
void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBaseModelItem* pItem,BaseProperty* pPro,QString sGrid,QString sZone,QString sStation)
|
||||
void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBaseModelItem* pItem,BaseProperty* pPro,QString sGrid,QString sZone,QString sStation,int nStationId)
|
||||
{
|
||||
BaseModelProperty* pBase = dynamic_cast<BaseModelProperty*>(pItem->getProperty());
|
||||
if(pBase){
|
||||
|
|
@ -2737,6 +2810,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
pPro->setSubList(pBase->getSubList()); //传递sublist
|
||||
pPro->setBay(sBay);
|
||||
pPro->setVoltageLevel(pBase->getVoltageLevel());
|
||||
QMap<QString,ItemPort*> basePorts = pItem->getPorts();
|
||||
|
||||
int nBaseTypeId = BaseTypeManager::getInstance()->getIdByModelType(pBase->metaModelName());
|
||||
|
||||
|
|
@ -3035,7 +3109,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
{
|
||||
if(pProItem){
|
||||
PowerEntity* pEntity = TopologyManager::instance().createEntity(EntityType::Component,pPro->uuid().toString(),pBase->name());
|
||||
QList<PowerTerminal*> lstBase = TopologyManager::instance().getTerminalsForEntity(pBase->uuid().toString(),ModelFunctionType::BaseModel); //获取基模的逻辑点
|
||||
/*QList<PowerTerminal*> lstBase = TopologyManager::instance().getTerminalsForEntity(pBase->uuid().toString(),ModelFunctionType::BaseModel); //获取基模的逻辑点
|
||||
for(auto& baseTer:lstBase)
|
||||
{
|
||||
QUuid uid = QUuid::createUuid();
|
||||
|
|
@ -3046,7 +3120,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
proTer->setGenerateBy(baseTer->id());
|
||||
if(proTer->type() == TerminalType::PowerConnect)
|
||||
{
|
||||
pProItem->addPort(p_movable,proTer->relativePosition(),proTer->id());
|
||||
pProItem->addPort(p_movable,pRelaPos,proTer->id(),T_lineInOut,PortPos(baseTer->getPortLocate()),dPerX,dPerY);
|
||||
ItemPort* pPort = pProItem->getPortById(proTer->id());
|
||||
pPort->setSourcePortId(baseTer->id());
|
||||
}
|
||||
|
|
@ -3071,6 +3145,17 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
ItemPort* pPort = pProItem->getPortById(proTer->id());
|
||||
pPort->setSourcePortId(baseTer->id());
|
||||
}
|
||||
}*/
|
||||
|
||||
for(auto& pBasePort:basePorts){ //不使用拓扑携带的位置数据,由base数据直接派生
|
||||
double dPerX = pBasePort->getXPercent();
|
||||
double dPerY = pBasePort->getYPercent();
|
||||
QPointF pRelaPos = pBasePort->pos();
|
||||
PowerTerminal* proTer = TopologyManager::instance().createTerminal(pEntity->id(),TerminalType::PowerConnect,"",pRelaPos,pBasePort->getId(),ModelFunctionType::ProjectModel,dPerX,dPerY);
|
||||
proTer->setGenerateBy(pBasePort->getId());
|
||||
pProItem->addPort(p_movable,pRelaPos,proTer->id(),pBasePort->getType(),pBasePort->portPos(),dPerX,dPerY);
|
||||
ItemPort* pPort = pProItem->getPortById(proTer->id());
|
||||
pPort->setSourcePortId(pBasePort->getId());
|
||||
}
|
||||
|
||||
pProItem->setItemId(QUuid(pEntity->id()));
|
||||
|
|
@ -3127,6 +3212,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
pData->setGrid(sGrid);
|
||||
pData->setZone(sZone);
|
||||
pData->setStation(sStation);
|
||||
pData->setStationId(nStationId);
|
||||
addProjectItemByBaseData(pPanel,pFromItem,pData);
|
||||
proFromItemId = id.toString();
|
||||
}
|
||||
|
|
@ -3139,6 +3225,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
pData->setGrid(sGrid);
|
||||
pData->setZone(sZone);
|
||||
pData->setStation(sStation);
|
||||
pData->setStationId(nStationId);
|
||||
addProjectItemByBaseData(pPanel,pToItem,pData);
|
||||
proToItemId = id.toString();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -417,12 +417,12 @@ bool ElectricConnectLineItem::isSegmentSafe(const QPointF& p1, const QPointF& p2
|
|||
bool ElectricConnectLineItem::isPathSafe(const QList<QPointF>& path,
|
||||
const QList<QRectF>& components)
|
||||
{
|
||||
for (int i = 0; i < path.size() - 1; i++) {
|
||||
/*for (int i = 0; i < path.size() - 1; i++) {
|
||||
if (!isSegmentSafe(path[i], path[i+1], components)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}*/
|
||||
return true; //相交判断暂时屏蔽
|
||||
}
|
||||
|
||||
// 检查线段是否穿透元件
|
||||
|
|
|
|||
|
|
@ -92,6 +92,12 @@ int GraphicsBaseItem::addPort(PortState typ,QPointF vec,QString id,HandleType hT
|
|||
if(typ == p_movable)
|
||||
{
|
||||
pPort->setType(T_lineInOut);
|
||||
if(dXPercent || dYPercent)
|
||||
{
|
||||
pPort->setPortPos(pos);
|
||||
pPort->setXPercent(dXPercent);
|
||||
pPort->setYPercent(dYPercent);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -34,71 +34,6 @@
|
|||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">QWidget {
|
||||
background: #2c5282;
|
||||
color: white;
|
||||
border: none;
|
||||
}
|
||||
|
||||
QWidget QLabel {
|
||||
color: white;
|
||||
font-size: 12px;
|
||||
background: transparent;
|
||||
}</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>-1</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>输入组态图名称</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>227</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget_2" native="true">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public:
|
|||
bool deleteTopologic(QUuid fromPin,QUuid toPin);
|
||||
/*********************************************************************************/
|
||||
bool updateComponent(QUuid uuid,QString tag,QString name,QJsonObject context,bool inService,int state,int status);
|
||||
bool insertComponent(QUuid uuid,QString modelName,QString nspath,QString tag,QString name,QString description,QString grid,QString zone,QString station,int type,bool inService,int state,int status,QJsonObject connected_bus,QJsonObject label,QJsonObject context,int op);
|
||||
bool insertComponent(QUuid uuid,QString modelName,QString nspath,QString tag,QString name,QString description,QString grid,QString zone,QString station,int stationId,int type,bool inService,int state,int status,QJsonObject connected_bus,QJsonObject label,QJsonObject context,int op);
|
||||
bool insertDynamicProperty(QUuid uuid,GroupStateValue groupValue);
|
||||
bool updateDynamicProperty(QUuid uuid,GroupStateValue groupValue);
|
||||
ComponentInfo getComponentInfoByUuid(QString uuid);
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public:
|
|||
void updateModelData(const QString& sModel,QUuid uuid,const QString& sGroup,QMap<QString,PropertyStateInfo> mapPro);
|
||||
|
||||
ModleStateMap& modelState();
|
||||
ModelDataMap& modelData();
|
||||
ModelDataMap& modelData(bool useCatch = false); //bool:使用缓存数据
|
||||
private:
|
||||
ModleStateMap _modelStateInfo; //接收的模型结构信息(可直接返回引用)
|
||||
ModelDataMap _modleDataInfo; //模型实时数据(使用接口获取数据)
|
||||
|
|
|
|||
|
|
@ -268,7 +268,7 @@ QSqlQuery DataBase::executeBatchSQL(const QStringList& sqlStatements, bool creat
|
|||
}
|
||||
|
||||
|
||||
bool DataBase::insertComponent(QUuid uuid,QString modelName,QString nspath,QString tag,QString name,QString description,QString grid,QString zone,QString station,int type,bool inService,int state,int status,QJsonObject connected_bus,QJsonObject label,QJsonObject context,int op)
|
||||
bool DataBase::insertComponent(QUuid uuid,QString modelName,QString nspath,QString tag,QString name,QString description,QString grid,QString zone,QString station,int stationId,int type,bool inService,int state,int status,QJsonObject connected_bus,QJsonObject label,QJsonObject context,int op)
|
||||
{
|
||||
QSqlDatabase db = getDB();
|
||||
if(db.open())
|
||||
|
|
@ -278,7 +278,7 @@ bool DataBase::insertComponent(QUuid uuid,QString modelName,QString nspath,QStri
|
|||
QJsonDocument contextDoc(context);
|
||||
QString strCon = contextDoc.toJson(QJsonDocument::Compact);
|
||||
|
||||
qry.prepare("INSERT INTO component(global_uuid, model_name, nspath, tag, name, grid, zone, station, type, in_service, state, status, context, op, ts) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
qry.prepare("INSERT INTO component(global_uuid, model_name, nspath, tag, name, grid, zone, station, station_id, type, in_service, state, status, context, op, ts) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
qry.bindValue(0,uuid);
|
||||
qry.bindValue(1,modelName);
|
||||
qry.bindValue(2,nspath);
|
||||
|
|
@ -287,13 +287,14 @@ bool DataBase::insertComponent(QUuid uuid,QString modelName,QString nspath,QStri
|
|||
qry.bindValue(5,grid);
|
||||
qry.bindValue(6,zone);
|
||||
qry.bindValue(7,station);
|
||||
qry.bindValue(8,type);
|
||||
qry.bindValue(9,inService);
|
||||
qry.bindValue(10,state);
|
||||
qry.bindValue(11,status);
|
||||
qry.bindValue(12,strCon);
|
||||
qry.bindValue(13,op);
|
||||
qry.bindValue(14,QDateTime::currentDateTime());
|
||||
qry.bindValue(8,stationId);
|
||||
qry.bindValue(9,type);
|
||||
qry.bindValue(10,inService);
|
||||
qry.bindValue(11,state);
|
||||
qry.bindValue(12,status);
|
||||
qry.bindValue(13,strCon);
|
||||
qry.bindValue(14,op);
|
||||
qry.bindValue(15,QDateTime::currentDateTime());
|
||||
bool res = qry.exec();
|
||||
QString str = qry.lastQuery();
|
||||
const QVariantList list = qry.boundValues();
|
||||
|
|
|
|||
|
|
@ -282,11 +282,14 @@ ModleStateMap& DataManager::modelState()
|
|||
return _modelStateInfo;
|
||||
}
|
||||
|
||||
ModelDataMap& DataManager::modelData()
|
||||
ModelDataMap& DataManager::modelData(bool useCatch)
|
||||
{
|
||||
if(!_dataInitialised)
|
||||
initialModelData();
|
||||
else
|
||||
initialModelData(true);
|
||||
if(!useCatch){
|
||||
if(!_dataInitialised)
|
||||
initialModelData();
|
||||
else
|
||||
initialModelData(true);
|
||||
}
|
||||
|
||||
return _modleDataInfo;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ public slots:
|
|||
void onIndexRbtnClicked(const QPoint &pos); //索引列表右键菜单
|
||||
void onItemChanged(QStandardItem *item);
|
||||
void onItemClicked(const QModelIndex &index);
|
||||
void onPageSaved(const QString,int);
|
||||
|
||||
void onEditorRbtnClicked(const QPoint &pos); //editor右键菜单
|
||||
void onEditorDBClicked(QTreeWidgetItem* item, int column);
|
||||
|
|
|
|||
|
|
@ -199,6 +199,18 @@ void DiagramView::onItemClicked(const QModelIndex &index)
|
|||
}
|
||||
}
|
||||
|
||||
void DiagramView::onPageSaved(const QString sPage,int id)
|
||||
{
|
||||
for (int row = 0; row < _pModel->rowCount(); ++row) {
|
||||
QStandardItem *item = _pModel->item(row, 0);
|
||||
if (item && item->data(Qt::DisplayRole) == sPage) {
|
||||
QStandardItem* pItem = new QStandardItem(sPage);
|
||||
pItem->setData(id,Qt::UserRole);
|
||||
_pModel->appendRow(pItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DiagramView::onEditorRbtnClicked(const QPoint &pos)
|
||||
{
|
||||
QTreeWidgetItem *item = ui->treeWidget->itemAt(pos);
|
||||
|
|
|
|||
|
|
@ -191,13 +191,13 @@ void CMainWindow::initializeAction()
|
|||
connect(m_pDiagramView,&DiagramView::diagramSelected,m_pDiagramCavas,&DiagramCavas::onSignal_selectDiagram);
|
||||
connect(m_pDiagramView,&DiagramView::createProject,this,&CMainWindow::onAction_createEditor);
|
||||
connect(m_pDiagramCavas,&DiagramCavas::pannelSelected,m_pDiagramView,&DiagramView::onPanelActive);
|
||||
connect(m_pDiagramCavas,&DiagramCavas::projectSaved,m_pDiagramView,&DiagramView::onPageSaved);
|
||||
connect(m_pDiagramCavas,&DiagramCavas::prepareUpdateItems,m_pMonitorItemsDlg,&MonitorItemsDlg::onUpdateItems);
|
||||
connect(m_pDiagramCavas,&DiagramCavas::prepareSelectItems,m_pMonitorItemsDlg,&MonitorItemsDlg::onSelectItems);
|
||||
connect(m_pDiagramCavas,&DiagramCavas::updateMonitorList,m_pMonitorPagesDlg,&MonitorPagesDlg::onMonitorCreated);
|
||||
connect(m_pDiagramCavas,&DiagramCavas::createdMonitorItems,m_pMonitorItemsDlg,&MonitorItemsDlg::onMonitorCreated);
|
||||
connect(m_pDiagramCavas,&DiagramCavas::updateMonitorTopology,m_pTopologyView,&TopologyView::onMonitorUpdate);
|
||||
|
||||
|
||||
connect(m_pMonitorItemsDlg,&MonitorItemsDlg::generateMonitor,m_pDiagramCavas,&DiagramCavas::onSignal_generate);
|
||||
connect(m_pMonitorPagesDlg,&MonitorPagesDlg::monitorSelected,m_pDiagramCavas,&DiagramCavas::onSignal_monitorSelected);
|
||||
connect(m_pMonitorPagesDlg,&MonitorPagesDlg::prepareSaveMonitor,m_pDiagramCavas,&DiagramCavas::onSignal_saveMonitor);
|
||||
|
|
|
|||
Loading…
Reference in New Issue