logplus/DataMgr/src/CurvePropertyEdit.cpp

366 lines
17 KiB
C++
Raw Normal View History

2026-01-29 16:57:06 +08:00
#pragma warning(push,0)
// #include "Family.h"
#include <QMessageBox>
#include <QObjectList>
#include <QLineEdit>
// #include "ObjectEvent.h"
#include "CurvePropertyEdit.h"
#include "ui_CurvePropertyEdit.h"
#include "CStringType.h"
#include "LogIO.h"
// #include "ObjProject.h"
#include "Well.h"
#pragma warning(pop)
using namespace pai::ios::welllog;
BEGIN_OSGGRAPHICS_NAMESPACE
extern char *DataTypea[];
extern int DataLengtha[];
CCurvePropertyEditDlg::CCurvePropertyEditDlg(QWidget * parent, Qt::WindowFlags flags)
: QWidget(parent,flags)
{
m_pUI = new Ui_CurvePropertyEdit();
m_pUI->setupUi(this);
int w=width();
int h=height();
if(NULL != parent)
{
parent->setFixedSize(w,h);
}
QObject::connect(m_pUI->okbtn, SIGNAL(clicked()), this, SLOT(slotSave()));
QObject::connect(m_pUI->cancelbtn, SIGNAL(clicked()), this, SLOT(slotCancel()));
tab1=m_pUI->PropertyTab->widget(0);
tab2=m_pUI->PropertyTab->widget(1);
m_pUI->PropertyTab->setCurrentIndex(0);
m_pUI->cancelbtn->hide();
/* QObjectList ctls=tab1->children();
QLineEdit* liedit=tab1->findChild<QLineEdit*>("lineEdit_CurveName");
liedit->setText("11");
//foreach (QObject* ctl,ctls)
//{
// if (ctl->objectName()=="lineEdit_CurveName")
// {
// QLineEdit* liedit= (QLineEdit*)(ctl);
// liedit->setText("11");
// }
//}
QObjectList ctls2=tab2->children();
foreach (QObject* ctl,ctls2)
{
if (ctl->objectName()=="lineEdit2_ArrayNum")
{
QLineEdit* liedit= (QLineEdit*)(ctl);
liedit->setText("444");
}
}*/
}
void CCurvePropertyEditDlg::init()
{
//初始化
CLogIO logio(FileName.toStdString().c_str(),(unsigned int)CLogIO::modeReadWrite);
if(!logio.mFile) return ;
int c=11;
QString str;
for(int i=0;i<c;i++) {
if(!i)str+="[";
else str+="|[";
str+=Rep_STR[i];
str+="]";
};
QRegExp regExp("[A-Z0-9]{0,100}");//正则表达式第一位数字为a-z的数字第二位为1-9的数字后边是0-2位0-9的数字
if(Type==0)
{
m_pUI->PropertyTab->setTabEnabled(1,0);
m_pUI->PropertyTab->setStyleSheet("QTabBar::tab:disabled {width: 0; color: transparent;}");
Slf_CURVE info;
int index=logio.OpenCurve(CurveName.toStdString().c_str());
if(index<0) return;
logio.GetCurveInfo(index,&info);
logio.CloseCurve(index);
QLineEdit *lineEdit_CurveName=tab1->findChild<QLineEdit*>("lineEdit_CurveName");
QLineEdit *lineEdit_CurveName_2=tab1->findChild<QLineEdit*>("lineEdit_CurveName_2");
QLineEdit *lineEdit_CurveUnit=tab1->findChild<QLineEdit*>("lineEdit_CurveUnit");
QLineEdit *lineEdit_CurveUnit_2=tab1->findChild<QLineEdit*>("lineEdit_CurveUnit_2");
QLineEdit *lineEdit_DepthUnit=tab1->findChild<QLineEdit*>("lineEdit_DepthUnit");
QLineEdit *lineEdit_DepthUnit_2=tab1->findChild<QLineEdit*>("lineEdit_DepthUnit_2");
QLineEdit *lineEdit_Sdep=tab1->findChild<QLineEdit*>("lineEdit_Sdep");
QLineEdit *lineEdit_Edep=tab1->findChild<QLineEdit*>("lineEdit_Edep");
QLineEdit *lineEdit_Rlev=tab1->findChild<QLineEdit*>("lineEdit_Rlev");
QLineEdit *lineEdit_DataType=tab1->findChild<QLineEdit*>("lineEdit_DataType");
QLineEdit *lineEdit_Min=tab1->findChild<QLineEdit*>("lineEdit_Min");
QLineEdit *lineEdit_Max=tab1->findChild<QLineEdit*>("lineEdit_Max");
QLineEdit *lineEdit_DefVal=tab1->findChild<QLineEdit*>("lineEdit_DefVal");
lineEdit_CurveName->setText((QLatin1String(info.Name)));
QRegExp regExp("[A-Z0-9]{0,100}");//正则表达式第一位数字为a-z的数字第二位为1-9的数字后边是0-2位0-9的数字
lineEdit_CurveName->setValidator(new QRegExpValidator(regExp,this));
lineEdit_CurveName_2->setText(QString::fromLocal8Bit(info.AliasName));
lineEdit_CurveName_2->setValidator(new QRegExpValidator(regExp,this));
lineEdit_CurveUnit->setText(QLatin1String(info.Unit));
lineEdit_CurveUnit->setValidator(new QRegExpValidator(regExp,this));
lineEdit_CurveUnit_2->setText(QString::fromLocal8Bit(info.AliasUnit));//(QLatin1String(info.AliasUnit));
lineEdit_CurveUnit_2->setValidator(new QRegExpValidator(regExp,this));
lineEdit_DepthUnit->setText(QLatin1String(info.DepthUnit));
lineEdit_DepthUnit->setValidator(new QRegExpValidator(regExp,this));
lineEdit_DepthUnit_2->setText(QString::fromLocal8Bit(info.DepthHZUnit));
lineEdit_DepthUnit_2->setValidator(new QRegExpValidator(regExp,this));
lineEdit_Sdep->setText(QString("%1").arg(info.StartDepth));
lineEdit_Sdep->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
lineEdit_Edep->setText(QString("%1").arg(info.EndDepth));
lineEdit_Edep->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
lineEdit_Rlev->setText(QString("%1").arg(info.DepLevel));
lineEdit_Rlev->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
regExp=QRegExp(str);
lineEdit_DataType->setText(QLatin1String(Rep_STR[info.RepCode-1]));
lineEdit_Sdep->setValidator(new QRegExpValidator(regExp,this));
lineEdit_Min->setText(QString("%1").arg(info.MinValue));
lineEdit_Min->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
lineEdit_Max->setText(QString("%1").arg(info.MaxValue));
lineEdit_Max->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
lineEdit_DefVal->setText(QString("%1").arg(info.DefVal));
lineEdit_DefVal->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
}
else
{
int index=logio.OpenWave(CurveName.toStdString().c_str());
if(index<0) return;
Slf_WAVE info;
logio.GetWaveInfo(index,&info);
logio.CloseWave(index);
if(info.RepCode>12) return;
QLineEdit *lineEdit_CurveName=tab1->findChild<QLineEdit*>("lineEdit_CurveName");
QLineEdit *lineEdit_CurveName_2=tab1->findChild<QLineEdit*>("lineEdit_CurveName_2");
QLineEdit *lineEdit_CurveUnit=tab1->findChild<QLineEdit*>("lineEdit_CurveUnit");
QLineEdit *lineEdit_CurveUnit_2=tab1->findChild<QLineEdit*>("lineEdit_CurveUnit_2");
QLineEdit *lineEdit_DepthUnit=tab1->findChild<QLineEdit*>("lineEdit_DepthUnit");
QLineEdit *lineEdit_DepthUnit_2=tab1->findChild<QLineEdit*>("lineEdit_DepthUnit_2");
QLineEdit *lineEdit_Sdep=tab1->findChild<QLineEdit*>("lineEdit_Sdep");
QLineEdit *lineEdit_Edep=tab1->findChild<QLineEdit*>("lineEdit_Edep");
QLineEdit *lineEdit_Rlev=tab1->findChild<QLineEdit*>("lineEdit_Rlev");
QLineEdit *lineEdit_DataType=tab1->findChild<QLineEdit*>("lineEdit_DataType");
QLineEdit *lineEdit_Min=tab1->findChild<QLineEdit*>("lineEdit_Min");
QLineEdit *lineEdit_Max=tab1->findChild<QLineEdit*>("lineEdit_Max");
QLineEdit *lineEdit_DefVal=tab1->findChild<QLineEdit*>("lineEdit_DefVal");
lineEdit_CurveName->setText((QLatin1String(info.Name)));
lineEdit_CurveName->setValidator(new QRegExpValidator(regExp,this));
lineEdit_CurveName_2->setText(QString::fromLocal8Bit(info.AliasName));
lineEdit_CurveName_2->setValidator(new QRegExpValidator(regExp,this));
lineEdit_CurveUnit->setText(QLatin1String(info.Unit));
lineEdit_CurveUnit->setValidator(new QRegExpValidator(regExp,this));
lineEdit_CurveUnit_2->setText(QString::fromLocal8Bit(info.AliasUnit));
lineEdit_CurveUnit_2->setValidator(new QRegExpValidator(regExp,this));
lineEdit_DepthUnit->setText(QLatin1String(info.DepthUnit));
lineEdit_DepthUnit->setValidator(new QRegExpValidator(regExp,this));
lineEdit_DepthUnit_2->setText(QString::fromLocal8Bit(info.DepthHZUnit));
lineEdit_DepthUnit_2->setValidator(new QRegExpValidator(regExp,this));
lineEdit_Sdep->setText(QString("%1").arg(info.StartDepth));
lineEdit_Sdep->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
lineEdit_Edep->setText(QString("%1").arg(info.EndDepth));
lineEdit_Edep->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
lineEdit_Rlev->setText(QString("%1").arg(info.DepLevel));
lineEdit_Rlev->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
regExp=QRegExp(str);
lineEdit_DataType->setText(QLatin1String(Rep_STR[info.RepCode-1]));
lineEdit_Min->setText(QString("%1").arg(info.MinValue));
lineEdit_Min->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
lineEdit_Max->setText(QString("%1").arg(info.MaxValue));
lineEdit_Max->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
lineEdit_DefVal->setText(QString("%1").arg(info.DefVal));
lineEdit_DefVal->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
QLineEdit *lineEdit2_Name=tab2->findChild<QLineEdit*>("lineEdit2_Name");
QLineEdit *lineEdit2_Name1=tab2->findChild<QLineEdit*>("lineEdit2_Name1");
QLineEdit *lineEdit2_Unit=tab2->findChild<QLineEdit*>("lineEdit2_Unit");
QLineEdit *lineEdit2_Unit1=tab2->findChild<QLineEdit*>("lineEdit2_Unit1");
QLineEdit *lineEdit2_Start=tab2->findChild<QLineEdit*>("lineEdit2_Start");
QLineEdit *lineEdit2_Rlev2=tab2->findChild<QLineEdit*>("lineEdit2_Rlev2");
QLineEdit *lineEdit2_ArrayNum=tab2->findChild<QLineEdit*>("lineEdit2_ArrayNum");
QLineEdit *lineEdit2_Sample=tab2->findChild<QLineEdit*>("lineEdit2_Sample");
QLineEdit *lineEdit2_SampleTotal=tab2->findChild<QLineEdit*>("lineEdit2_SampleTotal");
QComboBox *comboBox2_Type=tab2->findChild<QComboBox*>("comboBox2_Type");
comboBox2_Type->addItem(QString::fromLocal8Bit("线性刻度"));
comboBox2_Type->addItem(QString::fromLocal8Bit("对数刻度"));
comboBox2_Type->addItem(QString::fromLocal8Bit("指数刻度"));
comboBox2_Type->setCurrentIndex(0);
QObject::connect(lineEdit2_ArrayNum, SIGNAL(textChanged(const QString &)), this, SLOT(sampleChanged(const QString &)));
QObject::connect(lineEdit2_Sample, SIGNAL(textChanged(const QString &)), this, SLOT(arrayChanged(const QString &)));
QRegExp regExp("[A-Za-z0-9]{0,100}");//正则表达式第一位数字为a-z的数字第二位为1-9的数字后边是0-2位0-9的数字
lineEdit2_Name->setText(QLatin1String(info.TimeName));
lineEdit2_Name->setValidator(new QRegExpValidator(regExp,this));
lineEdit2_Name1->setText(QString::fromLocal8Bit(info.TimeHZName));
lineEdit2_Name1->setValidator(new QRegExpValidator(regExp,this));
lineEdit2_Unit->setText(QLatin1String(info.TimeUnit));
lineEdit2_Unit->setValidator(new QRegExpValidator(regExp,this));
lineEdit2_Unit1->setText(QString::fromLocal8Bit(info.TimeHZUnit));
lineEdit2_Unit1->setValidator(new QRegExpValidator(regExp,this));
lineEdit2_Start->setText(QString("%1").arg(info.StartTime));
lineEdit2_Start->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
lineEdit2_Rlev2->setText(QString("%1").arg(info.TimeLevel));
lineEdit2_Rlev2->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
lineEdit2_ArrayNum->setText(QString("%1").arg(info.ArrayNum));
lineEdit2_ArrayNum->setValidator(new QIntValidator(0,9999999,this));
lineEdit2_Sample->setText(QString("%1").arg(info.TimeSamples));
lineEdit2_Sample->setValidator(new QIntValidator(0,9999999,this));
lineEdit2_SampleTotal->setText(QString("%1").arg(info.TimeSamples));
lineEdit2_SampleTotal->setValidator(new QIntValidator(0,99999999,this));
}
logio.Close();
}
void CCurvePropertyEditDlg::sampleChanged(const QString &str)
{
QLineEdit *lineEdit2_Sample=tab2->findChild<QLineEdit*>("lineEdit2_Sample");
QLineEdit *lineEdit2_SampleTotal=tab2->findChild<QLineEdit*>("lineEdit2_SampleTotal");
int TotalSample=lineEdit2_SampleTotal->text().toInt();
int mSample=lineEdit2_Sample->text().toInt();
if(TotalSample==0)return;
int arrayNum=str.toInt();
int sample=TotalSample;
if(sample!=TotalSample)
{
QMessageBox::warning(NULL,"提示","阵列数不是总元素个数的公约数,请重新输入");
QLineEdit *lineEdit2_ArrayNum=tab2->findChild<QLineEdit*>("lineEdit2_ArrayNum");
lineEdit2_ArrayNum->setText(QString::number(TotalSample/mSample));
}
else lineEdit2_Sample->setText(QString::number(sample));
}
void CCurvePropertyEditDlg::arrayChanged(const QString &str)
{
QLineEdit *lineEdit2_ArrayNum=tab2->findChild<QLineEdit*>("lineEdit2_ArrayNum");
QLineEdit *lineEdit2_SampleTotal=tab2->findChild<QLineEdit*>("lineEdit2_SampleTotal");
int TotalSample=lineEdit2_SampleTotal->text().toInt();
int mArrayNum=lineEdit2_ArrayNum->text().toInt();
if(TotalSample==0)return;
int sample=str.toInt();
int arrayNum=TotalSample/sample;
if(arrayNum*sample!=TotalSample)
{
QMessageBox::warning(this,"提示","您所输入的元素个数不是总元素个数的公约数,请重新输入");
QLineEdit *lineEdit2_Sample=tab2->findChild<QLineEdit*>("lineEdit2_Sample");
lineEdit2_Sample->setText(QString::number(TotalSample/mArrayNum));
}
else lineEdit2_ArrayNum->setText(QString::number(arrayNum));
}
void CCurvePropertyEditDlg::slotSave()
{
QLineEdit *lineEdit_CurveName=tab1->findChild<QLineEdit*>("lineEdit_CurveName");
QString Name=lineEdit_CurveName->text();
CLogIO logio(FileName.toStdString().c_str(),(unsigned int)CLogIO::modeReadWrite);
if(Name!=CurveName)
{
if(logio.FindObjectIndex(Name.toStdString().c_str())>=0)
{
QMessageBox::warning(this,"警告!","名称不能重复!");
return;
}
}
Slf_FILE_MESSAGE ms;
logio.GetFileMessage(ms);
if(Type==0)
{
Slf_CURVE info;
int index=logio.OpenCurve(CurveName.toStdString().c_str());
if(index<0) {
return;
}
logio.GetCurveInfo(index,&info);
QLineEdit *lineEdit_CurveName=tab1->findChild<QLineEdit*>("lineEdit_CurveName");
QLineEdit *lineEdit_CurveName_2=tab1->findChild<QLineEdit*>("lineEdit_CurveName_2");
QLineEdit *lineEdit_CurveUnit=tab1->findChild<QLineEdit*>("lineEdit_CurveUnit");
QLineEdit *lineEdit_CurveUnit_2=tab1->findChild<QLineEdit*>("lineEdit_CurveUnit_2");
QLineEdit *lineEdit_DepthUnit=tab1->findChild<QLineEdit*>("lineEdit_DepthUnit");
QLineEdit *lineEdit_DepthUnit_2=tab1->findChild<QLineEdit*>("lineEdit_DepthUnit_2");
QLineEdit *lineEdit_DefVal=tab1->findChild<QLineEdit*>("lineEdit_DefVal");
strcpy(info.Name,lineEdit_CurveName->text().toStdString().c_str());
strcpy(info.AliasName,lineEdit_CurveName_2->text().toStdString().c_str());
//汉字写回去不对了呀??????
strcpy(info.Unit,lineEdit_CurveUnit->text().toStdString().c_str());
strcpy(info.AliasUnit,lineEdit_CurveUnit_2->text().toStdString().c_str());
strcpy(info.DepthUnit,lineEdit_DepthUnit->text().toStdString().c_str());
strcpy(info.DepthHZUnit,lineEdit_DepthUnit_2->text().toStdString().c_str());
info.DefVal=lineEdit_DefVal->text().toFloat();
logio.SetCurveInfo(index,&info);
logio.CloseCurve(index);
}
else
{
int index=logio.OpenWave(CurveName.toStdString().c_str());
if(index<0) return;
Slf_WAVE info;
logio.GetWaveInfo(index,&info);
QLineEdit *lineEdit_CurveName=tab1->findChild<QLineEdit*>("lineEdit_CurveName");
QLineEdit *lineEdit_CurveName_2=tab1->findChild<QLineEdit*>("lineEdit_CurveName_2");
QLineEdit *lineEdit_CurveUnit=tab1->findChild<QLineEdit*>("lineEdit_CurveUnit");
QLineEdit *lineEdit_CurveUnit_2=tab1->findChild<QLineEdit*>("lineEdit_CurveUnit_2");
QLineEdit *lineEdit_DepthUnit=tab1->findChild<QLineEdit*>("lineEdit_DepthUnit");
QLineEdit *lineEdit_DepthUnit_2=tab1->findChild<QLineEdit*>("lineEdit_DepthUnit_2");
QLineEdit *lineEdit_DefVal=tab1->findChild<QLineEdit*>("lineEdit_DefVal");
strcpy(info.Name,lineEdit_CurveName->text().toStdString().c_str());
strcpy(info.AliasName,lineEdit_CurveName_2->text().toStdString().c_str());
strcpy(info.Unit,lineEdit_CurveUnit->text().toStdString().c_str());
strcpy(info.AliasUnit,lineEdit_CurveUnit_2->text().toStdString().c_str());
strcpy(info.DepthUnit,lineEdit_DepthUnit->text().toStdString().c_str());
strcpy(info.DepthHZUnit,lineEdit_DepthUnit_2->text().toStdString().c_str());
info.DefVal=lineEdit_DefVal->text().toFloat();
QLineEdit *lineEdit2_Name=tab2->findChild<QLineEdit*>("lineEdit2_Name");
QLineEdit *lineEdit2_Name1=tab2->findChild<QLineEdit*>("lineEdit2_Name1");
QLineEdit *lineEdit2_Unit=tab2->findChild<QLineEdit*>("lineEdit2_Unit");
QLineEdit *lineEdit2_Unit1=tab2->findChild<QLineEdit*>("lineEdit2_Unit1");
QLineEdit *lineEdit2_Start=tab2->findChild<QLineEdit*>("lineEdit2_Start");
QLineEdit *lineEdit2_Rlev2=tab2->findChild<QLineEdit*>("lineEdit2_Rlev2");
QLineEdit *lineEdit2_ArrayNum=tab2->findChild<QLineEdit*>("lineEdit2_ArrayNum");
QLineEdit *lineEdit2_Sample=tab2->findChild<QLineEdit*>("lineEdit2_Sample");
QLineEdit *lineEdit2_SampleTotal=tab2->findChild<QLineEdit*>("lineEdit2_SampleTotal");
QComboBox *comboBox2_Type=tab2->findChild<QComboBox*>("comboBox2_Type");
strcpy(info.TimeName,lineEdit2_Name->text().toStdString().c_str());
strcpy(info.TimeHZName,lineEdit2_Name1->text().toStdString().c_str());
strcpy(info.TimeUnit,lineEdit2_Unit->text().toStdString().c_str());
strcpy(info.TimeHZUnit,lineEdit2_Unit1->text().toStdString().c_str());
info.StartTime=lineEdit2_Start->text().toFloat();
info.TimeLevel=lineEdit2_Rlev2->text().toFloat();
info.ArrayNum=lineEdit2_ArrayNum->text().toInt();
info.TimeSamples=lineEdit2_Sample->text().toInt();
logio.SetWaveInfo(index,&info);
logio.CloseWave(index);
}
logio.Close();
// GetObjectEvent().OnDeAttchData(FileName,CurveName);
// GetObjectEvent().OnRefreshData(FileName,CurveName);
if(Name!=CurveName)
{
QStringList NodeNames;
NodeNames.push_back(ms.WellName);
NodeNames.push_back(FileName);
NodeNames.push_back(CurveName);
NodeNames.push_back(Name);
// PaiObject::m_EventAgent.ObjectPropertyChanged(GetProject(),"CurvePropertyEdit",NodeNames);
}
QMessageBox::information(this,"提示","保存成功!");
//accept();
}
/**
*@brief
*/
void CCurvePropertyEditDlg::slotCancel()
{
//reject ();
}
void CCurvePropertyEditDlg::closeEvent(QCloseEvent *)
{
emit signalsCloseed();
//throw std::logic_error("The method or operation is not implemented.");
}
END_OSGGRAPHICS_NAMESPACE