Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members | Related Pages

LgiRes.h

00001 
00002 // Multi-language library: LgiRes
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     // NULL terminated list of languages
00073     // available in the loaded file.
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     // Instantiate resources
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     // Api
00097     bool Load(char *FileName);
00098     GLanguageId *GetLanguages() { return Languages; }
00099 
00100     // Factory
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);

Generated on Wed Oct 26 14:46:50 2005 for Lgi by  doxygen 1.4.1