191 lines
5.9 KiB
C++
191 lines
5.9 KiB
C++
|
|
#include <QMessageBox>
|
||
|
|
#include "diagramEditor/diagramEditorTransSettingDlg.h"
|
||
|
|
#include "diagramEditor/diagramEditorWizard.h"
|
||
|
|
#include "diagramEditor/diagramEditorBaseBlock.h"
|
||
|
|
#include "ui_diagramEditorTransSettingDlg.h"
|
||
|
|
#include "diagramEditor/diagramEditorStructContainer.h"
|
||
|
|
#include "diagramEditor/wizardBayContentDlg.h"
|
||
|
|
|
||
|
|
DiagramEditorTransSettingDlg::DiagramEditorTransSettingDlg(QWidget *parent)
|
||
|
|
: QDialog(parent)
|
||
|
|
, ui(new Ui::diagramEditorTransSettingDlg)
|
||
|
|
,_curOperateBlock(nullptr)
|
||
|
|
{
|
||
|
|
ui->setupUi(this);
|
||
|
|
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
||
|
|
this->setWindowModality(Qt::WindowModal);
|
||
|
|
initial();
|
||
|
|
}
|
||
|
|
|
||
|
|
DiagramEditorTransSettingDlg::~DiagramEditorTransSettingDlg()
|
||
|
|
{
|
||
|
|
delete ui;
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiagramEditorTransSettingDlg::showDlg()
|
||
|
|
{
|
||
|
|
_curModel = 0;
|
||
|
|
show();
|
||
|
|
addNewTrans();
|
||
|
|
if(_pWizard){
|
||
|
|
ui->le_name->setText("#主变");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiagramEditorTransSettingDlg::showDlg(DiagramEditorTransformerBlock* p)
|
||
|
|
{
|
||
|
|
_curModel = 1;
|
||
|
|
if(_curOperateBlock == nullptr)
|
||
|
|
_curOperateBlock = p;
|
||
|
|
show();
|
||
|
|
addNewTrans();
|
||
|
|
if(_pWizard){
|
||
|
|
ui->le_name->setText(p->getName());
|
||
|
|
//ui->cb_level->setCurrentIndex(0);
|
||
|
|
if(p){
|
||
|
|
auto lstCon = p->getConnect();
|
||
|
|
QStringList lst;
|
||
|
|
for(auto& con:lstCon){
|
||
|
|
QString sOppo = con.getOppositeName(p->getName());
|
||
|
|
lst.append(sOppo);
|
||
|
|
}
|
||
|
|
ui->listWidget->addItems(lst);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiagramEditorTransSettingDlg::addNewTrans()
|
||
|
|
{
|
||
|
|
ui->cb_type->setCurrentIndex(0);
|
||
|
|
ui->cb_level->clear();
|
||
|
|
ui->cb_target->clear();
|
||
|
|
ui->listWidget->clear();
|
||
|
|
if(_pWizard){
|
||
|
|
auto mapAllCon = _pWizard->getCointainerStruct();
|
||
|
|
for(auto iter = mapAllCon.begin();iter != mapAllCon.end();++iter){
|
||
|
|
if(iter.key() == g_transformerLevel)
|
||
|
|
continue;
|
||
|
|
ui->cb_level->addItem("第"+QString::number(iter.key()+1)+"层",iter.key());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiagramEditorTransSettingDlg::initial()
|
||
|
|
{
|
||
|
|
_curModel = 0;
|
||
|
|
connect(ui->btn_add,&QPushButton::clicked,this,&DiagramEditorTransSettingDlg::onAddClicked);
|
||
|
|
connect(ui->btn_delete,&QPushButton::clicked,this,&DiagramEditorTransSettingDlg::onDeleteClicked);
|
||
|
|
connect(ui->btn_ok,&QPushButton::clicked,this,&DiagramEditorTransSettingDlg::onOkClicked);
|
||
|
|
connect(ui->btn_cancel,&QPushButton::clicked,this,&DiagramEditorTransSettingDlg::onCancelClicked);
|
||
|
|
connect(ui->cb_level,&QComboBox::currentTextChanged,this,&DiagramEditorTransSettingDlg::onConnectLevelChanged);
|
||
|
|
connect(ui->cb_bayType,&QComboBox::currentIndexChanged,this,&DiagramEditorTransSettingDlg::onBayTypeChanged);
|
||
|
|
ui->cb_bayType->setItemData(0,3); //将类型与item关联
|
||
|
|
ui->cb_bayType->setItemData(1,4);
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiagramEditorTransSettingDlg::onAddClicked()
|
||
|
|
{
|
||
|
|
QString str = ui->cb_target->currentText();
|
||
|
|
auto lst = ui->listWidget->findItems(str,Qt::MatchExactly);
|
||
|
|
if(lst.size() == 0){ //为空才添加
|
||
|
|
ui->listWidget->addItem(str);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiagramEditorTransSettingDlg::onDeleteClicked()
|
||
|
|
{
|
||
|
|
int n = ui->listWidget->currentRow();
|
||
|
|
if(n){
|
||
|
|
auto pItem = ui->listWidget->takeItem(n);
|
||
|
|
delete pItem;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiagramEditorTransSettingDlg::onOkClicked()
|
||
|
|
{
|
||
|
|
QString sName = ui->le_name->text();
|
||
|
|
TransformerType nType = TransformerType(ui->cb_type->currentIndex());
|
||
|
|
if(_curModel == 0){
|
||
|
|
auto lstBlock = _pWizard->getTargetLevelBlocks(g_transformerLevel,3);
|
||
|
|
for(auto bay:lstBlock)
|
||
|
|
{
|
||
|
|
if(bay->getName() == sName){ //判断间隔存在
|
||
|
|
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"变压器已存在"));
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
QStringList lst;
|
||
|
|
for(int i = 0;i < ui->listWidget->count();++i){
|
||
|
|
lst.append(ui->listWidget->item(i)->text());
|
||
|
|
}
|
||
|
|
|
||
|
|
DiagramEditorWizardTransformerInfo info;
|
||
|
|
info.sName = sName;
|
||
|
|
info.nType = nType;
|
||
|
|
info.lstBindObj = lst;
|
||
|
|
|
||
|
|
_pWizard->onAddTransFinished(info);
|
||
|
|
}
|
||
|
|
else if(_curModel == 1){
|
||
|
|
if(_curOperateBlock){
|
||
|
|
_curOperateBlock->setName(sName);
|
||
|
|
_curOperateBlock->setTransType(nType);
|
||
|
|
_curOperateBlock->clearConnect();
|
||
|
|
|
||
|
|
for(int i = 0;i < ui->listWidget->count();++i){
|
||
|
|
_curOperateBlock->addConnect(ui->listWidget->item(i)->text(),1,true);
|
||
|
|
}
|
||
|
|
|
||
|
|
_pWizard->flushTransPage();
|
||
|
|
_curOperateBlock = nullptr;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
hide();
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiagramEditorTransSettingDlg::onCancelClicked()
|
||
|
|
{
|
||
|
|
hide();
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiagramEditorTransSettingDlg::onConnectLevelChanged(const QString& str)
|
||
|
|
{
|
||
|
|
if(_pWizard){
|
||
|
|
int n = ui->cb_level->findText(str);
|
||
|
|
BayType nType = BayType(ui->cb_bayType->currentData().toInt());
|
||
|
|
if(n != -1){
|
||
|
|
ui->cb_target->clear();
|
||
|
|
int nIndex = ui->cb_level->itemData(n).toInt();
|
||
|
|
auto lstBlock = _pWizard->getTargetLevelBlocks(nIndex,2);
|
||
|
|
for(auto& block:lstBlock){
|
||
|
|
auto pBay = dynamic_cast<DiagramEditorBayBlock*>(block);
|
||
|
|
if(pBay){
|
||
|
|
BayType tpe = pBay->getBayType();
|
||
|
|
if(nType == tpe)
|
||
|
|
ui->cb_target->addItem(pBay->getName());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiagramEditorTransSettingDlg::onBayTypeChanged(int idx)
|
||
|
|
{
|
||
|
|
BayType nType = BayType(ui->cb_bayType->currentData().toInt());
|
||
|
|
int n = ui->cb_level->currentIndex();
|
||
|
|
if(n != -1){
|
||
|
|
ui->cb_target->clear();
|
||
|
|
int nIndex = ui->cb_level->itemData(n).toInt();
|
||
|
|
auto lstBlock = _pWizard->getTargetLevelBlocks(nIndex,2);
|
||
|
|
for(auto& block:lstBlock){
|
||
|
|
auto pBay = dynamic_cast<DiagramEditorBayBlock*>(block);
|
||
|
|
if(pBay){
|
||
|
|
BayType tpe = pBay->getBayType();
|
||
|
|
if(nType == tpe)
|
||
|
|
ui->cb_target->addItem(pBay->getName());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|