查看表格数据
This commit is contained in:
parent
298e0b1cf1
commit
8dcd7dd211
|
|
@ -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);//新建空白道,没有曲线
|
||||
|
|
|
|||
430
OSGDataModel/include/BaseObject.h
Normal file
430
OSGDataModel/include/BaseObject.h
Normal 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
|
||||
167
OSGDataModel/include/CStringType.h
Normal file
167
OSGDataModel/include/CStringType.h
Normal 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
|
||||
|
||||
197
OSGDataModel/include/DataObject.h
Normal file
197
OSGDataModel/include/DataObject.h
Normal 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
|
||||
286
OSGDataModel/include/ObjWelllog.h
Normal file
286
OSGDataModel/include/ObjWelllog.h
Normal 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和AliasName,name就是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
|
||||
33
OSGDataModel/include/ObjWelllogTABLE.h
Normal file
33
OSGDataModel/include/ObjWelllogTABLE.h
Normal 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
|
||||
514
OSGDataModel/src/BaseObject.cpp
Normal file
514
OSGDataModel/src/BaseObject.cpp
Normal 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
|
||||
326
OSGDataModel/src/CStringType.cpp
Normal file
326
OSGDataModel/src/CStringType.cpp
Normal 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;
|
||||
}
|
||||
|
|
@ -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)
|
||||
# 目标文件夹
|
||||
|
|
|
|||
1877
OSGDataModel/src/ObjWellLog.cpp
Normal file
1877
OSGDataModel/src/ObjWellLog.cpp
Normal file
File diff suppressed because it is too large
Load Diff
30
OSGDataModel/src/ObjWellLogTABLE.cpp
Normal file
30
OSGDataModel/src/ObjWellLogTABLE.cpp
Normal 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
|
||||
|
|
@ -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_ */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);//表格数据查看
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
{
|
||||
//根节点(项目名称)-右键菜单
|
||||
|
|
|
|||
|
|
@ -38,6 +38,8 @@ public slots:
|
|||
|
||||
//曲线
|
||||
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:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user