查看表格数据

This commit is contained in:
zhaolei 2025-11-10 16:35:40 +08:00
parent 298e0b1cf1
commit 8dcd7dd211
18 changed files with 3985 additions and 24 deletions

View File

@ -6,6 +6,7 @@
#include <QList>
#include <QPoint>
#include <QColor>
#include <QWheelEvent>
//#include "qmycustomplot.h"
class Q_DECL_EXPORT CallManage : public QObject
@ -37,6 +38,7 @@ signals:
void sig_CloseProject();//关闭项目
void sig_ShowCurve(QString strSlfName, QString strName);//曲线数据查看
void sig_ShowTable(QString strSlfName, QString strName);//表格数据查看
void sig_NewTrack(QString strUuid, QString strWellName, QString strSlfName, QString strLineName);//新建道
void sig_NewTrack_No_Line(QString strUuid, QString strWellName, QString strTrackName);//新建空白道,没有曲线

View File

@ -0,0 +1,430 @@
/**
* @file BaseObject.h
* @brief
* @date 2014-5-29
* @author: liyonggang
*/
#ifndef PAI_FRAME_OSGOBJECT_H
#define PAI_FRAME_OSGOBJECT_H
#pragma warning( push ,0)
#include <vector>
#include <QUuid>
#include "ObjectGenralFactory.h"
// #include "ObjectArchive.h"
// #include "PaiObject.h"
#include "DataObject.h"
// using namespace pai::objectmodel;
#pragma warning( pop )
BEGIN_OSGDATAMODEL_NAMESPACE;
/**
* @class sObjectClassIDKey
* @brief Object class ID
*/
struct OSGDATAMODEL_EXPORT sObjectClassIDKey
{
public:
sObjectClassIDKey();
sObjectClassIDKey( QUuid ObjectClassID );
bool operator !=( const sObjectClassIDKey& s );
bool operator< ( const sObjectClassIDKey& s ) const;
public:
QUuid m_ObjectClassID;
};
/**
* @class
*/
class OSGDATAMODEL_EXPORT CBaseObject
{
public:
CBaseObject()
{
// m_pPaiObject = NULL;
ghostName="";
// m_TemplateKey=QVariant();
};
virtual ~CBaseObject() {};
/**
* @brief DB Object
*/
virtual pai::ios::welllog::DataObject *GetDbObject() { return NULL;};
virtual CBaseObject * GetVecWindowDocument(){return NULL;};
static CObjectGenralFactory< sObjectClassIDKey,CBaseObject >& GetFatory();
/**
* @brief Object在数据树上的check状态
*/
void SetCheckState( Qt::CheckState state )
{
m_eCheckState = state;
// PaiObject::m_EventAgent.ObjectPropertyChanged( dynamic_cast<PaiObject*>(this),"checkstate",state);
}
Qt::CheckState GetCheckState()
{
return m_eCheckState ;
}
/**
* @brief
*/
// virtual bool Serialize( CObjectArchive &ar ) = 0;
virtual void Delete() = 0;
/**
* @brief Add a child object in general way.
* @param pChild the child object handle
* @param mountNow
*/
// virtual bool AddChild(PaiObject* pChild, bool mountNow = true) =0;
/**
* @brief iIndex之前插入一个孩子,iIndex
* @param iIndex
* @param pChild
*/
// virtual bool InsertChild(int iIndex,PaiObject* pChild)=0;
/**
* @brief Remove a child object in general way.
* @param pChild the child object handle
*/
// virtual bool RemoveChild(PaiObject* pChild, bool bDelete = false)=0;
/**
* @brief
*/
virtual void DeleteAllChild() = 0;
// PaiObject *GetPaiObject()
// {
// if( !m_pPaiObject )
// {
// m_pPaiObject = dynamic_cast<PaiObject *>( this );
// }
// return m_pPaiObject;
// }
/**
* @brief
*/
virtual CBaseObject *CloneObject();
//为了满足一条曲线测井图中多处显示的需求而来
//本质是复制一个对象并将其隐藏
virtual CBaseObject *GhostObject();
virtual void CopyFrom( CBaseObject *pOSGObjectOther );
/**
* @brief ID的孩子
* @param id id
*/
// virtual bool Contains(const QUuid& id);
/************************************************************************/
/* @brief 得到该对象的模板关键字例如井曲线对象的family名字 */
/************************************************************************/
// virtual void SetTemplateKey(QVariant TemplateKey);
// virtual QVariant GetTemplateKey();
//一个对象多处显示时需要有gohostname来区分和查找
//规则ghostName=name+_+Ghost+timeStamp
virtual QString GetGhostName(){return ghostName; };
virtual void SetGhostName(QString aGhostname){
ghostName=aGhostname;
};
//得到对数据对象的描述性信息,由各个子类实现
virtual QString GetDescription(){return "";};
protected:
Qt::CheckState m_eCheckState;
// PaiObject *m_pPaiObject;
private:
QString ghostName;
// QVariant m_TemplateKey;
};
#define DECLARE_COSGOBJECT_H \
virtual void Delete();\
virtual bool Serialize( CObjectArchive &ar );\
virtual bool AddChild(PaiObject* pChild, bool mountNow = true);\
virtual bool InsertChild(int iIndex,PaiObject* pChild);\
virtual bool RemoveChild(PaiObject* pChild, bool bDelete = false);\
virtual void DeleteAllChild();\
#define IMP_SERIALIZE_CPP( ClassName,BaseClassName)\
bool ClassName::Serialize( CObjectArchive &ar )\
{\
pai::ios::welllog::DataObject* pDbObject = GetDbObject();\
QFile *pFile = dynamic_cast<QFile *>( ar.GetDevice() );\
bool bToDisk = pFile ? true :false;\
if(ar.IsStoring())\
{\
BEGIN_WRITE_OBJECT( ar,1 );\
BEGIN_WRITE_BLOCK( ar, 1);\
if( bToDisk)\
{\
CPaiObjectHelper::SerializeDB( ar,pDbObject,this );\
}\
/*保存自己的信息*/ \
ar << GetID();\
ar << GetName();\
/*save 所有的孩子*/\
if( bToDisk)\
{\
QList<PaiObject*> lstChildren;\
GetChildren(lstChildren);\
int nChildCout = lstChildren.size();\
ar << nChildCout;\
for( long i = 0 ; i< nChildCout;++i )\
{\
CBaseObject* pChild = dynamic_cast<CBaseObject*>( lstChildren[i] );\
assert( pChild );\
ar << lstChildren[i] ->GetTypeID().toString();\
pChild->Serialize( ar );\
}\
}\
END_WRITE_BLOCK( ar, 1 );\
\
END_WRITE_OBJECT( ar );\
}\
else\
{\
BEGIN_READ_OBJECT( ar,1 );\
\
BEGIN_READ_BLOCK( 1 ); \
if( bToDisk)\
{\
\
CPaiObjectHelper::SerializeDB( ar,pDbObject,this );\
}\
\
/*加载自己的信息*/\
QString strTmp;\
ar >> strTmp; \
SetID(strTmp );\
QString strName;\
ar >> strName;\
SetName( strName);\
if( bToDisk)\
{\
/*加载所有的孩子*/\
DeleteAllChild();\
int nChildCout(0);\
ar >> nChildCout;\
for( long i = 0 ; i< nChildCout;++i )\
{ \
QApplication::processEvents();\
ar >> strTmp;\
QUuid classID = QUuid(strTmp);\
CBaseObject *pChild = GetFatory().CreateObject( classID );\
PaiObject *pPaiObject = dynamic_cast<PaiObject *>( pChild );\
CBaseObjectImpl *pChildImp = dynamic_cast<CBaseObjectImpl *>( pChild );\
if( pChildImp )\
{\
pChildImp->Init( classID );\
}\
if( pChild )\
{\
pChild->Serialize( ar );\
AddChild( pPaiObject );\
}else\
{\
assert( false);\
ar.SkipObject();\
}\
}\
}\
\
END_READ_BLOCK( 1 );\
\
END_READ_OBJECT( ar );\
}\
return true;\
}\
#define IMP_COSGOBJECT_CPP( ClassName,BaseClassName)\
void ClassName::Delete()\
{ \
DeleteAllChild();\
delete this;\
}\
\
\
bool ClassName::AddChild(PaiObject* pChild, bool mountNow )\
{ \
CObjProject::AddIDMap( pChild->GetID(),dynamic_cast<CBaseObject *>( pChild) );\
if(mountNow) return BaseClassName::AddChild( pChild,MountOnTree );\
else return BaseClassName::AddChild( pChild,MountNoTree );\
}\
\
bool ClassName::InsertChild(int iIndex,PaiObject* pChild)\
{\
CObjProject::AddIDMap( pChild->GetID(), dynamic_cast<CBaseObject *>( pChild));\
return BaseClassName::InsertChild( iIndex, pChild );\
}\
\
bool ClassName::RemoveChild(PaiObject* pChild, bool bDelete )\
{ \
CObjProject::RemoveIDMap( dynamic_cast<CBaseObject*>(pChild ) );\
return BaseClassName::RemoveChild( pChild,bDelete );\
\
}\
\
void ClassName::DeleteAllChild()\
{\
QList<PaiObject*>::iterator it = m_children.begin();\
while ( it != m_children.end() )\
{\
PaiObject* pChild = (*it);\
CObjProject::RemoveIDMap( dynamic_cast<CBaseObject*>( pChild ) );\
pChild->Delete();\
++it;\
}\
m_children.clear();\
}\
// class OSGDATAMODEL_EXPORT CBaseObjectImpl : public CBaseObject
// {
// Q_OBJECT
// public:
// CBaseObjectImpl();
// virtual ~CBaseObjectImpl();
// virtual void Init(QUuid classID);
// virtual QUuid GetTypeID() const;
// /**
// * @brief 得到DB Object
// */
// virtual pai::ios::welllog::DataObject *GetDbObject();
// virtual void Delete();
// /**
// * @brief 序列化此对象
// */
// // virtual bool Serialize( CObjectArchive &ar );
// /**
// * @brief Add a child object in general way.
// * @param pChild the child object handle
// * @param mountNow 是否将其挂载到树上
// */
// // virtual bool AddChild(PaiObject* pChild, bool mountNow = true);
// /**
// * @brief 在iIndex之前插入一个孩子,插入后这个孩子指向了iIndex
// * @param iIndex 插入的索引
// * @param pChild 待插入的孩子
// */
// // virtual bool InsertChild(int iIndex,PaiObject* pChild);
// void MoveChild(int From,int To);
// // int GetChildPos(PaiObject* pChild);
// /**
// * @brief Remove a child object in general way.
// * @param pChild the child object handle
// */
// // virtual bool RemoveChild(PaiObject* pChild, bool bDelete = false);
// /**
// * @brief 把孩子移除出来,但不删除此对象
// * @param pChild the child object handle
// */
// // virtual bool TakeChild(PaiObject* pChild);
// /**
// * @brief 删除所有的孩子
// */
// virtual void DeleteAllChild();
// /**
// *@brief 查找是否存在指定的孩子
// */
// // virtual bool HasChildren(PaiObject* pChild);
// /**
// *@brief 是否存在孩子
// */
// virtual bool isExistsName(QString name);
// /**
// *@brief 是否可以在树上显示
// */
// void SetVisibleOnTree(bool visible);
// protected:
// QUuid m_classTypeID;
// signals:
// /**
// *@brief 错误信息
// */
// void signalErrorInfo(QString);
// };
// class OSGDATAMODEL_EXPORT CPaiObjectHelper
// {
// public:
// /**
// * @brief 把DB Object 序列化到数据库
// */
// // static bool SerializeDB( CObjectArchive &ar,pai::ios::welllog::DataObject *pDbObject,pai::objectmodel::PaiObject *pPaiObject );
// //递归得到所有的孩子(包括自己 ,自己在第一个)
// // static void RecursionGetAllChild( PaiObject* pThis,std::vector<PaiObject*> &vChild );
// // static void RecursionGetAllChildren( PaiObject* pThis,std::vector<CBaseObject*> &vChild );
// /**
// * @brief 得到唯一的不重复的孩子的name
// */
// // static QString GetUniqueChildName( PaiObject *pPaiObject,QString strPreFixName );
// /**
// * @brief 得到根对象一般是Project
// */
// // static PaiObject *GetRoot(PaiObject *);
// //得到所选择的当前item对应viewObject下的所有的子孙
// static std::vector<CBaseObject*> GetAllSymbolObject(CBaseObject * pOSGObject);
// //得到某一棵子树
// static CBaseObject * GetSubtree(CBaseObject* pThis,QString strRelativeFolderPath);
// // static PaiObject * GetChildByName(PaiObject *pObject,QString name);
// };
//Object 插件机制和示例代码
#define BEGIN_REGISTER_OBJECT(className) BEGIN_REGISTER(sObjectClassIDKey,CBaseObject,className)
#define END_REGISTER_OBJECT(className) END_REGISTER( sObjectClassIDKey,CBaseObject,className )
//BEGIN_REGISTER_OBJECT(CObjWellLog)
//GetClassID_WellLog()
//END_REGISTER_OBJECT( CObjWellLog )
//Object 插件工厂
typedef CObjectGenralFactory< sObjectClassIDKey,CBaseObject > COSGObjectFactory;
END_OSGDATAMODEL_NAMESPACE
using namespace pai::datamodel;
#endif

View File

@ -0,0 +1,167 @@
/**
* @file CStringTyle.h
* @brief CString数据自定义
* @date 2014-10-10
* @author: ZhouWenfei
*/
#ifndef PAI_FRAME_CSTRING_H__
#define PAI_FRAME_CSTRING_H__
#pragma once
#include <iostream>
#include <QString>
#include <QMessageBox>
#include <QDialogButtonBox>
#include <QDialog>
#include <QFormLayout>
#include <QTextEdit>
#include <QDialogButtonBox>
#include <QFormLayout>
#include <QPushButton>
#include <stdio.h>
#include <limits.h>
#pragma execution_character_set("utf-8")
#pragma warning( push ,0)
//#include "BaseFunExport.h"
#pragma warning( pop )
//#ifdef MessageBox
//#define MessageBox MessageBox
//#endif
#define MAX_PATH 1024
//#define _MAX_PATH 1024
#define MaxCurve 1024
#define curve_name_len 256
#define curve_unit_len 256
#define MIN_RANK rank_char
#define MAX_RANK rank_longlong
#define INTMAX_RANK rank_longlong
#define SIZE_T_RANK rank_long
#define PTRDIFF_T_RANK rank_long
#define MB_OK QMessageBox::Ok
typedef unsigned short WORD;
#ifdef WIN32
typedef unsigned long DWORD;
typedef DWORD *LPDWORD;
typedef void *HANDLE;
#else
typedef unsigned int DWORD;
typedef DWORD *LPDWORD;
typedef void *HANDLE;
#endif
typedef unsigned char BYTE;
typedef char* LPSTR;
typedef void* LPVOID;
class CString;
typedef QList<CString> CStringList;
using namespace std;
//#define REPR_INT 1
//#define REPR_SHORT 2
//#define REPR_LONG 3
//#define REPR_FLOAT 4
//#define REPR_DOUBLE 5
//#define REPR_STRING 6
//#define REPR_CHAR 7
//#define REPR_UCHAR 8
//#define REPR_USHORT 9
//#define REPR_UINT 10
//#define REPR_ULONG 11
//class BASEFUN_EXPORT CString;
//构建CString
class CString
{
public:
CString(const char *str = nullptr);
CString(const QString str);
CString(const CString &other);
~CString();
int GetLength()const;
int Find(char *str);
int Find(char str);
int Find(CString &another);
int Find(char str[],int start);
int ReverseFind(char ch);
int Insert(int pos ,const CString Sctr);
int Replace(const char *Src,const char *Dest);
CString & TrimLeft();
CString & MakeUpper();
CString& MakeLower();
CString & TrimRight();
bool operator==(const char* other );
bool operator!=(const char* other );
bool operator==(const CString& other );
bool operator!=(const CString& other );
char operator[](int i);
CString Right(int count)const;
CString Left(int count)const;
// CString operator = (const QString& SrcStr) ;
CString operator + (const CString& SrcStr) ;
CString operator += (CString& SrcStr) ;
CString operator += (const CString& SrcStr) ;
char* GetString()const;
char GetChar(int n);
char GetAt(int n);
CString Mid(int pos,int count)const;
CString Mid(int pos)const;
void Format(const char *format,...);
void Delete(int fromIndex,int length);
// const char *m_temp;
void Alloc(int len);
void Empty();
private:
QString m_data;
};
enum flags {
FL_SPLAT0 = 0x00,/* Drop the value, do not assign */
FL_SPLAT = 0x01,/* Drop the value, do not assign */
FL_INV = 0x02,/* Character-set with inverse */
FL_WIDTH = 0x04,/* Field width specified */
FL_MINUS = 0x08,/* Negative number */
};
enum ranks {
rank_char = -2,
rank_short = -1,
rank_int = 0,
rank_long = 1,
rank_longlong = 2,
rank_ptr = INT_MAX/* Special value used for pointers */
};
enum bail {
bail_none = 0,/* No error condition */
bail_eof,/* Hit EOF */
bail_err/* Conversion mismatch */
};
int AfxMessageBox(CString str);
int MessageBox(QWidget *parent,char lpText[128],char*lpCaption, int UINTuType);
void ShowMessage(QString mess);
//构建AfxMessageBox()函数
//extern int BASEFUN_EXPORT AfxMessageBox(CString str);
//extern int BASEFUN_EXPORT MessageBox(QWidget *parent,char lpText[128],char*lpCaption, int UINTuType);
// using namespace pai::graphics;
#endif

View File

@ -0,0 +1,197 @@
/**
* @file DataObject.h
* @brief
*/
#ifndef PAI_FRAME_IOSERVICE_DATAOBJECT_H
#define PAI_FRAME_IOSERVICE_DATAOBJECT_H
#include <string>
#include <vector>
// #include "Turtle.h"
namespace pai {
namespace ios {
namespace welllog {
/**
*@class DataObject
*@brief
*/
class DataObject
{
public:
/**
* @brief
*/
DataObject():m_DataID(0),
m_DataBelongID(0),
m_Name(""),
m_Creator(""),
m_CreateData(0),
m_ModifyData(0),
m_LastAccessData(0)
{
}
/**
* @brief
*/
virtual ~DataObject(){};
/**
* @brief
*/
DataObject(const DataObject& wobject):m_DataID(wobject.GetDataID()),
m_DataBelongID(wobject.GetDataBelongID()),
m_Name(wobject.GetName()),
m_Creator(wobject.GetCreator()),
m_CreateData(wobject.GetCreateData()),
m_ModifyData(wobject.GetModifyData()),
m_LastAccessData(wobject.GetLastAccessData())
{
}
/**
* @brief
*/
DataObject & operator=(const DataObject& wobject)
{
if (this == &wobject)
return *this;
this->SetDataID(wobject.GetDataID());
this->SetDataBelongID(wobject.GetDataBelongID());
this->SetName(wobject.GetName());
this->SetCreator(wobject.GetCreator());
this->SetCreateData(wobject.GetCreateData());
this->SetModifyData(wobject.GetModifyData());
this->SetLastAccessData(wobject.GetLastAccessData());
return *this;
}
/**
* @brief
*/
virtual void Save() = 0;
/**
* @brief ID获取对象信息
* @param[in]id数据ID
*/
virtual void Get(long long id) = 0;
/**
* @brief
*/
virtual void Update() = 0;
/**
* @brief
*/
virtual void Delete(long long id = 0) = 0;
/**
* @brief
*/
long long GetCreateData() const
{
return m_CreateData;
}
/**
* @brief
*/
std::string GetCreator() const
{
return m_Creator;
}
/**
* @brief ID
*/
long long GetDataBelongID() const
{
return m_DataBelongID;
}
/**
* @brief ID
*/
long long GetDataID() const
{
return m_DataID;
}
/**
* @brief 访
*/
long long GetLastAccessData() const
{
return m_LastAccessData;
}
/**
* @brief
*/
long long GetModifyData() const
{
return m_ModifyData;
}
/**
* @brief
*/
std::string GetName() const
{
return m_Name;
}
/**
* @brief
*/
void SetCreateData(long long createData)
{
this->m_CreateData = createData;
}
/**
* @brief
*/
void SetCreator(std::string creator)
{
this->m_Creator = creator;
}
/**
* @brief ID
*/
void SetDataBelongID(long long dataBelongID)
{
this->m_DataBelongID = dataBelongID;
}
/**
* @brief ID
*/
void SetDataID(long long dataID)
{
this->m_DataID = dataID;
}
/**
* @brief 访
*/
void SetLastAccessData(long long lastAccessData)
{
this->m_LastAccessData = lastAccessData;
}
/**
* @brief
*/
void SetModifyData(long long modifyData)
{
this->m_ModifyData = modifyData;
}
/**
* @brief
*/
void SetName(std::string name)
{
this->m_Name = name;
}
private:
long long m_DataID; ///<数据ID
long long m_DataBelongID; ///<数据所属ID
std::string m_Name; ///<数据名
std::string m_Creator; ///<创建者
long long m_CreateData; ///<创建时间
long long m_ModifyData; ///<修改时间
long long m_LastAccessData; ///<最后访问时间
};
}
}
}
#endif

View File

@ -0,0 +1,286 @@
/**
* @file ObjWellLog.h
* @brief 线
* @date 2014-6-3
* @author: liyonggang
*/
#ifndef PAI_FRAME_OSGWELLLOG_H
#define PAI_FRAME_OSGWELLLOG_H
#pragma warning( push ,0)
#include "MemRdWt.h"
#include <vector>
#include <QUuid>
#include <QSharedMemory>
#include "BaseObject.h"
// #include "WelllogCurve.h"
#include "GeometryUtils.h"
#include "BaseFun.h"
// #include "ObjBaseObject.h"
#pragma warning( pop )
BEGIN_OSGDATAMODEL_NAMESPACE;
class CObjWell;
class CObjWelllogRound;
class CObjWellLogTrack;
class CObjWellTrack;
class OSGDATAMODEL_EXPORT CObjWellLog: public QObject
{
Q_OBJECT
public:
CObjWellLog();
CObjWellLog(bool visible);
~CObjWellLog();
Slf_CURVE acurveinfo;
CObjWell *GetWell();
CObjWelllogRound *GetWelllogRound();
std::vector<float>& GetDepths()
{
return m_vDepths;
}
std::vector<char>& GetFlags()
{
return m_vFlags;
}
void SetModify(bool ischange)
{
// SetModified(ischange,false);
}
bool ExpendData(bool isHead,float EDepth);
bool DeleteData(float Stdep,float Endep);
/**
* @brief
* @param[in] name
*/
virtual void SetName(const QString & name);
/**
* @brief
*/
virtual float GetPropertyMin();
virtual float GetPropertyMax();
virtual void SetpropertyMin(float Propertymin);
virtual void SetpropertyMax(float Propertymax);
/**
* @brief
*/
void ReCalculateMinMax();
// virtual bool Serialize( CObjectArchive &ar );
virtual QUuid GetTypeID()const;
virtual double GetShiftTopDepth();
virtual double GetTopDepth();
virtual double GetShiftBottomDepth();
virtual double GetBottomDepth();
virtual void SetShiftBottomDepth(double bottomDepth);
virtual void SetBottomDepth(double bottomDepth);
virtual void SetShiftTopDepth(double topDepth);
virtual void SetTopDepth(double topDepth);
virtual pai::ios::welllog::DataObject *GetDbObject();
virtual QStringList GetColumnHeadList();
virtual CBaseObject *CloneObject();
//从slf加载数据
virtual bool LoadFromSLF();
//数据变化后写入slf数据
virtual bool SaveToSLF();
//从slf文件删除
virtual bool DeleteFromSLF();
virtual bool CopyToSLFFile(QString targetSLFFileName,bool deleteFromSrc=false,char*newCurveName=NULL);
virtual bool RenameToSLF(){return true;};
virtual bool CloneInSlfFile(QString newname);
virtual bool RenName(const QString & name);
virtual void AddShiftDepth(double shiftdepth);
virtual void ChangeDepth(double shiftdepth);
virtual void ApplyShiftDepth();
double GetShiftOffset();
void SetShiftOffset(double DepthOffset);
void EShiftDepth(int count,float *sdeps,float *edeps);
void MoveShift(float sdep,float edep,float dmove);
void MoveShift();
double GetRlev();
void SetRlev(float rlev);
bool IsLoaded() {
return isRun;
}
//说明对象有两个名字Name和AliasNamename就是slf文件中的curveName
virtual void SetAliasName(QString AliasName)
{
m_AliasName=AliasName;
}
virtual QString GetAliasName()
{
return m_AliasName;
}
virtual void SetUnit(QString Unit)
{
m_Unit=Unit;
}
virtual QString GetUnit()
{
return m_Unit;
}
virtual void SetAliasUnit(QString AliasUnit)
{
m_AliasUnit=AliasUnit;
}
virtual QString GetAliasUnit()
{
return m_AliasUnit;
}
virtual void SetDepthAliasUnit(QString DepthAliasUnit)
{
m_DepthAliasUnit=DepthAliasUnit;
}
virtual QString GetDepthAliasUnit()
{
return m_DepthAliasUnit;
}
virtual void SetDepthUnit(QString DepthUnit)
{
m_DepthUnit=DepthUnit;
}
virtual QString GetDepthUnit()
{
return m_DepthUnit;
}
void SetWell(CObjWell *pObjWell)
{
m_pObjWell=pObjWell;
}
/**
* @brief 线
*/
void AutoMatchFamily();
/**
* @brief familytype初始化曲线名和单位
*/
void InitCurveNameAndUnitByFamily(std::string familyType);
//重采样 intervel采样间隔
void ReSample(double newDelta);
/**
* @brief MD,Property
*/
virtual void GetValidMDProperty(PFLOATPROPERTY &vMD,PFLOATPROPERTY &vProperty,float sdep=0,float edep=7000 );
/**
* @brief Property
*/
void GetMDProperty(FLOATPROPERTY &vMD,FLOATPROPERTY &vProperty );
/**
* @brief Property
*/
void GetZoneMDProperty(FLOATPROPERTY &vMD,FLOATPROPERTY &vProperty ,float sdep=0,float edep=7000);
void SetMD(PFLOATPROPERTY *vMD );
void SetProperty(PFLOATPROPERTY *vMD,PFLOATPROPERTY *vProperty );
void SetProperty(PFLOATPROPERTY *vMD,FLOATPROPERTY *vProperty );
/**
* @brief DB
*/
// pai::ios::welllog::WelllogCurve &GetLogCurve();
/**
* @brief Get/Set MD,Proeprty
*/
PFLOATPROPERTY &GetProperty( );
PFLOATPROPERTY &GetMD( );
void SetProperty(FLOATPROPERTY *vMD, FLOATPROPERTY *vProperty );
void SetMD(FLOATPROPERTY *vMD );
//将内存数据清空
void clearData();
void SetSlfFileName(QString filePath);
QString GetSlfFileName();
virtual QString GetDescription();
void SetData(int repCode,char *buffer,double yy);
double GetData(int repCode,char *buffer,int repLen);
void SetData(int i,float *buffer);//按行写入一个数据
double GetData(int i,char *buffer=NULL);//按行杜一个数据
double GetData(float dep,char *buffer=NULL);//按深度取一个数据
void SetData(float dep,float *value);//按深度写入一个数据
void SetData(float dep,float value);
CObjWellLogTrack *GetWellLogTrack();
CObjWellTrack *GetWellTrack();
/************************************************************************/
/* @brief 得到该对象的模板关键字例如井曲线对象的family名字 */
/************************************************************************/
virtual QVariant GetTemplateKey();
QString GetName(){return m_name;}
protected:
QString m_SlfFileName;
//private:
void _CalculateMinMax(bool force = false);
/**
* @brief ID
*/
void SetBelongID();
float m_fPropertMin;
float m_fPropertMax;
double m_TopDepth;
double m_BottomDepth;
double m_ShiftTopDepth;
double m_ShiftBottomDepth;
double m_DepthOffset;
// pai::ios::welllog::WelllogCurve m_logCurve;
protected:
PFLOATPROPERTY m_vMD;
FLOATPROPERTY m_vMDShifting;
PFLOATPROPERTY m_vProperty;
LPSTR *m_SharedMemory;
HANDLE m_Handle;
QString key;
public:
char m_strValue[200];
QString m_AliasName;
int m_ObjectType;
float m_Rlev;
int IsObjectExist(QString name);
int m_ChangeNo;
std::vector<LayerInfo>m_vLayers;
CObjWell *m_pObjWell;
std::vector<float> m_vDepths; //深度序列.
std::vector<char> m_vFlags; //绘制标志.
bool isRun;
void loadInfo();
bool isLoad;
bool isUsing;
///////////////////////
QString m_Unit;
QString m_AliasUnit;
QString m_DepthUnit;
QString m_DepthAliasUnit;
QString m_name;
public slots:
void slotRefreshData(QString slf,QString curname,QObject*rec=NULL);
void slotDeAttchData(QString slf,QString curname);
public:
};
template <typename T>
void AddToWellRound(QString objname,T *aclass,char* ID,int Type);
using namespace pai::datamodel;
using namespace pai::ios::welllog;
END_OSGDATAMODEL_NAMESPACE
#endif

View File

@ -0,0 +1,33 @@
/**
* @file ObjWellLogTABLE.h
* @brief 线
* @date 2015-2-10
* @author: WANGWEI
*/
#ifndef PAI_FRAME_OSGWELLLOGTABLE_H
#define PAI_FRAME_OSGWELLLOGTABLE_H
#pragma warning( push ,0)
#include <QUuid>
#include "BaseObject.h"
#include "ObjWelllog.h"
// #include "ObjectEvent.h"
#pragma warning( pop )
BEGIN_OSGDATAMODEL_NAMESPACE;
class CObjWell;
class OSGDATAMODEL_EXPORT CObjWellLogTABLE: public CObjWellLog
{
Q_OBJECT
public:
CObjWellLogTABLE();
virtual ~CObjWellLogTABLE();
virtual QUuid GetTypeID()const;
};
using namespace pai::datamodel;
using namespace pai::ios::welllog;
END_OSGDATAMODEL_NAMESPACE
#endif

View File

@ -0,0 +1,514 @@
#pragma warning( push ,0)
#include <cassert>
#include <algorithm>
#include <QFile>
#include "BaseObject.h"
#include "ObjectID.h"
// #include "ObjProject.h"
// #include "ObjWell.h"
// #include "ObjWelllogRound.h"
// #include "ObjDiscreteWellLog.h"
#pragma warning( pop )
BEGIN_OSGDATAMODEL_NAMESPACE;
sObjectClassIDKey::sObjectClassIDKey()
{
}
sObjectClassIDKey::sObjectClassIDKey( QUuid ObjectClassID )
{
m_ObjectClassID = ObjectClassID ;
}
bool sObjectClassIDKey::operator !=( const sObjectClassIDKey& s )
{
return m_ObjectClassID != s.m_ObjectClassID;
}
bool sObjectClassIDKey::operator < ( const sObjectClassIDKey& s ) const
{
return m_ObjectClassID < s.m_ObjectClassID;
}
// CBaseObjectImpl::~CBaseObjectImpl()
// {
// DeleteAllChild();
// }
// QString CPaiObjectHelper::GetUniqueChildName(PaiObject *pPaiObject,QString strPreFixName )
// {
// if(! pPaiObject->GetObjectByName ( strPreFixName ) )
// return strPreFixName;
// return pPaiObject->GetNextChildName(strPreFixName);
// }
// void CBaseObjectImpl::Init(QUuid classID)
// {
// m_classTypeID = classID;
// }
// QUuid CBaseObjectImpl::GetTypeID() const
// {
// return m_classTypeID;
// }
// PaiObject *CPaiObjectHelper::GetRoot(PaiObject * pThis)
// {
// PaiObject *pRoot = pThis;
// while( pRoot && pRoot->GetParent() )
// {
// pRoot = pRoot->GetParent();
// }
// return pRoot;
// }
// bool CBaseObject::Contains(const QUuid& id)
// {
// if(this->m_pPaiObject != NULL)
// {
// return NULL != (m_pPaiObject->GetObject(id));
// }
// return false;
// }
// std::vector<CBaseObject*> CPaiObjectHelper::GetAllSymbolObject( CBaseObject * pOSGObject )
// {
// std::vector<PaiObject*> vAllChildrenandSelf;
// std::vector<CBaseObject*> vAllChildren;
// CPaiObjectHelper::RecursionGetAllChild( dynamic_cast<PaiObject*>(pOSGObject),vAllChildrenandSelf);
// foreach (PaiObject* pChild,vAllChildrenandSelf)
// {
// QString t_name = pChild->GetName();
// if ( !(pChild->GetChildrenCount()) )
// {
// //判断是否为图像 如果不是则continue
// if (t_name.right(4).left(1) != ".") continue;
// if( dynamic_cast<CBaseObject*>( pChild ) )
// vAllChildren.push_back(dynamic_cast<CBaseObject*>( pChild ));
// }
// }
// return vAllChildren;
// }
// CBaseObject * CPaiObjectHelper::GetSubtree( CBaseObject * pThis,QString strRelativeFolderPath )
// {
// QStringList folderNamelist = strRelativeFolderPath.split("/");
// CBaseObject * pViewObject= pThis;
// foreach ( QString strfolderName, folderNamelist )
// {
// pViewObject = dynamic_cast<CBaseObject*>(GetChildByName(dynamic_cast<PaiObject*>(pViewObject),strfolderName) );
// if( !pViewObject) return NULL;
// }
// return pViewObject;
// }
// PaiObject* CPaiObjectHelper::GetChildByName(PaiObject*pObject,QString name)
// {
// QList<PaiObject*> lstChildren;
// pObject->GetChildren(lstChildren);
// foreach(PaiObject * pChildObject, lstChildren)
// {
// if((pChildObject->GetName()) == name) return pChildObject;
// }
// return NULL;
// }
// pai::ios::welllog::DataObject* CBaseObjectImpl::GetDbObject()
// {
// return NULL;
// }
// bool CPaiObjectHelper::SerializeDB( CObjectArchive &ar,pai::ios::welllog::DataObject *pDbObject ,pai::objectmodel::PaiObject *pPaiObject )
// {
// if( ar.IsStoring() )
// {
// //保存到数据库
// long long dataID = 0;
// if( pDbObject )
// {
// dataID = pDbObject->GetDataID();
// if( pPaiObject )
// {
// pDbObject->SetName( pPaiObject->GetName().toStdString() );
// }
// if( dataID==0 )
// {
// pai::datamodel::CObjDiscreteWellLog *discreteWellLog = dynamic_cast<pai::datamodel::CObjDiscreteWellLog*>(pPaiObject);
// if(discreteWellLog)
// {
// discreteWellLog->SaveDBObject();
// }
// else
// {
// pDbObject->Save();
// }
// }else
// {
// pDbObject->Update();
// }
// dataID = pDbObject->GetDataID();
// }
// ar<< dataID;
// }else
// {
// long long dataID(0);
// ar >> dataID;
// if( pDbObject && dataID > 0)
// {
// pDbObject->SetDataID( dataID );
// pDbObject->Get( dataID );
// }
// }
// return true;
// }
CObjectGenralFactory< sObjectClassIDKey,CBaseObject >& CBaseObject::GetFatory()
{
static COSGObjectFactory fatory;
return fatory;
}
/*void CPaiObjectHelper::RecursionGetAllChild(PaiObject* pThis,std::vector<PaiObject*> &vChild)
{
if( !pThis ) return;
vChild.push_back( pThis ) ;
QList<PaiObject*>vChildThis ;
pThis->GetChildren(vChildThis);
foreach( PaiObject *pChild,vChildThis )
{
RecursionGetAllChild(pChild, vChild );
}
}
void CPaiObjectHelper::RecursionGetAllChildren( PaiObject* pThis,std::vector<CBaseObject*> &vChild )
{
std::vector<PaiObject*> vPaiChild;
RecursionGetAllChild( pThis,vPaiChild );
foreach( PaiObject* pObject,vPaiChild )
{
if( dynamic_cast<CBaseObject*>( pObject ) )
{
vChild.push_back( dynamic_cast<CBaseObject*>( pObject ) );
}
}
}*/
// void CBaseObjectImpl::Delete()
// {
// // PaiObject*pPai=GetParent();
// // if(pPai) pPai->RemoveChild(this,false);
// // SetParent(NULL);
// DeleteAllChild();
// delete this;
// }
// bool CBaseObjectImpl::Serialize( CObjectArchive &ar )
// {
// pai::ios::welllog::DataObject* pDbObject = GetDbObject();
// QFile *pFile = dynamic_cast<QFile *>( ar.GetDevice() );
// bool bToDisk = pFile ? true :false;
// if(ar.IsStoring())
// {
// BEGIN_WRITE_OBJECT( ar,1 );
// BEGIN_WRITE_BLOCK( ar, 1);
// //保存到数据库
// if( bToDisk &&pDbObject)
// {
// CPaiObjectHelper::SerializeDB( ar,pDbObject,this );
// }
// //保存自己的信息
// ar << GetID();
// ar << GetName();
// ar <<GetGhostName();
// //save 所有的孩子
// if( bToDisk )
// {
// QList<PaiObject*> lstChildren;
// GetChildren(lstChildren);
// int nChildCout = lstChildren.size();
// ar << nChildCout;
// for( long i = 0 ; i< nChildCout;++i )
// {
// CBaseObject* pChild = dynamic_cast<CBaseObject*>( lstChildren[i] );
// assert( pChild );
// ar << lstChildren[i] ->GetTypeID().toString();
// pChild->Serialize( ar );
// }
// }
// END_WRITE_BLOCK( ar, 1 );
// END_WRITE_OBJECT( ar );
// }
// else
// {
// BEGIN_READ_OBJECT( ar,1 );
// BEGIN_READ_BLOCK( 1 );
// if( bToDisk &&pDbObject)
// {
// CPaiObjectHelper::SerializeDB( ar,pDbObject,this );
// }
// //加载自己的信息
// QString strTmp;
// ar >> strTmp;
// SetID(strTmp );
// QString strName;
// ar >> strName;
// SetName( strName);
// QString gstrName;
// ar >>gstrName;
// SetGhostName(gstrName);
// //加载所有的孩子
// if( bToDisk )
// {
// DeleteAllChild();
// int nChildCout(0);
// ar >> nChildCout;
// for( long i = 0 ; i< nChildCout;++i )
// {
// ar >> strTmp;
// QUuid classID = QUuid(strTmp);
// CBaseObject *pChild = GetFatory().CreateObject( classID );
// PaiObject *pPaiObject = dynamic_cast<PaiObject *>( pChild );
// CBaseObjectImpl *pChildImp = dynamic_cast<CBaseObjectImpl *>( pChild );
// if( pChildImp )
// {
// pChildImp->Init( classID );
// }
// if( pChild )
// {
// pChild->Serialize( ar );
// AddChild( pPaiObject );
// }else
// {
// assert( false);
// ar.SkipObject();
// }
// }
// }
// END_READ_BLOCK( 1 );
// END_READ_OBJECT( ar );
// }
// return true;
// }
CBaseObject *CBaseObject::CloneObject()
{
// PaiObject *pPaiObject = this->GetPaiObject();
// if( pPaiObject )
// {
// CBaseObject *pClone = GetFatory().CreateObject( pPaiObject->GetTypeID() );
// if( pClone )
// {
// pClone->CopyFrom( this );
// pClone->GetPaiObject()->SetID(QUuid::createUuid());
// return pClone;
// }
// }
return NULL;
}
CBaseObject *CBaseObject::GhostObject()
{
return NULL;
// CBaseObjectImpl* result=dynamic_cast<CBaseObjectImpl*>(CloneObject());
// if(!result) return NULL;
// result->SetGhostName(result->GetPaiObject()->GetName()+OBJ_GHOST_MARK+QString::fromStdString(GenTimeStamp()));
// result->SetVisibleOnTree(false);
// return result;
}
void CBaseObject::CopyFrom( CBaseObject *pOSGObjectOther )
{
// QByteArray byteArr;
// {
// CObjectArchive ar( byteArr, eStore );
// pOSGObjectOther->Serialize( ar );
// }
// CObjectArchive ar( byteArr, eLoad );
// this->Serialize( ar );
}
// void CBaseObject::SetTemplateKey(QVariant TemplateKey)
// {
// m_TemplateKey=TemplateKey;
// }
// QVariant CBaseObject::GetTemplateKey()
// {
// if(m_TemplateKey!=QVariant()) return m_TemplateKey;
// PaiObject* paiObject = this->GetPaiObject();
// if(paiObject != NULL)
// {
// // QUuid val=QUuid::createUuid();
// // m_TemplateKey=QVariant(val);
// return QVariant(paiObject->GetTypeID());
// }
// return QVariant();
// }
// bool CBaseObjectImpl::HasChildren(PaiObject* pChild)
// {
// QList<PaiObject*> objectList;
// PaiObject::GetChildren(objectList);
// if(objectList.size() > 0)
// {
// foreach(PaiObject* obj,objectList)
// {
// if(obj == pChild)
// {
// return true;
// }
// }
// }
// return false;
// }
// bool CBaseObjectImpl::AddChild(PaiObject* pChild, bool mountNow )
// {
// CObjProject::AddIDMap( pChild->GetID(),dynamic_cast<CBaseObject *>( pChild) );
// QUuid id=GetTypeID();
// if(id==GetClassID_SingleWellMapFolder()
// ||id==GetClassID_WorkflowFolder()
// ||id==GetClassID_SingleMethodFolder()
// )
// {
// if(GetChildrenCount()==0){
// PaiObject *pPai=GetParent();
// CObjProject::RemoveIDMap( dynamic_cast<CBaseObject*>(this ) );
// if(pPai)
// pPai->RemoveChild(this,false);
// SetVisibleOnTree(true);
// CObjProject::AddIDMap( GetID(), dynamic_cast<CBaseObject *>( this));
// pPai=GetParent();
// if(pPai)
// pPai->AddChild(this,MountOnTree);
// }
// }
// if(mountNow) return PaiObject::AddChild( pChild,MountOnTree );
// else return PaiObject::AddChild( pChild,MountNoTree );
// }
// bool CBaseObjectImpl::InsertChild(int iIndex,PaiObject* pChild)
// {
// CObjProject::AddIDMap( pChild->GetID(), dynamic_cast<CBaseObject *>( pChild));
// /*
// if(pChild&&pChild->GetParent()&&pChild->GetParent()) {
// QList<PaiObject *>lists;
// pChild->GetParent()->GetChildren(lists);
// if(lists.size()<iIndex) {
// pChild->GetParent()->AddChild(pChild);
// }
// else if(iIndex<1) {
// iIndex=0;
// return PaiObject::InsertChild( iIndex, pChild );
// }
// return true;
// }
// */
// return PaiObject::InsertChild( iIndex, pChild );
// }
// bool CBaseObjectImpl::RemoveChild(PaiObject* pChild, bool bDelete )
// {
// CObjProject::RemoveIDMap( dynamic_cast<CBaseObject*>(pChild ) );
// // m_EventAgent.RemoveObjectChild(this, pChild );
// return PaiObject::RemoveChild( pChild,bDelete );
// }
// bool CBaseObjectImpl::isExistsName(QString name)
// {
// QList<PaiObject*> objs;
// if(this->GetParent() != NULL)
// {
// GetParent()->GetChildren(objs);
// }
// foreach(PaiObject* obj, objs)
// {
// if(obj != NULL && obj != this && obj->GetName().compare(name,Qt::CaseInsensitive)==0)
// {
// return true;
// }
// }
// return false;
// }
// void CBaseObjectImpl::DeleteAllChild()
// {
// QList<PaiObject*>::iterator it = m_children.begin();
// while ( it != m_children.end() )
// {
// PaiObject* pChild = (*it);
// // m_EventAgent.RemoveObjectChild(this, pChild );
// CObjProject::RemoveIDMap( dynamic_cast<CBaseObject*>( pChild ) );
// pChild->Delete();
// ++it;
// }
// m_children.clear();
// }
// void CBaseObjectImpl::SetVisibleOnTree(bool visible)
// {
// SetFlagEnable(PaiObject::VisibibleOnTree,visible);
// }
// CBaseObjectImpl::CBaseObjectImpl()
// {
// }
// bool CBaseObjectImpl::TakeChild(PaiObject* pChild)
// {
// if( m_children.contains( pChild ) )
// {
// // m_EventAgent.RemoveObjectChild( this,pChild );
// m_children.removeAll( pChild );
// return true;
// }
// return false;
// }
// int CBaseObjectImpl::GetChildPos(PaiObject* pChild)
// {
// int o=-1;
// for(int i=0;i<m_children.size();i++)
// {
// if(pChild==m_children.at(i)) {
// o=i;
// break;
// }
// }
// return o;
// }
// void CBaseObjectImpl::MoveChild(int From,int To)
// {
// m_children.move(From,To);
// }
END_OSGDATAMODEL_NAMESPACE

View File

@ -0,0 +1,326 @@
#include "CStringType.h"
#include <QLabel>
char *m_temp=NULL;
CString::CString(const char *str)
{
m_temp=NULL;
if(str==NULL)
m_data ="";
else
m_data=QString::fromLocal8Bit(str);
}
CString::CString(const QString str)
{
m_temp=NULL;
if(str==NULL)
m_data ="";
else
m_data=str;
}
CString::~CString()
{
if(m_temp) delete m_temp;
m_temp=NULL;
};
void CString::Empty()
{
m_data ="";
}
CString::CString(const CString &other)
{
m_temp=NULL;
m_data=other.m_data;
}
int CString::GetLength()const
{
return m_data.length();
}
int CString::Find(char *str)
{
std::string dataStr=m_data.toStdString();
return dataStr.find(str);
}
int CString::Find(CString &another)
{
return m_data.toStdString().find(another.m_data.toStdString());
}
int CString::Find(char str)
{
std::string dataStr=m_data.toStdString();
return dataStr.find(str);
}
/*
*/
int CString::Find(char str[],int start)
{
std::string dataStr=m_data.toStdString();
int npos=dataStr.find(str);
if(npos==-1)
return -1;
if(npos<start)
return -1;
return dataStr.find(str);
}
int CString::ReverseFind(char ch)
{
int index=m_data.lastIndexOf(ch);
return index;
}
int CString::Insert(int pos ,const CString Sctr)
{
m_data.insert(pos,Sctr.m_data);
return m_data.length();
}
int CString::Replace(const char *Src,const char *Dest)
{
int length=((std::string)Src).length();
QString srcStr=QString::fromLocal8Bit(Src);
QString destStr=QString::fromLocal8Bit(Dest);
m_data.replace(srcStr,destStr);
return length;
}
void CString::Delete(int fromIndex,int length)
{
m_data=m_data.remove(fromIndex,length);
}
CString & CString::TrimLeft()
{
std::string findStr=" ";
std::string tempstr=m_data.toStdString();
QString temp=m_data;
vector<char>StrVector;
int left=0;
for (int i=0;i<tempstr.length();i++)
{
if(tempstr.at(i)==findStr.at(0)) {
left++;
continue;
}
else break;
}
m_data=temp.mid(left);
return *this;
}
CString & CString::MakeUpper()
{
m_data=m_data.toUpper();
return *this;
}
CString& CString::MakeLower()
{
m_data=m_data.toLower();
return *this;
}
CString & CString::TrimRight()
{
std::string findStr=" ";
std::string tempstr=m_data.toStdString();
QString temp=m_data;
int flag=0;
for (int i=tempstr.length()-1;i>-1;i--)
{
if(tempstr[i]==findStr.at(0)) {
continue;
}
else {
flag=i;
break;
}
}
m_data=temp.left(flag+1);
return *this;
}
bool CString::operator==(const char* other )
{
QString srcStr=QString::fromLocal8Bit(other);
if(this->m_data==srcStr)
return true;
return false;
}
bool CString::operator!=(const char* other )
{
QString srcStr=QString::fromLocal8Bit(other);
if(this->m_data!=srcStr)
return true;
return false;
}
char CString::operator[](int i)
{
char ch=GetChar(i);
return ch;
}
CString CString::Right(int count)const
{
if (count<0)
{
count=0;
}
if (count>m_data.length())
{
return *this;
}
int length=m_data.length();
QString temp=m_data;
QString lastdata=temp.remove(0,length-count);
CString RightStr(lastdata);
return RightStr;
}
CString CString::Mid(int pos,int count)const
{
if (count<0)
{
count=0;
}
QString temp=m_data.mid(pos,count);
CString mstr(temp);
return mstr;
}
CString CString::Mid(int pos)const
{
QString temp=m_data.mid(pos);
CString mstr(temp);
return mstr;
}
CString CString::Left(int count)const
{
if (count<0)
{
count=0;
}
if (count>m_data.length())
{
return *this;
}
int length=m_data.length();
QString temp=m_data;
QString lastdata=temp.remove(count,length-count);
CString leftStr(lastdata);
return leftStr;
}
CString CString::operator + (const CString& SrcStr)
{
CString str;
str.m_data=m_data+SrcStr.m_data;
return str;
}
/*
CString CString::operator = (const QString& SrcStr)
{
CString str;
str.m_data=SrcStr;
return str;
}
*/
CString CString::operator += (CString& SrcStr)
{
m_data = m_data+SrcStr.m_data ;
return *this;
}
CString CString::operator += (const CString& SrcStr)
{
m_data = m_data+SrcStr.m_data ;
return *this;
}
bool CString::operator!=(const CString& other )
{
return m_data!=other.m_data;
}
bool CString::operator==(const CString& other )
{
return m_data==other.m_data;
}
void CString::Alloc(int len)
{
}
char* CString::GetString() const
{
int length=((string)(m_data.toLocal8Bit().data())).length();
if(m_temp) delete m_temp;
m_temp=new char[length+1];
// Alloc(length);
strcpy(m_temp,m_data.toLocal8Bit().data());
return m_temp;
}
char CString::GetChar(int n)
{
return GetString()[n];
}
char CString::GetAt(int n)
{
return GetChar(n);
}
void CString::Format(const char *format,...)
{
//char *str=GetString();
va_list args;
va_start(args,format);
m_data.vsprintf(format,args);
char *buf=new char[2*strlen(m_data.toStdString().c_str())+1];
vsprintf(buf,format,args);
m_data=buf;
delete buf;
va_end(args);
}
void ShowMessage(QString mess)
{
QDialog dialog(NULL);
dialog.setModal(false);
Qt::WindowFlags flags = dialog.windowFlags();
flags |= Qt::WindowStaysOnTopHint;
flags &= ~Qt::WindowContextHelpButtonHint;
dialog.setWindowFlags(flags);
dialog.setWindowTitle("提示");
QFormLayout form(&dialog);
QLabel edit(&dialog);
form.addRow(&edit);
edit.setText(mess);
// QDialogButtonBox buttonBox(QDialogButtonBox::Yes,Qt::Horizontal, &dialog);
// form.addRow(&buttonBox);
// if(buttonBox.button(QDialogButtonBox::Yes)) buttonBox.button(QDialogButtonBox::Yes)->setText("退出");
// QObject::connect(buttonBox.button(QDialogButtonBox::Yes), SIGNAL(clicked()), NULL, SLOT(reject()));
dialog.show();
dialog.exec();
}
int AfxMessageBox(CString str)
{
QDialog dialog(NULL);
dialog.setModal(false);
Qt::WindowFlags flags = dialog.windowFlags();
flags |= Qt::WindowStaysOnTopHint;
flags &= ~Qt::WindowContextHelpButtonHint;
dialog.setWindowFlags(flags);
dialog.setWindowTitle("提示");
QFormLayout form(&dialog);
form.addWidget(new QLabel(str.GetString()));
// dialog.show();
if (dialog.exec() == QDialog::Accepted) {
// Do something here
}
// return MessageBox(NULL,"提示",str.GetString(),NULL );
// QString cstr=str.GetString();
// QMessageBox msgBox;
// msgBox.setText(cstr);
// return msgBox.exec();
return 1;
}
int MessageBox(QWidget *parent,char lpText[128],char*lpCaption, int UINTuType)
{
if (!parent)
{
char *tempName=lpCaption;
QString addStr=QString::fromLocal8Bit(tempName);
return QMessageBox::information(NULL,lpText,addStr,QMessageBox::Ok);
}
return 0;
}

View File

@ -31,6 +31,10 @@ DEFINES += QT_DLL
HeadS += ../include/*.h
SOURCES += *.cpp
HEADERS += \
../include/BaseObject.h \
../include/ObjWelllog.h \
../include/ObjWelllogTABLE.h
#CPATH = $$system(pwd)
# 目标文件夹

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,30 @@
#pragma warning( push ,0)
#include <cassert>
#include <algorithm>
#include "ObjectID.h"
#include "ObjWelllogTABLE.h"
// #include "ObjWell.h"
#pragma warning( pop )
BEGIN_OSGDATAMODEL_NAMESPACE;
CObjWellLogTABLE::CObjWellLogTABLE()
{
// SetIconName("icon/Sheet.png");
}
CObjWellLogTABLE::~CObjWellLogTABLE()
{
}
QUuid CObjWellLogTABLE::GetTypeID()const
{
return GetClassID_WellLogTABLE();
}
// BEGIN_REGISTER_OBJECT(CObjWellLogTABLE)
// QUuid(GetClassID_WellLogTABLE())
// END_REGISTER_OBJECT( CObjWellLogTABLE );
END_OSGDATAMODEL_NAMESPACE

View File

@ -12,13 +12,14 @@
#include "WellLogUI.h"
//#include "Trajectory.h"
//#include "WellLogTableModel.h"
//#include "ObjWelllog.h"
#include "ObjWelllog.h"
//#include "BaseDialog.h"
#include "LogIO.h"
#include "MemRdWt.h"
#pragma warning( pop )
//class CDataManagger;
//class GridDataAdapter;
class GridDataAdapter;
namespace Ui
{
@ -103,7 +104,7 @@ private:
Ui::WellLogTableDialogNew* m_pUI;
// QList<CBaseObject *> m_rBaseObjectlist;
// CObjWell* m_pWell;
// QList<CObjWellLog*> m_pWellLogs;
QList<CObjWellLog*> m_pWellLogs;
// //QList<CObjWellLog*> m_pAllWellLogs;
// CBaseObjectImpl *m_pBaseObjectImpl;
@ -122,7 +123,7 @@ private:
QStringList m_TitleField;
dataType m_DataTyle;
//luol 20200302
//GridDataAdapter* m_gridData;
GridDataAdapter* m_gridData;
bool m_isShowDig;
@ -133,9 +134,10 @@ public:
float *val;
DWORD count;
float sdep,edep,rlev,curDepth;
int m_ObjectType;
public:
void setName(QString strOldPath, QString strOldName);
void setName(QString strOldPath, QString strOldName, int nObjectType);
};
#endif /* PAITABLEWIDGET_H_ */

View File

@ -11,12 +11,12 @@
//#include "ui_PaiCoreDialog.h"
//#include "ObjCoreImage.h"
#include "geometryutils.h"
//#include "ObjWelllog.h"
#include "ObjWelllog.h"
#include "LogIO.h"
//#include "CurveLineLog.h"
//#include "ObjWelllogTABLE.h"
#include "ObjWelllogTABLE.h"
//#include "DataManagger.h"
//#include "griddataadapter.h"
#include "griddataadapter.h"
//#include "ConsoleOutputWidget.h"
@ -24,21 +24,21 @@
#include "ShowCurve.h"
#include "CurvePropertyEdit.h"
#include "CallManage.h"
#include "ObjectID.h"
//float保留4位小数
#define FLOATPREC 4
#define SWITCH_VIEWID "switchId"
using namespace std;
Slf_WAVE WaveInfo;
static Slf_WAVE WaveInfo;
WellLogTableDialogNew::WellLogTableDialogNew(QWidget *parent, Qt::WindowFlags flags)
:QDialog(parent, flags), m_isShowDig(false)
{
m_pUI = new Ui::WellLogTableDialogNew();
m_pUI->setupUi(this);
// //数据局部显示适配器
// m_gridData = new GridDataAdapter(m_pUI->tableWidget, m_pUI->horizontalScrollBar, m_pUI->verticalScrollBar);
m_gridData = new GridDataAdapter(m_pUI->tableWidget, m_pUI->horizontalScrollBar, m_pUI->verticalScrollBar);
// m_pWell = NULL;
@ -98,9 +98,14 @@ void WellLogTableDialogNew::swtichViewSize()
QSize size=this->size();
if(isExp)
{
int changeSize=size.width()/2.0;
// int changeSize=size.width()/2.0;
spanItem->setMinimumWidth(changeSize);
// spanItem->setMinimumWidth(changeSize);
// spanItem->show();
m_pUI->tabWidget->setFixedWidth(0);
spanItem->setMinimumWidth(0);
m_gridData->m_gridWidth=size.width()-10;
spanItem->show();
}
}
@ -186,11 +191,16 @@ void WellLogTableDialogNew::slotImport()
TableFromCSVFile(m_pUI->tableWidget);
}
void WellLogTableDialogNew::setName(QString strOldPath, QString strOldName)
void WellLogTableDialogNew::setName(QString strOldPath, QString strOldName, int nObjectType)
{
FileName = strOldPath;
CurveName = strOldName;
m_ObjectType = nObjectType;
CObjWellLogTABLE* pWellLog = new CObjWellLogTABLE;
pWellLog->SetSlfFileName(strOldPath);
pWellLog->m_name = strOldName;
m_pWellLogs.clear();
m_pWellLogs.append(pWellLog);
//初始化
InitWell();
@ -211,6 +221,19 @@ void WellLogTableDialogNew::InitWell()
// m_gridData->initWellData(D_WellData,m_pWell);
// }
if (TABLEE_OBJECT == m_ObjectType)
{
m_gridData->addActonMenu(2);
m_DataTyle=valid_NULL;
//表格数据
m_gridData->initTableWellLogData(D_TableWellLogData,m_pWellLogs);
m_pUI->tableWidget->verticalHeader()->hide();//隐藏左侧系统序号栏
swtichViewSize();
return;
}
CLogIO *logio=new CLogIO();
logio->Open(FileName.toStdString().c_str(),CSlfIO::modeRead);
index=logio->OpenCurve(CurveName.toStdString().c_str());
@ -261,13 +284,18 @@ void WellLogTableDialogNew::InitWell()
QTableWidgetItem* item2 = new QTableWidgetItem(QString::number(vtmp));
//item2->setFlags(item2->flags() & (~Qt::ItemIsEditable));
m_pUI->tableWidget->setItem(i, 1, item2);
}
}
bool WellLogTableDialogNew::InitWellLog()
{
if (TABLEE_OBJECT == m_ObjectType)
{
//表格数据
m_gridData->bindData();
return true;
}
//swtichViewSize();
int Type=0;
//if(TypeName=="波列数据")Type=1;

View File

@ -59,6 +59,7 @@ FORMS += \
HEADERS += \
../../common/geometryutils.h \
../CallManage/CallManage.h \
../include/CStringType.h \
../include/MyWelllogRound.h \
../include/WellDialog.h \
../include/WellLogDialog.h \
@ -67,11 +68,14 @@ HEADERS += \
../include/WellLogRoundDialog.h \
../include/WellLogTableDialogNew.h \
../include/WellLogUI.h \
../include/assetcopy.h \
../include/griddataadapter.h \
AngleAdjTool.h \
CurvePropertyEdit.h \
DrawCurveView.h \
ShowCurve.h \
SmoothTool.h \
TipPop.h \
deptlineedit.h \
editEnd.h
@ -79,27 +83,40 @@ SOURCES += \
../../common/geometryutils.cpp \
../CallManage/CallManage.cpp \
AngleAdjTool.cpp \
CStringType.cpp \
CurvePropertyEdit.cpp \
DrawCurveView.cpp \
MyWelllogRound.cpp \
ShowCurve.cpp \
SmoothTool.cpp \
TipPop.cpp \
WellDialog.cpp \
WellLogDialog.cpp \
WellLogLabel.cpp \
WellLogProjectDialog.cpp \
WellLogRoundDialog.cpp \
WellLogTableDialogNew.cpp \
assetcopy.cpp \
deptlineedit.cpp \
editEnd.cpp
editEnd.cpp \
griddataadapter.cpp
INCLUDEPATH += ../include
INCLUDEPATH += ../CallManage
INCLUDEPATH += ../../Slfio/include
INCLUDEPATH += ../../common
INCLUDEPATH += ../../BaseFun/include
INCLUDEPATH += ../../OSGDataModel/include
INCLUDEPATH += ../../DataMgr/include
CONFIG(debug, debug|release){
LIBS += -L../../Bin -lslfiod
LIBS += -L../../Bin -lBaseFund
LIBS += -L../../Bin -lOSGDataModeld
LIBS += -L../../Bin -lDataMgrd
} else {
LIBS += -L../../Bin -lslfio
LIBS += -L../../Bin -lBaseFun
LIBS += -L../../Bin -lOSGDataModel
LIBS += -L../../Bin -lDataMgr
}

View File

@ -78,6 +78,8 @@ MainWindow::MainWindow(QWidget *parent) :
//关联信号槽,数据查看
connect(CallManage::getInstance(), SIGNAL(sig_ShowCurve(QString, QString)), this, SLOT(s_ShowCurve(QString, QString)));
//关联信号槽,数据查看
connect(CallManage::getInstance(), SIGNAL(sig_ShowTable(QString, QString)), this, SLOT(s_ShowTable(QString, QString)));
}
MainWindow::~MainWindow()
@ -453,8 +455,25 @@ void MainWindow::s_ShowCurve(QString strSlfName, QString strName)
if(m_centerWidgets)
{
WellLogTableDialogNew* pDialog = new WellLogTableDialogNew();
pDialog->setName(strSlfName, strName);
m_centerWidgets->addTab(pDialog, strName);
pDialog->setName(strSlfName, strName, CURVE_OBJECT);
QString wellname;QString path;
GetWellNameAndPath(strSlfName, wellname, path);
m_centerWidgets->addTab(pDialog, wellname + ":" + strName);
int iCount = m_centerWidgets->count();
m_centerWidgets->m_pTabBar->setCurrentIndex(iCount-1);
}
}
//表格数据查看
void MainWindow::s_ShowTable(QString strSlfName, QString strName)
{
if(m_centerWidgets)
{
WellLogTableDialogNew* pDialog = new WellLogTableDialogNew();
pDialog->setName(strSlfName, strName, TABLEE_OBJECT);
QString wellname;QString path;
GetWellNameAndPath(strSlfName, wellname, path);
m_centerWidgets->addTab(pDialog, wellname + ":" + strName);
int iCount = m_centerWidgets->count();
m_centerWidgets->m_pTabBar->setCurrentIndex(iCount-1);
}

View File

@ -10,6 +10,7 @@
#include "qtprojectwidgets.h"
#include "qtcenterwidgets.h"
#include "mainwindownew.h"
#include "mainwindowcurve.h"
#include "customtabwidget.h"
#include "ConsoleOutputWidget.h"
@ -87,6 +88,7 @@ public slots:
void s_showView();
void s_ShowCurve(QString strSlfName, QString strName);//曲线数据查看
void s_ShowTable(QString strSlfName, QString strName);//表格数据查看
};

View File

@ -591,6 +591,10 @@ void QtProjectWidgets::initMenu()
_menuCurveObject = new QMenu(ui->treeWidget);
initCurveObjectTreeMenu(_menuCurveObject, ui->treeWidget);
//表格对象-右键菜单
_menuTableObject = new QMenu(ui->treeWidget);
initTableObjectTreeMenu(_menuTableObject, ui->treeWidget);
_menuWellName = new QMenu(ui->treeWidget);
initWellNameTreeMenu(_menuWellName, ui->treeWidget);
@ -623,8 +627,15 @@ void QtProjectWidgets::initCurveObjectTreeMenu(QMenu *menu, QTreeWidget *treeWid
m_action_ShowCurve->setIcon(QIcon(":/image/u174.png")); // 设置图标
connect(m_action_ShowCurve, SIGNAL(triggered(bool)), this, SLOT(onShowCurve(bool)));
menu->addAction(m_action_ShowCurve);
}
//初始化表格对象-右键菜单
void QtProjectWidgets::initTableObjectTreeMenu(QMenu *menu, QTreeWidget *treeWidget)
{
QAction* action_TableObject = new QAction("数据查看", treeWidget);
action_TableObject->setIcon(QIcon(":/image/u174.png")); // 设置图标
connect(action_TableObject, SIGNAL(triggered(bool)), this, SLOT(onShowTable(bool)));
menu->addAction(action_TableObject);
}
//初始化根节点(井名称)-右键菜单
@ -705,6 +716,12 @@ void QtProjectWidgets::onShowCurve(bool checked)
emit CallManage::getInstance()->sig_ShowCurve(m_strSlfName, m_strCurveObjectName);
}
//表格数据查看
void QtProjectWidgets::onShowTable(bool checked)
{
emit CallManage::getInstance()->sig_ShowTable(m_strSlfName, m_strCurveObjectName);
}
void QtProjectWidgets::onEditWelllogRound()
{
QTreeWidgetItem *wellItem = *ui->treeWidget->selectedItems().begin();
@ -794,7 +811,6 @@ void QtProjectWidgets::onImportSlfTable()
folderPath = folderPath + "/" + "#" + wellname + "/" + wellroundname + ".slf";
//QMessageBox::information(NULL,"标题",folderPath);
QStringList namelist;//=GetSelWellRound();
// namelist<<"D:/LogPlus/bin/../Logdata//例子2/#JPH-404/JPH-404.slf";
magr->dataInTable(CurItemType,wellname,folderPath);
}
@ -809,7 +825,6 @@ void QtProjectWidgets::onOutWellLogRound()
folderPath = folderPath + g_prjname;
folderPath = folderPath + "/" + "#" + wellname + "/" + wellroundname + ".slf";
QStringList namelist;//=GetSelWellRound();
// namelist<<"D:/LogPlus/bin/../Logdata//例子2/#JPH-404/JPH-404.slf";
namelist<<folderPath;
QStringList curvelist;//=GetSelCurve();
CDataOutPut* moutPut=new CDataOutPut();
@ -835,6 +850,13 @@ void QtProjectWidgets::onItemClicked(QTreeWidgetItem* item, int index)
m_strCurveObjectName = item->text(0);
m_strSlfName = item->data(0, Qt::UserRole+1).toString();
}
else if (strTreeTag == "tableObject")
{
//表格对象
popMenu = _menuTableObject;
m_strCurveObjectName = item->text(0);
m_strSlfName = item->data(0, Qt::UserRole+1).toString();
}
else if (strTreeTag == "wellname")
{
//根节点(项目名称)-右键菜单

View File

@ -37,7 +37,9 @@ public slots:
void s_OpenProject(QString fileFull); //打开项目
//曲线
void onShowCurve(bool checked = false); //数据查看
void onShowCurve(bool checked = false); //数据查看
//表格
void onShowTable(bool checked = false); //数据查看
void onEditWelllogRound();
void onImportSingleWellLogData();
void onImportSlfTable();
@ -50,6 +52,7 @@ public:
//右键菜单
QMenu *_menuRoot;
QMenu *_menuCurveObject;//曲线对象(AC、BS...)
QMenu *_menuTableObject;//表格对象
QMenu *_menuWellName;
//根节点(项目名称)-右键菜单
@ -75,6 +78,8 @@ public:
void initRootTreeMenu(QMenu *menu, QTreeWidget *treeWidget);
//初始化曲线对象(AC、BS...)-右键菜单
void initCurveObjectTreeMenu(QMenu *menu, QTreeWidget *treeWidget);
//初始化表格对象-右键菜单
void initTableObjectTreeMenu(QMenu *menu, QTreeWidget *treeWidget);
//初始化根节点(井名称)-右键菜单
void initWellNameTreeMenu(QMenu *menu, QTreeWidget *treeWidget);
private: