Files
envi-code/SourceCode/Code2026/Dimension/WDictItem.h
T

259 lines
5.1 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
#pragma once
2026-09-28 15:28:50 +08:00
#include "PDList.h"
#include "SHList.h"
#include "globalFunc.h"
2026-10-04 00:04:20 +08:00
//字典项
2026-09-28 15:28:50 +08:00
class WDictItem
{
public:
WDictItem(const TCHAR* sName = NULL, const TCHAR* sDesc = NULL);
virtual ~WDictItem();
virtual int GetType() const;
virtual void operator >> (CArchive &ar);
virtual void operator << (CArchive &ar);
virtual void CopyData(const WDictItem &src);
bool IsDict() const;
bool IsValid();
bool operator == (const WDictItem &item) const;
bool operator != (const WDictItem &item) const;
bool operator > (const WDictItem &item) const;
bool operator < (const WDictItem &item) const;
virtual void saveToJson(DIMJson::WValue &v);
virtual void loadByJson(const DIMJson::WValue &v);
public:
2026-10-04 00:04:20 +08:00
//名称不能为空,区分大小写!
2026-09-28 15:28:50 +08:00
CString m_sName;
2026-10-04 00:04:20 +08:00
//项描述
2026-09-28 15:28:50 +08:00
CString m_sDesc;
};
class WBoolItem : public WDictItem
{
public:
virtual ~WBoolItem();
virtual int GetType()const;
virtual void operator>>(CArchive& ar);
virtual void operator<<(CArchive& ar);
virtual void CopyData(const WDictItem& src);
virtual void saveToJson(DIMJson::WValue &v);
virtual void loadByJson(const DIMJson::WValue &v);
public:
BOOL m_data;
};
class WCharItem : public WDictItem
{
public:
virtual ~WCharItem();
virtual int GetType()const;
virtual void operator >> (CArchive &ar);
virtual void operator << (CArchive &ar);
virtual void CopyData(const WDictItem &src);
virtual void saveToJson(DIMJson::WValue &v);
virtual void loadByJson(const DIMJson::WValue &v);
public:
char m_data;
};
class WCStringItem : public WDictItem
{
public:
virtual ~WCStringItem();
virtual int GetType()const;
virtual void operator >> (CArchive &ar);
virtual void operator << (CArchive &ar);
virtual void CopyData(const WDictItem &src);
virtual void saveToJson(DIMJson::WValue &v);
virtual void loadByJson(const DIMJson::WValue &v);
public:
CString m_data;
};
class WDoubleItem : public WDictItem
{
public:
virtual ~WDoubleItem();
virtual int GetType()const;
virtual void operator>>(CArchive &ar);
virtual void operator<<(CArchive &ar);
virtual void CopyData(const WDictItem &src);
virtual void saveToJson(DIMJson::WValue &v);
virtual void loadByJson(const DIMJson::WValue &v);
public:
double m_data;
};
class WLongItem : public WDictItem
{
public:
virtual ~WLongItem();
virtual int GetType()const;
virtual void operator >> (CArchive &ar);
virtual void operator << (CArchive &ar);
virtual void CopyData(const WDictItem &src);
virtual void saveToJson(DIMJson::WValue &v);
virtual void loadByJson(const DIMJson::WValue &v);
public:
long m_data;
};
class WSelectItem : public WDictItem, public SHList<CString>
{
public:
virtual ~WSelectItem();
virtual void operator >> (CArchive &ar);
virtual void operator << (CArchive &ar);
virtual void CopyData(const WDictItem &src);
2026-10-04 00:04:20 +08:00
//自定义类型类型号大于100
2026-09-28 15:28:50 +08:00
virtual int GetType()const;
2026-10-04 00:04:20 +08:00
//外部要保证m_data为有效索引
2026-09-28 15:28:50 +08:00
CString GetSelString()const;
virtual void saveToJson(DIMJson::WValue &v);
virtual void loadByJson(const DIMJson::WValue &v);
public:
int m_data;
};
class WDictPath : public PDList<WDictItem>
{
public:
~WDictPath();
WDictPath(const CString& sPath);
bool IsValid();
};
class WDict : public WDictItem, public PDList<WDictItem>
{
public:
WDict(const TCHAR* sName = NULL, const TCHAR *sDesc = NULL);
virtual ~WDict();
virtual int GetType() const;
virtual void operator >> (CArchive &ar);
virtual void operator << (CArchive &ar);
virtual void CopyData(const WDictItem &src);
2026-10-04 00:04:20 +08:00
//没找到则添加,路径被键占用返回NULL,path内容一般会改变!
2026-09-28 15:28:50 +08:00
WDict* FindOrAddDict(WDictPath &path);
WDict* FindOrAddDict(const CString &sPath);
bool ReadFile(const TCHAR *sFile);
bool WriteFile(const TCHAR *sFile);
bool ReadByDWG();
bool WriteToDWG();
2026-10-04 00:04:20 +08:00
//如果名称重复返回false,且外部释放pNewItem!无论是否添加成功,GetCurPData()==*pNewItem!
2026-09-28 15:28:50 +08:00
bool AppendItem(WDictItem *pNewItem);
2026-10-04 00:04:20 +08:00
//在父路径下添加,返回false时外部释放pNewItem!
2026-09-28 15:28:50 +08:00
bool AppendItem(const CString &sParentPath, WDictItem *pNewItem);
bool SetValue(const CString &sPath, int value);
bool GetValue(const CString &sPath, int &value);
bool SetValue(const CString &sPath, bool value);
bool GetValue(const CString &sPath, bool &value);
bool SetValue(const CString &sPath, char value);
bool GetValue(const CString &sPath, char &value);
bool SetValue(const CString &sPath, long value);
bool GetValue(const CString &sPath, long &value);
bool SetValue(const CString &sPath, double value);
bool GetValue(const CString &sPath, double &value);
bool SetValue(const CString &sPath, unsigned int valude);
bool GetValue(const CString &sPath, unsigned int &value);
bool SetValue(const CString &sPath, const CString& value);
bool GetValue(const CString &sPath, CString &value);
bool GetCombValue(const CString &sPath, int &v);
2026-10-04 00:04:20 +08:00
//path内容一般会改变!
2026-09-28 15:28:50 +08:00
WDictItem* FindItem(WDictPath &path);
WDictItem* FindItem(const CString &sPath);
2026-10-04 00:04:20 +08:00
//没找到则添加
2026-09-28 15:28:50 +08:00
WDictItem* FindOrAddItem(const CString &sPath, int type);
virtual void saveToJson(DIMJson::WValue &v);
virtual void loadByJson(const DIMJson::WValue &v);
private:
WDictItem* DynCreateItem(int type);
};