|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "Defines.h"
|
|
|
|
|
#include "iBase_global.h"
|
|
|
|
|
#include "LlUtils_global.h"
|
|
|
|
|
|
|
|
|
|
/// @brief 该类是一些公有函数库的实现,比较杂
|
|
|
|
|
/// @note 通常一些不知道应放在何处的代码可以仍在该类中实现
|
|
|
|
|
/// 该类请不要添加成员变量或非静态的方法
|
|
|
|
|
class I_UTILSSHARED_EXPORT ZxBaseUtil
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
ZxBaseUtil();
|
|
|
|
|
|
|
|
|
|
// 获取当前APP文件所在的路径 ..\Bin\Release
|
|
|
|
|
static QString getAppDir();
|
|
|
|
|
|
|
|
|
|
// 获得当前DLl文件所在的路径 ..\Bin\Release
|
|
|
|
|
static QString getDllDir(QString strDll);
|
|
|
|
|
|
|
|
|
|
/// @brief 获取相应的组合路径
|
|
|
|
|
/// @param sCategory 对应 defines.h中 s_Dir_Config 之类
|
|
|
|
|
/// @param sSubDir 对应 defines.h中 s_SubDir_AlgoConfig 之类
|
|
|
|
|
/// @param sTag 对应 defines.h中 s_Tag_Plot 之类
|
|
|
|
|
static QString getDirOf(QString sCategory, QString sSubDir = "", QString sTag = "",QString sDll = "");
|
|
|
|
|
|
|
|
|
|
/// @brief 获取当前项目下的相应的组合路径
|
|
|
|
|
/// @param sTag 对应 defines.h中 s_Tag_Plot 之类
|
|
|
|
|
static QString getCurProjectDirOf(QString sTag = "");
|
|
|
|
|
|
|
|
|
|
/// @brief 创建(如果不存在)路径
|
|
|
|
|
/// @note 作用包括如下:
|
|
|
|
|
/// (1)、创建 sDir 目录,如果未创建
|
|
|
|
|
/// (2)、\\替换为/,并且确保路径以 / 结尾
|
|
|
|
|
/// (3)、去除 ../ 之类的路径(规范)
|
|
|
|
|
static bool makeSureDir(QString& sDir);
|
|
|
|
|
|
|
|
|
|
/// @brief 拷贝文件夹
|
|
|
|
|
/// @param fromDir : 源目录
|
|
|
|
|
/// @param toDir : 目标目录
|
|
|
|
|
/// @param bCoverIfFileExists : ture:同名时覆盖 false:同名时返回false,终止拷贝
|
|
|
|
|
/// @note 返回: ture拷贝成功 false:拷贝未完成
|
|
|
|
|
static bool copyDir(const QDir& fromDir, const QDir& toDir, bool bCoverIfFileExists = true);
|
|
|
|
|
|
|
|
|
|
// 把QStringList或QVector转换为QString,为了打印方便
|
|
|
|
|
//static QString convert2Str(QStringList vecStr, QString seprator = " ");
|
|
|
|
|
//static QString convert2Str(QVector<QString> vecStr, QString seprator = " ");
|
|
|
|
|
|
|
|
|
|
/// @brief 获取当前打开的工区,对框架接口的封装
|
|
|
|
|
//static void setCurrentProject(ZxProjectData* project);
|
|
|
|
|
|
|
|
|
|
/// @brief 上次打开项目,
|
|
|
|
|
static void setLastProject(const QString& sProjectName);
|
|
|
|
|
static QString getLastProject();
|
|
|
|
|
|
|
|
|
|
/// @brief 当前打开的项目 test log
|
|
|
|
|
static void setCurrentProjectName(const QString& sProjectName);
|
|
|
|
|
static QString getCurrentProjectName();
|
|
|
|
|
|
|
|
|
|
/// @brief 当前打开的项目的路径 ../Bin\Test_Data\test log/
|
|
|
|
|
static void setCurProjectDir(const QString& sProjectDir);
|
|
|
|
|
static QString getCurProjectDir();
|
|
|
|
|
|
|
|
|
|
/// @brief 获取当前工区下某口井的相应的组合路径
|
|
|
|
|
/// @param sTag 对应 defines.h中 s_Tag_Plot 之类
|
|
|
|
|
static QString getWellDirOf(QString sWellName, QString sTag = "", QString sTagChild = "");
|
|
|
|
|
|
|
|
|
|
/// @brief 获取当前工区下当前井的相应的组合路径
|
|
|
|
|
/// @param sTag 对应 defines.h中 s_Tag_Plot 之类
|
|
|
|
|
static QString getCurWellDirOf(QString sTag = "");
|
|
|
|
|
|
|
|
|
|
/// @brief 设置当前井
|
|
|
|
|
static void setCurrentWellName(const QString& s);
|
|
|
|
|
static QString getCurrentWellName();
|
|
|
|
|
static void setCurrentWellCode(const QString& s);
|
|
|
|
|
static QString getCurrentWellCode();
|
|
|
|
|
|
|
|
|
|
/// @brief 上次打开路径
|
|
|
|
|
static void setLastDir(const QString& sDir);
|
|
|
|
|
static QString getLastDir();
|
|
|
|
|
|
|
|
|
|
/// @brief 自定义信息
|
|
|
|
|
static void setCustomValue(QString sKey, const QString& s);
|
|
|
|
|
static QString getCustomValue(QString sKeu);
|
|
|
|
|
static void setCustomValueEx(QString sKey, const QStringList& list);
|
|
|
|
|
static QStringList getCustomValueEx(QString sKey);
|
|
|
|
|
|
|
|
|
|
/// @brief 获取当前系统日期
|
|
|
|
|
static QString getSysDate();
|
|
|
|
|
|
|
|
|
|
/// @brief 获取当前系统时间
|
|
|
|
|
static QString getSysDateTime(bool bNormalFormat = false);
|
|
|
|
|
|
|
|
|
|
/// @brief 获取当前系统登录用户
|
|
|
|
|
static QString getSysUserName();
|
|
|
|
|
|
|
|
|
|
/// @brief 对项目或项目所在的上一级目录进行个性化设定
|
|
|
|
|
/// @param sDir 路径
|
|
|
|
|
/// @param bTop 是否项目路径的上一级目录,仅仅为了换个图标而已,也可以修改该参数直接传过来路径
|
|
|
|
|
/// bTop仅仅当 sIcon 为空时有效,这次测井软件固定两个图标中的一个
|
|
|
|
|
/// @param sIcon 图标路径,绝对路径
|
|
|
|
|
/// @note 只有windows平台有效
|
|
|
|
|
static bool customProjectFolder(QString sDir, bool bTop = false, QString sIcon = "");
|
|
|
|
|
|
|
|
|
|
/// @brief 针对Qt暂未找到trimRight之类的接口
|
|
|
|
|
/// @note 后续可能封闭该接口
|
|
|
|
|
static bool trimStrRight(QString& s);
|
|
|
|
|
|
|
|
|
|
/// @brief 求取坐标轴的刻度显示
|
|
|
|
|
/// @param fMin 左值,通常为最小值
|
|
|
|
|
/// @param fMax 右值,通常为最大值
|
|
|
|
|
/// @param bAxisX 是否X轴
|
|
|
|
|
/// @param bLinear 是否线性
|
|
|
|
|
/// @param bExpand 是否流量自动扩展一个tick
|
|
|
|
|
/// @param pVecScales结果存储位置
|
|
|
|
|
/// @note 1:通常 fMin < fMax; 对于fMin > fMax 的情况也做了相应处理(返回结果也是倒着)
|
|
|
|
|
static bool calAxisScales(float& fMin,
|
|
|
|
|
float& fMax,
|
|
|
|
|
bool bAxisX,
|
|
|
|
|
bool bLinear = true,
|
|
|
|
|
bool bExpand = false,
|
|
|
|
|
QVector<float>* pVecScales = NULL);
|
|
|
|
|
|
|
|
|
|
/// @brief 随机颜色提取
|
|
|
|
|
static QColor getCustomColor(int nIndex);
|
|
|
|
|
|
|
|
|
|
/// @brief 循环迭代删除文件夹
|
|
|
|
|
static bool removeDir(const QString &sDir);
|
|
|
|
|
|
|
|
|
|
/// @brief 把文件夹的最后一级重命名
|
|
|
|
|
static bool renameDir(const QString& sDir, const QString& sNewLast);
|
|
|
|
|
|
|
|
|
|
/// @brief 循环迭代拷贝文件夹
|
|
|
|
|
static bool copyDir(const QString& sFrom, const QString& sTo);
|
|
|
|
|
|
|
|
|
|
/// @brief 判断字符串是否一致,不考虑大小写
|
|
|
|
|
static bool isSameStr(QString s1, QString s2);
|
|
|
|
|
|
|
|
|
|
/// @brief 判断字符串是否包括中文字符
|
|
|
|
|
static bool strContainsChs(QString s);
|
|
|
|
|
|
|
|
|
|
/// @brief 对字符串进行排序,如果包括中文,则以汉语拼音进行
|
|
|
|
|
static bool sortStrList(QStringList& list, bool bAscMode = true);
|
|
|
|
|
|
|
|
|
|
/// @brief 打开文件夹,调用API接口
|
|
|
|
|
static void openFolder(QString sDir);
|
|
|
|
|
|
|
|
|
|
/// @brief 获取下一个可以用的标题,默认加_1,_2,_3
|
|
|
|
|
/// @param nFixedLen取值如下
|
|
|
|
|
/// -1,则加_1,_2,_3
|
|
|
|
|
/// 0-1,则加1,2,3,...,10
|
|
|
|
|
/// 2+,则加01,02,03,...,10或001,002...
|
|
|
|
|
static QString getNextOneName(QStringList& listOlds, \
|
|
|
|
|
QString& sBase, \
|
|
|
|
|
int nFixedLen = -1);
|
|
|
|
|
|
|
|
|
|
// 对于Cross,改为自定义,因为系统的太大,不美观
|
|
|
|
|
static void customerCrossCusor(QCursor &o);
|
|
|
|
|
|
|
|
|
|
// 获取字符串表示的float的小数位数
|
|
|
|
|
// ”1.230"返回3,”100“返回0
|
|
|
|
|
static int getStrDigit(QString s);
|
|
|
|
|
|
|
|
|
|
/// @brief 根据小数位数,获取其字符串
|
|
|
|
|
/// @param f:数值
|
|
|
|
|
/// @param nDigit:小数位数 > 0
|
|
|
|
|
/// @param bAutoAdjust:是否自动调整
|
|
|
|
|
/// @param bAutoTrimmed:自动截取末尾0
|
|
|
|
|
/// @note 如果bAutoAdjust=1,f=0.0001,nDigit=3则返回“0.0001”
|
|
|
|
|
static QString getValidStr(float f, \
|
|
|
|
|
int nDigit, \
|
|
|
|
|
bool bAutoTrimmed = true, \
|
|
|
|
|
bool bAutoAdjust = true);
|
|
|
|
|
|
|
|
|
|
/// @brief 根据小数位数,获取其字符串
|
|
|
|
|
/// @param v:数值
|
|
|
|
|
/// @param nDigit:小数位数 > 0
|
|
|
|
|
/// @param bAutoAdjust:是否自动调整
|
|
|
|
|
/// @param bAutoTrimmed:自动截取末尾0
|
|
|
|
|
/// @note 如果bAutoAdjust=1,f=0.0001,nDigit=3则返回“0.0001”
|
|
|
|
|
static QString getValidStrEx(QVariant v, \
|
|
|
|
|
int nDigit, \
|
|
|
|
|
bool bAutoTrimmed = true, \
|
|
|
|
|
bool bAutoAdjust = true);
|
|
|
|
|
|
|
|
|
|
// 启动Help
|
|
|
|
|
static bool startHelp(QString sChm = "");
|
|
|
|
|
|
|
|
|
|
/// @brief 开启一个一个进程
|
|
|
|
|
/// @param sApp 进程名,exe名
|
|
|
|
|
/// @param sCmdLine 命令行
|
|
|
|
|
/// @param sWorkDir 工作目录
|
|
|
|
|
static bool startProcess(QString sApp, \
|
|
|
|
|
QString sCmdLine, \
|
|
|
|
|
QString sWorkDir = "");
|
|
|
|
|
|
|
|
|
|
// 判断字符串可否作为路径或者文件明,注:只是判断能否作为文件名或路径名,而不作存在性判断
|
|
|
|
|
static bool isValidFileName(const QString s);
|
|
|
|
|
static bool isValidFilePath(const QString s);
|
|
|
|
|
|
|
|
|
|
/// @brief 获取屏幕Dpi
|
|
|
|
|
/// @param bX X方向或Y方向
|
|
|
|
|
/// @param bPhysicalDpi 物理Dpi还是逻辑Dpi
|
|
|
|
|
static int getDpi(bool bX = true, bool bPhysicalDpi = true);
|
|
|
|
|
|
|
|
|
|
};
|