logplus/WellLogUI/src/CurvePropertyEdit.cpp
2025-10-29 17:23:30 +08:00

364 lines
19 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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 "ui_CurvePropertyEdit.h"
#pragma warning(pop)
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=12;
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.");
}