add editor save/load
This commit is contained in:
parent
1edfb1cb3d
commit
3a369e0b97
|
|
@ -427,14 +427,14 @@ struct DiagramEditorWizardBusInfo //组态编辑母线信息
|
||||||
int nNum1 = 0; //1母
|
int nNum1 = 0; //1母
|
||||||
int nNum2 = 0; //2母
|
int nNum2 = 0; //2母
|
||||||
int connectType = 0; //接线方式,1为分段连接
|
int connectType = 0; //接线方式,1为分段连接
|
||||||
bool bChanged = false; //是否改变
|
int nState = 0; //母线状态位 0已保存1新建2修改
|
||||||
|
|
||||||
friend QDataStream &operator<<(QDataStream &out, const DiagramEditorWizardBusInfo &data) {
|
friend QDataStream &operator<<(QDataStream &out, const DiagramEditorWizardBusInfo &data) {
|
||||||
out << data.nIndex << data.dVoltage << data.nLineType << data.nNum1 << data.nNum2 << data.connectType << data.bChanged;
|
out << data.nIndex << data.dVoltage << data.nLineType << data.nNum1 << data.nNum2 << data.connectType << data.nState;
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
friend QDataStream &operator>>(QDataStream &in, DiagramEditorWizardBusInfo &data) {
|
friend QDataStream &operator>>(QDataStream &in, DiagramEditorWizardBusInfo &data) {
|
||||||
in >> data.nIndex >> data.dVoltage >> data.nLineType >> data.nNum1 >> data.nNum2 >> data.connectType >> data.bChanged;
|
in >> data.nIndex >> data.dVoltage >> data.nLineType >> data.nNum1 >> data.nNum2 >> data.connectType >> data.nState;
|
||||||
return in;
|
return in;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -921,7 +921,17 @@ struct editorProjectInfo //editor工程数据
|
||||||
QUuid uuid;
|
QUuid uuid;
|
||||||
QString name;
|
QString name;
|
||||||
QString tag;
|
QString tag;
|
||||||
QByteArray context;
|
};
|
||||||
|
|
||||||
|
struct editorBaseSettingInfo //editor基础设置
|
||||||
|
{
|
||||||
|
int id = 0;
|
||||||
|
QUuid uuid;
|
||||||
|
QString projectName; //所属工程名
|
||||||
|
QString autor; //作者
|
||||||
|
QByteArray context; //内容
|
||||||
|
QUuid generateUid; //生成的图uuid
|
||||||
|
QString ts; //时间戳
|
||||||
};
|
};
|
||||||
|
|
||||||
//==================================================
|
//==================================================
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ public slots:
|
||||||
void onSignal_deletePage();
|
void onSignal_deletePage();
|
||||||
|
|
||||||
void onSignal_activatePage(const QString& name);
|
void onSignal_activatePage(const QString& name);
|
||||||
void onSignal_panelDelete(const QString& name);
|
void onSignal_panelDelete(const QString& name,int nType); //type:0editorPanel,1drawPanel
|
||||||
|
|
||||||
void onSignal_createEntity(EntityInfo);
|
void onSignal_createEntity(EntityInfo);
|
||||||
void onSignal_changeEntity(EntityInfo);
|
void onSignal_changeEntity(EntityInfo);
|
||||||
|
|
@ -55,10 +55,13 @@ public slots:
|
||||||
void onCreateTestBaseModelDiagram(); //生成测试基模图
|
void onCreateTestBaseModelDiagram(); //生成测试基模图
|
||||||
/******************************生成组态***********************************/
|
/******************************生成组态***********************************/
|
||||||
void onSignal_createEditPanel(QString,QUuid);
|
void onSignal_createEditPanel(QString,QUuid);
|
||||||
|
void onSignal_prepareOpenSetting(QString);
|
||||||
void onSignal_prepareSaveEdit(QString);
|
void onSignal_prepareSaveEdit(QString);
|
||||||
|
void onSignal_prepareDeleteEditor(const QString&,QUuid);
|
||||||
EditPanel* onSignal_addEditPanel(QString);
|
EditPanel* onSignal_addEditPanel(QString);
|
||||||
void onSignal_addEditWizard(QString,QUuid);
|
void onSignal_addEditWizard(QString,QUuid,bool val = true); //bool:是否显示wizard
|
||||||
void onSignal_wizardFinished(QString,QMap<QUuid,GraphicsBaseModelItem*>,QList<EditBaseItem*>);
|
void onSignal_wizardFinished(QString,QMap<QUuid,GraphicsBaseModelItem*>,QList<EditBaseItem*>);
|
||||||
|
void onSignal_unloadProject(const QString&);
|
||||||
/*********************************间隔**************************************/
|
/*********************************间隔**************************************/
|
||||||
void onSignl_openCurrentBay();
|
void onSignl_openCurrentBay();
|
||||||
private:
|
private:
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ public:
|
||||||
void setMaxDownH(double d){dMaxDownH = d;}
|
void setMaxDownH(double d){dMaxDownH = d;}
|
||||||
double getMaxDownH() {return dMaxDownH;}
|
double getMaxDownH() {return dMaxDownH;}
|
||||||
QMap<int,QList<DiagramEditorBlockInfo>> getMapBlocksData(); //返回mapBlock中的数据
|
QMap<int,QList<DiagramEditorBlockInfo>> getMapBlocksData(); //返回mapBlock中的数据
|
||||||
|
void clearData();
|
||||||
private:
|
private:
|
||||||
|
|
||||||
QMap<int,QList<DiagramEditorBaseBlock*>> _mapBlocks; //容器中包含的对象列表,<pos,listBlocks> pos当前容器中的位置:0上,1中上,2中下,3下
|
QMap<int,QList<DiagramEditorBaseBlock*>> _mapBlocks; //容器中包含的对象列表,<pos,listBlocks> pos当前容器中的位置:0上,1中上,2中下,3下
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@ public:
|
||||||
int getContainerIndex(int nLevel,DiagramEditorStructContainer*); //返回目标层级container的序号
|
int getContainerIndex(int nLevel,DiagramEditorStructContainer*); //返回目标层级container的序号
|
||||||
QUuid addConnection(const QString& str1,const QString& str2,int nType1,int nType2,int nPara = 0); //插入连接
|
QUuid addConnection(const QString& str1,const QString& str2,int nType1,int nType2,int nPara = 0); //插入连接
|
||||||
QMap<QUuid,DiagramEditorBriefConnect>& getConnection() {return _mapConnect;}
|
QMap<QUuid,DiagramEditorBriefConnect>& getConnection() {return _mapConnect;}
|
||||||
|
QList<QUuid> findConnectionByBlock(QString,int); //通过block找到连接
|
||||||
void removeConnection(QUuid);
|
void removeConnection(QUuid);
|
||||||
DiagramEditorProjectInfo getCurPara(); //获取当前的向导设置参数(同步数据到projectManager)
|
DiagramEditorProjectInfo getCurPara(); //获取当前的向导设置参数(同步数据到projectManager)
|
||||||
void setPara(DiagramEditorProjectInfo); //使用load数据初始化
|
void setPara(DiagramEditorProjectInfo); //使用load数据初始化
|
||||||
|
|
@ -69,6 +70,11 @@ private:
|
||||||
void generateBayStruct(); //根据bus设置生成bay结构
|
void generateBayStruct(); //根据bus设置生成bay结构
|
||||||
void addTransformer(DiagramEditorWizardTransformerInfo); //界面上添加变压器
|
void addTransformer(DiagramEditorWizardTransformerInfo); //界面上添加变压器
|
||||||
template <typename T> void reindexQMap(QMap<int, T> &map); //重新排序函数
|
template <typename T> void reindexQMap(QMap<int, T> &map); //重新排序函数
|
||||||
|
void clearTargetLevelContent(int); //清除目标层的数据
|
||||||
|
|
||||||
|
void resetBusByData(); //根据数据设置bus界面
|
||||||
|
void resetBayByData();
|
||||||
|
void resetTransByData();
|
||||||
private:
|
private:
|
||||||
Ui::diagramEditorWizard *ui;
|
Ui::diagramEditorWizard *ui;
|
||||||
BiDirectionalMap<int,QString> _divideType; //划分段数名对照
|
BiDirectionalMap<int,QString> _divideType; //划分段数名对照
|
||||||
|
|
@ -78,7 +84,6 @@ private:
|
||||||
QMap<int,DiagramEditorWizardBusInfo> _mapBus; //母线信息
|
QMap<int,DiagramEditorWizardBusInfo> _mapBus; //母线信息
|
||||||
QMap<int,QList<DiagramEditorStructContainer*>> _mapSturctContainer; //划分后的区块
|
QMap<int,QList<DiagramEditorStructContainer*>> _mapSturctContainer; //划分后的区块
|
||||||
QMap<QUuid,DiagramEditorBriefConnect> _mapConnect; //连接列表
|
QMap<QUuid,DiagramEditorBriefConnect> _mapConnect; //连接列表
|
||||||
bool _busPageChanged; //母线页改变
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,8 @@ public:
|
||||||
void initByWizardInfo();
|
void initByWizardInfo();
|
||||||
void initBlockConnection(); //初始化block之间的连接信息
|
void initBlockConnection(); //初始化block之间的连接信息
|
||||||
void showPreview(); //展示预览
|
void showPreview(); //展示预览
|
||||||
void showConfirmDlg(); //展示确认对话框
|
void showConfirmDlg(); //展示确认对话框 bool:保存后是否生成
|
||||||
|
void generate();
|
||||||
void showWizard();
|
void showWizard();
|
||||||
|
|
||||||
DiagramEditorModel* getModel() {return _pModel;}
|
DiagramEditorModel* getModel() {return _pModel;}
|
||||||
|
|
@ -46,10 +47,12 @@ public:
|
||||||
void setUuid(QUuid uid) {_uid = uid;}
|
void setUuid(QUuid uid) {_uid = uid;}
|
||||||
QUuid getUuid() {return _uid;}
|
QUuid getUuid() {return _uid;}
|
||||||
void setCavas(QPointer<DiagramCavas> p){_pCavas = p;}
|
void setCavas(QPointer<DiagramCavas> p){_pCavas = p;}
|
||||||
|
void setTag(const QString& s){_tagName = s;}
|
||||||
|
QString getTag(){return _tagName;}
|
||||||
QPointer<DiagramCavas> getCavas(){return _pCavas;}
|
QPointer<DiagramCavas> getCavas(){return _pCavas;}
|
||||||
|
|
||||||
void prepareSaveEditor(); //准备保存
|
void prepareSaveEditor(); //准备保存
|
||||||
void loadEditor(const QString&);
|
void loadBaseSetting(QUuid);
|
||||||
public slots:
|
public slots:
|
||||||
void onWidthChanged(int width);
|
void onWidthChanged(int width);
|
||||||
void onContainerSizeChanged(EditContainerItem*); //容器大小改变时调整内部大小
|
void onContainerSizeChanged(EditContainerItem*); //容器大小改变时调整内部大小
|
||||||
|
|
@ -59,6 +62,10 @@ private:
|
||||||
void calculateContainerWidth(EditContainerItem*); //根据间隔数量计算容器宽度 todo:区分上下间隔
|
void calculateContainerWidth(EditContainerItem*); //根据间隔数量计算容器宽度 todo:区分上下间隔
|
||||||
int getContainerBusType(QMap<int,QList<DiagramEditorBaseBlock*>>); //返回容器中母线类型(单双)
|
int getContainerBusType(QMap<int,QList<DiagramEditorBaseBlock*>>); //返回容器中母线类型(单双)
|
||||||
EditBaseItem* getItemByName(const QString&); //根据名称获取指定item
|
EditBaseItem* getItemByName(const QString&); //根据名称获取指定item
|
||||||
|
signals:
|
||||||
|
void panelDelete(const QString&,int);
|
||||||
|
protected:
|
||||||
|
void closeEvent(QCloseEvent *closeEvent);
|
||||||
private:
|
private:
|
||||||
EditView* m_pEditView;
|
EditView* m_pEditView;
|
||||||
EditScene* m_pEditScene;
|
EditScene* m_pEditScene;
|
||||||
|
|
@ -75,8 +82,11 @@ private:
|
||||||
DiagramEditorModel* _pModel;
|
DiagramEditorModel* _pModel;
|
||||||
DiagramEditorPreviewDlg* _pPreview;
|
DiagramEditorPreviewDlg* _pPreview;
|
||||||
ConfirmEditorDlg* _confirmEditor;
|
ConfirmEditorDlg* _confirmEditor;
|
||||||
|
QString _tagName; //显示的名称(load后,新建不用)
|
||||||
QString _projectName;
|
QString _projectName;
|
||||||
QUuid _uid;
|
QUuid _uid;
|
||||||
|
QString _author;
|
||||||
|
QString _timeStamp;
|
||||||
DiagramEditorWizard* _pEditorWizard;
|
DiagramEditorWizard* _pEditorWizard;
|
||||||
QPointer<DiagramCavas> _pCavas; //顶层界面容器
|
QPointer<DiagramCavas> _pCavas; //顶层界面容器
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ public:
|
||||||
DesignerScene* getScene() {return m_pGraphicsScene;}
|
DesignerScene* getScene() {return m_pGraphicsScene;}
|
||||||
DesignerView* getView() {return m_pGraphicsView;}
|
DesignerView* getView() {return m_pGraphicsView;}
|
||||||
signals:
|
signals:
|
||||||
void panelDelete(const QString&);
|
void panelDelete(const QString&,int);
|
||||||
protected:
|
protected:
|
||||||
void closeEvent(QCloseEvent *closeEvent);
|
void closeEvent(QCloseEvent *closeEvent);
|
||||||
public slots:
|
public slots:
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ public:
|
||||||
EditPanel* getPanel(){return _pPanel;}
|
EditPanel* getPanel(){return _pPanel;}
|
||||||
void setWizard(QPointer<DiagramEditorWizard> p){_pWizard = p;}
|
void setWizard(QPointer<DiagramEditorWizard> p){_pWizard = p;}
|
||||||
QMap<QUuid,GraphicsBaseModelItem*> getPreviewItem(){return _previewItem;};
|
QMap<QUuid,GraphicsBaseModelItem*> getPreviewItem(){return _previewItem;};
|
||||||
|
void clearItems(){_previewItem.clear();}
|
||||||
|
|
||||||
void generatePreview(); //生成预览
|
void generatePreview(); //生成预览
|
||||||
void calculateBlockPos(); //重新计算block位置
|
void calculateBlockPos(); //重新计算block位置
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ void DiagramCavas::initial()
|
||||||
{
|
{
|
||||||
//todo:读取数据并初始化
|
//todo:读取数据并初始化
|
||||||
QList<pageInfo> lst = DataBase::GetInstance()->getAllPage();
|
QList<pageInfo> lst = DataBase::GetInstance()->getAllPage();
|
||||||
for(auto info:lst)
|
for(auto &info:lst)
|
||||||
{
|
{
|
||||||
TopologyManager::instance().createDiagram(QString::number(info.id),info.name);
|
TopologyManager::instance().createDiagram(QString::number(info.id),info.name);
|
||||||
}
|
}
|
||||||
|
|
@ -179,8 +179,8 @@ void DiagramCavas::onSignal_loadEdit(const QString& sProject,QUuid uid)
|
||||||
if(!m_mapEditPanel.contains(sProject))
|
if(!m_mapEditPanel.contains(sProject))
|
||||||
{
|
{
|
||||||
//todo:加载数据
|
//todo:加载数据
|
||||||
onSignal_addEditWizard(sProject,uid);
|
onSignal_addEditWizard(sProject,uid,false);
|
||||||
m_mapEditPanel[sProject].first->loadEditor(sProject);
|
m_mapEditPanel[sProject].first->loadBaseSetting(uid);
|
||||||
}
|
}
|
||||||
else //已存在
|
else //已存在
|
||||||
{
|
{
|
||||||
|
|
@ -219,15 +219,23 @@ void DiagramCavas::onSignal_activatePage(const QString& name)
|
||||||
_curPage = name;
|
_curPage = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramCavas::onSignal_panelDelete(const QString& name)
|
void DiagramCavas::onSignal_panelDelete(const QString& name,int nType)
|
||||||
{
|
{
|
||||||
DrawingPanel* pPanel = m_mapDrawPanel.take(name).first;
|
if(nType == 0){
|
||||||
if(m_mapDrawPanel.isEmpty())
|
EditPanel* pPanel = m_mapEditPanel.take(name).first;
|
||||||
{
|
BasePropertyManager::instance().clearEditorData(); //关闭前清空当前单例 todo:测试其他单例
|
||||||
//FixedPortsModel::_dataInitialised = false;
|
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;
|
||||||
}
|
}
|
||||||
this->removeSubWindow(pPanel);
|
|
||||||
delete pPanel;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramCavas::onSignal_createEntity(EntityInfo info)
|
void DiagramCavas::onSignal_createEntity(EntityInfo info)
|
||||||
|
|
@ -391,21 +399,43 @@ void DiagramCavas::onSignal_createEditPanel(QString sName,QUuid uid)
|
||||||
onSignal_addEditWizard(sName,uid);
|
onSignal_addEditWizard(sName,uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramCavas::onSignal_prepareSaveEdit(QString sProject)
|
void DiagramCavas::onSignal_prepareOpenSetting(QString sProject)
|
||||||
{
|
{
|
||||||
EditPanel* pPanel = getEditPanel(sProject);
|
EditPanel* pPanel = getEditPanel(sProject);
|
||||||
|
if(pPanel){
|
||||||
|
pPanel->showWizard();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramCavas::onSignal_prepareSaveEdit(QString sProject)
|
||||||
|
{
|
||||||
|
QString sName = sProject;
|
||||||
|
if(sProject == "currentPage"){
|
||||||
|
sName = _curPage;
|
||||||
|
}
|
||||||
|
EditPanel* pPanel = getEditPanel(sName);
|
||||||
if(pPanel){
|
if(pPanel){
|
||||||
pPanel->prepareSaveEditor();
|
pPanel->prepareSaveEditor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiagramCavas::onSignal_prepareDeleteEditor(const QString& sProject,QUuid uid)
|
||||||
|
{
|
||||||
|
EditPanel* pPanel = getEditPanel(sProject);
|
||||||
|
if(pPanel){
|
||||||
|
pPanel->close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
EditPanel* DiagramCavas::onSignal_addEditPanel(QString sName)
|
EditPanel* DiagramCavas::onSignal_addEditPanel(QString sName)
|
||||||
{
|
{
|
||||||
EditPanel* pPanel = new EditPanel(this);
|
EditPanel* pPanel = new EditPanel(this);
|
||||||
pPanel->setProjectName(sName);
|
pPanel->setProjectName(sName);
|
||||||
|
pPanel->setTag(sName);
|
||||||
_curPage = sName;
|
_curPage = sName;
|
||||||
pPanel->setWindowTitle(_curPage);
|
pPanel->setWindowTitle(_curPage);
|
||||||
pPanel->setCavas(this);
|
pPanel->setCavas(this);
|
||||||
|
connect(pPanel,&EditPanel::panelDelete,this,&DiagramCavas::onSignal_panelDelete);
|
||||||
|
|
||||||
QMdiSubWindow* pSub = this->addSubWindow(pPanel);
|
QMdiSubWindow* pSub = this->addSubWindow(pPanel);
|
||||||
m_mapEditPanel.insert(_curPage,qMakePair(pPanel,pSub));
|
m_mapEditPanel.insert(_curPage,qMakePair(pPanel,pSub));
|
||||||
|
|
@ -413,11 +443,12 @@ EditPanel* DiagramCavas::onSignal_addEditPanel(QString sName)
|
||||||
return pPanel;
|
return pPanel;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramCavas::onSignal_addEditWizard(QString name,QUuid uid)
|
void DiagramCavas::onSignal_addEditWizard(QString name,QUuid uid,bool val)
|
||||||
{
|
{
|
||||||
EditPanel* pPanel = onSignal_addEditPanel(name);
|
EditPanel* pPanel = onSignal_addEditPanel(name);
|
||||||
pPanel->setUuid(uid);
|
pPanel->setUuid(uid);
|
||||||
pPanel->showWizard();
|
if(val)
|
||||||
|
pPanel->showWizard();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramCavas::onSignal_wizardFinished(QString sName,QMap<QUuid,GraphicsBaseModelItem*> mapItem,QList<EditBaseItem*> mapBay)
|
void DiagramCavas::onSignal_wizardFinished(QString sName,QMap<QUuid,GraphicsBaseModelItem*> mapItem,QList<EditBaseItem*> mapBay)
|
||||||
|
|
@ -438,6 +469,18 @@ void DiagramCavas::onSignal_wizardFinished(QString sName,QMap<QUuid,GraphicsBase
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
/*******************bay************************/
|
/*******************bay************************/
|
||||||
void DiagramCavas::onSignl_openCurrentBay()
|
void DiagramCavas::onSignl_openCurrentBay()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ void ConfirmEditorDlg::onOkClicked()
|
||||||
QDateTime currentDateTime = QDateTime::currentDateTime();
|
QDateTime currentDateTime = QDateTime::currentDateTime();
|
||||||
|
|
||||||
// 将日期和时间格式化为字符串
|
// 将日期和时间格式化为字符串
|
||||||
QString dateTimeString = currentDateTime.toString("yyyy-MM-dd hh:mm:ss");
|
QString dateTimeString = currentDateTime.toString("yyyy-MM-dd_hh:mm:ss");
|
||||||
|
|
||||||
emit onConfirmEditor(ui->le_name->text(),dateTimeString);
|
emit onConfirmEditor(ui->le_name->text(),dateTimeString);
|
||||||
hide();
|
hide();
|
||||||
|
|
|
||||||
|
|
@ -143,7 +143,7 @@ void DiagramEditorBayDetailAddDlg::showDlg()
|
||||||
for(int i = 0;i < nCount;++i){
|
for(int i = 0;i < nCount;++i){
|
||||||
QStandardItem *itemRouteName = pRoute->item(i, 0);
|
QStandardItem *itemRouteName = pRoute->item(i, 0);
|
||||||
int nMain = itemRouteName->data().toInt();
|
int nMain = itemRouteName->data().toInt();
|
||||||
if(nMain == 1){ //主线已存在
|
if(nMain == 1){ //主线已存在,新路线(本路线)设置为支线
|
||||||
ui->cb_lineType->setCurrentIndex(1);
|
ui->cb_lineType->setCurrentIndex(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -153,6 +153,9 @@ void DiagramEditorBayDetailAddDlg::showDlg()
|
||||||
void DiagramEditorBayDetailAddDlg::showDlg(DiagramEditorRouteInfo info)
|
void DiagramEditorBayDetailAddDlg::showDlg(DiagramEditorRouteInfo info)
|
||||||
{
|
{
|
||||||
if(_pParent){
|
if(_pParent){
|
||||||
|
auto pCompo = _pParent->getComponentModel();
|
||||||
|
auto pRoute = _pParent->getRouteModel();
|
||||||
|
ui->tableView_items->setModel(pCompo);
|
||||||
_selectedModel->clear();
|
_selectedModel->clear();
|
||||||
_selectedModel->setHorizontalHeaderLabels({"分类", "名称", "类型", "关联对象", "引用线路"});
|
_selectedModel->setHorizontalHeaderLabels({"分类", "名称", "类型", "关联对象", "引用线路"});
|
||||||
ui->le_routeName->setText(info.sRouteName);
|
ui->le_routeName->setText(info.sRouteName);
|
||||||
|
|
@ -233,20 +236,18 @@ void DiagramEditorBayDetailAddDlg::showDlg(DiagramEditorRouteInfo info)
|
||||||
_curMode = 1;
|
_curMode = 1;
|
||||||
updateBindLst();
|
updateBindLst();
|
||||||
|
|
||||||
auto pRoute = _pParent->getRouteModel();
|
|
||||||
int nCount = pRoute->rowCount();
|
int nCount = pRoute->rowCount();
|
||||||
for(int i = 0;i < nCount;++i){
|
for(int i = 0;i < nCount;++i){
|
||||||
QStandardItem *itemRouteName = pRoute->item(i, 0);
|
QStandardItem *itemRouteName = pRoute->item(i, 0);
|
||||||
if(itemRouteName->text() == info.sRouteName){
|
if(itemRouteName->text() == info.sRouteName){
|
||||||
int nMain = itemRouteName->data().toInt();
|
int nMain = itemRouteName->data().toInt();
|
||||||
if(nMain == 1){ //读取并设置是否主线
|
if(nMain == 1){ //读取并设置是否主线
|
||||||
ui->cb_lineType->setCurrentIndex(1);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
ui->cb_lineType->setCurrentIndex(0);
|
ui->cb_lineType->setCurrentIndex(0);
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
ui->cb_lineType->setCurrentIndex(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -175,6 +175,7 @@ void DiagramEditorBayDetailSettingDlg::refreshModel()
|
||||||
QStandardItem *itemComponents = new QStandardItem();
|
QStandardItem *itemComponents = new QStandardItem();
|
||||||
|
|
||||||
itemRoute->setText(sRoute);
|
itemRoute->setText(sRoute);
|
||||||
|
itemRoute->setData(route.bMainRoute);
|
||||||
itemComponents->setText(lstComp.join(","));
|
itemComponents->setText(lstComp.join(","));
|
||||||
QList<QStandardItem*> lstItems;
|
QList<QStandardItem*> lstItems;
|
||||||
lstItems<<itemRoute<<itemComponents;
|
lstItems<<itemRoute<<itemComponents;
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,8 @@ void DiagramEditorBaySettingDlg::showDlg(int nLevel,DiagramEditorBayBlock* p)
|
||||||
show();
|
show();
|
||||||
addNewBay();
|
addNewBay();
|
||||||
if(_pWizard){
|
if(_pWizard){
|
||||||
|
int nType = int(p->getBayType());
|
||||||
|
ui->cb_type->setCurrentIndex(nType);
|
||||||
ui->le_name->setText(p->getName());
|
ui->le_name->setText(p->getName());
|
||||||
ui->cb_level->setCurrentIndex(nLevel);
|
ui->cb_level->setCurrentIndex(nLevel);
|
||||||
if(p){
|
if(p){
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ DiagramEditorStructContainer::DiagramEditorStructContainer(QObject *parent)
|
||||||
}
|
}
|
||||||
DiagramEditorStructContainer::~DiagramEditorStructContainer()
|
DiagramEditorStructContainer::~DiagramEditorStructContainer()
|
||||||
{
|
{
|
||||||
|
clearData();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DiagramEditorStructContainer::insertBlock(int nPos,DiagramEditorBaseBlock* p)
|
bool DiagramEditorStructContainer::insertBlock(int nPos,DiagramEditorBaseBlock* p)
|
||||||
|
|
@ -38,3 +39,11 @@ QMap<int,QList<DiagramEditorBlockInfo>> DiagramEditorStructContainer::getMapBloc
|
||||||
|
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiagramEditorStructContainer::clearData()
|
||||||
|
{
|
||||||
|
for(auto &lstCon:_mapBlocks){
|
||||||
|
qDeleteAll(lstCon);
|
||||||
|
}
|
||||||
|
_mapBlocks.clear();
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QUuid>
|
#include <QUuid>
|
||||||
#include <QtNumeric>
|
#include <QtNumeric>
|
||||||
|
#include <QComboBox>
|
||||||
#include "diagramEditor/diagramEditorWizard.h"
|
#include "diagramEditor/diagramEditorWizard.h"
|
||||||
#include "diagramEditor/wizardBusTableDelegate.h"
|
#include "diagramEditor/wizardBusTableDelegate.h"
|
||||||
#include "ui_diagramEditorWizard.h"
|
#include "ui_diagramEditorWizard.h"
|
||||||
|
|
@ -18,7 +19,6 @@ DiagramEditorWizard::DiagramEditorWizard(QWidget *parent)
|
||||||
,_transSettingDlg(nullptr)
|
,_transSettingDlg(nullptr)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
_busPageChanged = false;
|
|
||||||
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
||||||
setStyleSheet("background-color: white;");
|
setStyleSheet("background-color: white;");
|
||||||
initial();
|
initial();
|
||||||
|
|
@ -83,6 +83,7 @@ void DiagramEditorWizard::initial()
|
||||||
void DiagramEditorWizard::reOrderBus()
|
void DiagramEditorWizard::reOrderBus()
|
||||||
{
|
{
|
||||||
reindexQMap(_mapBus);
|
reindexQMap(_mapBus);
|
||||||
|
//移动后结构只变序号(待测试)
|
||||||
|
|
||||||
for(int row = 0 ;row < ui->tableWidget_bus->rowCount();++row)
|
for(int row = 0 ;row < ui->tableWidget_bus->rowCount();++row)
|
||||||
{
|
{
|
||||||
|
|
@ -96,12 +97,17 @@ void DiagramEditorWizard::generateBayStruct()
|
||||||
{
|
{
|
||||||
for(auto iter = _mapBus.begin();iter != _mapBus.end();++iter)
|
for(auto iter = _mapBus.begin();iter != _mapBus.end();++iter)
|
||||||
{
|
{
|
||||||
if(!iter->bChanged) //只生成修改过的程序
|
if(iter->nState == 0) //只生成修改过的程序
|
||||||
continue;
|
continue;
|
||||||
iter->bChanged = false;
|
if(iter->nState == 2){ //已修改
|
||||||
QListWidgetItem* item = new QListWidgetItem("第"+QString::number(iter->nIndex+1)+"层");
|
clearTargetLevelContent(iter.key());
|
||||||
item->setData(Qt::UserRole,iter->nIndex);
|
}
|
||||||
ui->listWidget_bay->addItem(item);
|
else if(iter->nState == 1){
|
||||||
|
QListWidgetItem* item = new QListWidgetItem("第"+QString::number(iter->nIndex+1)+"层");
|
||||||
|
item->setData(Qt::UserRole,iter->nIndex);
|
||||||
|
ui->listWidget_bay->addItem(item);
|
||||||
|
}
|
||||||
|
iter->nState = 0;
|
||||||
|
|
||||||
QString sVoltage; //电压前缀
|
QString sVoltage; //电压前缀
|
||||||
sVoltage = QString::number(iter->dVoltage)+"kV";
|
sVoltage = QString::number(iter->dVoltage)+"kV";
|
||||||
|
|
@ -229,13 +235,6 @@ void DiagramEditorWizard::flushTransPage()
|
||||||
info.sName = pItem->getName();
|
info.sName = pItem->getName();
|
||||||
info.nType = pItem->getTransType();
|
info.nType = pItem->getTransType();
|
||||||
auto lstCon = pItem->getConnect(); //获取间隔所连对象的名称
|
auto lstCon = pItem->getConnect(); //获取间隔所连对象的名称
|
||||||
/*for(auto& conId:lstCon){
|
|
||||||
if(_mapConnect.contains(conId)){
|
|
||||||
auto con = _mapConnect.value(conId);
|
|
||||||
QString sOpposite = con.getOppositeName(pItem->getName());
|
|
||||||
info.lstBindObj.append(sOpposite);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
for(auto& conId:lstCon){
|
for(auto& conId:lstCon){
|
||||||
if(_mapConnect.contains(conId)){
|
if(_mapConnect.contains(conId)){
|
||||||
|
|
@ -298,6 +297,20 @@ QUuid DiagramEditorWizard::addConnection(const QString& str1,const QString& str2
|
||||||
return con.uid;
|
return con.uid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QList<QUuid> DiagramEditorWizard::findConnectionByBlock(QString sName,int nType)
|
||||||
|
{
|
||||||
|
QList<QUuid> lst;
|
||||||
|
for(auto iter = _mapConnect.begin(); iter != _mapConnect.end();++iter){
|
||||||
|
auto con = iter.value();
|
||||||
|
if((con.con1.sName == sName && con.con1.nType == nType) || (con.con2.sName == sName && con.con2.nType == nType)){
|
||||||
|
if(!lst.contains(con.uid))
|
||||||
|
lst.append(con.uid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return lst;
|
||||||
|
}
|
||||||
|
|
||||||
void DiagramEditorWizard::removeConnection(QUuid uid)
|
void DiagramEditorWizard::removeConnection(QUuid uid)
|
||||||
{
|
{
|
||||||
_mapConnect.remove(uid);
|
_mapConnect.remove(uid);
|
||||||
|
|
@ -336,14 +349,73 @@ DiagramEditorProjectInfo DiagramEditorWizard::getCurPara()
|
||||||
void DiagramEditorWizard::setPara(DiagramEditorProjectInfo info)
|
void DiagramEditorWizard::setPara(DiagramEditorProjectInfo info)
|
||||||
{
|
{
|
||||||
_mapBus = info.mapBus;
|
_mapBus = info.mapBus;
|
||||||
|
_mapConnect = info.mapConnect;
|
||||||
for(auto iter = info.mapSturctContainer.begin(); iter != info.mapSturctContainer.end();++iter){
|
for(auto iter = info.mapSturctContainer.begin(); iter != info.mapSturctContainer.end();++iter){
|
||||||
|
|
||||||
QList<DiagramEditorStructContainer*> lstCon;
|
for(int i = 0;i < iter.value().size();++i){
|
||||||
for(auto &conInfo:iter.value()){
|
auto conInfo = iter.value()[i];
|
||||||
|
auto pContainer = new DiagramEditorStructContainer(this);
|
||||||
|
pContainer->setId(conInfo.sId);
|
||||||
|
|
||||||
|
pContainer->setMidUpY(conInfo.dMidUpY);
|
||||||
|
pContainer->setMidDownY(conInfo.dMidDownY);
|
||||||
|
pContainer->setWidth(conInfo.dWidth);
|
||||||
|
pContainer->setHeight(conInfo.dHeight);
|
||||||
|
pContainer->setStartX(conInfo.dStartX);
|
||||||
|
pContainer->setStartY(conInfo.dStartY);
|
||||||
|
pContainer->setMaxUpH(conInfo.dMaxUpH);
|
||||||
|
pContainer->setMaxDownH(conInfo.dMaxDownH);
|
||||||
|
for(auto ite = conInfo.mapBlockInfo.begin(); ite != conInfo.mapBlockInfo.end();++ite){ //<位置0123,容器列表>
|
||||||
|
for(auto &blockInfo:ite.value()){
|
||||||
|
DiagramEditorBaseBlock* pBlock = nullptr;
|
||||||
|
if(blockInfo.nType == 1){
|
||||||
|
auto pBus = new DiagramEditorBusBlock(this);
|
||||||
|
pBus->setId(blockInfo.uid);
|
||||||
|
pBus->setType(blockInfo.nType);
|
||||||
|
pBus->setBusPro(blockInfo.sName,1,blockInfo.fVoltage,blockInfo.nBusType,blockInfo.nIndex);
|
||||||
|
pBlock = pBus;
|
||||||
|
}
|
||||||
|
else if(blockInfo.nType == 2){
|
||||||
|
DiagramEditorBayBlock* pBay = new DiagramEditorBayBlock(this);
|
||||||
|
pBay->setId(blockInfo.uid);
|
||||||
|
pBay->setName(blockInfo.sName);
|
||||||
|
pBay->setType(blockInfo.nType);
|
||||||
|
pBay->setBayType(blockInfo.nBayType);
|
||||||
|
for(auto& uid:blockInfo._lstCon){
|
||||||
|
pBay->addConnect(uid);
|
||||||
|
}
|
||||||
|
pBay->setBayInfo(blockInfo.bayInfo);
|
||||||
|
pBlock = pBay;
|
||||||
|
}
|
||||||
|
else if(blockInfo.nType == 3){
|
||||||
|
auto pTrans = new DiagramEditorTransformerBlock(this);
|
||||||
|
pTrans->setId(blockInfo.uid);
|
||||||
|
pTrans->setName(blockInfo.sName);
|
||||||
|
pTrans->setType(blockInfo.nType);
|
||||||
|
pTrans->setTransType(blockInfo.nTransType);
|
||||||
|
for(auto& uid:blockInfo._lstCon){
|
||||||
|
pTrans->addConnect(uid);
|
||||||
|
}
|
||||||
|
pTrans->setTransInfo(blockInfo.transInfo);
|
||||||
|
pBlock = pTrans;
|
||||||
|
}
|
||||||
|
if(pBlock){
|
||||||
|
pBlock->setContainerLevel(blockInfo.nContainerLevel);
|
||||||
|
pBlock->setRecSize(blockInfo.recSize);
|
||||||
|
pBlock->setSeceneDelta(blockInfo.sceneDelta);
|
||||||
|
pBlock->setEditState(blockInfo.bEditState);
|
||||||
|
pContainer->insertBlock(ite.key(),pBlock);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_mapSturctContainer[iter.key()].insert(i,pContainer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
resetBusByData();
|
||||||
|
resetBayByData();
|
||||||
|
resetTransByData();
|
||||||
|
emit wizardFinish();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramEditorWizard::addTransformer(DiagramEditorWizardTransformerInfo info)
|
void DiagramEditorWizard::addTransformer(DiagramEditorWizardTransformerInfo info)
|
||||||
|
|
@ -397,6 +469,113 @@ template <typename T> void DiagramEditorWizard::reindexQMap(QMap<int, T> &map) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiagramEditorWizard::clearTargetLevelContent(int nLevel)
|
||||||
|
{
|
||||||
|
if(_mapSturctContainer.contains(nLevel)){
|
||||||
|
auto lstCon = _mapSturctContainer.take(nLevel);
|
||||||
|
for(auto &pCon:lstCon){
|
||||||
|
auto mapBlock = pCon->getBlockMap();
|
||||||
|
for(auto &lstBlock:mapBlock){
|
||||||
|
for(auto& pBlock:lstBlock){
|
||||||
|
auto lst = findConnectionByBlock(pBlock->getName(),pBlock->getType()); //断开删除block相关的连接
|
||||||
|
if(!lst.empty()){
|
||||||
|
for(auto &uid:lst){
|
||||||
|
removeConnection(uid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delete pCon;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramEditorWizard::resetBusByData()
|
||||||
|
{
|
||||||
|
ui->tableWidget_bus->clearContents();
|
||||||
|
ui->tableWidget_bus->setRowCount(0);
|
||||||
|
|
||||||
|
for(auto iter = _mapBus.begin();iter != _mapBus.end();++iter){
|
||||||
|
int row = ui->tableWidget_bus->rowCount();
|
||||||
|
ui->tableWidget_bus->insertRow(row);
|
||||||
|
const DiagramEditorWizardBusInfo& data = iter.value();
|
||||||
|
|
||||||
|
QTableWidgetItem* pItem = new QTableWidgetItem("第"+QString::number(iter.key()+1)+"层");
|
||||||
|
pItem->setData(Qt::UserRole,data.nIndex);
|
||||||
|
ui->tableWidget_bus->setItem(iter.key(), 0, pItem);
|
||||||
|
|
||||||
|
QTableWidgetItem* pItemVoltage = new QTableWidgetItem(QString::number(data.dVoltage)+"KV");
|
||||||
|
ui->tableWidget_bus->setItem(iter.key(), 1, pItemVoltage);
|
||||||
|
|
||||||
|
// 列2 - 单双母 (ComboBox)
|
||||||
|
QString sLineType;
|
||||||
|
if(data.nLineType == 1){
|
||||||
|
sLineType = "单母线";
|
||||||
|
}
|
||||||
|
else if(data.nLineType == 2){
|
||||||
|
sLineType = "双母线";
|
||||||
|
}
|
||||||
|
QTableWidgetItem* pItemLine = new QTableWidgetItem(sLineType);
|
||||||
|
ui->tableWidget_bus->setItem(iter.key(), 2, pItemLine);
|
||||||
|
|
||||||
|
QString sDivide;
|
||||||
|
QTableWidgetItem* pItemDivide = new QTableWidgetItem();
|
||||||
|
if(data.nLineType == 1){
|
||||||
|
QString sD1;
|
||||||
|
if(data.nNum1 == 1)
|
||||||
|
sD1 = "不分段";
|
||||||
|
else
|
||||||
|
sD1 = QString::number(data.nNum1);
|
||||||
|
sDivide = "母线:"+sD1;
|
||||||
|
}
|
||||||
|
else if(data.nLineType == 2){
|
||||||
|
QString sD1;
|
||||||
|
if(data.nNum1 == 1)
|
||||||
|
sD1 = "不分段";
|
||||||
|
else
|
||||||
|
sD1 = QString::number(data.nNum1);
|
||||||
|
|
||||||
|
QString sD2;
|
||||||
|
if(data.nNum2 == 1)
|
||||||
|
sD2 = "不分段";
|
||||||
|
else
|
||||||
|
sD2 = QString::number(data.nNum2);
|
||||||
|
sDivide = "母线1:"+sD1+";"+"母线2:"+sD2;
|
||||||
|
}
|
||||||
|
pItemDivide->setText(sDivide);
|
||||||
|
ui->tableWidget_bus->setItem(iter.key(), 3, pItemDivide);
|
||||||
|
|
||||||
|
// 列4 - 接线方式 (ComboBox)
|
||||||
|
QString sConnectType;
|
||||||
|
if(data.connectType == 1){
|
||||||
|
sConnectType = "分段连接";
|
||||||
|
}
|
||||||
|
QTableWidgetItem* pItemConnect = new QTableWidgetItem(sConnectType);
|
||||||
|
ui->tableWidget_bus->setItem(row, 4, pItemConnect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramEditorWizard::resetBayByData()
|
||||||
|
{
|
||||||
|
if(_baySettingDlg == nullptr){
|
||||||
|
_baySettingDlg = new DiagramEditorBaySettingDlg(this);
|
||||||
|
_baySettingDlg->setParent(this);
|
||||||
|
}
|
||||||
|
ui->listWidget_bay->clear();
|
||||||
|
for(auto iter = _mapBus.begin();iter != _mapBus.end();++iter)
|
||||||
|
{
|
||||||
|
iter->nState = 0;
|
||||||
|
QListWidgetItem* item = new QListWidgetItem("第"+QString::number(iter->nIndex+1)+"层");
|
||||||
|
item->setData(Qt::UserRole,iter->nIndex);
|
||||||
|
ui->listWidget_bay->addItem(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramEditorWizard::resetTransByData()
|
||||||
|
{
|
||||||
|
flushTransPage();
|
||||||
|
}
|
||||||
|
|
||||||
void DiagramEditorWizard::onOkClicked()
|
void DiagramEditorWizard::onOkClicked()
|
||||||
{
|
{
|
||||||
emit wizardFinish();
|
emit wizardFinish();
|
||||||
|
|
@ -476,7 +655,7 @@ void DiagramEditorWizard::onAddBusClicked()
|
||||||
|
|
||||||
DiagramEditorWizardBusInfo info;
|
DiagramEditorWizardBusInfo info;
|
||||||
info.nIndex = row;
|
info.nIndex = row;
|
||||||
info.bChanged = true;
|
info.nState = 1; //新建
|
||||||
_mapBus.insert(row,info);
|
_mapBus.insert(row,info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -486,7 +665,9 @@ void DiagramEditorWizard::onAddBayClicked()
|
||||||
_baySettingDlg = new DiagramEditorBaySettingDlg(this);
|
_baySettingDlg = new DiagramEditorBaySettingDlg(this);
|
||||||
_baySettingDlg->setParent(this);
|
_baySettingDlg->setParent(this);
|
||||||
}
|
}
|
||||||
_baySettingDlg->showDlg(ui->listWidget_bay->currentItem()->data(Qt::UserRole).toInt());
|
auto pItem = ui->listWidget_bay->currentItem();
|
||||||
|
if(pItem)
|
||||||
|
_baySettingDlg->showDlg(pItem->data(Qt::UserRole).toInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramEditorWizard::onAddTransClicked()
|
void DiagramEditorWizard::onAddTransClicked()
|
||||||
|
|
@ -601,7 +782,7 @@ void DiagramEditorWizard::onAddBayFinished(DiagramEditorWizardBayInfo info)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(info.nType == BayType::incomingBay || info.nType == BayType::ptBay){ //进线间隔和pt间隔在上边
|
else if(info.nType == BayType::incomingBay || info.nType == BayType::ptBay || info.nType == BayType::busCouplerBay){ //进线间隔、母联间隔、pt间隔在上边
|
||||||
auto pContainer = getContainerByBlock(curIndex,1,info.lstBindObj.first());
|
auto pContainer = getContainerByBlock(curIndex,1,info.lstBindObj.first());
|
||||||
pContainer->insertBlock(0,pBlock);
|
pContainer->insertBlock(0,pBlock);
|
||||||
}
|
}
|
||||||
|
|
@ -644,7 +825,7 @@ void DiagramEditorWizard::onDelegateFinishEdit(const QModelIndex &index, const Q
|
||||||
{
|
{
|
||||||
int row = index.row();
|
int row = index.row();
|
||||||
int col = index.column();
|
int col = index.column();
|
||||||
if(_mapBus.contains(row)){
|
if(_mapBus.contains(row)){ //todo:增加缓存,点击下页保存
|
||||||
if(col == 1){
|
if(col == 1){
|
||||||
_mapBus[row].dVoltage = value.toDouble();
|
_mapBus[row].dVoltage = value.toDouble();
|
||||||
}
|
}
|
||||||
|
|
@ -668,8 +849,7 @@ void DiagramEditorWizard::onDelegateFinishEdit(const QModelIndex &index, const Q
|
||||||
else if(col == 4){
|
else if(col == 4){
|
||||||
_mapBus[row].connectType = value.toInt();
|
_mapBus[row].connectType = value.toInt();
|
||||||
}
|
}
|
||||||
_busPageChanged = true;
|
_mapBus[row].nState = 1;
|
||||||
//qDebug() << row<<","<<col<<":"<<value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -700,6 +880,21 @@ void DiagramEditorWizard::onBusDeleteClicked()
|
||||||
int nIndex = indexName.data(Qt::UserRole).toInt();
|
int nIndex = indexName.data(Qt::UserRole).toInt();
|
||||||
if(_mapBus.contains(nIndex)){
|
if(_mapBus.contains(nIndex)){
|
||||||
_mapBus.remove(nIndex);
|
_mapBus.remove(nIndex);
|
||||||
|
if(_mapSturctContainer.contains(nIndex)){ //如果删除行,同步删除该行关联的内容
|
||||||
|
clearTargetLevelContent(nIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < ui->listWidget_bay->count(); ++i) {
|
||||||
|
QListWidgetItem *item = ui->listWidget_bay->item(i);
|
||||||
|
// 处理每个项
|
||||||
|
QString text = item->text();
|
||||||
|
qDebug() << "Item" << i << ":" << text;
|
||||||
|
int idx = item->data(Qt::UserRole).toInt();
|
||||||
|
if(idx == nIndex){
|
||||||
|
auto item = ui->listWidget_bay->takeItem(i);
|
||||||
|
delete item;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int currentRow = ui->tableWidget_bus->currentRow();
|
int currentRow = ui->tableWidget_bus->currentRow();
|
||||||
|
|
@ -851,12 +1046,14 @@ QList<DiagramEditorBaseBlock*> DiagramEditorWizard::getTargetLevelBlocks(int nL
|
||||||
for(auto& container:iter.value())
|
for(auto& container:iter.value())
|
||||||
{
|
{
|
||||||
auto mapBlock = container->getBlockMap();
|
auto mapBlock = container->getBlockMap();
|
||||||
for(auto& lst:mapBlock)
|
if(!mapBlock.isEmpty()){
|
||||||
{
|
for(auto& lst:mapBlock)
|
||||||
for(auto& block:lst)
|
|
||||||
{
|
{
|
||||||
if(block->getType() == nType){ //返回对应type
|
for(auto& block:lst)
|
||||||
lstBlock.append(block);
|
{
|
||||||
|
if(block->getType() == nType){ //返回对应type
|
||||||
|
lstBlock.append(block);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,17 @@ EditPanel::~EditPanel()
|
||||||
|
|
||||||
void EditPanel::initByWizardInfo()
|
void EditPanel::initByWizardInfo()
|
||||||
{
|
{
|
||||||
|
if(!_lstData.empty()){
|
||||||
|
_pModel->clearItems();
|
||||||
|
m_pEditScene->clear();
|
||||||
|
_lstData.clear();
|
||||||
|
_mainWidget = new EditMainRect;
|
||||||
|
_widgetLayout = new QGraphicsLinearLayout(Qt::Vertical);
|
||||||
|
_widgetLayout->setSpacing(40);
|
||||||
|
_mainWidget->setLayout(_widgetLayout);
|
||||||
|
m_pEditScene->addItem(_mainWidget);
|
||||||
|
_mainWidget->setGeometry(m_pEditScene->sceneRect());
|
||||||
|
}
|
||||||
auto& mapTotal = _pEditorWizard->getContainerStruct();
|
auto& mapTotal = _pEditorWizard->getContainerStruct();
|
||||||
for(auto iter = mapTotal.begin();iter != mapTotal.end();++iter){
|
for(auto iter = mapTotal.begin();iter != mapTotal.end();++iter){
|
||||||
if(iter.key() == g_transformerLevel)
|
if(iter.key() == g_transformerLevel)
|
||||||
|
|
@ -233,6 +244,8 @@ void EditPanel::initBlockConnection()
|
||||||
int nPara = con.nPara;
|
int nPara = con.nPara;
|
||||||
auto item1 = _pEditorWizard->getBlockByName_all(con.con1.sName);
|
auto item1 = _pEditorWizard->getBlockByName_all(con.con1.sName);
|
||||||
auto item2 = _pEditorWizard->getBlockByName_all(con.con2.sName);
|
auto item2 = _pEditorWizard->getBlockByName_all(con.con2.sName);
|
||||||
|
if(!item1 || !item2)
|
||||||
|
continue;
|
||||||
|
|
||||||
auto con1 = _pEditorWizard->getContainerByBlock_all(con.con1.sName);
|
auto con1 = _pEditorWizard->getContainerByBlock_all(con.con1.sName);
|
||||||
auto con2 = _pEditorWizard->getContainerByBlock_all(con.con2.sName);
|
auto con2 = _pEditorWizard->getContainerByBlock_all(con.con2.sName);
|
||||||
|
|
@ -373,16 +386,21 @@ void EditPanel::showConfirmDlg()
|
||||||
|
|
||||||
connect(_confirmEditor,&ConfirmEditorDlg::onConfirmEditor,this,[&](QString sAuthor,QString sTime){
|
connect(_confirmEditor,&ConfirmEditorDlg::onConfirmEditor,this,[&](QString sAuthor,QString sTime){
|
||||||
auto pCavas = getCavas();
|
auto pCavas = getCavas();
|
||||||
if(pCavas){
|
if(pCavas){
|
||||||
|
QByteArray btWizard = _pModel->getWizardInfo();
|
||||||
//QList<DiagramEditorBayBlock*> lstBocks;
|
setWindowTitle(sTime);
|
||||||
QList<EditBaseItem*> pBays = getBlockItems(EditorItemType::bay);
|
ProjectManager::instance().saveEditorDataToDB(_uid,_projectName,_projectName,btWizard,sAuthor,sTime);
|
||||||
|
|
||||||
pCavas->onSignal_wizardFinished(_projectName,_pModel->getPreviewItem(),pBays);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
_confirmEditor->show();
|
_confirmEditor->showDlg(_author,_timeStamp);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditPanel::generate()
|
||||||
|
{
|
||||||
|
auto pCavas = getCavas();
|
||||||
|
QList<EditBaseItem*> pBays = getBlockItems(EditorItemType::bay);
|
||||||
|
pCavas->onSignal_wizardFinished(_projectName,_pModel->getPreviewItem(),pBays);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditPanel::showWizard()
|
void EditPanel::showWizard()
|
||||||
|
|
@ -558,18 +576,26 @@ EditBaseItem* EditPanel::getItemByName(const QString& sName)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EditPanel::closeEvent(QCloseEvent *closeEvent)
|
||||||
|
{
|
||||||
|
emit panelDelete(_tagName,0);
|
||||||
|
}
|
||||||
|
|
||||||
void EditPanel::prepareSaveEditor()
|
void EditPanel::prepareSaveEditor()
|
||||||
{
|
{
|
||||||
if(_pModel){
|
if(_pModel){
|
||||||
QByteArray btWizard = _pModel->getWizardInfo();
|
showConfirmDlg();
|
||||||
ProjectManager::instance().saveEditorDataToDB(_uid,_projectName,_projectName,btWizard);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditPanel::loadEditor(const QString& str)
|
void EditPanel::loadBaseSetting(QUuid uid)
|
||||||
{
|
{
|
||||||
QByteArray byte = ProjectManager::instance().getEditorDataByName(str);
|
auto info = ProjectManager::instance().getBaseSetting(uid);
|
||||||
if(_pModel){
|
if(_pModel){
|
||||||
_pModel->setWizardInfo(byte);
|
_author = info.autor;
|
||||||
|
_timeStamp = info.ts;
|
||||||
|
_tagName = _projectName; //将临时名称保存到变量
|
||||||
|
_projectName = info.projectName;
|
||||||
|
_pModel->setWizardInfo(info.context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ void EditScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
|
||||||
QMenu menu;
|
QMenu menu;
|
||||||
QAction *previewAction = menu.addAction("预览");
|
QAction *previewAction = menu.addAction("预览");
|
||||||
QAction *generateAction = menu.addAction("生成");
|
QAction *generateAction = menu.addAction("生成");
|
||||||
|
QAction *setting = menu.addAction("打开设置");
|
||||||
QAction *selectedAction = menu.exec(event->screenPos());
|
QAction *selectedAction = menu.exec(event->screenPos());
|
||||||
if (selectedAction == previewAction) {
|
if (selectedAction == previewAction) {
|
||||||
if(_pModel){
|
if(_pModel){
|
||||||
|
|
@ -40,7 +41,9 @@ void EditScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
|
||||||
_pModel->refreshConnection();
|
_pModel->refreshConnection();
|
||||||
}
|
}
|
||||||
} else if (selectedAction == generateAction) {
|
} else if (selectedAction == generateAction) {
|
||||||
_pModel->getPanel()->showConfirmDlg();
|
_pModel->getPanel()->generate();
|
||||||
|
}else if (selectedAction == setting) {
|
||||||
|
_pModel->getPanel()->showWizard();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************预览*********************/
|
/************************预览*********************/
|
||||||
|
|
|
||||||
|
|
@ -164,8 +164,11 @@ void WizardBayContentDlg::onModifyClicked()
|
||||||
DiagramEditorBaseBlock* pBlock = _pWizard->getBlockByName(_curLevel,2,sName);
|
DiagramEditorBaseBlock* pBlock = _pWizard->getBlockByName(_curLevel,2,sName);
|
||||||
if(pBlock){
|
if(pBlock){
|
||||||
auto pBay = dynamic_cast<DiagramEditorBayBlock*>(pBlock);
|
auto pBay = dynamic_cast<DiagramEditorBayBlock*>(pBlock);
|
||||||
if(pBay)
|
if(pBay){
|
||||||
_pWizard->getBaySettingDlg()->showDlg(_curLevel,pBay);
|
auto pDlg = _pWizard->getBaySettingDlg();
|
||||||
|
if(pDlg)
|
||||||
|
pDlg->showDlg(_curLevel,pBay);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,23 +49,6 @@ QWidget* WizardBusTableDelegate::createEditor(QWidget* parent, const QStyleOptio
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*bool ProjectTableDelegate::eventFilter(QObject* obj, QEvent* event)
|
|
||||||
{
|
|
||||||
if (event->type() == QEvent::KeyPress) {
|
|
||||||
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
|
|
||||||
if (keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter) {
|
|
||||||
QLineEdit* editor = qobject_cast<QLineEdit*>(obj);
|
|
||||||
if (editor) {
|
|
||||||
emit yourCustomSignal(editor->text());
|
|
||||||
commitData(editor); // 显式提交数据
|
|
||||||
closeEditor(editor); // 关闭编辑器
|
|
||||||
return true; // 阻止事件继续传播
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return QStyledItemDelegate::eventFilter(obj, event);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
void WizardBusTableDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const
|
void WizardBusTableDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const
|
||||||
{
|
{
|
||||||
if(index.column() == 1 || index.column() == 2 || index.column() == 4)
|
if(index.column() == 1 || index.column() == 2 || index.column() == 4)
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,7 @@ void DrawingPanel::closeEvent(QCloseEvent *closeEvent)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
emit panelDelete(_name);
|
emit panelDelete(_name,1);
|
||||||
}
|
}
|
||||||
else if(getMode() == DM_baseModel)
|
else if(getMode() == DM_baseModel)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ font: 12pt "Microsoft YaHei UI";</string>
|
||||||
<string notr="true">color: rgb(0, 0, 0);</string>
|
<string notr="true">color: rgb(0, 0, 0);</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>生成接线</string>
|
<string>保存拓扑</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
@ -152,7 +152,7 @@ font: 12pt "Microsoft YaHei UI";</string>
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>上次修改:</string>
|
<string>归档时间:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ public:
|
||||||
DiagramEditorItemProperty* findEditorData(QUuid);
|
DiagramEditorItemProperty* findEditorData(QUuid);
|
||||||
void deleteEditorData(QUuid);
|
void deleteEditorData(QUuid);
|
||||||
QMap<QUuid,DiagramEditorItemProperty*> getEditorData() const;
|
QMap<QUuid,DiagramEditorItemProperty*> getEditorData() const;
|
||||||
|
void clearEditorData();
|
||||||
signals:
|
signals:
|
||||||
void dataCreated(QString uuid);
|
void dataCreated(QString uuid);
|
||||||
void dataChanged(QString uuid);
|
void dataChanged(QString uuid);
|
||||||
|
|
|
||||||
|
|
@ -135,12 +135,18 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/***********************************editor编辑器**********************************************/
|
/***********************************editor编辑器**********************************************/
|
||||||
bool insertEditorProject(QUuid,QString,QString,QByteArray);
|
bool insertEditorProject(QUuid,QString,QString);
|
||||||
bool updateEditorProject(QString name,QByteArray context);
|
|
||||||
QByteArray getEditorProjectByName(QString name);
|
|
||||||
QList<editorProjectInfo> getAllEditorProject();
|
QList<editorProjectInfo> getAllEditorProject();
|
||||||
bool deleteEditorProject(QString);
|
bool deleteEditorProject(QString);
|
||||||
bool ifEditorProjectExist(QString name);
|
bool ifEditorProjectExist(QString name);
|
||||||
|
/***********************************baseSetting**********************************************/
|
||||||
|
bool insertBaseSetting(QUuid,QString,QString,QByteArray,QUuid,QString ts);
|
||||||
|
bool updateBaseSetting(QUuid,QByteArray context,QString ts);
|
||||||
|
QByteArray getBaseSettingByUid(QUuid);
|
||||||
|
editorBaseSettingInfo getBaseSettingInfo(QUuid);
|
||||||
|
QList<editorBaseSettingInfo> getAllBaseSetting();
|
||||||
|
bool deleteBaseSetting(QUuid);
|
||||||
|
bool ifBaseSettingExist(QUuid);
|
||||||
private:
|
private:
|
||||||
QMap<int,attributeGroup> _attributeGroup; //属性组的组
|
QMap<int,attributeGroup> _attributeGroup; //属性组的组
|
||||||
QMap<int,dataType> _dataType; //数据类型组
|
QMap<int,dataType> _dataType; //数据类型组
|
||||||
|
|
|
||||||
|
|
@ -16,17 +16,28 @@ public:
|
||||||
~ProjectManager();
|
~ProjectManager();
|
||||||
static ProjectManager& instance();
|
static ProjectManager& instance();
|
||||||
|
|
||||||
void saveEditorDataToDB(QUuid,const QString&,const QString&,QByteArray);
|
void saveEditorDataToDB(QUuid,const QString&,const QString&,QByteArray,QString autor,QString sTime);
|
||||||
QByteArray getEditorDataByName(const QString&);
|
QByteArray getEditorBaseSettingByUid(QUuid);
|
||||||
|
|
||||||
void createEditor(const QString&);
|
bool createEditorProject(const QString&); //创建项目
|
||||||
|
void unloadEditorProject(const QString&); //卸载项目
|
||||||
|
|
||||||
|
void openSetting(const QString&);
|
||||||
void saveEditor(const QString&);
|
void saveEditor(const QString&);
|
||||||
|
bool deleteEditor(const QString&,QUuid); //删除当前版本
|
||||||
|
|
||||||
|
void loadBaseSetting(const QString& str,QUuid id); //加载wizard与基模拓扑设置
|
||||||
|
|
||||||
|
QList<editorBaseSettingInfo> getBaseSettingsByProject(const QString&); //获取工程名对应的设置列表
|
||||||
|
editorBaseSettingInfo getBaseSetting(QUuid); //获取设置
|
||||||
signals:
|
signals:
|
||||||
|
void prepareUnloadProject(const QString&);
|
||||||
|
void prepareOpenSetting(const QString& str);
|
||||||
void createNewEditor(const QString& str,QUuid id);
|
void createNewEditor(const QString& str,QUuid id);
|
||||||
void editorSaved(const QString& str,QUuid uid);
|
void editorSaved(const QString& strPro,const QString& autor,QUuid uid,QString sTime);
|
||||||
|
|
||||||
void prepareSaveEditor(QString);
|
void prepareSaveEditor(QString);
|
||||||
private:
|
void prepareLoadBaseSetting(const QString& str,QUuid id);
|
||||||
QMap<QString,DiagramEditorProjectInfo> _wizardInfo;
|
void prepareDeleteBaseSetting(const QString& str,QUuid id);
|
||||||
};
|
};
|
||||||
#endif // PROJECTMANAGER_H
|
#endif // PROJECTMANAGER_H
|
||||||
|
|
|
||||||
|
|
@ -166,3 +166,11 @@ QMap<QUuid,DiagramEditorItemProperty*> BasePropertyManager::getEditorData() cons
|
||||||
{
|
{
|
||||||
return m_editorData;
|
return m_editorData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BasePropertyManager::clearEditorData()
|
||||||
|
{
|
||||||
|
for(auto &pPro:m_editorData){
|
||||||
|
delete pPro;
|
||||||
|
}
|
||||||
|
m_editorData.clear();
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -2846,15 +2846,14 @@ QStringList DataBase::ifModelOccupy(const QString& sName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DataBase::insertEditorProject(QUuid uid,QString name,QString tag,QByteArray byte)
|
bool DataBase::insertEditorProject(QUuid uid,QString name,QString tag)
|
||||||
{
|
{
|
||||||
QString strSQL = "INSERT INTO diagramui_editorprojects(global_uuid, name, tag, context) VALUES (?, ?, ?, ?)";
|
QString strSQL = "INSERT INTO diagramui_editor_projects(global_uuid, name, tag) VALUES (?, ?, ?)";
|
||||||
|
|
||||||
QVariantList params;
|
QVariantList params;
|
||||||
params.append(uid);
|
params.append(uid);
|
||||||
params.append(name);
|
params.append(name);
|
||||||
params.append(tag);
|
params.append(tag);
|
||||||
params.append(byte);
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
executeSQL(strSQL,false,params);
|
executeSQL(strSQL,false,params);
|
||||||
|
|
@ -2862,57 +2861,15 @@ bool DataBase::insertEditorProject(QUuid uid,QString name,QString tag,QByteArray
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
LOG_ERROR("DB", QString("Insert diagramui_editorprojects fail"));
|
LOG_ERROR("DB", QString("Insert diagramui_editor_projects fail"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DataBase::updateEditorProject(QString name,QByteArray context)
|
|
||||||
{
|
|
||||||
QString strSQL = "UPDATE diagramui_editorprojects SET context = ? WHERE name = ?";
|
|
||||||
QVariantList params;
|
|
||||||
params.append(context);
|
|
||||||
params.append(name);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
executeSQL(strSQL,false,params);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
catch (const std::exception& e)
|
|
||||||
{
|
|
||||||
LOG_ERROR("DB", QString("Update diagramui_editorprojects %1 fail").arg(name));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QByteArray DataBase::getEditorProjectByName(QString name)
|
|
||||||
{
|
|
||||||
QByteArray byte;
|
|
||||||
QString strSQL = "SELECT context FROM diagramui_editorprojects WHERE name = ?";
|
|
||||||
QVariantList params;
|
|
||||||
params.append(name);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
QSqlQuery query = executeSQL(strSQL,false,params);
|
|
||||||
while (query.next())
|
|
||||||
{
|
|
||||||
byte = query.value(0).toByteArray();
|
|
||||||
}
|
|
||||||
query.clear();
|
|
||||||
return byte;
|
|
||||||
}
|
|
||||||
catch (const std::exception& e)
|
|
||||||
{
|
|
||||||
return byte;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QList<editorProjectInfo> DataBase::getAllEditorProject()
|
QList<editorProjectInfo> DataBase::getAllEditorProject()
|
||||||
{
|
{
|
||||||
QList<editorProjectInfo> lst;
|
QList<editorProjectInfo> lst;
|
||||||
QString strSQL = "SELECT id,global_uuid,name,tag,context FROM diagramui_editorprojects";
|
QString strSQL = "SELECT id,global_uuid,name,tag FROM diagramui_editor_projects";
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -2924,7 +2881,6 @@ QList<editorProjectInfo> DataBase::getAllEditorProject()
|
||||||
info.uuid = QUuid(query.value(1).toString());
|
info.uuid = QUuid(query.value(1).toString());
|
||||||
info.name = query.value(2).toString();
|
info.name = query.value(2).toString();
|
||||||
info.tag = query.value(3).toString();
|
info.tag = query.value(3).toString();
|
||||||
info.context = query.value(4).toByteArray();
|
|
||||||
|
|
||||||
lst.append(info);
|
lst.append(info);
|
||||||
}
|
}
|
||||||
|
|
@ -2939,26 +2895,26 @@ QList<editorProjectInfo> DataBase::getAllEditorProject()
|
||||||
|
|
||||||
bool DataBase::deleteEditorProject(QString name)
|
bool DataBase::deleteEditorProject(QString name)
|
||||||
{
|
{
|
||||||
QString strSQL = "DELETE FROM diagramui_editorprojects WHERE name = ?";
|
QString strSQL = "DELETE FROM diagramui_editor_projects WHERE name = ?";
|
||||||
QVariantList params;
|
QVariantList params;
|
||||||
params.append(name);
|
params.append(name);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
executeSQL(strSQL,false,params);
|
executeSQL(strSQL,false,params);
|
||||||
LOG_INFO("DB", QString("Delete diagramui_editorprojects %1 success").arg(name));
|
LOG_INFO("DB", QString("Delete diagramui_editor_projects %1 success").arg(name));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
LOG_INFO("DB", QString("Delete diagramui_editorprojects %1 fail").arg(name));
|
LOG_INFO("DB", QString("Delete diagramui_editor_projects %1 fail").arg(name));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DataBase::ifEditorProjectExist(QString name)
|
bool DataBase::ifEditorProjectExist(QString name)
|
||||||
{
|
{
|
||||||
QString strSQL = "SELECT * FROM diagramui_editorprojects WHERE name = ?";
|
QString strSQL = "SELECT * FROM diagramui_editor_projects WHERE name = ?";
|
||||||
QVariantList params;
|
QVariantList params;
|
||||||
params.append(name);
|
params.append(name);
|
||||||
|
|
||||||
|
|
@ -2976,3 +2932,166 @@ bool DataBase::ifEditorProjectExist(QString name)
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/***********************basesetting****************************/
|
||||||
|
bool DataBase::insertBaseSetting(QUuid uid,QString projectName,QString autorName,QByteArray context,QUuid generateId,QString ts)
|
||||||
|
{
|
||||||
|
QString strSQL = "INSERT INTO diagramui_editor_basesetting(global_uuid, project_name, autor, context, generate_uuid, ts) VALUES (?, ?, ?, ?, ?, ?)";
|
||||||
|
|
||||||
|
QVariantList params;
|
||||||
|
params.append(uid);
|
||||||
|
params.append(projectName);
|
||||||
|
params.append(autorName);
|
||||||
|
params.append(context);
|
||||||
|
params.append(generateId);
|
||||||
|
params.append(ts);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
executeSQL(strSQL,false,params);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (const std::exception& e)
|
||||||
|
{
|
||||||
|
LOG_ERROR("DB", QString("Insert diagramui_editor_basesetting fail"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bool DataBase::updateBaseSetting(QUuid uid,QByteArray context,QString ts)
|
||||||
|
{
|
||||||
|
QString strSQL = "UPDATE diagramui_editor_basesetting SET context = ?, ts = ? WHERE global_uuid = ?";
|
||||||
|
QVariantList params;
|
||||||
|
params.append(context);
|
||||||
|
params.append(ts);
|
||||||
|
params.append(uid);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
executeSQL(strSQL,false,params);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (const std::exception& e)
|
||||||
|
{
|
||||||
|
LOG_ERROR("DB", QString("Update diagramui_editor_basesetting %1 fail").arg(uid.toString()));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QByteArray DataBase::getBaseSettingByUid(QUuid uid)
|
||||||
|
{
|
||||||
|
QByteArray byte;
|
||||||
|
QString strSQL = "SELECT context FROM diagramui_editor_basesetting WHERE global_uuid = ?";
|
||||||
|
QVariantList params;
|
||||||
|
params.append(uid);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
QSqlQuery query = executeSQL(strSQL,false,params);
|
||||||
|
while (query.next())
|
||||||
|
{
|
||||||
|
byte = query.value(0).toByteArray();
|
||||||
|
}
|
||||||
|
query.clear();
|
||||||
|
return byte;
|
||||||
|
}
|
||||||
|
catch (const std::exception& e)
|
||||||
|
{
|
||||||
|
return byte;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
editorBaseSettingInfo DataBase::getBaseSettingInfo(QUuid uid)
|
||||||
|
{
|
||||||
|
editorBaseSettingInfo info;
|
||||||
|
QString strSQL = "SELECT project_name, autor, context, generate_uuid, ts FROM diagramui_editor_basesetting WHERE global_uuid = ?";
|
||||||
|
QVariantList params;
|
||||||
|
params.append(uid);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
QSqlQuery query = executeSQL(strSQL,false,params);
|
||||||
|
while (query.next())
|
||||||
|
{
|
||||||
|
info.projectName = query.value(0).toString();
|
||||||
|
info.autor = query.value(1).toString();
|
||||||
|
info.context = query.value(2).toByteArray();
|
||||||
|
info.generateUid = QUuid(query.value(3).toString());
|
||||||
|
info.ts = query.value(4).toString();
|
||||||
|
info.uuid = uid;
|
||||||
|
}
|
||||||
|
query.clear();
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
catch (const std::exception& e)
|
||||||
|
{
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<editorBaseSettingInfo> DataBase::getAllBaseSetting()
|
||||||
|
{
|
||||||
|
QList<editorBaseSettingInfo> lst;
|
||||||
|
QString strSQL = "SELECT id,global_uuid, project_name, autor, context, generate_uuid, ts FROM diagramui_editor_basesetting";
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
QSqlQuery query = executeSQL(strSQL);
|
||||||
|
while (query.next())
|
||||||
|
{
|
||||||
|
editorBaseSettingInfo info;
|
||||||
|
info.id = query.value(0).toInt();
|
||||||
|
info.uuid = QUuid(query.value(1).toString());
|
||||||
|
info.projectName = query.value(2).toString();
|
||||||
|
info.autor = query.value(3).toString();
|
||||||
|
info.context = query.value(4).toByteArray();
|
||||||
|
info.generateUid = QUuid(query.value(5).toString());
|
||||||
|
info.ts = query.value(6).toString();
|
||||||
|
|
||||||
|
lst.append(info);
|
||||||
|
}
|
||||||
|
query.clear();
|
||||||
|
return lst;
|
||||||
|
}
|
||||||
|
catch (const std::exception& e)
|
||||||
|
{
|
||||||
|
return lst;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DataBase::deleteBaseSetting(QUuid uid)
|
||||||
|
{
|
||||||
|
QString strSQL = "DELETE FROM diagramui_editor_basesetting WHERE global_uuid = ?";
|
||||||
|
QVariantList params;
|
||||||
|
params.append(uid);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
executeSQL(strSQL,false,params);
|
||||||
|
LOG_INFO("DB", QString("Delete diagramui_editor_basesetting %1 success").arg(uid.toString()));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (const std::exception& e)
|
||||||
|
{
|
||||||
|
LOG_INFO("DB", QString("Delete diagramui_editor_basesetting %1 fail").arg(uid.toString()));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DataBase::ifBaseSettingExist(QUuid uid)
|
||||||
|
{
|
||||||
|
QString strSQL = "SELECT * FROM diagramui_editor_basesetting WHERE global_uuid = ?";
|
||||||
|
QVariantList params;
|
||||||
|
params.append(uid);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
QSqlQuery query = executeSQL(strSQL,false,params);
|
||||||
|
while (query.next())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (const std::exception& e)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,46 +20,70 @@ ProjectManager::~ProjectManager()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectManager::saveEditorDataToDB(QUuid uid,const QString& name,const QString& tag,QByteArray byte)
|
void ProjectManager::saveEditorDataToDB(QUuid uid,const QString& name,const QString& tag,QByteArray byte,QString autor,QString sTime)
|
||||||
{
|
{
|
||||||
bool val = DataBase::GetInstance()->ifEditorProjectExist(name);
|
bool val = DataBase::GetInstance()->ifEditorProjectExist(name);
|
||||||
if(val)
|
if(!val)
|
||||||
{
|
DataBase::GetInstance()->insertEditorProject(uid,name,tag);
|
||||||
bool res = DataBase::GetInstance()->updateEditorProject(name,byte);
|
QUuid uidSetting = QUuid::createUuid(); //暂定没有更新,变更后存储为新记录
|
||||||
if(res){
|
bool res = DataBase::GetInstance()->insertBaseSetting(uidSetting,name,autor,byte,QUuid(),sTime);
|
||||||
emit editorSaved(name,uid);
|
if(res)
|
||||||
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"更新成功"));
|
emit editorSaved(name,autor,uidSetting,sTime);
|
||||||
}
|
|
||||||
else
|
|
||||||
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"更新失败"));
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
bool res = DataBase::GetInstance()->insertEditorProject(uid,name,tag,byte);
|
|
||||||
if(res){
|
|
||||||
emit editorSaved(name,uid);
|
|
||||||
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"保存成功"));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"保存失败"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray ProjectManager::getEditorDataByName(const QString& name)
|
QByteArray ProjectManager::getEditorBaseSettingByUid(QUuid uid)
|
||||||
{
|
{
|
||||||
return DataBase::GetInstance()->getEditorProjectByName(name);
|
return DataBase::GetInstance()->getBaseSettingByUid(uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectManager::createEditor(const QString& name)
|
bool ProjectManager::createEditorProject(const QString& name)
|
||||||
{
|
{
|
||||||
if(!_wizardInfo.contains(name)){
|
bool bExist = DataBase::GetInstance()->ifEditorProjectExist(name);
|
||||||
QUuid uid = QUuid::createUuid();
|
if(bExist)
|
||||||
_wizardInfo[name].sName = name;
|
return true;
|
||||||
_wizardInfo[name].uid = uid;
|
QUuid uid = QUuid::createUuid();
|
||||||
emit createNewEditor(name,uid);
|
emit createNewEditor(name,uid);
|
||||||
}
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProjectManager::unloadEditorProject(const QString& name)
|
||||||
|
{
|
||||||
|
emit prepareUnloadProject(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProjectManager::openSetting(const QString& name)
|
||||||
|
{
|
||||||
|
emit prepareOpenSetting(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectManager::saveEditor(const QString& name)
|
void ProjectManager::saveEditor(const QString& name)
|
||||||
{
|
{
|
||||||
emit prepareSaveEditor(name);
|
emit prepareSaveEditor(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ProjectManager::deleteEditor(const QString& name,QUuid id)
|
||||||
|
{
|
||||||
|
emit prepareDeleteBaseSetting(name,id);
|
||||||
|
return DataBase::GetInstance()->deleteBaseSetting(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProjectManager::loadBaseSetting(const QString& str,QUuid id)
|
||||||
|
{
|
||||||
|
emit prepareLoadBaseSetting(str,id);
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<editorBaseSettingInfo> ProjectManager::getBaseSettingsByProject(const QString& strPro)
|
||||||
|
{
|
||||||
|
QList<editorBaseSettingInfo> lst;
|
||||||
|
QList<editorBaseSettingInfo> lstAll = DataBase::GetInstance()->getAllBaseSetting();
|
||||||
|
for(auto &info:lstAll){
|
||||||
|
if(info.projectName == strPro)
|
||||||
|
lst.append(info);
|
||||||
|
}
|
||||||
|
return lst;
|
||||||
|
}
|
||||||
|
|
||||||
|
editorBaseSettingInfo ProjectManager::getBaseSetting(QUuid uid)
|
||||||
|
{
|
||||||
|
return DataBase::GetInstance()->getBaseSettingInfo(uid);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ signals:
|
||||||
void diagramDelete(DiagramInfo);
|
void diagramDelete(DiagramInfo);
|
||||||
void diagramSelected(DiagramInfo);
|
void diagramSelected(DiagramInfo);
|
||||||
|
|
||||||
|
void createProject();
|
||||||
void loadProject();
|
void loadProject();
|
||||||
public slots:
|
public slots:
|
||||||
void onIndexRbtnClicked(const QPoint &pos); //索引列表右键菜单
|
void onIndexRbtnClicked(const QPoint &pos); //索引列表右键菜单
|
||||||
|
|
@ -34,9 +35,11 @@ public slots:
|
||||||
void onItemClicked(const QModelIndex &index);
|
void onItemClicked(const QModelIndex &index);
|
||||||
|
|
||||||
void onEditorRbtnClicked(const QPoint &pos); //editor右键菜单
|
void onEditorRbtnClicked(const QPoint &pos); //editor右键菜单
|
||||||
|
void onEditorDBClicked(QTreeWidgetItem* item, int column);
|
||||||
//**********editor************
|
//**********editor************
|
||||||
void onNewEditorCreated(const QString&,QUuid);
|
void onNewEditorCreated(const QString&,QUuid);
|
||||||
void onEditorSaved(const QString&,QUuid);
|
void onEditorLoaded(const QString&,QUuid);
|
||||||
|
void onEditorSaved(const QString& strPro,const QString& autor,QUuid uid,QString sTime);
|
||||||
|
|
||||||
void onNewEditorClicked();
|
void onNewEditorClicked();
|
||||||
void onOpenEditorClicked();
|
void onOpenEditorClicked();
|
||||||
|
|
|
||||||
|
|
@ -49,9 +49,10 @@ private slots:
|
||||||
void onAction_editBay();
|
void onAction_editBay();
|
||||||
void onSignal_addItem(QGraphicsItem*);
|
void onSignal_addItem(QGraphicsItem*);
|
||||||
void onSignal_deleteItem();
|
void onSignal_deleteItem();
|
||||||
void onSignal_loadPage();
|
void onSignal_loadProject();
|
||||||
|
|
||||||
void onAction_createEditor();
|
void onAction_createEditor();
|
||||||
|
void onAction_unloadEditor(const QString&);
|
||||||
public:
|
public:
|
||||||
GraphicElementsPanel* graphicsElementsPanel() const;
|
GraphicElementsPanel* graphicsElementsPanel() const;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
#include <QMessageBox>
|
||||||
#include "createEditor.h"
|
#include "createEditor.h"
|
||||||
#include "projectManager.h"
|
#include "projectManager.h"
|
||||||
#include "ui_createEditor.h"
|
#include "ui_createEditor.h"
|
||||||
|
|
@ -31,7 +32,11 @@ void CreateEditor::showDlg()
|
||||||
|
|
||||||
void CreateEditor::onOkClicked()
|
void CreateEditor::onOkClicked()
|
||||||
{
|
{
|
||||||
ProjectManager::instance().createEditor(ui->le_name->text());
|
bool res = ProjectManager::instance().createEditorProject(ui->le_name->text());
|
||||||
|
if(res){
|
||||||
|
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"项目名已存在"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
hide();
|
hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
#include "topologyManager.h"
|
#include "topologyManager.h"
|
||||||
#include "projectManager.h"
|
#include "projectManager.h"
|
||||||
#include "dataBase.h"
|
#include "dataBase.h"
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
DiagramView::DiagramView(QWidget *parent)
|
DiagramView::DiagramView(QWidget *parent)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
|
|
@ -36,9 +37,9 @@ void DiagramView::initial()
|
||||||
connect(ui->btn_save, &QPushButton::clicked, this, &DiagramView::onSaveEditorClicked);
|
connect(ui->btn_save, &QPushButton::clicked, this, &DiagramView::onSaveEditorClicked);
|
||||||
connect(&ProjectManager::instance(),&ProjectManager::createNewEditor,this,&DiagramView::onNewEditorCreated);
|
connect(&ProjectManager::instance(),&ProjectManager::createNewEditor,this,&DiagramView::onNewEditorCreated);
|
||||||
connect(&ProjectManager::instance(),&ProjectManager::editorSaved,this,&DiagramView::onEditorSaved);
|
connect(&ProjectManager::instance(),&ProjectManager::editorSaved,this,&DiagramView::onEditorSaved);
|
||||||
|
connect(ui->treeWidget, &QTreeWidget::itemDoubleClicked, this, &DiagramView::onEditorDBClicked);
|
||||||
ui->treeView->setHeaderHidden(true);
|
ui->treeView->setHeaderHidden(true);
|
||||||
ui->treeWidget->setHeaderHidden(true);
|
ui->treeWidget->setHeaderHidden(true);
|
||||||
ui->treeWidget->setColumnCount(2);
|
|
||||||
// 设置模型的列数
|
// 设置模型的列数
|
||||||
_pModel->setColumnCount(1);
|
_pModel->setColumnCount(1);
|
||||||
|
|
||||||
|
|
@ -194,20 +195,12 @@ void DiagramView::onEditorRbtnClicked(const QPoint &pos)
|
||||||
|
|
||||||
switch (level) {
|
switch (level) {
|
||||||
case 1:{ // 顶级节点
|
case 1:{ // 顶级节点
|
||||||
QAction *actSaveTop = menu.addAction("保存");
|
QAction *actUnload = menu.addAction("卸载项目");
|
||||||
QAction *actGenTop = menu.addAction("生成");
|
|
||||||
menu.addSeparator();
|
|
||||||
QAction *actDelTop = menu.addAction("删除");
|
|
||||||
|
|
||||||
QAction *act = menu.exec(ui->treeWidget->mapToGlobal(pos));
|
|
||||||
if(act == actSaveTop){
|
|
||||||
ProjectManager::instance().saveEditor(item->text(0));
|
|
||||||
}
|
|
||||||
else if(act == actGenTop){
|
|
||||||
|
|
||||||
}
|
|
||||||
else if(act == actDelTop){
|
|
||||||
|
|
||||||
|
QAction *act = menu.exec(ui->treeWidget->mapToGlobal(pos));
|
||||||
|
if(act == actUnload){
|
||||||
|
ProjectManager::instance().unloadEditorProject(item->text(0));
|
||||||
|
ui->treeWidget->clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -215,10 +208,63 @@ void DiagramView::onEditorRbtnClicked(const QPoint &pos)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:{ // 三级节点
|
case 3:{ // 三级节点
|
||||||
|
QAction *actOpenSetting = menu.addAction("打开设置");
|
||||||
|
QAction *actSaveTop = menu.addAction("保存");
|
||||||
|
//QAction *actGenTop = menu.addAction("生成");
|
||||||
|
menu.addSeparator();
|
||||||
|
QAction *actDelTop = menu.addAction("删除");
|
||||||
|
|
||||||
|
QAction *act = menu.exec(ui->treeWidget->mapToGlobal(pos));
|
||||||
|
if(act == actOpenSetting){
|
||||||
|
ProjectManager::instance().openSetting(item->text(0));
|
||||||
|
}
|
||||||
|
else if(act == actSaveTop){
|
||||||
|
ProjectManager::instance().saveEditor(item->text(0));
|
||||||
|
}
|
||||||
|
/*else if(act == actGenTop){
|
||||||
|
|
||||||
|
}*/
|
||||||
|
else if(act == actDelTop){
|
||||||
|
QMessageBox msgBox;
|
||||||
|
msgBox.setText(QString::fromWCharArray(L"提示"));
|
||||||
|
msgBox.setInformativeText(QString::fromWCharArray(L"确认删除?"));
|
||||||
|
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
|
||||||
|
msgBox.setDefaultButton(QMessageBox::Cancel);
|
||||||
|
int ret = msgBox.exec();
|
||||||
|
|
||||||
|
switch (ret) {
|
||||||
|
case QMessageBox::Ok:
|
||||||
|
{
|
||||||
|
bool res = ProjectManager::instance().deleteEditor(item->text(0),item->data(0,Qt::UserRole).toUuid());
|
||||||
|
delete item;
|
||||||
|
QString str;
|
||||||
|
if(res)
|
||||||
|
str = "删除成功";
|
||||||
|
else
|
||||||
|
str = "删除失败";
|
||||||
|
QMessageBox::information(NULL, QString("提示"), str);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case QMessageBox::Cancel:
|
||||||
|
// Cancel was clicked
|
||||||
|
default:
|
||||||
|
// should never be reached
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramView::onEditorDBClicked(QTreeWidgetItem* item, int column)
|
||||||
|
{
|
||||||
|
int level = getItemLevel(item);
|
||||||
|
if(level == 3){
|
||||||
|
auto pAuthor = item->parent();
|
||||||
|
auto pProject = pAuthor->parent();
|
||||||
|
ProjectManager::instance().loadBaseSetting(item->text(0),item->data(0,Qt::UserRole).toUuid());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramView::onNewEditorCreated(const QString& str,QUuid id)
|
void DiagramView::onNewEditorCreated(const QString& str,QUuid id)
|
||||||
|
|
@ -227,28 +273,75 @@ void DiagramView::onNewEditorCreated(const QString& str,QUuid id)
|
||||||
QTreeWidgetItem *topLevelItem = new QTreeWidgetItem(ui->treeWidget);
|
QTreeWidgetItem *topLevelItem = new QTreeWidgetItem(ui->treeWidget);
|
||||||
topLevelItem->setText(0, str);
|
topLevelItem->setText(0, str);
|
||||||
topLevelItem->setData(0,Qt::UserRole,id);
|
topLevelItem->setData(0,Qt::UserRole,id);
|
||||||
topLevelItem->setText(1,"未保存");
|
|
||||||
topLevelItem->setForeground(1,Qt::yellow);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramView::onEditorSaved(const QString& str,QUuid uid)
|
void DiagramView::onEditorLoaded(const QString& str,QUuid id)
|
||||||
{
|
{
|
||||||
QTreeWidgetItemIterator it(ui->treeWidget);
|
ui->treeWidget->clear();
|
||||||
while (*it) {
|
QTreeWidgetItem *topLevelItem = new QTreeWidgetItem(ui->treeWidget);
|
||||||
QTreeWidgetItem* item = *it;
|
topLevelItem->setText(0, str);
|
||||||
if(item->data(0,Qt::UserRole).toUuid() == uid)
|
topLevelItem->setData(0,Qt::UserRole,id);
|
||||||
{
|
auto lstInfo = ProjectManager::instance().getBaseSettingsByProject(str);
|
||||||
item->setText(1,"已保存");
|
|
||||||
item->setForeground(1,Qt::green);
|
for(auto &info:lstInfo){
|
||||||
break;
|
bool authorCreated = false;
|
||||||
|
for (int j = 0; j < topLevelItem->childCount(); ++j) {
|
||||||
|
QTreeWidgetItem* authorItem = topLevelItem->child(j);
|
||||||
|
if(authorItem->text(0) == info.autor){ //author存在
|
||||||
|
QTreeWidgetItem* settingItem = new QTreeWidgetItem(authorItem);
|
||||||
|
settingItem->setText(0,info.ts);
|
||||||
|
settingItem->setData(0,Qt::UserRole,info.uuid);
|
||||||
|
authorCreated = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!authorCreated){ //新建author
|
||||||
|
QTreeWidgetItem* authorItem = new QTreeWidgetItem(topLevelItem);
|
||||||
|
authorItem->setText(0,info.autor);
|
||||||
|
|
||||||
|
QTreeWidgetItem* settingItem = new QTreeWidgetItem(authorItem);
|
||||||
|
settingItem->setText(0,info.ts);
|
||||||
|
settingItem->setData(0,Qt::UserRole,info.uuid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ui->treeWidget->expandAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramView::onEditorSaved(const QString& strPro,const QString& autor,QUuid uid,QString sTime)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < ui->treeWidget->topLevelItemCount(); ++i) {
|
||||||
|
QTreeWidgetItem* topItem = ui->treeWidget->topLevelItem(i);
|
||||||
|
if(topItem->text(0) == strPro){ //在指定项目下添加
|
||||||
|
// 遍历子项
|
||||||
|
bool exist = false; //名称已存在
|
||||||
|
for (int j = 0; j < topItem->childCount(); ++j) {
|
||||||
|
QTreeWidgetItem* childItem = topItem->child(j);
|
||||||
|
if(childItem->text(0) == autor){
|
||||||
|
exist = true;
|
||||||
|
QTreeWidgetItem *pItem = new QTreeWidgetItem(childItem);
|
||||||
|
pItem->setText(0, sTime);
|
||||||
|
pItem->setData(0,Qt::UserRole,uid);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!exist){
|
||||||
|
QTreeWidgetItem *itemName = new QTreeWidgetItem(topItem);
|
||||||
|
itemName->setText(0, autor);
|
||||||
|
QTreeWidgetItem *pItem = new QTreeWidgetItem(itemName);
|
||||||
|
pItem->setText(0, sTime);
|
||||||
|
pItem->setData(0,Qt::UserRole,uid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
++it;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramView::onNewEditorClicked()
|
void DiagramView::onNewEditorClicked()
|
||||||
{
|
{
|
||||||
|
ProjectManager::instance().unloadEditorProject(QString());
|
||||||
|
ui->treeWidget->clear();
|
||||||
|
emit createProject();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramView::onOpenEditorClicked()
|
void DiagramView::onOpenEditorClicked()
|
||||||
|
|
@ -258,7 +351,7 @@ void DiagramView::onOpenEditorClicked()
|
||||||
|
|
||||||
void DiagramView::onSaveEditorClicked()
|
void DiagramView::onSaveEditorClicked()
|
||||||
{
|
{
|
||||||
|
ProjectManager::instance().saveEditor("currentPage");
|
||||||
}
|
}
|
||||||
|
|
||||||
QString DiagramView::generateName()
|
QString DiagramView::generateName()
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ void LoadPageDlg::initial()
|
||||||
m_standardItemModel = new QStandardItemModel();
|
m_standardItemModel = new QStandardItemModel();
|
||||||
|
|
||||||
// 使用model设置QTreeView表头
|
// 使用model设置QTreeView表头
|
||||||
m_standardItemModel->setHorizontalHeaderLabels(QStringList(QStringLiteral("接线图")));
|
m_standardItemModel->setHorizontalHeaderLabels(QStringList(QStringLiteral("组态编辑")));
|
||||||
// TreeView控件载入model
|
// TreeView控件载入model
|
||||||
ui->treeView->setModel(m_standardItemModel);
|
ui->treeView->setModel(m_standardItemModel);
|
||||||
// 展开数据
|
// 展开数据
|
||||||
|
|
@ -52,6 +52,7 @@ void LoadPageDlg::updateList()
|
||||||
pageList.append(item);
|
pageList.append(item);
|
||||||
}
|
}
|
||||||
itemPage->appendRows(pageList);
|
itemPage->appendRows(pageList);
|
||||||
|
ui->treeView->expandAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,13 +74,13 @@ void CMainWindow::changeEvent(QEvent* event)
|
||||||
void CMainWindow::initializeDockUi()
|
void CMainWindow::initializeDockUi()
|
||||||
{
|
{
|
||||||
m_pElectricElementsBox = new ElectricElementsBox();
|
m_pElectricElementsBox = new ElectricElementsBox();
|
||||||
m_pElectricElementsBox->initial();
|
/*m_pElectricElementsBox->initial();
|
||||||
QWidget* pBox = m_pElectricElementsBox->getToolBox();
|
QWidget* pBox = m_pElectricElementsBox->getToolBox();
|
||||||
QDockWidget* ElectricElementsDock = new QDockWidget(QString::fromWCharArray(L"图元面板"),this);
|
QDockWidget* ElectricElementsDock = new QDockWidget(QString::fromWCharArray(L"图元面板"),this);
|
||||||
ElectricElementsDock->setWidget(pBox);
|
ElectricElementsDock->setWidget(pBox);
|
||||||
ElectricElementsDock->setMinimumSize(200,150);
|
ElectricElementsDock->setMinimumSize(200,150);
|
||||||
ElectricElementsDock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
|
ElectricElementsDock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
|
||||||
this->addDockWidget(Qt::RightDockWidgetArea,ElectricElementsDock);
|
this->addDockWidget(Qt::RightDockWidgetArea,ElectricElementsDock);*/
|
||||||
|
|
||||||
m_pTopologyView = new TopologyView(this);
|
m_pTopologyView = new TopologyView(this);
|
||||||
m_pTopologyView->initial();
|
m_pTopologyView->initial();
|
||||||
|
|
@ -139,11 +139,13 @@ void CMainWindow::initializeAction()
|
||||||
connect(m_pDiagramView,&DiagramView::diagramChange,m_pDiagramCavas,&DiagramCavas::onSignal_changeDiagram);
|
connect(m_pDiagramView,&DiagramView::diagramChange,m_pDiagramCavas,&DiagramCavas::onSignal_changeDiagram);
|
||||||
connect(m_pDiagramView,&DiagramView::diagramDelete,m_pDiagramCavas,&DiagramCavas::onSignal_deleteDiagram);
|
connect(m_pDiagramView,&DiagramView::diagramDelete,m_pDiagramCavas,&DiagramCavas::onSignal_deleteDiagram);
|
||||||
connect(m_pDiagramView,&DiagramView::diagramSelected,m_pDiagramCavas,&DiagramCavas::onSignal_selectDiagram);
|
connect(m_pDiagramView,&DiagramView::diagramSelected,m_pDiagramCavas,&DiagramCavas::onSignal_selectDiagram);
|
||||||
|
connect(m_pDiagramView,&DiagramView::createProject,this,&CMainWindow::onAction_createEditor);
|
||||||
|
connect(&ProjectManager::instance(),&ProjectManager::prepareUnloadProject,this,&CMainWindow::onAction_unloadEditor);
|
||||||
|
|
||||||
connect(m_pDiagramView,&DiagramView::loadProject,this,&CMainWindow::onSignal_loadPage);
|
connect(m_pDiagramView,&DiagramView::loadProject,this,&CMainWindow::onSignal_loadProject);
|
||||||
|
|
||||||
connect(ui->actionNew,&QAction::triggered,m_pDiagramCavas,&DiagramCavas::onSignal_addPage);
|
connect(ui->actionNew,&QAction::triggered,m_pDiagramCavas,&DiagramCavas::onSignal_addPage);
|
||||||
connect(ui->actionOpen,&QAction::triggered,this,&CMainWindow::onSignal_loadPage);
|
connect(ui->actionOpen,&QAction::triggered,this,&CMainWindow::onSignal_loadProject);
|
||||||
connect(ui->actionSave,&QAction::triggered,m_pDiagramCavas,&DiagramCavas::onSignal_savePage);
|
connect(ui->actionSave,&QAction::triggered,m_pDiagramCavas,&DiagramCavas::onSignal_savePage);
|
||||||
connect(ui->actionDelete,&QAction::triggered,m_pDiagramCavas,&DiagramCavas::onSignal_deletePage);
|
connect(ui->actionDelete,&QAction::triggered,m_pDiagramCavas,&DiagramCavas::onSignal_deletePage);
|
||||||
|
|
||||||
|
|
@ -238,12 +240,17 @@ void CMainWindow::onSignal_deleteItem()
|
||||||
m_pUndoStack->push(deleteItemCommand); //push时会自动调用一次command的redo函数*/
|
m_pUndoStack->push(deleteItemCommand); //push时会自动调用一次command的redo函数*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::onSignal_loadPage()
|
void CMainWindow::onSignal_loadProject()
|
||||||
{
|
{
|
||||||
if(m_pLoadPageDlg == nullptr)
|
if(m_pLoadPageDlg == nullptr)
|
||||||
{
|
{
|
||||||
m_pLoadPageDlg = new LoadPageDlg(this);
|
m_pLoadPageDlg = new LoadPageDlg(this);
|
||||||
connect(m_pLoadPageDlg,&LoadPageDlg::selectedProject,m_pDiagramCavas,&DiagramCavas::onSignal_loadEdit);
|
connect(&ProjectManager::instance(),&ProjectManager::prepareLoadBaseSetting,m_pDiagramCavas,&DiagramCavas::onSignal_loadEdit);
|
||||||
|
connect(m_pLoadPageDlg,&LoadPageDlg::selectedProject,m_pDiagramView,&DiagramView::onEditorLoaded);
|
||||||
|
connect(&ProjectManager::instance(),&ProjectManager::createNewEditor,m_pDiagramCavas,&DiagramCavas::onSignal_createEditPanel);
|
||||||
|
connect(&ProjectManager::instance(),&ProjectManager::prepareSaveEditor,m_pDiagramCavas,&DiagramCavas::onSignal_prepareSaveEdit);
|
||||||
|
connect(&ProjectManager::instance(),&ProjectManager::prepareDeleteBaseSetting,m_pDiagramCavas,&DiagramCavas::onSignal_prepareDeleteEditor);
|
||||||
|
connect(&ProjectManager::instance(),&ProjectManager::prepareOpenSetting,m_pDiagramCavas,&DiagramCavas::onSignal_prepareOpenSetting);
|
||||||
}
|
}
|
||||||
m_pLoadPageDlg->updateList();
|
m_pLoadPageDlg->updateList();
|
||||||
m_pLoadPageDlg->show();
|
m_pLoadPageDlg->show();
|
||||||
|
|
@ -255,11 +262,18 @@ void CMainWindow::onAction_createEditor()
|
||||||
m_pCreateEdiotr = new CreateEditor(this);
|
m_pCreateEdiotr = new CreateEditor(this);
|
||||||
connect(&ProjectManager::instance(),&ProjectManager::createNewEditor,m_pDiagramCavas,&DiagramCavas::onSignal_createEditPanel);
|
connect(&ProjectManager::instance(),&ProjectManager::createNewEditor,m_pDiagramCavas,&DiagramCavas::onSignal_createEditPanel);
|
||||||
connect(&ProjectManager::instance(),&ProjectManager::prepareSaveEditor,m_pDiagramCavas,&DiagramCavas::onSignal_prepareSaveEdit);
|
connect(&ProjectManager::instance(),&ProjectManager::prepareSaveEditor,m_pDiagramCavas,&DiagramCavas::onSignal_prepareSaveEdit);
|
||||||
|
connect(&ProjectManager::instance(),&ProjectManager::prepareDeleteBaseSetting,m_pDiagramCavas,&DiagramCavas::onSignal_prepareDeleteEditor);
|
||||||
|
connect(&ProjectManager::instance(),&ProjectManager::prepareOpenSetting,m_pDiagramCavas,&DiagramCavas::onSignal_prepareOpenSetting);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_pCreateEdiotr->showDlg();
|
m_pCreateEdiotr->showDlg();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CMainWindow::onAction_unloadEditor(const QString& str)
|
||||||
|
{
|
||||||
|
m_pDiagramCavas->onSignal_unloadProject(str);
|
||||||
|
}
|
||||||
|
|
||||||
GraphicElementsPanel* CMainWindow::graphicsElementsPanel() const
|
GraphicElementsPanel* CMainWindow::graphicsElementsPanel() const
|
||||||
{
|
{
|
||||||
if(m_pGraphicElementsPanel)
|
if(m_pGraphicElementsPanel)
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,8 @@ void TopologyView::initial()
|
||||||
QString sZone = nZ;
|
QString sZone = nZ;
|
||||||
QString sStation = nS;
|
QString sStation = nS;
|
||||||
|
|
||||||
|
if(info.tag.isEmpty())
|
||||||
|
continue;
|
||||||
QStandardItem *pItem = new QStandardItem(info.tag);
|
QStandardItem *pItem = new QStandardItem(info.tag);
|
||||||
pItem->setData(info.uuid.toString(),Qt::UserRole);
|
pItem->setData(info.uuid.toString(),Qt::UserRole);
|
||||||
addItemToView(sGrid,sZone,sStation,rootItem,pItem);
|
addItemToView(sGrid,sZone,sStation,rootItem,pItem);
|
||||||
|
|
@ -270,9 +272,17 @@ void TopologyView::onDataChanged(QString uuid)
|
||||||
|
|
||||||
void TopologyView::addItemToView(QString sGrid,QString sZone,QString sStation,QStandardItem *root,QStandardItem *pItem)
|
void TopologyView::addItemToView(QString sGrid,QString sZone,QString sStation,QStandardItem *root,QStandardItem *pItem)
|
||||||
{
|
{
|
||||||
QModelIndex iG = findIndex(_pModel,sGrid);
|
QModelIndex iG;
|
||||||
QModelIndex iZ = findIndex(_pModel,sZone);
|
QModelIndex iZ;
|
||||||
QModelIndex iS = findIndex(_pModel,sStation);
|
QModelIndex iS;
|
||||||
|
|
||||||
|
iG = findIndex(_pModel, sGrid, Qt::DisplayRole, QModelIndex());
|
||||||
|
if (iG.isValid()) {
|
||||||
|
iZ = findIndex(_pModel, sZone, Qt::DisplayRole, iG); // 只在Grid下查找
|
||||||
|
if (iZ.isValid()) {
|
||||||
|
iS = findIndex(_pModel, sStation, Qt::DisplayRole, iZ); // 只在Zone下查找
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(iG.isValid()) //已创建
|
if(iG.isValid()) //已创建
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -45,28 +45,34 @@
|
||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTreeWidget" name="treeWidget"/>
|
<widget class="QTreeWidget" name="treeWidget">
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">1</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="btn_new">
|
<widget class="QPushButton" name="btn_new">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>新建</string>
|
<string>新建项目</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="btn_open">
|
<widget class="QPushButton" name="btn_open">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>打开</string>
|
<string>加载项目</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="btn_save">
|
<widget class="QPushButton" name="btn_save">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>保存</string>
|
<string>保存设置</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue