#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 DiagramEditorWizard : public QDialog { Q_OBJECT public: DiagramEditorWizard(QWidget *parent = nullptr); ~DiagramEditorWizard(); signals: void wizardFinish(DiagramEditorWizardInfo); public slots: void onOkClicked(); void onCancelClicked(); void onLastClicked(); void onNextClicked(); void onAddBusClicked(); //添加母线 void onAddBayClicked(); //添加间隔 void onAddTransClicked(); //添加变压器 void onAddBayFinished(DiagramEditorWizardBayInfo); //添加间隔完毕 void onDelegateFinishEdit(const QModelIndex &index, const QString &value); //代理edit完成事件 void onBusDeleteClicked(); void onBusIndexRbtnClicked(const QPoint &pos); //bus列表右键菜单 void onBayListSelected(QListWidgetItem* pItem); //baylist选择事件 public: QMap getMapBusInfo() {return _mapBus;} QMap> getCointainerStruct(){return _mapSturctContainer;} QList getTargetLevelBlocks(int nLevel,int nType); //返回指定层数的对应block,type:1母线,2间隔 DiagramEditorStructContainer* getContainerByBlock(int nLevel,int nType,QString sName); //根据block名称返回container DiagramEditorBaseBlock* getBlockByName(int nLevel,int nType,QString sName); //根据名称返回block bool removeBlockByName(int nLevel,int nType,const QString& sName); //依据名称删除block WizardBayContentDlg* getContentDlg() {return _bayContentDlg;} DiagramEditorBaySettingDlg* getBaySettingDlg() {return _baySettingDlg;} private: void initial(); void reOrderBus(); //重置bus次序 void generateBayStruct(); //根据bus设置生成bay结构 void showSelectedBayPage(int); //显示选中的bay页面 template void reindexQMap(QMap &map); //重新排序函数 private: Ui::diagramEditorWizard *ui; BiDirectionalMap _divideType; //划分段数名对照 WizardBayContentDlg* _bayContentDlg; DiagramEditorBaySettingDlg* _baySettingDlg; QMap _mapBus; //母线信息 QMap> _mapSturctContainer; //划分后的区块 bool _busPageChanged; //母线页改变 }; #endif