#ifndef DIAGRAMEDITORWIZARD_H #define DIAGRAMEDITORWIZARD_H #include #include "global.h" QT_BEGIN_NAMESPACE namespace Ui { class diagramEditorWizard; } QT_END_NAMESPACE class WizardBayContentDlg; class DiagramEditorBaseBlock; class DiagramEditorStructContainer; class QListWidgetItem; class DiagramEditorBaySettingDlg; class DiagramEditorTransSettingDlg; class DiagramEditorWizard : public QDialog { Q_OBJECT public: DiagramEditorWizard(QWidget *parent = nullptr); ~DiagramEditorWizard(); signals: void wizardFinish(); public slots: void onOkClicked(); void onCancelClicked(); void onLastClicked(); void onNextClicked(); void onAddBusClicked(); //添加母线 void onAddBayClicked(); //添加间隔 void onAddTransClicked(); //添加变压器 void onAddBayFinished(DiagramEditorWizardBayInfo); //添加间隔完毕 void onAddTransFinished(DiagramEditorWizardTransformerInfo); //添加变压器完毕 void onDelegateFinishEdit(const QModelIndex &index, const QString &value); //代理edit完成事件 void onBusDeleteClicked(); void onBusIndexRbtnClicked(const QPoint &pos); //bus列表右键菜单 void onTransDeleteClicked(); void onTransModifyClicked(); void onTransIndexRbtnClicked(const QPoint &pos); //变压器列表右键菜单 void onBayListSelected(QListWidgetItem* pItem); //baylist选择事件 public: QMap getMapBusInfo() {return _mapBus;} QMap>& getContainerStruct(){return _mapSturctContainer;} QList getTargetLevelBlocks(int nLevel,int nType); //返回指定层数的对应block,type:1母线,2间隔,3变压器 QList getTargetLevelBlocks_all(int nLevel); DiagramEditorStructContainer* getContainerByBlock(int nLevel,int nType,QString sName); //根据block名称返回container nType:1母线2间隔3变压器 DiagramEditorStructContainer* getContainerByBlock_all(QString sName); DiagramEditorBaseBlock* getBlockByName(int nLevel,int nType,QString sName); //根据名称返回block DiagramEditorBaseBlock* getBlockByName_all(QString sName); bool removeBlockByName(int nLevel,int nType,const QString& sName); //依据名称删除block WizardBayContentDlg* getContentDlg() {return _bayContentDlg;} DiagramEditorBaySettingDlg* getBaySettingDlg() {return _baySettingDlg;} void flushTransPage(); //刷新变压器界面 int getContainerIndex(int nLevel,DiagramEditorStructContainer*); //返回目标层级container的序号 QUuid addConnection(const QString& str1,const QString& str2,int nType1,int nType2,int nPara = 0); //插入连接 QMap& getConnection() {return _mapConnect;} QList findConnectionByBlock(QString,int); //通过block找到连接 void removeConnection(QUuid); DiagramEditorProjectInfo getCurPara(); //获取当前的向导设置参数(同步数据到projectManager) void setPara(DiagramEditorProjectInfo); //使用load数据初始化 private: void initial(); void reOrderBus(); //重置bus次序 void generateBayStruct(); //根据bus设置生成bay结构 void addTransformer(DiagramEditorWizardTransformerInfo); //界面上添加变压器 template void reindexQMap(QMap &map); //重新排序函数 void clearTargetLevelContent(int); //清除目标层的数据 void resetBusByData(); //根据数据设置bus界面 void resetBayByData(); void resetTransByData(); private: Ui::diagramEditorWizard *ui; BiDirectionalMap _divideType; //划分段数名对照 WizardBayContentDlg* _bayContentDlg; DiagramEditorBaySettingDlg* _baySettingDlg; DiagramEditorTransSettingDlg* _transSettingDlg; QMap _mapBus; //母线信息 QMap> _mapSturctContainer; //划分后的区块 QMap _mapConnect; //连接列表 }; #endif