183 lines
6.6 KiB
C++
183 lines
6.6 KiB
C++
#ifndef TARCHSETTINGEDITTOOLS_2009_01_15
|
|
#define TARCHSETTINGEDITTOOLS_2009_01_15
|
|
//#pragma once
|
|
#include "adui.h"
|
|
#include "acui.h"
|
|
#include <map>
|
|
#include "XMLDomNode.h"
|
|
#include "XMLDomNodes.h"
|
|
#include "XMLDomFile.h"
|
|
class TarchHotKeyInfo
|
|
{
|
|
public:
|
|
//CString m_strKeyTitl;//命令组名
|
|
CString m_strKeyName;//命令名
|
|
CString m_strCmdName;//调用函数的名字
|
|
CString m_strCmment;//命令描述
|
|
public:
|
|
TarchHotKeyInfo()
|
|
{
|
|
m_strKeyName = _T("");//命令名
|
|
m_strCmdName = _T("");//调用函数的名字
|
|
m_strCmment = _T("");//命令描述
|
|
}
|
|
TarchHotKeyInfo(const TarchHotKeyInfo&data)
|
|
{
|
|
m_strKeyName = data.m_strKeyName;//命令名
|
|
m_strCmdName = data.m_strCmdName;//调用函数的名字
|
|
m_strCmment = data.m_strCmment;//命令描述
|
|
}
|
|
TarchHotKeyInfo& operator=(const TarchHotKeyInfo&data)
|
|
{
|
|
m_strKeyName = data.m_strKeyName;//命令名
|
|
m_strCmdName = data.m_strCmdName;//调用函数的名字
|
|
m_strCmment = data.m_strCmment;//命令描述
|
|
return *this;
|
|
}
|
|
};
|
|
class CToolbarData;
|
|
typedef Array<CXMLNodeInfoEx> NodeInfoAry;
|
|
class CTArchSettingEditTools
|
|
{
|
|
public:
|
|
CTArchSettingEditTools(void);
|
|
void SetXMLDoc(CXMLDOMFile*pXMLDoc){m_pXMLDoc = pXMLDoc;}//指定要操作的文档
|
|
//将上华设置信息导出到指定路径的xml文档
|
|
BOOL ExportTArchSettingData(CString strPath);
|
|
//导入指定xml文件中的设置内容 xml文件格式必须符合上华设置文件格式
|
|
void ImportAllTArchSettingData(std::map<CString,NodeInfoAry> &importMapData);
|
|
public:
|
|
~CTArchSettingEditTools(void);
|
|
private:
|
|
// 导入上华设置内容
|
|
void ImportTArchSet(std::map<CString,NodeInfoAry> &importMapData);
|
|
////导入基本设置对话框内容
|
|
void ImportBaseSet(const Array<CXMLNodeInfoEx> &aryData);
|
|
void SetOneBasePara(const CXMLNodeInfoEx& data);
|
|
////导入墙柱加粗界面内容
|
|
void ImportWallPillarSet(const Array<CXMLNodeInfoEx> &aryData);
|
|
void SetWallPillarPara(const CXMLNodeInfoEx& data,TDbConfig *p);
|
|
//轻质隔墙材料
|
|
void ImportMaterialPattern1(const CXMLNodeInfoEx& data,TDbConfig *pConfig,const CString &strName);
|
|
//填充墙材料
|
|
void ImportMaterialPattern2(const CXMLNodeInfoEx& data,TDbConfig *pConfig,const CString &strName);
|
|
//填充墙1材料
|
|
void ImportMaterialPattern3(const CXMLNodeInfoEx& data,TDbConfig *pConfig,const CString &strName);
|
|
//填充墙2材料
|
|
void ImportMaterialPattern4(const CXMLNodeInfoEx& data,TDbConfig *pConfig,const CString &strName);
|
|
//砖墙柱材料
|
|
void ImportMaterialPattern5(const CXMLNodeInfoEx& data,TDbConfig *pConfig,const CString &strName);
|
|
//石墙柱材料
|
|
void ImportMaterialPattern6(const CXMLNodeInfoEx& data,TDbConfig *pConfig,const CString &strName);
|
|
//钢筋混凝土
|
|
void ImportMaterialPattern7(const CXMLNodeInfoEx& data,TDbConfig *pConfig,const CString &strName);
|
|
//刚柱
|
|
void ImportMaterialPattern8(const CXMLNodeInfoEx& data,TDbConfig *pConfig,const CString &strName);
|
|
//导入高级选项内容
|
|
void ImportAdvancedSet(const Array<CXMLNodeInfoEx> &aryData);
|
|
// 导入自定义内容
|
|
////导入屏幕菜单
|
|
void ImportScreenMenu(const Array<CXMLNodeInfoEx> &aryData);
|
|
void SetScreenMenuData(const CXMLNodeInfoEx &data);
|
|
////导入工具条
|
|
void ImportToolBar(const Array<CXMLNodeInfoEx> &aryData);
|
|
////导入快捷键设置
|
|
void ImportHotKeySet(const Array<CXMLNodeInfoEx> &aryData);
|
|
void WritePgp(const Array<CXMLNodeInfoEx> &aryData);
|
|
////导入其他设置
|
|
void ImportOtherSet(const Array<CXMLNodeInfoEx> &aryData);
|
|
void SetFontProperty(const CXMLNodeInfoEx&nodeInfo);
|
|
//导入用户操作
|
|
void ImportUserOpreatorSet(const Array<CXMLNodeInfoEx> &aryData);
|
|
void SetUserOpreator(const CXMLNodeInfoEx&nodeInfo);
|
|
// 导出图形相关设置
|
|
void ExportDwgSet(const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//导出墙柱设置
|
|
void ExportWallPillarSet(const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//导出墙柱材料
|
|
void ExortMaterialPattern(const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//轻质隔墙材料
|
|
void ExortMaterialPattern1(TDbConfig *pConfig,const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//填充墙材料
|
|
void ExortMaterialPattern2(TDbConfig *pConfig,const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//填充墙1材料
|
|
void ExortMaterialPattern3(TDbConfig *pConfig,const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//填充墙2材料
|
|
void ExortMaterialPattern4(TDbConfig *pConfig,const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//砖墙柱材料
|
|
void ExortMaterialPattern5(TDbConfig *pConfig,const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//石墙柱材料
|
|
void ExortMaterialPattern6(TDbConfig *pConfig,const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//钢筋混凝土
|
|
void ExortMaterialPattern7(TDbConfig *pConfig,const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//刚柱
|
|
void ExortMaterialPattern8(TDbConfig *pConfig,const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//导出高级选项内容
|
|
void ExortAdvancedSet(const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//导出dict文档
|
|
void DictToXml(WDict *pDict,const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//导出dict中的父节点项
|
|
void DictToXmlParentNode(WDict *pDict,const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//导出dict中的叶子节点项
|
|
void DictToXmlLeafNode(WDict *pDict,const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//导出自定义内容
|
|
//导出屏幕菜单
|
|
void ExportScreenMenu(const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//导出工具条
|
|
void ExportToolBar(const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//导出快捷键设置
|
|
void ExportHotKey(const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
void ExportPgp(const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
void ExportOneHotKey(const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//导出其他设置
|
|
void ExportOtherSetting(const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//导出用户操作界面
|
|
void ExportUserOpreatorSetting(const CXMLDOMNodePtr& pXMLDOMNodePtr);
|
|
//根据指定命令名在dbf数据库中找到相应的描述
|
|
CString FindComment(const CString &strCmd);
|
|
//查找xml节点值在指定属性中的位置
|
|
int GetIndex(const CXMLNodeInfoEx &data,const CString &strAttriName);
|
|
//根据/ 把节点路径字符串分割成数组
|
|
void GetListCtrlIndex(const CXMLNodeInfoEx &data,CStringArray &arystr);
|
|
//把一个字符串分成多个字符串 按空格分
|
|
void DevideStr(const CString &str,CStringArray &aryStr);
|
|
//得到子串在原字符串中的位置定义尽适用于 “asd sd fg” 中查询asd等以空格分界
|
|
int GetSubStrNumInStr(const CString &str,const CString strSub)
|
|
{
|
|
CString strTem;
|
|
CStringArray arystr;
|
|
int nPos = str.Find(_T(" "),0);//根据空格区分子字符串
|
|
int nStart = 0;
|
|
while (nPos!=-1)
|
|
{
|
|
int nNum = nPos-nStart;
|
|
strTem = str.Mid(nStart,nNum);//得到子串添加到数组
|
|
arystr.Add(strTem);
|
|
nStart = nPos+1;
|
|
nPos = str.Find(_T(" "),nPos+1);
|
|
}
|
|
int nSize = str.GetLength();
|
|
if (nStart-1<nSize-1)
|
|
{
|
|
strTem = str.Mid(nStart,nSize-nStart);
|
|
arystr.Add(strTem);
|
|
}
|
|
// Zyu modify on 100722,支持64位
|
|
//int nLen = arystr.GetSize();
|
|
INT_PTR nLen = arystr.GetSize();
|
|
int i =0;
|
|
for (;i<nLen;i++)//在数组中查找指定字符串在数组中位置
|
|
{
|
|
CString strTest = arystr.GetAt(i);
|
|
if (strSub==strTest)
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
return -1;//没有匹配的返回-1
|
|
}
|
|
private:
|
|
CXMLDOMFile* m_pXMLDoc;//需要操作的文档
|
|
DList<CToolbarData> m_lstToolbarData;
|
|
};
|
|
#endif |