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 char *GLanguageId;
00019
00020 struct GLanguage
00021 {
00022 char *Name;
00023 GLanguageId Id;
00024 int Win32Id;
00025 int OldId;
00026 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
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058 LgiExtern GLanguage LgiLanguageTable[];
00059 LgiExtern GLanguage *GFindLang(GLanguageId Id, char *Name = 0);
00060 LgiExtern GLanguage *GFindOldLang(int OldId);
00061
00063
00064 LgiExtern char Res_Dialog[];
00065 LgiExtern char Res_Table[];
00066 LgiExtern char Res_ControlTree[];
00067 LgiExtern char Res_StaticText[];
00068 LgiExtern char Res_EditBox[];
00069 LgiExtern char Res_CheckBox[];
00070 LgiExtern char Res_Button[];
00071 LgiExtern char Res_Group[];
00072 LgiExtern char Res_RadioBox[];
00073 LgiExtern char Res_Tab[];
00074 LgiExtern char Res_TabView[];
00075 LgiExtern char Res_ListView[];
00076 LgiExtern char Res_Column[];
00077 LgiExtern char Res_TreeView[];
00078 LgiExtern char Res_Bitmap[];
00079 LgiExtern char Res_Progress[];
00080 LgiExtern char Res_Slider[];
00081 LgiExtern char Res_ComboBox[];
00082 LgiExtern char Res_ScrollBar[];
00083 LgiExtern char Res_Custom[];
00084
00085
00086 class ResObjectImpl;
00087 class ResFactory;
00088
00089 class LgiClass ResParent
00090 {
00091 public:
00092 ResParent() {}
00093 virtual ~ResParent() {}
00094
00095 virtual void *GetRealPtr() { return 0; }
00096 };
00097
00098 class LgiClass ResObject : public ResParent
00099 {
00100 private:
00101 ResObjectImpl *_ObjImpl;
00102
00103 protected:
00104 char *_ObjName;
00105
00106 public:
00107 ResObject(char *Name);
00108 ~ResObject();
00109
00110 char *GetObjectName() { return _ObjName; }
00111 virtual ResObjectImpl *GetObjectImpl(ResFactory *f);
00112 };
00113
00114
00115 class LgiClass ResFactory
00116 {
00117 public:
00118
00119 bool Res_Read(ResObject *Obj, GXmlTag *Tag);
00120 bool Res_Write(ResObject *Obj, GXmlTag *Tag);
00121
00122
00123 virtual char *StringFromRef(int Ref) = 0;
00124 virtual ResObject *CreateObject(GXmlTag *Tag, ResObject *Parent) = 0;
00125
00126
00127 virtual void Res_SetPos (ResObject *Obj, int x1, int y1, int x2, int y2) = 0;
00128 virtual void Res_SetPos (ResObject *Obj, char *s) = 0;
00129 virtual GRect Res_GetPos (ResObject *Obj) = 0;
00130 virtual int Res_GetStrRef (ResObject *Obj) = 0;
00131 virtual void Res_SetStrRef (ResObject *Obj, int Ref) = 0;
00132 virtual void Res_Attach (ResObject *Obj, ResObject *Parent) = 0;
00133 virtual bool Res_GetChildren (ResObject *Obj, List<ResObject> *l, bool Deep) = 0;
00134 virtual void Res_Append (ResObject *Obj, ResObject *Parent) = 0;
00135 virtual bool Res_GetItems (ResObject *Obj, List<ResObject> *l) = 0;
00136 virtual GDom* Res_GetDom (ResObject *Obj) = 0;
00137
00138
00139 virtual bool Res_GetProperties(ResObject *Obj, GDom *Props) = 0;
00140 virtual bool Res_SetProperties(ResObject *Obj, GDom *Props) = 0;
00141 };
00142
00143 #endif