2025-05-16 19:20:46 +08:00
|
|
|
|
#include <QMdiSubWindow>
|
|
|
|
|
|
#include <QMessageBox>
|
|
|
|
|
|
#include <QJsonObject>
|
|
|
|
|
|
#include <QStandardItem>
|
2025-02-06 16:36:50 +08:00
|
|
|
|
#include "drawingPanel.h"
|
|
|
|
|
|
#include "diagramCavas.h"
|
|
|
|
|
|
#include "dataBase.h"
|
|
|
|
|
|
#include "graphicsItem/graphicsBaseItem.h"
|
2025-04-30 16:29:17 +08:00
|
|
|
|
#include "topologyManager.h"
|
|
|
|
|
|
#include "powerEntity.h"
|
2025-05-30 16:28:51 +08:00
|
|
|
|
#include "diagramEditor/diagramEditorWizard.h"
|
2025-10-17 18:14:44 +08:00
|
|
|
|
#include "projectModelManager.h"
|
2025-07-11 18:13:54 +08:00
|
|
|
|
#include "baseProperty.h"
|
2025-05-30 16:28:51 +08:00
|
|
|
|
#include "diagramEditor/editPanel.h"
|
2025-09-12 17:28:47 +08:00
|
|
|
|
#include "graphicsDataModel/diagramEditorModel.h"
|
2025-10-24 21:11:07 +08:00
|
|
|
|
#include "projectManager.h"
|
2025-10-11 18:51:33 +08:00
|
|
|
|
#include "designerView.h"
|
2025-09-26 18:50:21 +08:00
|
|
|
|
#include "basePropertyManager.h"
|
2025-10-24 21:11:07 +08:00
|
|
|
|
#include <QLibrary>
|
|
|
|
|
|
#include <QMetaMethod>
|
2025-02-06 16:36:50 +08:00
|
|
|
|
|
|
|
|
|
|
DiagramCavas::DiagramCavas(QWidget *parent)
|
|
|
|
|
|
: QMdiArea(parent)
|
|
|
|
|
|
{
|
|
|
|
|
|
_pageIndex = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
DiagramCavas::~DiagramCavas()
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-06-20 18:09:41 +08:00
|
|
|
|
DrawingPanel* DiagramCavas::getPanel(QString sPage)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(m_mapDrawPanel.contains(sPage))
|
|
|
|
|
|
return m_mapDrawPanel[sPage].first;
|
|
|
|
|
|
return nullptr;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-24 21:11:07 +08:00
|
|
|
|
EditPanel* DiagramCavas::getEditPanel(QString sPage)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(m_mapEditPanel.contains(sPage))
|
|
|
|
|
|
return m_mapEditPanel[sPage].first;
|
|
|
|
|
|
return nullptr;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-02-06 16:36:50 +08:00
|
|
|
|
void DiagramCavas::initial()
|
|
|
|
|
|
{
|
|
|
|
|
|
//todo:读取数据并初始化
|
2025-05-16 19:20:46 +08:00
|
|
|
|
QList<pageInfo> lst = DataBase::GetInstance()->getAllPage();
|
2025-10-30 17:20:10 +08:00
|
|
|
|
for(auto &info:lst)
|
2025-05-16 19:20:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
TopologyManager::instance().createDiagram(QString::number(info.id),info.name);
|
|
|
|
|
|
}
|
2025-02-06 16:36:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-04-30 16:29:17 +08:00
|
|
|
|
void DiagramCavas::onSignal_addDrawingPanel(PowerEntity* pItem,DiagramMode mode)
|
2025-02-06 16:36:50 +08:00
|
|
|
|
{
|
2025-04-30 16:29:17 +08:00
|
|
|
|
DrawingPanel* pPanel = new DrawingPanel(pItem,this,mode);
|
|
|
|
|
|
_curPage = pItem->name();
|
|
|
|
|
|
pPanel->setPageName(_curPage);
|
|
|
|
|
|
pPanel->setWindowTitle(_curPage);
|
|
|
|
|
|
//->setAttribute(Qt::WA_DeleteOnClose);
|
|
|
|
|
|
QMdiSubWindow* pSub = this->addSubWindow(pPanel);
|
|
|
|
|
|
m_mapDrawPanel.insert(_curPage,qMakePair(pPanel,pSub));
|
2025-02-06 16:36:50 +08:00
|
|
|
|
pPanel->show();
|
|
|
|
|
|
|
2025-07-04 18:47:49 +08:00
|
|
|
|
FixedPortsModel* pModel = pPanel->getModelController();
|
2025-06-20 18:09:41 +08:00
|
|
|
|
pModel->setCavas(this);
|
2025-02-06 16:36:50 +08:00
|
|
|
|
connect(pModel,&FixedPortsModel::activatePage,this,&DiagramCavas::onSignal_activatePage);
|
|
|
|
|
|
connect(pPanel,&DrawingPanel::panelDelete,this,&DiagramCavas::onSignal_panelDelete);
|
2025-06-13 19:00:05 +08:00
|
|
|
|
|
|
|
|
|
|
if(mode == DM_baseModel)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2025-02-06 16:36:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-03-28 18:08:21 +08:00
|
|
|
|
void DiagramCavas::onSignal_addGraphicsItem(modelStateInfo& info)
|
2025-02-06 16:36:50 +08:00
|
|
|
|
{
|
2025-04-30 16:29:17 +08:00
|
|
|
|
QMdiSubWindow* actWindow = activeSubWindow();
|
|
|
|
|
|
if(!actWindow)
|
|
|
|
|
|
return;
|
2025-02-06 16:36:50 +08:00
|
|
|
|
QWidget* pWindow= currentSubWindow()->widget();
|
|
|
|
|
|
DrawingPanel* pPanel = dynamic_cast<DrawingPanel*>(pWindow);
|
|
|
|
|
|
|
|
|
|
|
|
if(pPanel)
|
2025-03-28 18:08:21 +08:00
|
|
|
|
pPanel->onSignal_addGraphicsItem(info);
|
2025-02-06 16:36:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_addPage()
|
|
|
|
|
|
{
|
2025-04-30 16:29:17 +08:00
|
|
|
|
//onSignal_addDrawingPanel(QString("Page_")+QString::number(++_pageIndex));
|
2025-02-06 16:36:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_savePage()
|
|
|
|
|
|
{
|
|
|
|
|
|
QWidget* pWindow= currentSubWindow()->widget();
|
|
|
|
|
|
DrawingPanel* pPanel = dynamic_cast<DrawingPanel*>(pWindow);
|
|
|
|
|
|
if(pPanel)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(pPanel->getMode() == DM_run)
|
|
|
|
|
|
{
|
|
|
|
|
|
QMessageBox::about(NULL,QString::fromWCharArray(L"提示"), QString::fromWCharArray(L"运行中无法保存!"));
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(pPanel->getMode() == DM_edit)
|
|
|
|
|
|
{
|
|
|
|
|
|
_curPage = pPanel->pageName();
|
|
|
|
|
|
QMessageBox msgBox;
|
|
|
|
|
|
msgBox.setText(QString::fromWCharArray(L"提示"));
|
|
|
|
|
|
msgBox.setInformativeText(QString::fromWCharArray(L"内容已修改,是否保存?"));
|
|
|
|
|
|
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Cancel);
|
|
|
|
|
|
msgBox.setDefaultButton(QMessageBox::Save);
|
|
|
|
|
|
int ret = msgBox.exec();
|
|
|
|
|
|
|
|
|
|
|
|
switch (ret) {
|
|
|
|
|
|
case QMessageBox::Save: //todo:已存在更新
|
|
|
|
|
|
{
|
2025-07-04 18:47:49 +08:00
|
|
|
|
QMap<QUuid,GraphicsProjectModelItem*> map = pPanel->getModelController()->allItems();
|
2025-10-17 18:14:44 +08:00
|
|
|
|
QList<QString> updatedModel; //更新过图标的模型
|
2025-02-06 16:36:50 +08:00
|
|
|
|
for(auto pItem:map)
|
|
|
|
|
|
{
|
2025-07-11 18:13:54 +08:00
|
|
|
|
BaseProperty* pData = dynamic_cast<BaseProperty*>(pItem->getProperty());
|
|
|
|
|
|
if(pData){
|
2025-10-17 18:14:44 +08:00
|
|
|
|
QString sMeta = pData->metaModelName();
|
|
|
|
|
|
QString sModel = pData->modelName();
|
|
|
|
|
|
if(!updatedModel.contains(sModel)){
|
|
|
|
|
|
ProjectModelManager::instance().updateSetting(sMeta,sModel); //更新使用的图标数据
|
|
|
|
|
|
updatedModel.append(sModel);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-11 18:13:54 +08:00
|
|
|
|
if(pItem->itemChanged() || pData->dataChanged())
|
|
|
|
|
|
{
|
|
|
|
|
|
pItem->updateConnectData(); //更新连接状态
|
|
|
|
|
|
pItem->setItemChanged(false);
|
|
|
|
|
|
}
|
2025-02-06 16:36:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(DataBase::GetInstance()->getPageIdByName(_curPage) == -1) //不存在,创建
|
2025-05-23 10:30:52 +08:00
|
|
|
|
DataBase::GetInstance()->insertPage(_curPage,_curPage,QJsonObject(),pPanel->getDiagramInfo(),QString("page"),1);
|
2025-02-06 16:36:50 +08:00
|
|
|
|
else
|
|
|
|
|
|
DataBase::GetInstance()->updatePage(_curPage,_curPage,pPanel->getDiagramInfo());
|
|
|
|
|
|
int pageId = DataBase::GetInstance()->getPageIdByName(_curPage);
|
|
|
|
|
|
pPanel->saveNodes(pageId);
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
case QMessageBox::Cancel:
|
|
|
|
|
|
// Cancel was clicked
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
// should never be reached
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-06-13 19:00:05 +08:00
|
|
|
|
else if(pPanel->getMode() == DM_baseModel)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2025-02-06 16:36:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-04-30 16:29:17 +08:00
|
|
|
|
void DiagramCavas::onSignal_loadPage(PowerEntity* p)
|
2025-02-06 16:36:50 +08:00
|
|
|
|
{
|
2025-04-30 16:29:17 +08:00
|
|
|
|
if(!m_mapDrawPanel.contains(p->name()))
|
2025-02-06 16:36:50 +08:00
|
|
|
|
{
|
2025-04-30 16:29:17 +08:00
|
|
|
|
onSignal_addDrawingPanel(p);
|
|
|
|
|
|
QJsonObject context = DataBase::GetInstance()->getPageContextByName(p->name());
|
|
|
|
|
|
m_mapDrawPanel[p->name()].first->loadNodes(context);
|
2025-02-06 16:36:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
else //已存在
|
|
|
|
|
|
{
|
2025-04-30 16:29:17 +08:00
|
|
|
|
m_mapDrawPanel[p->name()].first->show();
|
2025-02-06 16:36:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-24 21:11:07 +08:00
|
|
|
|
void DiagramCavas::onSignal_loadEdit(const QString& sProject,QUuid uid)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(!m_mapEditPanel.contains(sProject))
|
|
|
|
|
|
{
|
|
|
|
|
|
//todo:加载数据
|
2025-10-30 17:20:10 +08:00
|
|
|
|
onSignal_addEditWizard(sProject,uid,false);
|
|
|
|
|
|
m_mapEditPanel[sProject].first->loadBaseSetting(uid);
|
2025-10-24 21:11:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
else //已存在
|
|
|
|
|
|
{
|
|
|
|
|
|
//todo:新建或加载时删除old
|
|
|
|
|
|
m_mapEditPanel[sProject].first->show();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-02-06 16:36:50 +08:00
|
|
|
|
void DiagramCavas::runPage(const QString sName)
|
|
|
|
|
|
{
|
|
|
|
|
|
QString pageName = sName+QString("_run");
|
|
|
|
|
|
if(!m_mapDrawPanel.contains(pageName))
|
|
|
|
|
|
{
|
2025-04-30 16:29:17 +08:00
|
|
|
|
//onSignal_addDrawingPanel(pageName,DM_run);
|
2025-02-06 16:36:50 +08:00
|
|
|
|
QJsonObject context = DataBase::GetInstance()->getPageContextByName(sName);
|
2025-04-30 16:29:17 +08:00
|
|
|
|
//m_mapDrawPanel[pageName]->loadNodes(context);
|
2025-02-06 16:36:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
else //已存在
|
|
|
|
|
|
{
|
2025-04-30 16:29:17 +08:00
|
|
|
|
//m_mapDrawPanel[pageName]->show();
|
2025-02-06 16:36:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_runPage()
|
|
|
|
|
|
{
|
|
|
|
|
|
runPage(_curPage);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_deletePage()
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_activatePage(const QString& name)
|
|
|
|
|
|
{
|
|
|
|
|
|
_curPage = name;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-30 17:20:10 +08:00
|
|
|
|
void DiagramCavas::onSignal_panelDelete(const QString& name,int nType)
|
2025-02-06 16:36:50 +08:00
|
|
|
|
{
|
2025-10-30 17:20:10 +08:00
|
|
|
|
if(nType == 0){
|
|
|
|
|
|
EditPanel* pPanel = m_mapEditPanel.take(name).first;
|
|
|
|
|
|
BasePropertyManager::instance().clearEditorData(); //关闭前清空当前单例 todo:测试其他单例
|
|
|
|
|
|
this->removeSubWindow(pPanel);
|
|
|
|
|
|
delete pPanel;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(nType == 1){
|
|
|
|
|
|
DrawingPanel* pPanel = m_mapDrawPanel.take(name).first;
|
|
|
|
|
|
if(m_mapDrawPanel.isEmpty())
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
this->removeSubWindow(pPanel);
|
|
|
|
|
|
delete pPanel;
|
2025-02-06 16:36:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-04-30 16:29:17 +08:00
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_createEntity(EntityInfo info)
|
|
|
|
|
|
{
|
|
|
|
|
|
PowerEntity* pEntity;
|
|
|
|
|
|
pEntity = TopologyManager::instance().findEntity(info.sUuid);
|
|
|
|
|
|
if(!pEntity) //不存在创建
|
|
|
|
|
|
{
|
|
|
|
|
|
pEntity = TopologyManager::instance().createEntity(info.eType,info.sUuid,info.sName);
|
|
|
|
|
|
PowerEntity* pParent = TopologyManager::instance().findEntity(info.sParentId);
|
|
|
|
|
|
if(pParent) //构建父子关系
|
|
|
|
|
|
{
|
|
|
|
|
|
pParent->addChild(pEntity);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
switch (info.eType){
|
|
|
|
|
|
case EntityType::Grid:
|
|
|
|
|
|
case EntityType::Zone:
|
|
|
|
|
|
case EntityType::Station:
|
|
|
|
|
|
break;
|
|
|
|
|
|
case EntityType::ConfigurationDiagram:
|
|
|
|
|
|
onSignal_addDrawingPanel(pEntity);
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_changeEntity(EntityInfo info)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_deleteEntity(EntityInfo info)
|
|
|
|
|
|
{
|
|
|
|
|
|
PowerEntity* pEntity = TopologyManager::instance().findEntity(info.sUuid);
|
|
|
|
|
|
if(pEntity)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (info.eType){
|
|
|
|
|
|
case EntityType::Grid:
|
|
|
|
|
|
case EntityType::Zone:
|
|
|
|
|
|
case EntityType::Station:
|
|
|
|
|
|
TopologyManager::instance().deleteEntity(info.sUuid);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case EntityType::ConfigurationDiagram:
|
|
|
|
|
|
removePanel(pEntity);
|
|
|
|
|
|
TopologyManager::instance().deleteEntity(info.sUuid);
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_selectEntity(EntityInfo info)
|
|
|
|
|
|
{
|
|
|
|
|
|
PowerEntity* pEntity = TopologyManager::instance().findEntity(info.sUuid);
|
|
|
|
|
|
if(pEntity)
|
|
|
|
|
|
{
|
2025-05-09 19:36:32 +08:00
|
|
|
|
switch (info.eType){
|
|
|
|
|
|
case EntityType::Grid:
|
|
|
|
|
|
case EntityType::Zone:
|
|
|
|
|
|
case EntityType::Station:
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else //不存在,从数据库中load
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_createDiagram(DiagramInfo info)
|
|
|
|
|
|
{
|
|
|
|
|
|
PowerEntity* pEntity;
|
|
|
|
|
|
pEntity = TopologyManager::instance().findDiagram(info.id.toString());
|
|
|
|
|
|
if(!pEntity) //不存在创建
|
|
|
|
|
|
{
|
|
|
|
|
|
pEntity = TopologyManager::instance().createDiagram(info.id.toString(),info.sName);
|
|
|
|
|
|
PowerEntity* pParent = TopologyManager::instance().findDiagram(info.parentId.toString());
|
|
|
|
|
|
if(pParent) //构建父子关系
|
2025-04-30 16:29:17 +08:00
|
|
|
|
{
|
2025-05-09 19:36:32 +08:00
|
|
|
|
pParent->addChild(pEntity);
|
2025-04-30 16:29:17 +08:00
|
|
|
|
}
|
2025-05-09 19:36:32 +08:00
|
|
|
|
|
|
|
|
|
|
onSignal_addDrawingPanel(pEntity);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_changeDiagram(DiagramInfo info)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_deleteDiagram(DiagramInfo info)
|
|
|
|
|
|
{
|
|
|
|
|
|
PowerEntity* pEntity = TopologyManager::instance().findDiagram(info.id.toString());
|
|
|
|
|
|
if(pEntity)
|
|
|
|
|
|
{
|
|
|
|
|
|
removePanel(pEntity);
|
|
|
|
|
|
TopologyManager::instance().deleteEntity(info.id.toString());
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_selectDiagram(DiagramInfo info)
|
|
|
|
|
|
{
|
2025-05-16 19:20:46 +08:00
|
|
|
|
PowerEntity* pEntity = TopologyManager::instance().findDiagram(QString::number(info.id.toInt()));
|
2025-05-09 19:36:32 +08:00
|
|
|
|
if(pEntity)
|
|
|
|
|
|
{
|
|
|
|
|
|
onSignal_loadPage(pEntity);
|
|
|
|
|
|
}
|
|
|
|
|
|
else //不存在,从数据库中load
|
|
|
|
|
|
{
|
|
|
|
|
|
|
2025-04-30 16:29:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::removePanel(PowerEntity* pEntity)
|
|
|
|
|
|
{
|
|
|
|
|
|
QMap<QString,QPair<DrawingPanel*,QMdiSubWindow*>>::Iterator iter;
|
|
|
|
|
|
for(iter = m_mapDrawPanel.begin(); iter != m_mapDrawPanel.end();++iter)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(pEntity->name() == iter.value().first->pageName())
|
|
|
|
|
|
{
|
|
|
|
|
|
DrawingPanel* pPanel = m_mapDrawPanel.take(iter.key()).first;
|
|
|
|
|
|
|
|
|
|
|
|
QWidget* pWindow = static_cast<QWidget*>(pPanel);
|
|
|
|
|
|
setActiveSubWindow(iter->second);
|
|
|
|
|
|
closeActiveSubWindow();
|
|
|
|
|
|
//removeSubWindow(pPanel);
|
|
|
|
|
|
//todo:记录删除组态图,从数据库中删除
|
|
|
|
|
|
delete pPanel;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-05-30 16:28:51 +08:00
|
|
|
|
|
2025-06-13 19:00:05 +08:00
|
|
|
|
void DiagramCavas::onCreateTestBaseModelDiagram()
|
|
|
|
|
|
{
|
|
|
|
|
|
PowerEntity* pEntity;
|
|
|
|
|
|
QUuid id = QUuid::createUuid();
|
|
|
|
|
|
pEntity = TopologyManager::instance().findDiagram(id.toString());
|
|
|
|
|
|
if(!pEntity) //不存在创建
|
|
|
|
|
|
{
|
|
|
|
|
|
pEntity = TopologyManager::instance().createDiagram(id.toString(),"测试1");
|
|
|
|
|
|
|
|
|
|
|
|
onSignal_addDrawingPanel(pEntity,DM_baseModel);
|
2025-06-20 18:09:41 +08:00
|
|
|
|
DrawingPanel* pPanel = getPanel(pEntity->name());
|
2025-07-04 18:47:49 +08:00
|
|
|
|
pPanel->getModelController()->addTestData();
|
2025-06-13 19:00:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-05-30 16:28:51 +08:00
|
|
|
|
/*******************************************************/
|
|
|
|
|
|
|
2025-10-24 21:11:07 +08:00
|
|
|
|
void DiagramCavas::onSignal_createEditPanel(QString sName,QUuid uid)
|
2025-05-30 16:28:51 +08:00
|
|
|
|
{
|
2025-10-24 21:11:07 +08:00
|
|
|
|
onSignal_addEditWizard(sName,uid);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-30 17:20:10 +08:00
|
|
|
|
void DiagramCavas::onSignal_prepareOpenSetting(QString sProject)
|
2025-10-24 21:11:07 +08:00
|
|
|
|
{
|
|
|
|
|
|
EditPanel* pPanel = getEditPanel(sProject);
|
2025-10-30 17:20:10 +08:00
|
|
|
|
if(pPanel){
|
|
|
|
|
|
pPanel->showWizard();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_prepareSaveEdit(QString sProject)
|
|
|
|
|
|
{
|
|
|
|
|
|
QString sName = sProject;
|
|
|
|
|
|
if(sProject == "currentPage"){
|
|
|
|
|
|
sName = _curPage;
|
|
|
|
|
|
}
|
|
|
|
|
|
EditPanel* pPanel = getEditPanel(sName);
|
2025-10-24 21:11:07 +08:00
|
|
|
|
if(pPanel){
|
|
|
|
|
|
pPanel->prepareSaveEditor();
|
|
|
|
|
|
}
|
2025-05-30 16:28:51 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-30 17:20:10 +08:00
|
|
|
|
void DiagramCavas::onSignal_prepareDeleteEditor(const QString& sProject,QUuid uid)
|
|
|
|
|
|
{
|
|
|
|
|
|
EditPanel* pPanel = getEditPanel(sProject);
|
|
|
|
|
|
if(pPanel){
|
|
|
|
|
|
pPanel->close();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-05-30 16:28:51 +08:00
|
|
|
|
EditPanel* DiagramCavas::onSignal_addEditPanel(QString sName)
|
|
|
|
|
|
{
|
|
|
|
|
|
EditPanel* pPanel = new EditPanel(this);
|
2025-09-26 18:50:21 +08:00
|
|
|
|
pPanel->setProjectName(sName);
|
2025-10-30 17:20:10 +08:00
|
|
|
|
pPanel->setTag(sName);
|
2025-10-24 21:11:07 +08:00
|
|
|
|
_curPage = sName;
|
2025-05-30 16:28:51 +08:00
|
|
|
|
pPanel->setWindowTitle(_curPage);
|
2025-10-24 21:11:07 +08:00
|
|
|
|
pPanel->setCavas(this);
|
2025-10-30 17:20:10 +08:00
|
|
|
|
connect(pPanel,&EditPanel::panelDelete,this,&DiagramCavas::onSignal_panelDelete);
|
2025-05-30 16:28:51 +08:00
|
|
|
|
|
|
|
|
|
|
QMdiSubWindow* pSub = this->addSubWindow(pPanel);
|
2025-10-24 21:11:07 +08:00
|
|
|
|
m_mapEditPanel.insert(_curPage,qMakePair(pPanel,pSub));
|
2025-05-30 16:28:51 +08:00
|
|
|
|
pPanel->show();
|
|
|
|
|
|
return pPanel;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-30 17:20:10 +08:00
|
|
|
|
void DiagramCavas::onSignal_addEditWizard(QString name,QUuid uid,bool val)
|
2025-05-30 16:28:51 +08:00
|
|
|
|
{
|
2025-10-24 21:11:07 +08:00
|
|
|
|
EditPanel* pPanel = onSignal_addEditPanel(name);
|
|
|
|
|
|
pPanel->setUuid(uid);
|
2025-10-30 17:20:10 +08:00
|
|
|
|
if(val)
|
|
|
|
|
|
pPanel->showWizard();
|
2025-05-30 16:28:51 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-21 18:46:51 +08:00
|
|
|
|
void DiagramCavas::onSignal_wizardFinished(QString sName,QMap<QUuid,GraphicsBaseModelItem*> mapItem,QList<EditBaseItem*> mapBay)
|
2025-05-30 16:28:51 +08:00
|
|
|
|
{
|
2025-09-26 18:50:21 +08:00
|
|
|
|
PowerEntity* pEntity;
|
|
|
|
|
|
QUuid id = QUuid::createUuid();
|
|
|
|
|
|
pEntity = TopologyManager::instance().findDiagram(id.toString());
|
|
|
|
|
|
if(!pEntity) //不存在创建
|
|
|
|
|
|
{
|
|
|
|
|
|
pEntity = TopologyManager::instance().createDiagram(id.toString(),sName);
|
|
|
|
|
|
|
|
|
|
|
|
onSignal_addDrawingPanel(pEntity,DM_baseModel);
|
|
|
|
|
|
DrawingPanel* pPanel = getPanel(pEntity->name());
|
|
|
|
|
|
TopologyManager::instance().cloneEditorToBase(); //拷贝拓扑结构
|
2025-10-21 18:46:51 +08:00
|
|
|
|
auto pModel = pPanel->getModelController();
|
|
|
|
|
|
if(pModel){
|
|
|
|
|
|
pModel->onWizardFinished(mapItem,mapBay);
|
2025-10-11 18:51:33 +08:00
|
|
|
|
}
|
2025-09-26 18:50:21 +08:00
|
|
|
|
}
|
2025-05-30 16:28:51 +08:00
|
|
|
|
}
|
2025-10-30 17:20:10 +08:00
|
|
|
|
|
|
|
|
|
|
void DiagramCavas::onSignal_unloadProject(const QString& sName)
|
|
|
|
|
|
{
|
|
|
|
|
|
BasePropertyManager::instance().clearEditorData();
|
|
|
|
|
|
|
|
|
|
|
|
for(auto &pair:m_mapEditPanel){
|
|
|
|
|
|
EditPanel* pPanel = pair.first;
|
|
|
|
|
|
this->removeSubWindow(pPanel);
|
|
|
|
|
|
delete pPanel;
|
|
|
|
|
|
}
|
|
|
|
|
|
m_mapEditPanel.clear();
|
|
|
|
|
|
}
|
2025-07-11 18:13:54 +08:00
|
|
|
|
/*******************bay************************/
|
|
|
|
|
|
void DiagramCavas::onSignl_openCurrentBay()
|
|
|
|
|
|
{
|
|
|
|
|
|
QWidget* pWindow= currentSubWindow()->widget();
|
2025-10-21 18:46:51 +08:00
|
|
|
|
if(pWindow == nullptr){
|
|
|
|
|
|
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"当前无打开的工程模"));
|
|
|
|
|
|
}
|
2025-07-11 18:13:54 +08:00
|
|
|
|
DrawingPanel* pPanel = dynamic_cast<DrawingPanel*>(pWindow);
|
|
|
|
|
|
if(pPanel)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(pPanel->getMode() == DM_run)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(pPanel->getMode() == DM_edit)
|
|
|
|
|
|
{
|
|
|
|
|
|
pPanel->getModelController()->onSignal_openBayManager();
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(pPanel->getMode() == DM_baseModel)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-10-24 21:11:07 +08:00
|
|
|
|
|