提交文件
This commit is contained in:
parent
c6dc2868d2
commit
6513750e75
765
DataMgr/src/CopyObjectDlg.cpp
Normal file
765
DataMgr/src/CopyObjectDlg.cpp
Normal file
|
|
@ -0,0 +1,765 @@
|
|||
#pragma warning(push,0)
|
||||
// #include "Family.h"
|
||||
#include <QMessageBox>
|
||||
#include <QPushButton>
|
||||
#include "CopyObjectDlg.h"
|
||||
#include "CStringType.h"
|
||||
#include "DataHelper.h"
|
||||
#include "LogIO.h"
|
||||
// #include "ObjProject.h"
|
||||
#include "ObjectID.h"
|
||||
#include "ObjWell.h"
|
||||
#include "ObjWelllogRound.h"
|
||||
// #include "DataTree.h"
|
||||
#pragma warning(pop)
|
||||
using namespace pai::ios::welllog;
|
||||
BEGIN_OSGGRAPHICS_NAMESPACE
|
||||
CCopyObjectDlg::CCopyObjectDlg(QWidget * parent, Qt::WindowFlags flags)
|
||||
: QDialog(parent,flags)
|
||||
{
|
||||
m_pUI = new Ui_CopyObject();
|
||||
m_pUI->setupUi(this);
|
||||
m_pUI->lineEdit_Sdep->setText("-9999.");;
|
||||
m_pUI->lineEdit_Edep->setText("-9999.");
|
||||
m_pUI->comboBox_Mode->addItem("替换");
|
||||
m_pUI->comboBox_Mode->addItem("合并");
|
||||
m_pUI->comboBox_Mode->addItem("另存");//放弃
|
||||
m_pUI->comboBox_Mode->setCurrentIndex(0);
|
||||
connect(m_pUI->pushButtonCopy,SIGNAL(clicked()),this,SLOT(slotCopy()));
|
||||
connect(m_pUI->comboBoxWell_Source, SIGNAL(currentIndexChanged(int)),this, SLOT(slotChangeSourceWell(int)));
|
||||
connect(m_pUI->comboBoxRound_Source, SIGNAL(currentIndexChanged(int)),this, SLOT(slotChangeSourceRound(int)));
|
||||
connect(m_pUI->comboBoxWell_Dest, SIGNAL(currentIndexChanged(int)),this, SLOT(slotChangeDestWell(int)));
|
||||
connect(m_pUI->comboBoxRound_Dest, SIGNAL(currentIndexChanged(int)),this, SLOT(slotChangeDestRound(int)));
|
||||
connect(m_pUI->checkBox_Curve, SIGNAL(clicked()), this, SLOT(slotCheckCurve()));
|
||||
connect(m_pUI->checkBox_Wave, SIGNAL(clicked()), this, SLOT(slotCheckWave()));
|
||||
connect(m_pUI->checkBox_Table, SIGNAL(clicked()), this, SLOT(slotCheckTable()));
|
||||
connect(m_pUI->checkBox_Stream, SIGNAL(clicked()), this, SLOT(slotCheckPar()));
|
||||
connect(m_pUI->checkBox_Other, SIGNAL(clicked()), this, SLOT(slotCheckOther()));
|
||||
connect(m_pUI->pushButton_SelAll, SIGNAL(clicked()), this, SLOT(slotSelAll()));
|
||||
connect(m_pUI->pushButton_NotSelAll, SIGNAL(clicked()), this, SLOT(slotNotSelAll()));
|
||||
connect(m_pUI->pushButton_ReSel, SIGNAL(clicked()), this, SLOT(slotReverseSel()));
|
||||
m_pUI->checkBox_Curve->setCheckState(Qt::Checked);
|
||||
m_pUI->checkBox_Wave->setCheckState(Qt::Checked);
|
||||
m_pUI->checkBox_Table->setCheckState(Qt::Checked);
|
||||
m_pUI->checkBox_Stream->setCheckState(Qt::Checked);
|
||||
m_pUI->checkBox_Other->setCheckState(Qt::Checked);
|
||||
}
|
||||
void CCopyObjectDlg::Init()
|
||||
{
|
||||
first=1;
|
||||
WellNameList=DataHelper::GetAllWellName();
|
||||
m_pUI->comboBoxWell_Source->addItems(WellNameList);
|
||||
if(WellName==""&&WellNameList.size())WellName=WellNameList.at(0);
|
||||
WellRoundNameList=DataHelper::GetAllWellRoundName(WellName,WellRoundFileNameList);
|
||||
if(WellRoundFileName=="")WellRoundFileName=WellRoundFileNameList.at(0);
|
||||
m_pUI->comboBoxRound_Source->addItems(WellRoundNameList);
|
||||
//
|
||||
WellRoundNameList2=WellRoundNameList;
|
||||
WellRoundFileNameList2=WellRoundFileNameList;
|
||||
m_pUI->comboBoxWell_Dest->addItems(WellNameList);
|
||||
m_pUI->comboBoxRound_Dest->addItems(WellRoundNameList2);
|
||||
//
|
||||
for(int i=0;i<WellNameList.count();i++)
|
||||
{
|
||||
if(WellName==WellNameList.at(i))
|
||||
{
|
||||
m_pUI->comboBoxWell_Source->setCurrentIndex(i);
|
||||
m_pUI->comboBoxWell_Dest->setCurrentIndex(i);
|
||||
for(int j=0;j<WellRoundNameList.count();j++)
|
||||
{
|
||||
if(WellRoundFileName==WellRoundFileNameList.at(j))
|
||||
{
|
||||
m_pUI->comboBoxRound_Source->setCurrentIndex(j);
|
||||
m_pUI->comboBoxRound_Dest->setCurrentIndex(j);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
QStringList header;
|
||||
header<<"对象名称"<<"对象类型"<<"起始深度"<<"终止深度"<<"拷贝名称";
|
||||
m_pUI->tableWidget_Source->setColumnCount(5);
|
||||
m_pUI->tableWidget_Source->setHorizontalHeaderLabels(header);
|
||||
m_pUI->tableWidget_Source->horizontalHeader()->setStretchLastSection(true);
|
||||
//m_pUI->tableWidget_Source->horizontalHeader()->resizeSections(QHeaderView::Stretch);
|
||||
m_pUI->tableWidget_Source->setColumnWidth(0,120);
|
||||
for(int i=1;i<5;i++)m_pUI->tableWidget_Source->setColumnWidth(i,80);
|
||||
/*m_pUI->tableWidget_Source->setColumnWidth(1,100);
|
||||
m_pUI->tableWidget_Source->setColumnWidth(2,100);
|
||||
m_pUI->tableWidget_Source->setColumnWidth(3,80);*/
|
||||
//
|
||||
m_pUI->tableWidget_Dest->setColumnCount(4);
|
||||
m_pUI->tableWidget_Dest->setHorizontalHeaderLabels(header);
|
||||
m_pUI->tableWidget_Dest->horizontalHeader()->setStretchLastSection(true);
|
||||
m_pUI->tableWidget_Dest->setColumnWidth(0,120);
|
||||
m_pUI->tableWidget_Dest->setColumnWidth(1,100);
|
||||
m_pUI->tableWidget_Dest->setColumnWidth(2,100);
|
||||
m_pUI->tableWidget_Dest->setColumnWidth(3,80);
|
||||
first=0;
|
||||
}
|
||||
void CCopyObjectDlg::slotChangeSourceWell(int item)
|
||||
{
|
||||
if(first)return;
|
||||
if(WellNameList.size())WellName=WellNameList.at(item);
|
||||
WellRoundNameList=DataHelper::GetAllWellRoundName(WellName,WellRoundFileNameList);
|
||||
//WellRoundFileName=WellRoundFileNameList.at(0);
|
||||
disconnect(m_pUI->comboBoxRound_Source, SIGNAL(currentIndexChanged(int)),this, SLOT(slotChangeSourceRound(int)));
|
||||
m_pUI->comboBoxRound_Source->clear();
|
||||
connect(m_pUI->comboBoxRound_Source, SIGNAL(currentIndexChanged(int)),this, SLOT(slotChangeSourceRound(int)));
|
||||
m_pUI->comboBoxRound_Source->addItems(WellRoundNameList);
|
||||
m_pUI->comboBoxRound_Source->setCurrentIndex(0);
|
||||
}
|
||||
void CCopyObjectDlg::slotChangeSourceRound(int item)
|
||||
{
|
||||
QString FileName=WellRoundFileNameList.at(item);
|
||||
CLogIO *mrw=new CLogIO();
|
||||
if(!mrw->Open(FileName.toStdString().c_str(),CSlfIO::modeReadWrite))
|
||||
{
|
||||
delete mrw;
|
||||
QMessageBox::warning(NULL,"提示","打开文件"+FileName+"错误");
|
||||
return ;
|
||||
}
|
||||
int ObjectNumber=mrw->GetObjectCount();
|
||||
Curve_Info.clear();
|
||||
Wave_Info.clear();
|
||||
ParName.clear();
|
||||
TableName.clear();
|
||||
OtherName.clear();
|
||||
char Name[200];
|
||||
for(int i=0;i<ObjectNumber;i++)
|
||||
{
|
||||
if(mrw->GetObjectStatus(i)!=OBJECT_NORMAL)continue;
|
||||
mrw->GetObjectName(i,Name);
|
||||
if(strcmp(Name,"井基本信息")==0)continue;
|
||||
short Attribute,SubAttribute;
|
||||
Attribute=mrw->GetObjectType(i);
|
||||
if(Attribute==CURVE_OBJECT)
|
||||
{
|
||||
Slf_CURVE cInfo;
|
||||
int index=mrw->OpenCurve(Name);
|
||||
if(index<0) {
|
||||
continue;
|
||||
}
|
||||
mrw->GetCurveInfo(index,&cInfo);
|
||||
Curve_Info.push_back(cInfo);
|
||||
mrw->CloseCurve(index);
|
||||
}
|
||||
else if(Attribute==WAVE_OBJECT)
|
||||
{
|
||||
Slf_WAVE cInfo;
|
||||
int index=mrw->OpenWave(Name);
|
||||
if(index<0) {
|
||||
continue;
|
||||
}
|
||||
mrw->GetWaveInfo(index,&cInfo);
|
||||
Wave_Info.push_back(cInfo);
|
||||
mrw->CloseWave(index);
|
||||
}
|
||||
else if(Attribute==CARD_OBJECT)ParName.append(QString::fromLocal8Bit(Name));
|
||||
else if(Attribute==FMT_OBJECT||Attribute==TDT_OBJECT)OtherName.append(QString::fromLocal8Bit(Name));
|
||||
else TableName.append(QString::fromLocal8Bit(Name));
|
||||
}
|
||||
delete mrw;
|
||||
RefurbishSource();
|
||||
}
|
||||
void CCopyObjectDlg::RefurbishSource()
|
||||
{
|
||||
m_pUI->tableWidget_Source->clearContents();
|
||||
int RowCount=0;
|
||||
if(m_pUI->checkBox_Curve->checkState()==Qt::Checked)RowCount+=Curve_Info.size();
|
||||
if(m_pUI->checkBox_Wave->checkState()==Qt::Checked)RowCount+=Wave_Info.size();
|
||||
if(m_pUI->checkBox_Table->checkState()==Qt::Checked)RowCount+=TableName.size();
|
||||
if(m_pUI->checkBox_Stream->checkState()==Qt::Checked)RowCount+=ParName.size();
|
||||
if(m_pUI->checkBox_Other->checkState()==Qt::Checked)RowCount+=OtherName.size();
|
||||
m_pUI->tableWidget_Source->setColumnCount(5);
|
||||
m_pUI->tableWidget_Source->setRowCount(RowCount);
|
||||
int row=0;
|
||||
if(m_pUI->checkBox_Curve->checkState()==Qt::Checked)
|
||||
{
|
||||
for(int i=0;i<Curve_Info.size();i++)
|
||||
{
|
||||
m_pUI->tableWidget_Source->setItem(i,0,new QTableWidgetItem(QString(QLatin1String(Curve_Info[i].Name))));
|
||||
m_pUI->tableWidget_Source->setItem(i,1,new QTableWidgetItem(QString("常规曲线")));
|
||||
m_pUI->tableWidget_Source->setItem(i,2,new QTableWidgetItem(QString::number(Curve_Info[i].StartDepth)));
|
||||
m_pUI->tableWidget_Source->setItem(i,3,new QTableWidgetItem(QString::number(Curve_Info[i].EndDepth)));
|
||||
m_pUI->tableWidget_Source->setItem(i,4,new QTableWidgetItem(QString(QLatin1String(Curve_Info[i].Name))));
|
||||
m_pUI->tableWidget_Source->item(i,0)->setCheckState(Qt::Checked);
|
||||
}
|
||||
row+=Curve_Info.size();
|
||||
}
|
||||
if(m_pUI->checkBox_Wave->checkState()==Qt::Checked)
|
||||
{
|
||||
for(int i=0;i<Wave_Info.size();i++)
|
||||
{
|
||||
m_pUI->tableWidget_Source->setItem(row+i,0,new QTableWidgetItem(QString(QLatin1String(Wave_Info[i].Name))));
|
||||
m_pUI->tableWidget_Source->setItem(row+i,1,new QTableWidgetItem(QString("波列曲线")));
|
||||
m_pUI->tableWidget_Source->setItem(row+i,2,new QTableWidgetItem(QString::number(Wave_Info[i].StartDepth)));
|
||||
m_pUI->tableWidget_Source->setItem(row+i,3,new QTableWidgetItem(QString::number(Wave_Info[i].EndDepth)));
|
||||
m_pUI->tableWidget_Source->item(row+i,0)->setCheckState(Qt::Checked);
|
||||
}
|
||||
row+=Wave_Info.size();
|
||||
}
|
||||
if(m_pUI->checkBox_Table->checkState()==Qt::Checked)
|
||||
{
|
||||
for(int i=0;i<TableName.size();i++)
|
||||
{
|
||||
m_pUI->tableWidget_Source->setItem(row+i,0,new QTableWidgetItem(TableName.at(i)));
|
||||
m_pUI->tableWidget_Source->setItem(row+i,1,new QTableWidgetItem(QString("数据表")));
|
||||
m_pUI->tableWidget_Source->item(row+i,0)->setCheckState(Qt::Checked);
|
||||
}
|
||||
row+=TableName.size();
|
||||
}
|
||||
if(m_pUI->checkBox_Stream->checkState()==Qt::Checked)
|
||||
{
|
||||
for(int i=0;i<ParName.size();i++)
|
||||
{
|
||||
m_pUI->tableWidget_Source->setItem(row+i,0,new QTableWidgetItem(ParName.at(i)));
|
||||
m_pUI->tableWidget_Source->setItem(row+i,1,new QTableWidgetItem(QString("参数对象")));
|
||||
m_pUI->tableWidget_Source->item(row+i,0)->setCheckState(Qt::Checked);
|
||||
}
|
||||
row+=ParName.size();
|
||||
}
|
||||
if(m_pUI->checkBox_Other->checkState()==Qt::Checked)
|
||||
{
|
||||
for(int i=0;i<OtherName.size();i++)
|
||||
{
|
||||
m_pUI->tableWidget_Source->setItem(row+i,0,new QTableWidgetItem(OtherName.at(i)));
|
||||
m_pUI->tableWidget_Source->setItem(row+i,1,new QTableWidgetItem(QString("其他数据")));
|
||||
m_pUI->tableWidget_Source->item(row+i,0)->setCheckState(Qt::Checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
void CCopyObjectDlg::slotSelAll()
|
||||
{
|
||||
for(int i=0;i<m_pUI->tableWidget_Source->rowCount();i++)m_pUI->tableWidget_Source->item(i,0)->setCheckState(Qt::Checked);
|
||||
}
|
||||
void CCopyObjectDlg::slotNotSelAll()
|
||||
{
|
||||
for(int i=0;i<m_pUI->tableWidget_Source->rowCount();i++)m_pUI->tableWidget_Source->item(i,0)->setCheckState(Qt::Unchecked);
|
||||
}
|
||||
void CCopyObjectDlg::slotReverseSel()
|
||||
{
|
||||
for(int i=0;i<m_pUI->tableWidget_Source->rowCount();i++)
|
||||
{
|
||||
Qt::CheckState eState= m_pUI->tableWidget_Source->item(i,0)->checkState();
|
||||
if (eState==Qt::Checked)m_pUI->tableWidget_Source->item(i,0)->setCheckState(Qt::Unchecked);
|
||||
else m_pUI->tableWidget_Source->item(i,0)->setCheckState(Qt::Checked);
|
||||
}
|
||||
}
|
||||
//dest
|
||||
void CCopyObjectDlg::slotChangeDestWell(int item)
|
||||
{
|
||||
if(first)return;
|
||||
WellName=WellNameList.at(item);
|
||||
WellRoundNameList2=DataHelper::GetAllWellRoundName(WellName,WellRoundFileNameList2);
|
||||
//WellRoundFileName=WellRoundFileNameList.at(0);
|
||||
disconnect(m_pUI->comboBoxRound_Dest, SIGNAL(currentIndexChanged(int)),this, SLOT(slotChangeDestRound(int)));
|
||||
m_pUI->comboBoxRound_Dest->clear();
|
||||
connect(m_pUI->comboBoxRound_Dest, SIGNAL(currentIndexChanged(int)),this, SLOT(slotChangeDestRound(int)));
|
||||
m_pUI->comboBoxRound_Dest->addItems(WellRoundNameList2);
|
||||
m_pUI->comboBoxRound_Dest->setCurrentIndex(0);
|
||||
}
|
||||
void CCopyObjectDlg::slotChangeDestRound(int item)
|
||||
{
|
||||
QString FileName=WellRoundFileNameList2.at(item);
|
||||
CLogIO *mrw=new CLogIO();
|
||||
if(!mrw->Open(FileName.toStdString().c_str(),CSlfIO::modeReadWrite))
|
||||
{
|
||||
delete mrw;
|
||||
QMessageBox::warning(NULL,"提示","打开文件"+FileName+"错误");
|
||||
return ;
|
||||
}
|
||||
int ObjectNumber=mrw->GetObjectCount();
|
||||
Curve_Info2.clear();
|
||||
Wave_Info2.clear();
|
||||
ParName2.clear();
|
||||
TableName2.clear();
|
||||
OtherName2.clear();
|
||||
char Name[200];
|
||||
for(int i=0;i<ObjectNumber;i++)
|
||||
{
|
||||
if(mrw->GetObjectStatus(i)!=OBJECT_NORMAL)continue;
|
||||
mrw->GetObjectName(i,Name);
|
||||
if(strcmp(Name,"井基本信息")==0)continue;
|
||||
short Attribute,SubAttribute;
|
||||
Attribute=mrw->GetObjectType(i);
|
||||
if(Attribute==CURVE_OBJECT)
|
||||
{
|
||||
Slf_CURVE cInfo;
|
||||
int index=mrw->OpenCurve(Name);
|
||||
if(index<0) {
|
||||
continue;
|
||||
}
|
||||
mrw->GetCurveInfo(index,&cInfo);
|
||||
Curve_Info2.push_back(cInfo);
|
||||
}
|
||||
else if(Attribute==WAVE_OBJECT)
|
||||
{
|
||||
Slf_WAVE cInfo;
|
||||
int index=mrw->OpenWave(Name);
|
||||
mrw->GetWaveInfo(index,&cInfo);
|
||||
Wave_Info2.push_back(cInfo);
|
||||
}
|
||||
else if(Attribute==CARD_OBJECT)ParName2.append(QString::fromLocal8Bit(Name));
|
||||
else if(Attribute==FMT_OBJECT||Attribute==TDT_OBJECT)OtherName2.append(QString::fromLocal8Bit(Name));
|
||||
else TableName2.append(QString::fromLocal8Bit(Name));
|
||||
}
|
||||
delete mrw;
|
||||
RefurbishDest();
|
||||
}
|
||||
void CCopyObjectDlg::RefurbishDest()
|
||||
{
|
||||
m_pUI->tableWidget_Dest->clearContents();
|
||||
int RowCount=0;
|
||||
if(m_pUI->checkBox_Curve->checkState()==Qt::Checked)RowCount+=Curve_Info2.size();
|
||||
if(m_pUI->checkBox_Wave->checkState()==Qt::Checked)RowCount+=Wave_Info2.size();
|
||||
if(m_pUI->checkBox_Table->checkState()==Qt::Checked)RowCount+=TableName2.size();
|
||||
if(m_pUI->checkBox_Stream->checkState()==Qt::Checked)RowCount+=ParName2.size();
|
||||
if(m_pUI->checkBox_Other->checkState()==Qt::Checked)RowCount+=OtherName2.size();
|
||||
m_pUI->tableWidget_Dest->setColumnCount(4);
|
||||
m_pUI->tableWidget_Dest->setRowCount(RowCount);
|
||||
int row=0;
|
||||
if(m_pUI->checkBox_Curve->checkState()==Qt::Checked)
|
||||
{
|
||||
for(int i=0;i<Curve_Info2.size();i++)
|
||||
{
|
||||
m_pUI->tableWidget_Dest->setItem(i,0,new QTableWidgetItem(QString(QLatin1String(Curve_Info2[i].Name))));
|
||||
m_pUI->tableWidget_Dest->setItem(i,1,new QTableWidgetItem(QString("常规曲线")));
|
||||
m_pUI->tableWidget_Dest->setItem(i,2,new QTableWidgetItem(QString::number(Curve_Info2[i].StartDepth)));
|
||||
m_pUI->tableWidget_Dest->setItem(i,3,new QTableWidgetItem(QString::number(Curve_Info2[i].EndDepth)));
|
||||
//m_pUI->tableWidget_Dest->item(i,0)->setCheckState(Qt::Checked);
|
||||
}
|
||||
row+=Curve_Info2.size();
|
||||
}
|
||||
if(m_pUI->checkBox_Wave->checkState()==Qt::Checked)
|
||||
{
|
||||
for(int i=0;i<Wave_Info2.size();i++)
|
||||
{
|
||||
m_pUI->tableWidget_Dest->setItem(row+i,0,new QTableWidgetItem(QString(QLatin1String(Wave_Info2[i].Name))));
|
||||
m_pUI->tableWidget_Dest->setItem(row+i,1,new QTableWidgetItem(QString("波列曲线")));
|
||||
m_pUI->tableWidget_Dest->setItem(row+i,2,new QTableWidgetItem(QString::number(Wave_Info2[i].StartDepth)));
|
||||
m_pUI->tableWidget_Dest->setItem(row+i,3,new QTableWidgetItem(QString::number(Wave_Info2[i].EndDepth)));
|
||||
//m_pUI->tableWidget_Dest->item(row+i,0)->setCheckState(Qt::Checked);
|
||||
}
|
||||
row+=Wave_Info2.size();
|
||||
}
|
||||
if(m_pUI->checkBox_Table->checkState()==Qt::Checked)
|
||||
{
|
||||
for(int i=0;i<TableName2.size();i++)
|
||||
{
|
||||
m_pUI->tableWidget_Dest->setItem(row+i,0,new QTableWidgetItem(TableName2.at(i)));
|
||||
m_pUI->tableWidget_Dest->setItem(row+i,1,new QTableWidgetItem(QString("数据表")));
|
||||
//m_pUI->tableWidget_Dest->item(row+i,0)->setCheckState(Qt::Checked);
|
||||
}
|
||||
row+=TableName2.size();
|
||||
}
|
||||
if(m_pUI->checkBox_Stream->checkState()==Qt::Checked)
|
||||
{
|
||||
for(int i=0;i<ParName2.size();i++)
|
||||
{
|
||||
m_pUI->tableWidget_Dest->setItem(row+i,0,new QTableWidgetItem(ParName2.at(i)));
|
||||
m_pUI->tableWidget_Dest->setItem(row+i,1,new QTableWidgetItem(QString("参数对象")));
|
||||
//m_pUI->tableWidget_Dest->item(row+i,0)->setCheckState(Qt::Checked);
|
||||
}
|
||||
row+=ParName2.size();
|
||||
}
|
||||
if(m_pUI->checkBox_Other->checkState()==Qt::Checked)
|
||||
{
|
||||
for(int i=0;i<OtherName2.size();i++)
|
||||
{
|
||||
m_pUI->tableWidget_Dest->setItem(row+i,0,new QTableWidgetItem(OtherName2.at(i)));
|
||||
m_pUI->tableWidget_Dest->setItem(row+i,1,new QTableWidgetItem(QString("其他数据")));
|
||||
//m_pUI->tableWidget_Dest->item(row+i,0)->setCheckState(Qt::Checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CCopyObjectDlg::slotCheckCurve(){RefurbishSource();RefurbishDest();}
|
||||
void CCopyObjectDlg::slotCheckWave(){RefurbishSource();RefurbishDest();}
|
||||
void CCopyObjectDlg::slotCheckTable(){RefurbishSource();RefurbishDest();}
|
||||
void CCopyObjectDlg::slotCheckPar(){RefurbishSource();RefurbishDest();}
|
||||
void CCopyObjectDlg::slotCheckOther(){RefurbishSource();;RefurbishDest();}
|
||||
void CCopyObjectDlg::slotCopy()
|
||||
{
|
||||
int roundItem=m_pUI->comboBoxRound_Dest->currentIndex();
|
||||
bool ok;
|
||||
float sdep=m_pUI->lineEdit_Sdep->text().toFloat(&ok);
|
||||
if(!ok){
|
||||
QMessageBox::warning(NULL,"提示","拷贝深度范围不正确:起始深度必须是数值\r\n请修改后再执行拷贝");
|
||||
return ;
|
||||
}
|
||||
float edep=m_pUI->lineEdit_Edep->text().toFloat(&ok);
|
||||
if(!ok){
|
||||
QMessageBox::warning(NULL,"提示","拷贝深度范围不正确:终止深度必须是数值\r\n请修改后再执行拷贝");
|
||||
return ;
|
||||
}
|
||||
if(edep!=-9999.&&edep<sdep)
|
||||
{
|
||||
QMessageBox::warning(NULL,"提示","拷贝深度范围不正确:终止深度必须大于起始深度或者等于-9999.\r\n请修改后再执行拷贝");
|
||||
return ;
|
||||
}
|
||||
QString SourceFile=WellRoundFileNameList.at(m_pUI->comboBoxRound_Source->currentIndex());
|
||||
QString DestFile=WellRoundFileNameList2.at(m_pUI->comboBoxRound_Dest->currentIndex());
|
||||
CLogIO *mrw=new CLogIO();
|
||||
mrw->Open(SourceFile.toStdString().c_str(),CSlfIO::modeRead);
|
||||
CLogIO *mrw2=new CLogIO();
|
||||
mrw2->Open(DestFile.toStdString().c_str(),CSlfIO::modeReadWrite);
|
||||
int mode=m_pUI->comboBox_Mode->currentIndex();
|
||||
|
||||
QString sName,TypeName,sNewName;
|
||||
char Name[64],NewName[64];
|
||||
for(int i=0;i<m_pUI->tableWidget_Source->rowCount();i++)
|
||||
{
|
||||
if(m_pUI->tableWidget_Source->item(i,0)->checkState()==Qt::Unchecked)continue;
|
||||
sName=m_pUI->tableWidget_Source->item(i,0)->text();
|
||||
|
||||
int len=strlen(sName.toStdString().c_str());
|
||||
strncpy(Name,sName.toStdString().c_str(),len);
|
||||
Name[len]=0;
|
||||
if(m_pUI->tableWidget_Source->item(i,4)) {
|
||||
sNewName=m_pUI->tableWidget_Source->item(i,4)->text();
|
||||
}
|
||||
else sNewName=Name;
|
||||
len=strlen(sNewName.toStdString().c_str());
|
||||
strncpy(NewName,sNewName.toStdString().c_str(),len);
|
||||
NewName[len]=0;
|
||||
if(m_pUI->tableWidget_Source->item(i,1)) {
|
||||
TypeName=m_pUI->tableWidget_Source->item(i,1)->text();
|
||||
}
|
||||
else TypeName="";
|
||||
int index=mrw2->FindObjectName(NewName);
|
||||
if(index>=0)
|
||||
{
|
||||
if(mode==0)//替换
|
||||
{
|
||||
mrw2->DiscardObject(NewName);
|
||||
index=-1;
|
||||
}
|
||||
else if(mode==2)//另存 //continue;//放弃
|
||||
{
|
||||
QString name=sNewName+"_";
|
||||
for(int j=0;j<100;j++)
|
||||
{
|
||||
sNewName=name+QString::number(j+1);
|
||||
len=strlen(sNewName.toStdString().c_str());
|
||||
strncpy(NewName,sNewName.toStdString().c_str(),len);
|
||||
NewName[len]=0;
|
||||
index=mrw2->FindObjectName(NewName);
|
||||
if(index<0)break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(index<0)
|
||||
{
|
||||
if(TypeName=="数据表"||TypeName=="参数对象"||TypeName=="其他数据")
|
||||
{
|
||||
bool ok=mrw2->CopyFromFile((CSlfIO &)(*mrw),Name,NewName);
|
||||
int h=0;
|
||||
}
|
||||
else if(TypeName=="常规曲线")
|
||||
{
|
||||
Slf_CURVE Info;
|
||||
int ind1=mrw->OpenCurve(Name);
|
||||
if(ind1<0) {
|
||||
continue;
|
||||
}
|
||||
mrw->GetCurveInfo(ind1,&Info);
|
||||
if(sdep==-9999&&edep==-9999)/*
|
||||
||(sdep<=Info.StartDepth&&edep>=Info.EndDepth))*/
|
||||
{//全井段拷贝
|
||||
mrw->CloseCurve(ind1);
|
||||
mrw2->CopyFromFile((CSlfIO &)(*mrw),Name,NewName);
|
||||
}
|
||||
else
|
||||
{
|
||||
//分段拷贝
|
||||
Info.StartDepth=sdep;Info.EndDepth=edep;
|
||||
strcpy(Info.Name,NewName);
|
||||
strcpy(Info.AliasName,NewName);
|
||||
int ind2=mrw2->OpenCurve(&Info);
|
||||
if(ind2<0)
|
||||
{
|
||||
mrw->CloseCurve(ind1);
|
||||
QMessageBox::warning(NULL,"提示","目标文件中产生曲线"+sName+"失败\r\n该曲线不能进行拷贝");
|
||||
continue ;
|
||||
}
|
||||
DWORD count=(edep-sdep)/Info.DepLevel+1.5;
|
||||
MyDataTypeEnum vVdl;
|
||||
vVdl.vchar=new char[count*Info.CodeLen];
|
||||
mrw->ReadCurve(ind1,sdep,count,(void *)vVdl.vchar);
|
||||
mrw2->WriteCurve(ind2,sdep,count,(void *)vVdl.vchar);
|
||||
mrw->CloseCurve(ind1);
|
||||
mrw2->CloseCurve(ind2);
|
||||
}
|
||||
}
|
||||
else if(TypeName=="波列曲线")
|
||||
{
|
||||
Slf_WAVE Info;
|
||||
int ind1=mrw->OpenWave(Name);
|
||||
mrw->GetWaveInfo(ind1,&Info);
|
||||
if(sdep==-9999&&edep==-9999)
|
||||
/*||(sdep<=Info.StartDepth&&edep>=Info.EndDepth))*/
|
||||
{//全井段拷贝
|
||||
mrw->CloseWave(ind1);
|
||||
mrw2->CopyFromFile((CSlfIO &)(*mrw),Name,NewName);
|
||||
}
|
||||
else
|
||||
{
|
||||
//分段拷贝
|
||||
float outsdep=sdep/*Info.StartDepth*/,outedep=edep/*Info.EndDepth*/;
|
||||
if(sdep>outsdep)outsdep=sdep;
|
||||
if(sdep>outsdep&&sdep<outedep)outsdep=sdep;
|
||||
if(edep>outsdep&&edep<outedep)outedep=edep;
|
||||
Info.StartDepth=outsdep;Info.EndDepth=outedep;
|
||||
strcpy(Info.Name,NewName);
|
||||
strcpy(Info.AliasName,NewName);
|
||||
int ind2=mrw2->OpenWave(&Info);
|
||||
if(ind2<0)
|
||||
{
|
||||
mrw->CloseWave(ind1);
|
||||
QMessageBox::warning(NULL,"提示","目标文件中产生波列曲线"+sName+"失败\r\n该波列曲线不能进行拷贝");
|
||||
continue ;
|
||||
}
|
||||
DWORD count=(outedep-outsdep)/Info.DepLevel+1.5;
|
||||
MyDataTypeEnum vVdl;
|
||||
vVdl.vchar=new char[count*Info.CodeLen*Info.ArrayNum*Info.TimeSamples];
|
||||
mrw->ReadWave(ind1,outsdep,count,(void *)vVdl.vchar);
|
||||
mrw2->WriteWave(ind2,outsdep,count,(void *)vVdl.vchar);
|
||||
mrw->CloseWave(ind1);
|
||||
mrw2->CloseWave(ind2);
|
||||
}
|
||||
}
|
||||
}
|
||||
else//合并
|
||||
{
|
||||
if(TypeName=="常规曲线")
|
||||
{
|
||||
Slf_CURVE Info,Info2;
|
||||
int ind1=mrw->OpenCurve(Name);
|
||||
if(index<0) {
|
||||
continue;
|
||||
}
|
||||
mrw->GetCurveInfo(ind1,&Info);
|
||||
float outsdep=0,outedep=0;
|
||||
if(sdep==-9999&&edep==-9999)
|
||||
{
|
||||
outsdep=Info.StartDepth,outedep=Info.EndDepth;
|
||||
// if(sdep>outsdep&&sdep<outedep)outsdep=sdep;
|
||||
// if(edep>outsdep&&edep<outedep)outedep=edep;
|
||||
}
|
||||
else {
|
||||
outsdep=sdep,outedep=edep;
|
||||
if(sdep>outsdep&&sdep<outedep)outsdep=sdep;
|
||||
if(edep>outsdep&&edep<outedep)outedep=edep;
|
||||
}
|
||||
int ind2=mrw2->OpenCurve(NewName);
|
||||
if(ind2<0)
|
||||
{
|
||||
mrw->CloseCurve(ind1);
|
||||
QMessageBox::warning(NULL,"提示","目标文件中打开曲线"+sNewName+"失败\r\n该曲线不能进行拷贝");
|
||||
continue ;
|
||||
}
|
||||
mrw2->GetCurveInfo(ind2,&Info2);
|
||||
DWORD count=(outedep-outsdep)/Info2.DepLevel+1.5;
|
||||
float *val;
|
||||
val=new float[count];
|
||||
if(Info.DepLevel==Info2.DepLevel)
|
||||
{
|
||||
mrw->ReadCurve(ind1,outsdep,count,&val[0]);
|
||||
mrw2->WriteCurve(ind2,outsdep,count,&val[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
for(int m=0;m<count;m++)mrw->ReadCurve(ind1,outsdep+Info2.DepLevel,1,&val[m]);
|
||||
mrw2->WriteCurve(ind2,outsdep+Info2.DepLevel,count,&val[0]);
|
||||
}
|
||||
delete []val;
|
||||
mrw->CloseCurve(ind1);
|
||||
mrw2->CloseCurve(ind2);
|
||||
}
|
||||
else if(TypeName=="波列曲线")
|
||||
{
|
||||
Slf_WAVE Info,Info2;
|
||||
int ind1=mrw->OpenWave(Name);
|
||||
mrw->GetWaveInfo(ind1,&Info);
|
||||
float outsdep=0,outedep=0;
|
||||
if(sdep==-9999&&edep==-9999)
|
||||
{
|
||||
outsdep=Info.StartDepth,outedep=Info.EndDepth;
|
||||
// if(sdep>outsdep&&sdep<outedep)outsdep=sdep;
|
||||
// if(edep>outsdep&&edep<outedep)outedep=edep;
|
||||
}
|
||||
else {
|
||||
outsdep=sdep,outedep=edep;
|
||||
if(sdep>outsdep&&sdep<outedep)outsdep=sdep;
|
||||
if(edep>outsdep&&edep<outedep)outedep=edep;
|
||||
}
|
||||
|
||||
// float outsdep=Info.StartDepth,outedep=Info.EndDepth;
|
||||
// if(sdep>outsdep&&sdep<outedep)outsdep=sdep;
|
||||
// if(edep>outsdep&&edep<outedep)outedep=edep;
|
||||
int ind2=mrw2->OpenWave(NewName);
|
||||
if(ind2<0)
|
||||
{
|
||||
mrw->CloseWave(ind1);
|
||||
QMessageBox::warning(NULL,"提示","目标文件中打开波列曲线"+sNewName+"失败\r\n该波列曲线不能进行拷贝");
|
||||
continue ;
|
||||
}
|
||||
mrw2->GetWaveInfo(ind2,&Info2);
|
||||
if(Info.ArrayNum*Info.TimeSamples!=Info2.ArrayNum*Info2.TimeSamples)
|
||||
{
|
||||
mrw->CloseWave(ind1);
|
||||
mrw2->CloseWave(ind2);
|
||||
QMessageBox::warning(NULL,"提示","源文件中的波列曲线"+sName+"和目标文件中的曲线维数不同\r\n不能进行拷贝");
|
||||
continue ;
|
||||
}
|
||||
DWORD count=(outedep-outsdep)/Info2.DepLevel+1.5;
|
||||
float *val;
|
||||
val=new float[count*Info.ArrayNum*Info.TimeSamples];
|
||||
if(Info.DepLevel==Info2.DepLevel)
|
||||
{
|
||||
mrw->ReadWave(ind1,outsdep,count,&val[0]);
|
||||
mrw2->WriteWave(ind2,outsdep,count,&val[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
for(int m=0;m<count;m++)mrw->ReadWave(ind1,outsdep+Info2.DepLevel,1,&val[m*Info.TimeSamples]);
|
||||
mrw2->WriteWave(ind2,outsdep+Info2.DepLevel,count,&val[0]);
|
||||
}
|
||||
mrw->CloseWave(ind1);
|
||||
mrw2->CloseWave(ind2);
|
||||
delete []val;
|
||||
}
|
||||
else if(TypeName=="参数对象")
|
||||
{
|
||||
int ind1=mrw->OpenStream(Name);
|
||||
int ind2=mrw2->OpenStream(NewName);
|
||||
if(ind2<0)
|
||||
{
|
||||
QMessageBox::warning(NULL,"提示","目标文件中打开参数对象"+sNewName+"失败\r\n该对象不能进行拷贝");
|
||||
continue ;
|
||||
}
|
||||
DWORD len=mrw->GetSlfStreamLength(ind1);
|
||||
DWORD len2=mrw2->GetSlfStreamLength(ind2);
|
||||
char *buf=new char[len+len2+1];
|
||||
DWORD bytes;
|
||||
mrw2->ReadStream(ind2,len2,&bytes,buf);
|
||||
mrw->ReadStream(ind1,len,&bytes,&buf[len2]);
|
||||
mrw2->SetStreamLength(ind2,len+len2);
|
||||
mrw2->WriteStream(ind2,len+len2,&bytes,buf);
|
||||
mrw->CloseStream(ind1);
|
||||
mrw2->CloseStream(ind2);
|
||||
}
|
||||
else//FMT\TDT\数据表
|
||||
{
|
||||
int ind1=mrw->OpenTable(Name);
|
||||
int ind2=mrw2->OpenTable(NewName);
|
||||
if(ind2<0)
|
||||
{
|
||||
mrw->CloseTable(ind1);
|
||||
QMessageBox::warning(NULL,"提示","目标文件中打开"+sNewName+"失败\r\n该对象不能进行拷贝");
|
||||
continue ;
|
||||
}
|
||||
int len1=mrw->GetTableRecordLength(ind1);
|
||||
int len2=mrw2->GetTableRecordLength(ind2);
|
||||
int count1=mrw->GetTableFieldCount(ind1);
|
||||
int count2=mrw2->GetTableFieldCount(ind2);
|
||||
if(len1!=len2||count1!=count2)
|
||||
{
|
||||
mrw->CloseTable(ind1);
|
||||
mrw2->CloseTable(ind2);
|
||||
QMessageBox::warning(NULL,"提示","目标文件中"+sNewName+"表结构和源文件不同\r\n该对象不能进行拷贝");
|
||||
continue ;
|
||||
}
|
||||
Slf_TABLE_FIELD *FieldInfo=new Slf_TABLE_FIELD[count1+1];
|
||||
mrw->GetTableFieldInfo(ind1,FieldInfo);
|
||||
int rec=mrw->GetTableRecordCount(ind1);
|
||||
int rec2=mrw2->GetTableRecordCount(ind2);
|
||||
char *buf1=new char[len1];
|
||||
char *buf2=new char[len1];
|
||||
char **buffer=new char *[rec2];
|
||||
for(int n=0;n<rec2;n++)buffer[n] = new char[len1];
|
||||
for(int m=0;m<rec2;m++)
|
||||
{
|
||||
mrw2->ReadTable(ind2,m+1,&buffer[m][0]);
|
||||
}
|
||||
int mm=0;
|
||||
for(int m=0;m<rec;m++)//源文件表记录
|
||||
{
|
||||
mrw->ReadTable(ind1,m+1,buf1);
|
||||
int IsEqual=true;
|
||||
bool IsExist=0;
|
||||
for(int n=0;n<rec2;n++)//目标文件表记录
|
||||
{///
|
||||
memcpy(buf2,&buffer[n][0],len1);
|
||||
int pos=0;
|
||||
IsEqual=true;
|
||||
for(int ii=0;ii<count1;ii++)
|
||||
{//
|
||||
if(FieldInfo[ii].RepCode==REPR_STRING)
|
||||
{
|
||||
if(strcmp(&buf1[pos],&buf2[pos])!=0)
|
||||
{
|
||||
IsEqual=false;break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(int k=0;k<FieldInfo[ii].Length;k++)
|
||||
{
|
||||
if(buf1[pos+k]!=buf2[pos+k])
|
||||
{
|
||||
IsEqual=false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
//if(!IsEqual) break;
|
||||
}
|
||||
if(!IsEqual) break;
|
||||
pos+=FieldInfo[ii].Length;
|
||||
}//
|
||||
if(IsEqual) break;
|
||||
}///
|
||||
if(IsEqual)continue;
|
||||
mrw2->WriteTable(ind2,mm+1+rec2,buf1);
|
||||
mm++;
|
||||
}
|
||||
delete buf1;delete buf2; delete FieldInfo;
|
||||
for(int n=0;n<rec2;n++)delete[] buffer[n];
|
||||
delete[] buffer;
|
||||
mrw->CloseTable(ind1);
|
||||
mrw2->CloseTable(ind2);
|
||||
}
|
||||
}
|
||||
}
|
||||
delete mrw;
|
||||
delete mrw2;
|
||||
slotChangeDestRound(roundItem);
|
||||
// //刷新树
|
||||
// QString m_wellName=m_pUI->comboBoxWell_Dest->currentText();
|
||||
// PaiObject *pObject=GetProject()->GetObjectByName( m_wellName,GetClassID_Well());
|
||||
// CObjWell *pWell = dynamic_cast<CObjWell *>( pObject );
|
||||
// if(pWell) {
|
||||
// QString m_wellRoundName=m_pUI->comboBoxRound_Dest->currentText();
|
||||
// QString pr=m_wellRoundName;
|
||||
// CObjWelllogRound* pWelllogRound=dynamic_cast<CObjWelllogRound*>( pWell->GetObjectByName(pr,GetClassID_WellLogRound()));
|
||||
// if(pWelllogRound) {
|
||||
// CDataTree::SetTree(pWelllogRound->GetSlfFileName(),pWell,pWelllogRound,NULL,1);
|
||||
// for(int i=0;i<m_pUI->tableWidget_Source->rowCount();i++)
|
||||
// {
|
||||
// if(m_pUI->tableWidget_Source->item(i,0)->checkState()==Qt::Unchecked)continue;
|
||||
// sName=m_pUI->tableWidget_Source->item(i,0)->text();
|
||||
// CObjWellLog *mLog=dynamic_cast<CObjWellLog*>( pWelllogRound->GetObjectByName(sName));
|
||||
// if(mLog&&mLog->IsLoaded()){
|
||||
// mLog->isLoad=false;
|
||||
// mLog->LoadFromSLF();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
END_OSGGRAPHICS_NAMESPACE
|
||||
70
DataMgr/src/CopyObjectDlg.h
Normal file
70
DataMgr/src/CopyObjectDlg.h
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
#ifndef COPYOBJECTDLG_H
|
||||
#define COPYOBJECTDLG_H
|
||||
|
||||
#pragma warning(push,0)
|
||||
#include <cassert>
|
||||
#include <QDialog>
|
||||
#include "ConsoleOutputWidget.h"
|
||||
#include "ui_CopyObject.h"
|
||||
#include "memrdwt.h"
|
||||
#include "OSGFramework.h"
|
||||
#pragma warning(pop)
|
||||
//extern char *DataTypea[];
|
||||
//extern int DataLengtha[];
|
||||
BEGIN_OSGGRAPHICS_NAMESPACE
|
||||
/**
|
||||
* @brief 表格选择列自定义委托
|
||||
*/
|
||||
class CCopyObjectDlg : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
CCopyObjectDlg(QWidget * parent=0, Qt::WindowFlags flags=0);
|
||||
~CCopyObjectDlg()
|
||||
{
|
||||
if(m_pUI) delete m_pUI;
|
||||
}
|
||||
Ui_CopyObject *m_pUI;
|
||||
void Init();
|
||||
void RefurbishSource();
|
||||
void RefurbishDest();
|
||||
private slots:
|
||||
/**
|
||||
*@brief 拷贝对象槽函数
|
||||
*/
|
||||
void slotCopy();
|
||||
void slotChangeSourceWell(int);
|
||||
void slotChangeSourceRound(int);
|
||||
void slotChangeDestWell(int);
|
||||
void slotChangeDestRound(int);
|
||||
void slotCheckCurve();
|
||||
void slotCheckWave();
|
||||
void slotCheckTable();
|
||||
void slotCheckPar();
|
||||
void slotCheckOther();
|
||||
void slotSelAll();
|
||||
void slotNotSelAll();
|
||||
void slotReverseSel();
|
||||
public:
|
||||
int curitemType;
|
||||
QString WellName,WellRoundName,WellRoundFileName;
|
||||
QStringList WellNameList,WellRoundNameList,WellRoundFileNameList;
|
||||
bool first;
|
||||
std::vector<Slf_CURVE> Curve_Info;
|
||||
std::vector<Slf_WAVE> Wave_Info;
|
||||
QStringList ParName;//参数流对象名称
|
||||
QStringList TableName;
|
||||
QStringList OtherName;
|
||||
//Dest
|
||||
std::vector<Slf_CURVE> Curve_Info2;
|
||||
std::vector<Slf_WAVE> Wave_Info2;
|
||||
QStringList WellRoundNameList2,WellRoundFileNameList2;
|
||||
QStringList ParName2;
|
||||
QStringList TableName2;
|
||||
QStringList OtherName2;
|
||||
};
|
||||
|
||||
END_OSGGRAPHICS_NAMESPACE;
|
||||
|
||||
#endif
|
||||
Loading…
Reference in New Issue
Block a user