00001
00002
00003 #include "Res.h"
00004 #include "GContainers.h"
00005
00006 class LgiResources;
00007 class LgiClass LgiStringRes
00008 {
00009 LgiResources *Res;
00010
00011 public:
00012 static char *CodePage;
00013 static GLanguage *CurLang;
00014
00015 int Ref;
00016 int Id;
00017 char *Str;
00018 char *Tag;
00019 bool IsString;
00020
00021 LgiStringRes(LgiResources *res);
00022 ~LgiStringRes();
00023 bool Read(GXmlTag *Tag, ResFileFormat Format);
00024 };
00025
00026 class LgiClass LgiDialogRes
00027 {
00028 LgiResources *Res;
00029
00030 public:
00031 GXmlTag *Dialog;
00032 LgiStringRes *Str;
00033 GRect Pos;
00034
00035 LgiDialogRes(LgiResources *res);
00036 ~LgiDialogRes();
00037
00038 bool Read(GXmlTag *Tag, ResFileFormat Format);
00039 char *Name() { return (Str) ? Str->Str : 0; }
00040 int Id() { return (Str) ? Str->Id : 0; }
00041 int X() { return Pos.X(); }
00042 int Y() { return Pos.Y(); }
00043 };
00044
00045 class LgiClass LgiMenuRes : public GObject
00046 {
00047 LgiResources *Res;
00048
00049 public:
00050 GXmlTag *Tag;
00051 List<LgiStringRes> Strings;
00052
00053 LgiMenuRes(LgiResources *res);
00054 ~LgiMenuRes();
00055
00056 bool Read(GXmlTag *Tag, ResFileFormat Format);
00057 LgiStringRes *GetString(GXmlTag *Tag);
00058 };
00059
00060 class LgiClass LgiResources : public ResFactory
00061 {
00062 friend class GLgiRes;
00063 friend class GMenu;
00064 friend class LgiStringRes;
00065
00066 class LgiResourcesPrivate *d;
00067 GXmlTag *Root;
00068 List<LgiDialogRes> Dialogs;
00069 List<LgiMenuRes> Menus;
00070 GEvent *ScriptEngine;
00071
00072
00073
00074 GLanguageId *Languages;
00075 void AddLang(GLanguageId id);
00076
00077 public:
00078 List<LgiStringRes> Strings;
00079 static List<LgiResources> ResourceContainers;
00080
00081 LgiResources(char *FileName = 0, bool Warn = false);
00082 ~LgiResources();
00083
00084
00085 bool LoadDialog(int Resource,
00086 List<GView> &Children,
00087 GRect *Pos = 0,
00088 char *Name = 0,
00089 GEvent *ScriptEngine = 0);
00090 LgiStringRes *StrFromRef(int Ref);
00091 char *StringFromRef(int Ref);
00092 char *StringFromId(int Ref);
00093 bool IsOk();
00094 ResFileFormat GetFormat();
00095
00096
00097 bool Load(char *FileName);
00098 GLanguageId *GetLanguages() { return Languages; }
00099
00100
00101 ResObject *CreateObject(GXmlTag *Tag, ResObject *Parent);
00102 void Res_SetPos(ResObject *Obj, int x1, int y1, int x2, int y2);
00103 void Res_SetPos(ResObject *Obj, char *s);
00104 GRect Res_GetPos(ResObject *Obj);
00105 int Res_GetStrRef(ResObject *Obj);
00106 void Res_SetStrRef(ResObject *Obj, int Ref);
00107 void Res_Attach(ResObject *Obj, ResObject *Parent);
00108 bool Res_GetChildren(ResObject *Obj, List<ResObject> *l, bool Deep);
00109 void Res_Append(ResObject *Obj, ResObject *Parent);
00110 bool Res_GetItems(ResObject *Obj, List<ResObject> *l);
00111 bool Res_GetProperties(ResObject *Obj, ObjProperties *Props);
00112 bool Res_SetProperties(ResObject *Obj, ObjProperties *Props);
00113 GDom* Res_GetDom(ResObject *Obj);
00114 };
00115
00116 LgiExtern LgiResources *LgiGetResObj(bool Warn = false);