00001
00002 #ifndef __RES_H
00003 #define __RES_H
00004
00005
00006 #include "GXmlTree.h"
00007
00008
00010
00011 enum ResFileFormat
00012 {
00013 CodepageFile,
00014 Lr8File,
00015 XmlFile,
00016 };
00017
00018 typedef const char *GLanguageId;
00019
00020 struct GLanguage
00021 {
00022 const char *Name;
00023 GLanguageId Id;
00024 int Win32Id;
00025 int OldId;
00026 const char *CodePage;
00027
00028 bool IsEnglish()
00029 {
00030 return Id[0] == 'e' AND
00031 Id[1] == 'n' AND
00032 !Id[2];
00033 }
00034
00035 bool operator ==(GLanguageId i)
00036 {
00037 return i AND stricmp(Id, i) == 0;
00038 }
00039
00040 bool operator !=(GLanguageId i)
00041 {
00042 return !(*this == i);
00043 }
00044 };
00045
00046 LgiExtern GLanguage LgiLanguageTable[];
00047 LgiExtern GLanguage *GFindLang(GLanguageId Id, const char *Name = 0);
00048 LgiExtern GLanguage *GFindOldLang(int OldId);
00049
00051
00052 LgiExtern char Res_Dialog[];
00053 LgiExtern char Res_Table[];
00054 LgiExtern char Res_ControlTree[];
00055 LgiExtern char Res_StaticText[];
00056 LgiExtern char Res_EditBox[];
00057 LgiExtern char Res_CheckBox[];
00058 LgiExtern char Res_Button[];
00059 LgiExtern char Res_Group[];
00060 LgiExtern char Res_RadioBox[];
00061 LgiExtern char Res_Tab[];
00062 LgiExtern char Res_TabView[];
00063 LgiExtern char Res_ListView[];
00064 LgiExtern char Res_Column[];
00065 LgiExtern char Res_TreeView[];
00066 LgiExtern char Res_Bitmap[];
00067 LgiExtern char Res_Progress[];
00068 LgiExtern char Res_Slider[];
00069 LgiExtern char Res_ComboBox[];
00070 LgiExtern char Res_ScrollBar[];
00071 LgiExtern char Res_Custom[];
00072
00073
00074 class ResObjectImpl;
00075 class ResFactory;
00076
00077 struct LgiClass ResReadCtx
00078 {
00079 virtual bool Check(char *tags) { return true; }
00080 virtual bool Check(GXmlTag *t) { return true; }
00081 };
00082
00083 class LgiClass ResObject
00084 {
00085 private:
00086 ResObjectImpl *_ObjImpl;
00087
00088 protected:
00089 char *_ObjName;
00090
00091 public:
00092 ResObject(char *Name);
00093 virtual ~ResObject();
00094
00095 char *GetObjectName() { return _ObjName; }
00096 virtual ResObjectImpl *GetObjectImpl(ResFactory *f);
00097 };
00098
00099
00100 class LgiClass ResFactory
00101 {
00102 public:
00103
00104 bool Res_Read(ResObject *Obj, GXmlTag *Tag, ResReadCtx &Ctx);
00105 bool Res_Write(ResObject *Obj, GXmlTag *Tag);
00106
00107
00108 virtual char *StringFromRef(int Ref) = 0;
00109 virtual ResObject *CreateObject(GXmlTag *Tag, ResObject *Parent) = 0;
00110
00111
00112 virtual void Res_SetPos (ResObject *Obj, int x1, int y1, int x2, int y2) = 0;
00113 virtual void Res_SetPos (ResObject *Obj, char *s) = 0;
00114 virtual GRect Res_GetPos (ResObject *Obj) = 0;
00115 virtual int Res_GetStrRef (ResObject *Obj) = 0;
00116 virtual bool Res_SetStrRef (ResObject *Obj, int Ref, ResReadCtx *Ctx) = 0;
00117 virtual void Res_Attach (ResObject *Obj, ResObject *Parent) = 0;
00118 virtual bool Res_GetChildren (ResObject *Obj, List<ResObject> *l, bool Deep) = 0;
00119 virtual void Res_Append (ResObject *Obj, ResObject *Parent) = 0;
00120 virtual bool Res_GetItems (ResObject *Obj, List<ResObject> *l) = 0;
00121 virtual GDom* Res_GetDom (ResObject *Obj) = 0;
00122
00123
00124 virtual bool Res_GetProperties(ResObject *Obj, GDom *Props) = 0;
00125 virtual bool Res_SetProperties(ResObject *Obj, GDom *Props) = 0;
00126 };
00127
00128 #endif