diff --git a/readme.txt b/readme.txt --- a/readme.txt +++ b/readme.txt @@ -1,125 +1,105 @@ Lightweight GUI Library ----------------------- The primary aim of LGI is to abstract away the differences between -operating system's and provide a consistant API that applications +operating system's and provide a consistent API that applications can target. As a secondary goal the library should strive to be compact for easy distribution with an application without bloating out the download. Also the API is designed to be as simple as possible for the programmer to use, without sacrificing functionality on the various platforms supported. The library is not intended to be shared between applications -as there is too much change in the API and object size to warrent a +as there is too much change in the API and object size to warrant a shared library approach. In the future this may change if compatibility can be improved. Compiling LGI ------------- - Open '[Lgi]/include/common/Lgi.h' and check through any compile time + Open '[lgi]/include/common/Lgi.h' and check through any compile time options there. You may want to switch things on or off to get it to compile. Win32: - Load Lgi/Lgi.dsp into Visual C++ and build it. + Load [lgi]/Lgi_vc9.sln into Visual C++ 2008 and build it. Linux: - make -f Lgi/Makefile.linux + make -f [lgi]/Makefile.linux -or- - make -f Lgi/LgiIde/Makefile.linux (builds both Lgi and the IDE) + make -f [lgi]/LgiIde/Makefile.linux (builds both Lgi and the IDE) Cygwin: - make -f Lgi/Makefile.win32 + make -f [lgi]/Makefile.win32 -or- - make -f Lgi/LgiIde/Makefile.win32 (builds both Lgi and the IDE) + make -f [lgi]/LgiIde/Makefile.win32 (builds both Lgi and the IDE) Mac: - Open Lgi.xcode in XCode and run the build command. + Open [lgi]/src/mac/carbon/Lgi.xcode in XCode and run the build command. Add build folders so the OS can find the shared libraries: * For Windows add these to your path: - - Lgi/Debug - - Lgi/Release - - Lgi/Gel/Debug - - Lgi/Gel/Release + - [lgi]/lib * For Cygwin add these to your path: - - Lgi/DebugX - - Lgi/ReleaseX - - Lgi/Gel/DebugX - - Lgi/Gel/ReleaseX + - [lgi]/DebugX + - [lgi]/ReleaseX * On Linux, create symlinks in /usr/lib to the files: - - Lgi/DebugX/liblgid.so - - Lgi/ReleaseX/liblgi.so - - Lgi/Gel/DebugX/liblgiskind.so - - Lgi/Gel/ReleaseX/liblgiskin.so + - [lgi]/DebugX/liblgid.so + - [lgi]/ReleaseX/liblgi.so Building Your App ----------------- - Win32: Add the project Lgi/Lgi.dsp to your workspace. Then in your + Win32: Add the project [lgi]/Lgi_vc9.vxproj to your workspace. Then in your new project you'll need to set these settings: * C/C++ tab - C++ Language - RTTI on. - Code Generation - [Debug] Run time library: Debug Multithreaded DLL - [Release] Run time library: Multithreaded DLL - Preprocessor - Define: LGI_STATIC (if your using LgiStatic version) - Include path: [Lgi]/include/common - Include path: [Lgi]/include/win32 * Link tab - Object/library modules: - Add 'imm32.lib' (if you use GTextView3.cpp) Linux/Cygwin: * Add to your library string: - [Debug] '-L[Lgi]/DebugX -llgid' - [Release] '-L[Lgi]/ReleaseX -llgi' * Add to your compile flags: - '-i[Lgi]/include/common -i[Lgi]/include/linux/X' Mac: * Include the lgi.framework into your app * Add the these folders to your include path: - [Lgi]/include/common - [Lgi]/include/mac Usage ----- In most cases just: #include "Lgi.h" But you can also include "Gdc2.h" for just graphics support without all the GUI stuff. - To utilise the built in memory debugging features, encase all C++ memory - allocation with these macros: - - Obj *o = NEW(Obj(a, b, c)); // instead of "new Obj(a, b, c);" - DeleteObj(o); // instead of "delete o;" - - And for arrays: - - Obj *o = NEW(Obj[10]); - DeleteArray(o); - - The List class has these built in: - - List o; - o.DeleteObjects(); // or o.DeleteArrays(); etc... - The naming conventions for container methods are: - "Delete(...)" removes from the container and frees the object. - "Remove(...)" just removes from the container. Documentation ------------- - See: [Lgi]/docs/html/index.html. + See: [Lgi]/docs/html/index.html. + + Which you may have to generate with doxygen if you are building from the + repository. diff --git a/src/common/Lgi/Lgi.cpp b/src/common/Lgi/Lgi.cpp --- a/src/common/Lgi/Lgi.cpp +++ b/src/common/Lgi/Lgi.cpp @@ -1,2198 +1,2198 @@ // // Cross platform LGI functions // #include #include #include #include #ifdef _WINDOWS #include #include #else #include #endif #include "Lgi.h" #include "GToken.h" #include "GCapabilities.h" #if defined(LINUX) #include "LgiWinManGlue.h" #elif defined(_WINDOWS) #include "GRegKey.h" #endif #if defined POSIX #include #include #include #include #include "GProcess.h" #elif defined BEOS #include #endif #if defined(WIN32) && defined(__GTK_H__) #include "../win32/GSymLookup.h" #else #include "GSymLookup.h" #endif #include "GLibrary.h" ////////////////////////////////////////////////////////////////////////// // Misc stuff #if defined MAC && !defined COCOA bool _get_path_FSRef(FSRef &fs, GStringPipe &a) { HFSUniStr255 Name; ZeroObj(Name); FSRef Parent; FSCatalogInfo Cat; ZeroObj(Cat); OSErr e = FSGetCatalogInfo(&fs, kFSCatInfoVolume|kFSCatInfoNodeID, &Cat, &Name, NULL, &Parent); if (!e) { if (_get_path_FSRef(Parent, a)) { GAutoString u(LgiNewUtf16To8((char16*)Name.unicode, Name.length * sizeof(char16))); // printf("CatInfo = '%s' %x %x\n", u.Get(), Cat.nodeID, Cat.volume); if (u && Cat.nodeID > 2) { a.Print("%s%s", DIR_STR, u.Get()); } } return true; } return false; } GAutoString FSRefPath(FSRef &fs) { GStringPipe a; if (_get_path_FSRef(fs, a)) { return GAutoString(a.NewStr()); } return GAutoString(); } #endif bool LgiPostEvent(OsView Wnd, int Event, GMessage::Param a, GMessage::Param b) { #if WIN32NATIVE return PostMessage(Wnd, Event, a, b); #elif defined(__GTK_H__) if (Wnd) { GMessage m(0); m.Set(Event, a, b); return m.Send(Wnd); } else { printf("%s:%i - Warning: LgiPostEvent failed because View=0\n", _FL); } #elif defined(BEOS) if (Wnd) { BMessage Msg(Event); Msg.AddInt32("a", a); Msg.AddInt32("b", b); BMessenger m(Wnd); return m.SendMessage(&Msg) == B_OK; } #elif defined(MAC) && !defined COCOA #if 0 int64 Now = LgiCurrentTime(); static int64 Last = 0; static int Count = 0; Count++; if (Now > Last + 1000) { printf("Sent %i events in the last %ims\n", Count, (int)(Now-Last)); Last = Now; Count = 0; } #endif EventRef Ev; OSStatus e = CreateEvent(NULL, kEventClassUser, kEventUser, 0, // EventTime kEventAttributeNone, &Ev); if (e) { printf("%s:%i - CreateEvent failed with %i\n", __FILE__, __LINE__, (int)e); } else { EventTargetRef t = GetControlEventTarget(Wnd); e = SetEventParameter(Ev, kEventParamLgiEvent, typeUInt32, sizeof(Event), &Event); if (e) printf("%s:%i - error %i\n", __FILE__, __LINE__, (int)e); e = SetEventParameter(Ev, kEventParamLgiA, typeUInt32, sizeof(a), &a); if (e) printf("%s:%i - error %i\n", __FILE__, __LINE__, (int)e); e = SetEventParameter(Ev, kEventParamLgiB, typeUInt32, sizeof(b), &b); if (e) printf("%s:%i - error %i\n", __FILE__, __LINE__, (int)e); // printf("Sent event %x,%x,%x\n", Event, a, b); bool Status = false; #if 1 e = SetEventParameter(Ev, kEventParamPostTarget, typeEventTargetRef, sizeof(t), &t); if (e) printf("%s:%i - error %i\n", __FILE__, __LINE__, (int)e); e = PostEventToQueue(GetMainEventQueue(), Ev, kEventPriorityStandard); if (e) printf("%s:%i - error %i\n", __FILE__, __LINE__, (int)e); else Status = true; #else e = SendEventToEventTarget(Ev, GetControlEventTarget(Wnd)); if (e) printf("%s:%i - error %i\n", __FILE__, __LINE__, e); else Status = true; #endif ReleaseEvent(Ev); return Status; } #endif return false; } void LgiExitApp() { exit(0); } ////////////////////////////////////////////////////////////////////////// #ifdef WIN32 bool RegisterActiveXControl(char *Dll) { GLibrary Lib(Dll); if (Lib.IsLoaded()) { #ifdef _MSC_VER typedef HRESULT (STDAPICALLTYPE *p_DllRegisterServer)(void); p_DllRegisterServer DllRegisterServer = (p_DllRegisterServer)Lib.GetAddress("DllRegisterServer"); if (DllRegisterServer) { return DllRegisterServer() == S_OK; } #else LgiAssert(!"Not impl."); #endif } return false; } #endif ////////////////////////////////////////////////////////////////////////// /// \brief Returns the operating system that Lgi is running on. /// \sa Returns one of the defines starting with LGI_OS_UNKNOWN in LgiDefs.h int LgiGetOs ( /// Returns the version of the OS or NULL if you don't care GArray *Ver ) { #if defined(WIN32) || defined(WIN64) static int Os = LGI_OS_UNKNOWN; static int Version = 0, Revision = 0; if (Os == LGI_OS_UNKNOWN) { OSVERSIONINFO v; v.dwOSVersionInfoSize=sizeof(v); GetVersionEx(&v); Version = v.dwMajorVersion; Revision = v.dwMinorVersion; #ifdef WIN32 BOOL IsWow64 = FALSE; IsWow64Process(GetCurrentProcess(), &IsWow64); #endif Os = (v.dwPlatformId == VER_PLATFORM_WIN32_NT) ? #ifdef WIN32 (IsWow64 ? LGI_OS_WIN64 : LGI_OS_WIN32) #else LGI_OS_WIN64 #endif : LGI_OS_WIN9X; } if (Ver) { Ver->Add(Version); Ver->Add(Revision); } return Os; #elif defined BEOS if (Ver) { Ver->Add(5); Ver->Add(0); } return LGI_OS_BEOS; #elif defined LINUX if (Ver) { utsname Buf; if (!uname(&Buf)) { GToken t(Buf.release, "."); for (int i=0; iAdd(atoi(t[i])); } } } return LGI_OS_LINUX; #elif defined MAC && !defined COCOA if (Ver) { SInt32 i; if (Gestalt(gestaltSystemVersionMajor, &i) == noErr) { Ver->Add(i); if (Gestalt(gestaltSystemVersionMinor, &i) == noErr) { Ver->Add(i); if (Gestalt(gestaltSystemVersionBugFix, &i) == noErr) { Ver->Add(i); } } } else if (Gestalt(gestaltSystemVersion, &i) == noErr) { char s[10]; sprintf_s(s, sizeof(s), "%x", (int)i); char *e = s + strlen(s) - 1; char a[3] = { e[-1], 0 }; char b[3] = { e[0], 0 }; e[-1] = 0; Ver->Add(atoi(s)); Ver->Add(htoi(a)); Ver->Add(htoi(b)); } } return LGI_OS_MAC_OS_X; #else return LGI_OS_UNKNOWN; #endif } const char *LgiGetOsName() { const char *Str[LGI_OS_MAX] = { "Unknown", "Win9x", "Win32", "Win64", "Haiku", "Linux", "MacOSX", }; return Str[LgiGetOs()]; } #ifdef WIN32 #define RecursiveFileSearch_Wildcard "*.*" #else // unix'ish OS #define RecursiveFileSearch_Wildcard "*" #endif bool LgiRecursiveFileSearch(const char *Root, GArray *Ext, GArray *Files, uint64 *Size, uint64 *Count, RecursiveFileSearch_Callback Callback, void *UserData) { bool Status = false; // validate args if (!Root) return 0; // get directory enumerator GDirectory Dir; Status = true; // enumerate the directory contents for (bool Found = Dir.First(Root); Found; Found = Dir.Next()) { char Name[256]; if (!Dir.Path(Name, sizeof(Name))) continue; if (Callback) { if (!Callback(UserData, Name, &Dir)) { continue; } } if (Dir.IsDir()) { // dir LgiRecursiveFileSearch( Name, Ext, Files, Size, Count, Callback, UserData); } else { // process file bool Match = true; // if no Ext's then default to match if (Ext) { for (int i=0; iLength(); i++) { const char *e = (*Ext)[i]; char *RawFile = strrchr(Name, DIR_CHAR); if (RawFile && (Match = MatchStr(e, RawFile+1))) { break; } } } if (Match) { // file matched... process: if (Files) { Files->Add(NewStr(Name)); } if (Size) { *Size += Dir.GetSize(); } if (Count) { Count++; } Status = true; } } } return Status; } #define LGI_TRACE_TO_FILE // #include #ifndef WIN32 #define _vsnprintf vsnprintf #endif void LgiTrace(const char *Msg, ...) { #if defined _INC_MALLOC && WIN32NATIVE if (_heapchk() != _HEAPOK) { return; } #endif if (Msg) { #ifdef WIN32 static GMutex Sem; Sem.Lock(_FL); #endif char Buffer[2049] = ""; #ifdef LGI_TRACE_TO_FILE GFile f; static char LogPath[MAX_PATH] = ""; if (LogPath[0] == 0) { if (LgiGetExeFile(LogPath, sizeof(LogPath))) { #ifdef MAC char *Dir = strrchr(LogPath, DIR_CHAR); if (Dir) { char Part[256]; strcpy_s(Part, sizeof(Part), Dir+1); LogPath[0] = 0; LgiMakePath(LogPath, sizeof(LogPath), LogPath, "~/Library/Logs"); LgiMakePath(LogPath, sizeof(LogPath), LogPath, Dir+1); strcat_s(LogPath, sizeof(LogPath), ".txt"); } else #endif { char *Dot = strrchr(LogPath, '.'); if (Dot && !strchr(Dot, DIR_CHAR)) strcpy(Dot+1, "txt"); else strcat(LogPath, ".txt"); } if (f.Open(LogPath, O_WRITE)) { f.Close(); } else { char Leaf[64]; char *Dir = strrchr(LogPath, DIR_CHAR); if (Dir) { strcpy_s(Leaf, sizeof(Leaf), Dir + 1); LgiGetSystemPath(LSP_APP_ROOT, LogPath, sizeof(LogPath)); if (!DirExists(LogPath)) FileDev->CreateFolder(LogPath); LgiMakePath(LogPath, sizeof(LogPath), LogPath, Leaf); } else goto OnError; } } else { // Well what to do now? I give up OnError: strcpy_s(LogPath, sizeof(LogPath), "trace.txt"); } } #endif va_list Arg; va_start(Arg, Msg); _vsnprintf(Buffer, sizeof(Buffer)-1, Msg, Arg); va_end(Arg); #ifdef LGI_TRACE_TO_FILE if (f.Open(LogPath, O_WRITE)) { f.Seek(0, SEEK_END); f.Write(Buffer, strlen(Buffer)); f.Close(); } #endif #if defined WIN32 OutputDebugString(Buffer); Sem.Unlock(); #else printf("%s", Buffer); #endif } } #ifndef LGI_STATIC #define STACK_SIZE 12 void LgiStackTrace(const char *Msg, ...) { GSymLookup::Addr Stack[STACK_SIZE]; ZeroObj(Stack); GSymLookup *Lu = LgiApp->GetSymLookup(); int Frames = Lu ? Lu->BackTrace(0, 0, Stack, STACK_SIZE) : 0; if (Msg) { char Buffer[2049] = ""; #ifdef LGI_TRACE_TO_FILE GFile f; if (LgiGetExeFile(Buffer, sizeof(Buffer))) { char *Dot = strrchr(Buffer, '.'); if (Dot && !strchr(Dot, DIR_CHAR)) { strcpy(Dot+1, "txt"); } else { strcat(Buffer, ".txt"); } f.Open(Buffer, O_WRITE); } #endif va_list Arg; va_start(Arg, Msg); int Len = _vsnprintf(Buffer, sizeof(Buffer)-1, Msg, Arg); va_end(Arg); Lu->Lookup(Buffer+Len, sizeof(Buffer)-Len-1, Stack, Frames); #ifdef LGI_TRACE_TO_FILE if (f.IsOpen()) { f.Seek(0, SEEK_END); f.Write(Buffer, strlen(Buffer)); f.Close(); } #endif #if defined WIN32 OutputDebugString(Buffer); #else printf("Trace: %s", Buffer); #endif } } #endif bool LgiTrimDir(char *Path) { if (Path) { char *p = strrchr(Path, DIR_CHAR); if (p) { *p = 0; return true; } } return false; } GAutoString LgiMakeRelativePath(const char *Base, const char *Path) { GStringPipe Status; if (Base && Path) { #ifdef WIN32 bool SameNs = strnicmp(Base, Path, 3) == 0; #else bool SameNs = true; #endif if (SameNs) { GToken b(Base + 1, ":" DIR_STR); GToken p(Path + 1, ":" DIR_STR); int Same = 0; while (b[Same] && p[Same] && stricmp(b[Same], p[Same]) == 0) { Same++; } for (int i = Same; i= b.Length()) { Status.Print(".%s", DIR_STR); } for (int n = Same; n Same) { Status.Push(DIR_STR); } Status.Push(p[n]); } } } return GAutoString(Status.NewStr()); } bool LgiIsRelativePath(const char *Path) { if (!Path) return false; if (*Path == '.') return true; #ifdef WIN32 if (IsAlpha(Path[0]) && Path[1] == ':') // Drive letter path return false; #endif if (*Path == DIR_CHAR) return false; if (strstr(Path, "://")) // Protocol def return false; return true; // Correct or not??? } bool LgiMakePath(char *Str, int StrSize, const char *Path, const char *File) { LgiAssert(Str != 0 && StrSize > 0 && Path != 0 && File != 0); if (StrSize <= 4) { printf("%s:%i - LgiMakeFile buf size=%i?\n", _FL, StrSize); } if (Str && Path && File) { if (Str != Path) { strcpy_s(Str, StrSize, Path); } char Dir[] = { '/', '\\', 0 }; #define EndStr() Str[strlen(Str)-1] #define EndDir() if (!strchr(Dir, EndStr())) strcat(Str, DIR_STR); int Len = strlen(Str); char *End = Str + (Len ? Len - 1 : 0); if (strchr(Dir, *End) && End > Str) { *End = 0; } GToken T(File, Dir); for (int i=0; i= StrSize - 1) return false; Str[Len++] = DIR_CHAR; Str[Len] = 0; } int SegLen = strlen(T[i]); if (Len + SegLen + 1 > StrSize) { return false; } strcpy(Str + Len, T[i]); } } } return true; } bool LgiGetTempPath(char *Dst, int DstSize) { return LgiGetSystemPath(LSP_TEMP, Dst, DstSize); } bool LgiGetSystemPath(LgiSystemPath Which, char *Dst, int DstSize) { bool Status = false; #if defined(WIN32) #if !defined(CSIDL_MYDOCUMENTS) #define CSIDL_MYDOCUMENTS 0x0005 #endif #if !defined(CSIDL_MYMUSIC) #define CSIDL_MYMUSIC 0x000d #endif #if !defined(CSIDL_MYVIDEO) #define CSIDL_MYVIDEO 0x000e #endif #if !defined(CSIDL_LOCAL_APPDATA) #define CSIDL_LOCAL_APPDATA 0x001c #endif #if !defined(CSIDL_COMMON_APPDATA) #define CSIDL_COMMON_APPDATA 0x0023 #endif #if !defined(CSIDL_APPDATA) #define CSIDL_APPDATA 0x001a #endif #endif if (Dst) { #ifdef LINUX // Ask our window manager add-on if it knows the path GLibrary *WmLib = LgiApp ? LgiApp->GetWindowManagerLib() : NULL; if (WmLib) { Proc_LgiWmGetPath WmGetPath = (Proc_LgiWmGetPath) WmLib->GetAddress("LgiWmGetPath"); if (WmGetPath && WmGetPath(Which, Dst, DstSize)) { return true; } } #endif switch (Which) { case LSP_USER_DOWNLOADS: { #if defined(WIN32) && defined(_MSC_VER) // OMG!!!! Really? #ifndef REFKNOWNFOLDERID typedef GUID KNOWNFOLDERID; #define REFKNOWNFOLDERID const KNOWNFOLDERID & GUID FOLDERID_Downloads = {0x374DE290,0x123F,0x4565,{0x91,0x64,0x39,0xC4,0x92,0x5E,0x46,0x7B}}; #endif GLibrary Shell("Shell32.dll"); typedef HRESULT (STDAPICALLTYPE *pSHGetKnownFolderPath)(REFKNOWNFOLDERID rfid, DWORD dwFlags, HANDLE hToken, PWSTR *ppszPath); pSHGetKnownFolderPath SHGetKnownFolderPath = (pSHGetKnownFolderPath)Shell.GetAddress("SHGetKnownFolderPath"); if (SHGetKnownFolderPath) { PWSTR ptr = NULL; HRESULT r = SHGetKnownFolderPath(FOLDERID_Downloads, 0, NULL, &ptr); if (SUCCEEDED(r)) { GAutoString u8(LgiNewUtf16To8(ptr)); if (u8) { strcpy_s(Dst, DstSize, u8); Status = true; } CoTaskMemFree(ptr); } } if (!Status) { GRegKey k(false, "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"); char *p = k.GetStr("{374DE290-123F-4565-9164-39C4925E467B}"); if (DirExists(p)) { strcpy_s(Dst, DstSize, p); Status = true; } } if (!Status) { GAutoString MyDoc(GetWindowsFolder(CSIDL_MYDOCUMENTS)); if (MyDoc) { LgiMakePath(Dst, DstSize, MyDoc, "Downloads"); Status = DirExists(Dst); } } if (!Status) { GAutoString MyDoc(GetWindowsFolder(CSIDL_PROFILE)); if (MyDoc) { LgiMakePath(Dst, DstSize, MyDoc, "Downloads"); Status = DirExists(Dst); } } #else LgiAssert(!"Not implemented"); #endif break; } case LSP_USER_DOCUMENTS: { #if defined(WIN32) && defined(_MSC_VER) GAutoString f(GetWindowsFolder(CSIDL_PERSONAL)); if (f) { strcpy_s(Dst, DstSize, f); Status = true; } #else LgiAssert(!"Not implemented"); #endif break; } case LSP_USER_MUSIC: { #if defined WIN32 GAutoString f(GetWindowsFolder(CSIDL_MYMUSIC)); if (f) { strcpy_s(Dst, DstSize, f); Status = true; } #elif defined MAC && !defined COCOA FSRef Ref; OSErr e = FSFindFolder(kUserDomain, kMusicDocumentsFolderType, kDontCreateFolder, &Ref); if (e) printf("%s:%i - FSFindFolder failed e=%i\n", _FL, e); else { GAutoString a = FSRefPath(Ref); if (a) { strcpy_s(Dst, DstSize, a); return true; } } #else LgiAssert(!"Not implemented"); #endif break; } case LSP_USER_VIDEO: { #if defined WIN32 GAutoString f(GetWindowsFolder(CSIDL_MYVIDEO)); if (f) { strcpy_s(Dst, DstSize, f); Status = true; } #elif defined MAC && !defined COCOA FSRef Ref; OSErr e = FSFindFolder(kUserDomain, kMovieDocumentsFolderType, kDontCreateFolder, &Ref); if (e) printf("%s:%i - FSFindFolder failed e=%i\n", _FL, e); else { GAutoString a = FSRefPath(Ref); if (a) { strcpy_s(Dst, DstSize, a); return true; } } #else LgiAssert(!"Not implemented"); #endif break; } case LSP_USER_APPS: { #if defined WIN32 GAutoString f(GetWindowsFolder( #ifdef WIN64 CSIDL_PROGRAM_FILES #else CSIDL_PROGRAM_FILESX86 #endif )); if (f) { strcpy_s(Dst, DstSize, f); Status = true; } #elif defined MAC strcpy_s(Dst, DstSize, "/Applications"); Status = true; #elif defined LINUX strcpy_s(Dst, DstSize, "/usr/bin"); Status = true; #elif defined BEOS LgiAssert(!"Impl me."); #endif break; } case LSP_APP_INSTALL: { if (LgiGetExePath(Dst, DstSize)) { #if defined WIN32 char *Last = strrchr(Dst, DIR_CHAR); if (Last) { if (stristr(Last, #ifdef _DEBUG "Debug" #else "Release" #endif )) *Last = 0; } #elif defined MAC char *Last = strrchr(Dst, DIR_CHAR); if (Last) { if (!stricmp(Last, #ifdef _DEBUG "/Debug" #else "/Release" #endif )) *Last = 0; } if ((Last = strrchr(Dst, DIR_CHAR))) { if (!stricmp(Last, "/build")) *Last = 0; } #endif return true; } break; } case LSP_APP_ROOT: { #ifndef LGI_STATIC if (!LgiApp) { LgiAssert(0); break; } char *Name = LgiApp->Name(); if (!Name) { LgiAssert(0); break; } GAutoString Base; #if defined MAC && !defined COCOA FSRef Ref; OSErr e = FSFindFolder(kUserDomain, kDomainLibraryFolderType, kDontCreateFolder, &Ref); if (e) { printf("%s:%i - FSFindFolder failed e=%i\n", _FL, e); LgiAssert(0); } else { Base = FSRefPath(Ref); } #elif defined WIN32 Base.Reset(GetWindowsFolder(CSIDL_APPDATA)); #elif defined LINUX char Dot[128]; snprintf(Dot, sizeof(Dot), ".%s", Name); Name = Dot; struct passwd *pw = getpwuid(getuid()); if (pw) { Base.Reset(NewStr(pw->pw_dir)); } else LgiAssert(0); #else LgiAssert(0); #endif if (Base) { LgiMakePath(Dst, DstSize, Base, Name); Status = true; } else #endif { LgiAssert(0); } break; } case LSP_OS: { #if defined WIN32 char p[MAX_PATH]; if (GetWindowsDirectory(p, sizeof(p)) > 0) { strcpy_s(Dst, DstSize, p); Status = true; } #elif defined MAC && !defined COCOA FSRef Ref; OSErr e = FSFindFolder(kOnAppropriateDisk, kSystemFolderType, kDontCreateFolder, &Ref); if (e) printf("%s:%i - FSFindFolder failed e=%i\n", __FILE__, __LINE__, e); else { GAutoString u = FSRefPath(Ref); if (u) { strcpy_s(Dst, DstSize, u); Status = true; } } #else strcpy_s(Dst, DstSize, "/boot"); // it'll do for now... Status = true; #endif break; } case LSP_OS_LIB: { #if defined WIN32 char p[MAX_PATH]; if (GetSystemDirectory(p, sizeof(p)) > 0) { strcpy_s(Dst, DstSize, p); Status = true; } #elif defined MAC strcpy_s(Dst, DstSize, "/Library"); Status = true; #else strcpy_s(Dst, DstSize, "/lib"); // it'll do for now... Status = true; #endif break; } case LSP_TEMP: { #if defined WIN32 if (LgiGetOs() == LGI_OS_WIN9X) { char t[256]; if (GetTempPath(sizeof(t), t) > 0) { char *utf = LgiToNativeCp(t); if (utf) { strcpy_s(Dst, DstSize, utf); DeleteArray(utf); Status = true; } } } else { char16 t[256]; if (GetTempPathW(CountOf(t), t) > 0) { char *utf = LgiNewUtf16To8(t); if (utf) { strcpy_s(Dst, DstSize, utf); DeleteArray(utf); Status = true; } } } #elif defined MAC && !defined COCOA FSRef Ref; OSErr e = FSFindFolder(kUserDomain, kTemporaryFolderType, kCreateFolder, &Ref); if (e) LgiTrace("%s:%i - FSFindFolder failed e=%i\n", _FL, e); else { GAutoString u = FSRefPath(Ref); if (u) { strcpy_s(Dst, DstSize, u); Status = true; } else LgiTrace("%s:%i - FSRefPath failed.\n", _FL); } #else strcpy_s(Dst, DstSize, "/tmp"); // it'll do for now... Status = true; #endif break; } case LSP_COMMON_APP_DATA: { #if defined WIN32 GAutoString f(GetWindowsFolder(CSIDL_COMMON_APPDATA)); if (f) { strcpy_s(Dst, DstSize, f); Status = true; } #elif defined MAC && !defined COCOA FSRef Ref; OSErr e = FSFindFolder(kOnSystemDisk, kDomainLibraryFolderType, kDontCreateFolder, &Ref); if (e) printf("%s:%i - FSFindFolder failed e=%i\n", __FILE__, __LINE__, e); else { GAutoString u = FSRefPath(Ref); if (u) { strcpy_s(Dst, DstSize, u); Status = true; } } #elif defined LINUX strcpy_s(Dst, DstSize, "/usr"); Status = true; #elif defined BEOS strcpy_s(Dst, DstSize, "/boot/apps"); Status = true; #endif break; } case LSP_USER_APP_DATA: { #if defined WIN32 GAutoString f(GetWindowsFolder(CSIDL_APPDATA)); if (f) { strcpy_s(Dst, DstSize, f); Status = true; } #elif defined MAC && !defined COCOA FSRef Ref; OSErr e = FSFindFolder(kUserDomain, kDomainLibraryFolderType, kDontCreateFolder, &Ref); if (e) printf("%s:%i - FSFindFolder failed e=%i\n", __FILE__, __LINE__, e); else { GAutoString u = FSRefPath(Ref); if (u) { strcpy_s(Dst, DstSize, u); Status = true; } } #elif defined LINUX strcpy_s(Dst, DstSize, "/usr"); Status = true; #endif break; } case LSP_LOCAL_APP_DATA: { #if defined WIN32 GAutoString f(GetWindowsFolder(CSIDL_LOCAL_APPDATA)); if (f) { strcpy_s(Dst, DstSize, f); Status = true; } #else LgiAssert(!"Impl me."); #endif break; } case LSP_DESKTOP: { #if defined(_WINDOWS) && defined(_MSC_VER) GAutoString f(GetWindowsFolder(CSIDL_DESKTOPDIRECTORY)); if (f) { strcpy_s(Dst, DstSize, f); Status = true; } #elif defined MAC && !defined COCOA FSRef Ref; OSErr e = FSFindFolder(kOnAppropriateDisk, kDesktopFolderType, kDontCreateFolder, &Ref); if (e) printf("%s:%i - FSFindFolder failed e=%i\n", __FILE__, __LINE__, e); else { GAutoString u = FSRefPath(Ref); if (u) { strcpy_s(Dst, DstSize, u); Status = true; } } #elif defined POSIX struct passwd *pw = getpwuid(getuid()); if (pw) { #ifdef LINUX WindowManager wm = LgiGetWindowManager(); if (wm == WM_Gnome) sprintf_s(Dst, sizeof(Dst), "%s/.gnome-desktop", pw->pw_dir); else #endif sprintf_s(Dst, sizeof(Dst), "%s/Desktop", pw->pw_dir); Status = true; } #elif defined BEOS strcpy_s(Dst, DstSize, "/boot/home/Desktop"); Status = true; #endif break; } case LSP_HOME: { #if defined WIN32 #ifndef CSIDL_PROFILE #define CSIDL_PROFILE 0x0028 #endif GAutoString f(GetWindowsFolder(CSIDL_PROFILE)); if (f) { strcpy_s(Dst, DstSize, f); Status = true; } #elif defined POSIX struct passwd *pw = getpwuid(getuid()); if (pw) { strcpy_s(Dst, DstSize, pw->pw_dir); Status = true; } #elif defined BEOS strcpy_s(Dst, DstSize, "/boot/home"); Status = true; #endif break; } case LSP_EXE: { if (LgiGetExeFile(Dst, DstSize)) { LgiTrimDir(Dst); Status = true; } break; } case LSP_TRASH: { #if defined LINUX switch (LgiGetWindowManager()) { case WM_Kde: { static char KdeTrash[256] = ""; if (!ValidStr(KdeTrash)) { // Ask KDE where the current trash is... GProcess p; GStringPipe o; if (p.Run("kde-config", "--userpath trash", 0, true, 0, &o)) { char *s = o.NewStr(); if (s) { // Store it.. strcpy_s(KdeTrash, sizeof(KdeTrash), s); DeleteArray(s); // Clear out any crap at the end... char *e = KdeTrash + strlen(KdeTrash) - 1; while (e > KdeTrash && strchr(" \r\n\t/", *e)) { *e-- = 0; } } else { printf("%s:%i - No output from 'kde-config'.\n", __FILE__, __LINE__); } } else { printf("%s:%i - Run 'kde-config' failed.\n", __FILE__, __LINE__); } } if (ValidStr(KdeTrash)) { strcpy_s(Dst, DstSize, KdeTrash); Status = true; } break; } default: { printf("%s:%i - Unknown window manager.\n", __FILE__, __LINE__); break; } } #elif defined MAC && !defined COCOA FSRef Ref; OSErr e = FSFindFolder(kUserDomain, kTrashFolderType, kDontCreateFolder, &Ref); if (e) printf("%s:%i - FSFindFolder failed e=%i\n", __FILE__, __LINE__, e); else { GAutoString u = FSRefPath(Ref); if (u) { strcpy_s(Dst, DstSize, u); Status = true; } } #elif defined WIN32 // This should work but doesn't... *shrug* // char *f = GetWin32Folder(CSIDL_BITBUCKET); #else #endif break; } } } return Status; } bool LgiGetExeFile(char *Dst, int DstSize) { if (Dst) { #if defined WIN32 if (LgiGetOs() == LGI_OS_WIN9X) { char Exe[256]; if (GetModuleFileName(NULL, Exe, sizeof(Exe)) > 0) { char *e = LgiFromNativeCp(Exe); if (e) { strlwr(e); strcpy_s(Dst, DstSize, e); DeleteArray(e); return true; } else { LgiMsg(0, "LgiFromNativeCp returned 0, ANSI CodePage=%i (%s)", "LgiGetExeFile Error", MB_OK, GetACP(), LgiAnsiToLgiCp()); } } char m[256]; sprintf_s(m, sizeof(m), "GetModuleFileName failed err: %08.8X", GetLastError()); MessageBox(0, m, "LgiGetExeFile Error", MB_OK); LgiExitApp(); } else { char16 Exe[256]; if (GetModuleFileNameW(NULL, Exe, sizeof(Exe)) > 0) { char *e = LgiNewUtf16To8(Exe); if (e) { strcpy_s(Dst, DstSize, e); DeleteArray(e); return true; } } } #elif defined BEOS app_info Info; if (LgiApp->GetAppInfo(&Info) == B_OK) { BEntry e(&Info.ref); BPath p; if (e.GetPath(&p) == B_OK) { strcpy_s(Dst, DstSize, p.Path()); return true; } } #elif defined ATHEOS os::Directory AppPath; if (AppPath.SetTo("^/.") == 0) { std::string p; if (AppPath.GetPath(&p) == 0) { sprintf_s(Dst, DstSize, "%s%s%s", p.c_str(), DIR_STR, LgiApp->_AppFile); return true; } } #elif defined LINUX static char ExePathCache[256] = ""; bool Status = false; // this is _REALLY_ lame way to do it... but hey there aren't any // other better ways to get the full path of the running executable if (!ExePathCache[0]) { // First try the self method int Len = readlink("/proc/self/exe", ExePathCache, sizeof(ExePathCache)); Status = FileExists(ExePathCache); // printf("readlink=%i Status=%i Exe='%s'\n", Len, Status, ExePathCache); if (!Status) { ExePathCache[0] = 0; // Next try the map file method char ProcFile[256]; sprintf_s(ProcFile, sizeof(ProcFile), "/proc/%i/maps", getpid()); int fd = open(ProcFile, O_RDONLY); if (fd >= 0) { int Len = 16 << 10; // is this enough? // no better way of determining the length of proc info? char *Buf = new char[Len+1]; if (Buf) { int r = read(fd, Buf, Len); Buf[r] = 0; char *s = strchr(Buf, '/'); if (s) { char *e = strchr(s, '\n'); if (e) { *e = 0; strcpy_s(ExePathCache, sizeof(ExePathCache), s); Status = true; } } DeleteArray(Buf); } close(fd); } else { // Non proc system (like cygwin for example) // char Cmd[256]; // sprintf_s(Cmd, sizeof(Cmd), "ps | grep \"%i\"", getpid()); GStringPipe Ps; GProcess p; if (p.Run("ps", 0, 0, true, 0, &Ps)) { char *PsOutput = Ps.NewStr(); if (PsOutput) { GToken n(PsOutput, "\r\n"); for (int i=0; !Status && i 7) { int LinePid = 0; for (int i=0; i Ext; GArray Files; Ext.Add((char*)Name); #if DEBUG_FIND_FILE printf("%s:%i - Exe='%s'\n", __FILE__, __LINE__, Exe); #endif if (LgiRecursiveFileSearch(Exe, &Ext, &Files) && Files.Length()) { Result = Files[0]; Files.DeleteAt(0); } Files.DeleteArrays(); } return Result; } #if defined WIN32 static LARGE_INTEGER Freq = {0}; static bool CurTimeInit = false; #endif uint64 LgiCurrentTime() { #if defined WIN32 if (!CurTimeInit) { CurTimeInit = true; if (!QueryPerformanceFrequency(&Freq)) Freq.QuadPart = 0; } if (Freq.QuadPart) { // Return performance counter in ms LARGE_INTEGER i; if (QueryPerformanceCounter(&i)) { return i.QuadPart * 1000 / Freq.QuadPart; } // Now what?? Give up and go back to tick count I guess. Freq.QuadPart = 0; } // Fall back for systems without a performance counter. return GetTickCount(); #elif defined BEOS return system_time() / 1000; #elif defined MAC && !defined COCOA UnsignedWide t; Microseconds(&t); uint64 i = ((uint64)t.hi << 32) | t.lo; return i / 1000; #else timeval tv; gettimeofday(&tv, 0); return (tv.tv_sec * 1000) + (tv.tv_usec / 1000); #endif } uint64 LgiMicroTime() { #if defined WIN32 if (!CurTimeInit) { CurTimeInit = true; if (!QueryPerformanceFrequency(&Freq)) Freq.QuadPart = 0; } if (Freq.QuadPart) { // Return performance counter in ms LARGE_INTEGER i; if (QueryPerformanceCounter(&i)) { return i.QuadPart * 1000000 / Freq.QuadPart; } } return 0; #elif defined BEOS LgiAssert(!"Not impl."); return 0; #elif defined MAC && !defined COCOA UnsignedWide t; Microseconds(&t); return ((uint64)t.hi << 32) | t.lo; #else timeval tv; gettimeofday(&tv, 0); return (tv.tv_sec * 1000000) + tv.tv_usec; #endif } int LgiIsReleaseBuild() { #ifdef _DEBUG return 0; #else return 1; #endif } void LgiFormatSize(char *Str, int SLen, uint64 Size) { int64 K = 1024; int64 M = K * K; int64 G = K * M; if (Size == 1) { strcpy_s(Str, SLen, "1 byte"); } else if (Size < K) { sprintf_s(Str, SLen, "%u bytes", (int)Size); } else if (Size < 10 * K) { double d = (double)(int64)Size; sprintf_s(Str, SLen, "%.2f K", d / K); } else if (Size < M) { sprintf_s(Str, SLen, "%u K", (int) (Size / K)); } else if (Size < G) { double d = (double)(int64)Size; sprintf_s(Str, SLen, "%.2f M", d / M); } else { double d = (double)(int64)Size; sprintf_s(Str, SLen, "%.2f G", d / G); } } char *LgiTokStr(const char *&s) { char *Status = 0; if (s && *s) { // Skip whitespace static char Delim[] = ", \t\r\n"; while (*s && strchr(Delim, *s)) s++; if (*s) { if (strchr("\'\"", *s)) { char Delim = *s++; const char *e = strchr(s, Delim); if (!e) { // error, no end delimiter e = s; while (*e) e++; } Status = NewStr(s, e - s); s = *e ? e + 1 : e; } else { const char *e = s; while (*e && !strchr(Delim, *e)) e++; Status = NewStr(s, e - s); s = e; } } } return Status; } ////////////////////////////////////////////////////////////////////////////// DoEvery::DoEvery(int p) // p = timeout in ms { Init(p); } void DoEvery::Init(int p) // p = timeout in ms { LastTime = LgiCurrentTime(); if (p > 0) { Period = p; } } bool DoEvery::DoNow() { int64 Now = LgiCurrentTime(); if (LastTime + Period < Now) { LastTime = Now; return true; } return false; } /////////////////////////////////////////////////////////////////////////////////// #if 0 GViewFill::GViewFill(GColour c) { Type = Solid; Col = c; #ifdef WIN32 hBrush = NULL; #endif } GViewFill::GViewFill(COLOUR c, int Bits) { Type = Solid; Col.c32(CBit(32, c, Bits)); #ifdef WIN32 hBrush = NULL; #endif } GViewFill::GViewFill(GSurface *dc, bool Copy) { Col.c32(0); Type = Copy ? OwnBitmap : RefBitmap; #ifndef LGI_STATIC if (Copy) pDC = new GMemDC(dc); else pDC = dc; #endif #ifdef WIN32 hBrush = NULL; #endif } GViewFill::GViewFill(const GViewFill &f) { Col = f.GetFlat(); Type = f.Type; if (Type == OwnBitmap) { #ifndef LGI_STATIC pDC = new GMemDC(f.pDC); #endif } else if (Type == RefBitmap) { pDC = f.pDC; } #ifdef WIN32 hBrush = NULL; #endif } GViewFill::~GViewFill() { Empty(); } void GViewFill::Empty() { if (Type == OwnBitmap) DeleteObj(pDC); Type = None; pDC = 0; Col.c32(0); #ifdef WIN32 if (hBrush) { DeleteObject(hBrush); hBrush = NULL; } #endif } void GViewFill::Fill(GSurface *pDC, GRect *r, GdcPt2 *Origin) { #ifndef LGI_STATIC if (Type == Solid) { pDC->Colour(Col); pDC->Rectangle(r); } else if (Type == OwnBitmap || Type == RefBitmap) { if (pDC) { GRect a; if (!r) { a.ZOff(pDC->X()-1, pDC->Y()-1); r = &a; } for (int y = Origin ? (Origin->y % pDC->Y()) - pDC->Y() : 0; y < r->Y(); y += pDC->Y()) { for (int x = Origin ? (Origin->x % pDC->X()) - pDC->X() : 0; xX(); x += pDC->X()) { pDC->Blt(r->x1 + x, r->y1 + y, pDC); } } } else { LgiAssert(0); } } #endif } #ifdef WIN32 /* HBRUSH GViewFill::GetBrush() { if (!hBrush) { LOGBRUSH LogBrush; LogBrush.lbStyle = BS_SOLID; LogBrush.lbColor = GetFlat().c24(); LogBrush.lbHatch = 0; hBrush = CreateBrushIndirect(&LogBrush); } return hBrush; } */ #endif #endif ////////////////////////////////////////////////////////////////////// bool GCapabilityClient::NeedsCapability(const char *Name, const char *Param) { for (int i=0; iNeedsCapability(Name, Param); return Targets.Length() > 0; } GCapabilityClient::~GCapabilityClient() { for (int i=0; iClients.Delete(this); } void GCapabilityClient::Register(GCapabilityTarget *t) { if (t) { Targets.Add(t); t->Clients.Add(this); } } GCapabilityTarget::~GCapabilityTarget() { for (int i=0; iTargets.Delete(this); } ///////////////////////////////////////////////////////////////////// GProfile::GProfile(const char *Name) { MinMs = -1; Add(Name); } GProfile::~GProfile() { Add("End"); if (MinMs > 0) { uint64 TotalMs = s.Last().Time - s[0].Time; if (TotalMs < MinMs) { return; } } for (int i=0; i #include #include #include #include "Lgi.h" #include "GToken.h" #include "GList.h" #include "GTableLayout.h" #ifdef LINUX #include "LgiWinManGlue.h" #endif #include "GVariant.h" #include "GDisplayString.h" // If it is defined it will use the cross platform // "res" library distributed with the LGI library. // #include "GXml.h" -#define DEBUG_RES_FILE 0 +#define DEBUG_RES_FILE 1 #define CastToGWnd(RObj) ((RObj != 0) ? dynamic_cast(RObj) : 0) class TagHash : public GHashTable, public ResReadCtx { public: TagHash(const char *TagList) { GToken Toks(TagList); for (int i=0; iGetAttr("Tag"); if (Tag) return Check(Tag); return true; } }; const char *LgiStringRes::CodePage = 0; GLanguage *LgiStringRes::CurLang = 0; LgiStringRes::LgiStringRes(LgiResources *res) { Res = res; Ref = 0; Id = 0; Str = 0; Tag = 0; // IsString = false; } LgiStringRes::~LgiStringRes() { DeleteArray(Str); DeleteArray(Tag); } bool LgiStringRes::Read(GXmlTag *t, ResFileFormat Format) { if (LgiStringRes::CurLang && t && stricmp(t->Tag, "string") == 0) { char *n = 0; if ((n = t->GetAttr("Cid")) || (n = t->GetAttr("Id")) ) { Id = atoi(n); } if ((n = t->GetAttr("Ref"))) { Ref = atoi(n); } if ((n = t->GetAttr("Define"))) { if (strcmp(n, "IDOK") == 0) { Id = IDOK; } else if (strcmp(n, "IDCANCEL") == 0) { Id = IDCANCEL; } else if (strcmp(n, "IDC_STATIC") == 0) { Id = -1; } } if ((n = t->GetAttr("Tag"))) { Tag = NewStr(n); } const char *Cp = LgiStringRes::CodePage; char Name[256]; strcpy_s(Name, sizeof(Name), LgiStringRes::CurLang->Id); n = 0; if ((n = t->GetAttr(Name)) && strlen(n) > 0) { // Language string ok // Lang = LangFind(0, CurLang, 0); } else if (LgiStringRes::CurLang->OldId && sprintf_s(Name, sizeof(Name), "Text(%i)", LgiStringRes::CurLang->OldId) && (n = t->GetAttr(Name)) && strlen(n) > 0) { // Old style language string ok } else if (!LgiStringRes::CurLang->IsEnglish()) { // no string, try english n = t->GetAttr("en"); GLanguage *Lang = GFindLang("en"); if (Lang) { Cp = Lang->CodePage; } } if (n) { DeleteArray(Str); if (Cp) { Str = (char*)LgiNewConvertCp("utf-8", n, Cp); } else { Str = NewStr(n); } if (Str) { char *d = Str; for (char *s = Str; s && *s;) { if (*s == '\\') { if (*(s+1) == 'n') { *d++ = '\n'; } else if (*(s+1) == 't') { *d++ = '\t'; } s += 2; } else { *d++ = *s++; } } *d++ = 0; } } if (Res) { for (int a=0; aAttr.Length(); a++) { GXmlAttr *v = &t->Attr[a]; char *Name = v->GetName(); if (GFindLang(Name)) { Res->AddLang(Name); } else if ( Name[0] == 'T' && Name[1] == 'e' && Name[2] == 'x' && Name[3] == 't' && Name[4] == '(') { int Old = atoi(Name + 5); if (Old) { GLanguage *OldLang = GFindOldLang(Old); if (OldLang) { LgiAssert(OldLang->OldId == Old); Res->AddLang(OldLang->Id); } } } } } return true; } return false; } /////////////////////////////////////////////////////////////////// // Lgi resources class LgiResourcesPrivate { public: bool Ok; ResFileFormat Format; GAutoString File; GHashTbl StrRef; GHashTbl Strings; GHashTbl DlgStrings; LgiResourcesPrivate() : StrRef(0, true, -1, NULL), Strings(0, true, -1, NULL), DlgStrings(0, true, -1, NULL) { Ok = false; Format = Lr8File; } ~LgiResourcesPrivate() { StrRef.DeleteObjects(); } }; GResourceContainer _ResourceOwner; LgiResources::LgiResources(const char *FileName, bool Warn) { d = new LgiResourcesPrivate; ScriptEngine = 0; // global pointer list _ResourceOwner.Add(this); char File[MAX_PATH] = ""; char *FullPath = 0; #if DEBUG_RES_FILE LgiTrace("%s:%i - Filename='%s'\n", _FL, FileName); #endif if (FileExists(FileName)) { FullPath = NewStr(FileName); } else { if (FileName) { // We're given the file name, and we should find the path. const char *f = strrchr(FileName, DIR_CHAR); #if DEBUG_RES_FILE LgiTrace("%s:%i - f='%s'\n", _FL, f); #endif strcpy_s(File, sizeof(File), f ? f + 1 : FileName); #if DEBUG_RES_FILE LgiTrace("%s:%i - File='%s'\n", _FL, File); #endif } else { // Need to look up the file associated by name with the current exe char Str[MAX_PATH]; if (LgiGetExeFile(Str, sizeof(Str))) { #if DEBUG_RES_FILE LgiTrace("%s:%i - Str='%s'\n", _FL, Str); #endif char *f = strrchr(Str, DIR_CHAR); if (f) { f++; #ifdef _WINDOWS char *Period = strrchr(f, '.'); if (Period) { *Period = 0; } #endif strcpy_s(File, sizeof(File), f); } #if DEBUG_RES_FILE LgiTrace("%s:%i - File='%s'\n", _FL, File); #endif } else { LgiMsg(0, LgiLoadString(L_ERROR_RES_NO_EXE_PATH, "Fatal error: Couldn't get the path of the running\nexecutable. Can't find resource file."), "LgiResources::LgiResources"); LgiExitApp(); } } // Find the file.. char *End = File + strlen(File); #ifdef MAC char *DotApp = stristr(File, ".app"); if (DotApp) End = DotApp; #endif #if DEBUG_RES_FILE LgiTrace("%s:%i - File='%s'\n", _FL, File); #endif strcpy(End, ".lr8"); #if DEBUG_RES_FILE LgiTrace("%s:%i - File='%s'\n", _FL, File); #endif FullPath = LgiFindFile(File); #if DEBUG_RES_FILE LgiTrace("%s:%i - FullPath='%s'\n", _FL, FullPath); #endif if (!FullPath) { strcpy(End, ".lr"); FullPath = LgiFindFile(File); if (!FullPath) { strcpy(End, ".lr8"); } } } if (FullPath) { Load(FullPath); DeleteArray(FullPath); } else { - char Msg[256]; + char Msg[MAX_PATH+256]; - char Exe[256] = "(couldn't get exe path)"; + char Exe[MAX_PATH] = "(couldn't get exe path)"; LgiGetExeFile(Exe, sizeof(Exe)); // Prepare data sprintf_s(Msg, sizeof(Msg), LgiLoadString(L_ERROR_RES_NO_LR8_FILE, "Couldn't find the file '%s' required to run this application\n(Exe='%s')"), File, Exe); // Dialog printf("%s", Msg); if (Warn) { LgiMsg(0, Msg, "LgiResources::LgiResources"); // Exit LgiExitApp(); } } } LgiResources::~LgiResources() { _ResourceOwner.Delete(this); LanguageNames.DeleteArrays(); Dialogs.DeleteObjects(); Menus.DeleteObjects(); DeleteObj(d); } ResFileFormat LgiResources::GetFormat() { return d->Format; } bool LgiResources::IsOk() { return d->Ok; } void LgiResources::AddLang(GLanguageId id) { // search through id's... for (int i=0; iFile; } bool LgiResources::Load(char *FileName) { if (!FileName) { LgiTrace("%s:%i - No filename.\n", _FL); LgiAssert(0); return false; } GFile F; if (!F.Open(FileName, O_READ)) { LgiTrace("%s:%i - Couldn't open '%s'.\n", _FL, FileName); LgiAssert(0); return false; } d->File.Reset(NewStr(FileName)); d->Format = Lr8File; char *Ext = LgiGetExtension(FileName); if (Ext && stricmp(Ext, "lr") == 0) { d->Format = CodepageFile; } else if (Ext && stricmp(Ext, "xml") == 0) { d->Format = XmlFile; } LgiStringRes::CurLang = LgiGetLanguageId(); if (d->Format != CodepageFile) { LgiStringRes::CodePage = 0; } else if (LgiStringRes::CurLang) { LgiStringRes::CodePage = LgiStringRes::CurLang->CodePage; } GXmlTree x(0); GAutoPtr Root(new GXmlTag); if (!x.Read(Root, &F, 0)) { LgiTrace("%s:%i - ParseXmlFile failed\n", _FL); // LgiAssert(0); return false; } for (GXmlTag *t = Root->Children.First(); t; ) { if (t->IsTag("string-group")) { bool IsString = true; char *Name = 0; if ((Name = t->GetAttr("Name"))) { IsString = stricmp("_Dialog Symbols_", Name) != 0; } for (GXmlTag *c = t->Children.First(); c; c = t->Children.Next()) { LgiStringRes *s = new LgiStringRes(this); if (s && s->Read(c, d->Format)) { // This code saves the names of the languages if specified in the LR8 files. char *Def = c->GetAttr("define"); if (Def && !stricmp(Def, "IDS_LANGUAGE")) { for (int i=0; iAttr.Length(); i++) { GXmlAttr &a = c->Attr[i]; LanguageNames.Add(a.GetName(), NewStr(a.GetValue())); } } // Save the string for later. d->StrRef.Add(s->Ref, s); if (s->Id != -1) { if (IsString) d->Strings.Add(s->Id, s); else d->DlgStrings.Add(s->Id, s); } d->Ok = true; } else { LgiTrace("%s:%i - string read failed\n", _FL); DeleteObj(s); } } } else if (t->IsTag("dialog")) { LgiDialogRes *n = new LgiDialogRes(this); if (n && n->Read(t, d->Format)) { Dialogs.Insert(n); d->Ok = true; t->RemoveTag(); t = 0; } else { LgiTrace("%s:%i - dialog read failed\n", _FL); DeleteObj(n); } } else if (t->IsTag("menu")) { LgiMenuRes *m = new LgiMenuRes(this); if (m && m->Read(t, d->Format)) { Menus.Insert(m); d->Ok = true; t->RemoveTag(); t = 0; } else { LgiTrace("%s:%i - menu read failed\n", _FL); DeleteObj(m); } } else if (t->IsTag("style")) { const char *c = t->Content; CssStore.Parse(c); } if (t) t = Root->Children.Next(); else t = Root->Children.Current(); } return true; } LgiStringRes *LgiResources::StrFromRef(int Ref) { return d->StrRef.Find(Ref); } char *LgiResources::StringFromId(int Id) { LgiStringRes *NotStr = 0; LgiStringRes *sr; if ((sr = d->Strings.Find(Id))) return sr->Str; if ((sr = d->DlgStrings.Find(Id))) return sr->Str; return NotStr ? NotStr->Str : 0; } char *LgiResources::StringFromRef(int Ref) { LgiStringRes *s = d->StrRef.Find(Ref); return s ? s->Str : 0; } #include "GTextLabel.h" #include "GEdit.h" #include "GCheckBox.h" #include "GButton.h" #include "GRadioGroup.h" #include "GTabView.h" #include "GCombo.h" #include "GBitmap.h" #include "GSlider.h" #include "GScrollBar.h" #include "GTree.h" class GMissingCtrl : public GLayout, public ResObject { GAutoString n; public: GMissingCtrl(char *name) : ResObject(Res_Custom) { n.Reset(NewStr(name)); } void OnPaint(GSurface *pDC) { GRect c = GetClient(); pDC->Colour(GColour(0xcc, 0xcc, 0xcc)); pDC->Rectangle(); pDC->Colour(GColour(0xff, 0, 0)); pDC->Line(c.x1, c.y1, c.x2, c.y2); pDC->Line(c.x2, c.y1, c.x1, c.y2); GDisplayString ds(SysFont, n); SysFont->Transparent(true); SysFont->Fore(LC_TEXT); ds.Draw(pDC, 3, 0); } }; ResObject *LgiResources::CreateObject(GXmlTag *t, ResObject *Parent) { ResObject *Wnd = 0; if (t && t->Tag) { char *Control = 0; if (stricmp(t->Tag, Res_StaticText) == 0) { Wnd = new GText(0, 0, 0, -1, -1, ""); } else if (stricmp(t->Tag, Res_EditBox) == 0) { Wnd = new GEdit(0, 0, 0, -1, -1, ""); } else if (stricmp(t->Tag, Res_CheckBox) == 0) { Wnd = new GCheckBox(0, 0, 0, -1, -1, ""); } else if (stricmp(t->Tag, Res_Button) == 0) { Wnd = new GButton(0, 0, 0, -1, -1, ""); } else if (stricmp(t->Tag, Res_Group) == 0) { Wnd = new GRadioGroup(0, 0, 0, -1, -1, ""); } else if (stricmp(t->Tag, Res_RadioBox) == 0) { Wnd = new GRadioButton(0, 0, 0, -1, -1, ""); } else if (stricmp(t->Tag, Res_TabView) == 0) { GTabView *Tv = new GTabView(0, 10, 10, 100, 100, "GTabView"); Wnd = Tv; if (Tv) { Tv->SetPourLargest(false); Tv->SetPourChildren(false); } } else if (stricmp(t->Tag, Res_Tab) == 0) { Wnd = new GTabPage(0); } else if (stricmp(t->Tag, Res_ListView) == 0) { GList *w; Wnd = w = new GList(0, 0, 0, -1, -1, ""); if (w) { w->Sunken(true); } } else if (stricmp(t->Tag, Res_Column) == 0) { if (Parent) { GList *Lst = dynamic_cast(Parent); LgiAssert(Lst); if (Lst) { Wnd = Lst->AddColumn(""); } } } else if (stricmp(t->Tag, Res_ComboBox) == 0) { Wnd = new GCombo(0, 0, 0, 100, 20, ""); } else if (stricmp(t->Tag, Res_Bitmap) == 0) { Wnd = new GBitmap(0, 0, 0, 0); } else if (stricmp(t->Tag, Res_Progress) == 0) { Wnd = new GProgress(0, 0, 0, -1, -1, ""); } else if (stricmp(t->Tag, Res_Slider) == 0) { Wnd = new GSlider(0, 0, 0, -1, -1, "", false); } else if (stricmp(t->Tag, Res_ScrollBar) == 0) { Wnd = new GScrollBar(0, 0, 0, 20, 100, ""); } else if (stricmp(t->Tag, Res_Progress) == 0) { Wnd = new GProgress(0, 0, 0, 1, 1, ""); } else if (stricmp(t->Tag, Res_TreeView) == 0) { Wnd = new GTree(0, 0, 0, 1, 1, ""); } else if (stricmp(t->Tag, Res_ControlTree) == 0) { GView *v = GViewFactory::Create("GControlTree"); if (!(Wnd = dynamic_cast(v))) { DeleteObj(v); } } else if (stricmp(t->Tag, Res_Custom) == 0) { Control = t->GetAttr("ctrl"); GView *v = GViewFactory::Create(Control); if (!v) v = new GMissingCtrl(Control); if (v) { Wnd = dynamic_cast(v); if (!Wnd) { // Not a "ResObject" LgiAssert(!"Not a ResObject"); DeleteObj(v); } } } else if (stricmp(t->Tag, Res_Table) == 0) { Wnd = new GTableLayout; } if (!Wnd) { printf(LgiLoadString(L_ERROR_RES_CREATE_OBJECT_FAILED, "LgiResources::CreateObject(%s) failed. (Ctrl=%s)\n"), t->Tag, Control); } } LgiAssert(Wnd); if (Wnd) { GView *v = dynamic_cast(Wnd); if (v) { v->Script = ScriptEngine; } } return Wnd; } void LgiResources::Res_SetPos(ResObject *Obj, int x1, int y1, int x2, int y2) { GListColumn *Col = dynamic_cast(Obj); if (Col) { Col->Width(x2-x1); } else { GView *w = CastToGWnd(Obj); if (w) { GRect n(x1, y1, x2, y2); w->SetPos(n); } } } void LgiResources::Res_SetPos(ResObject *Obj, char *s) { if (Obj && s) { GToken T(s, ","); if (T.Length() == 4) { Res_SetPos(Obj, atoi(T[0]), atoi(T[1]), atoi(T[2]), atoi(T[3])); } } } bool LgiResources::Res_GetProperties(ResObject *Obj, GDom *Props) { // this is a read-only system... return false; } struct ResObjectCallback : public GCss::ElementCallback { GDom *Props; GVariant v; ResObjectCallback(GDom *props) { Props = props; } const char *GetElement(ResObject *obj) { return obj->GetObjectName(); } const char *GetAttr(ResObject *obj, const char *Attr) { if (!Props->GetValue(Attr, v)) v.Empty(); return v.Str(); } bool GetClasses(GArray &Classes, ResObject *obj) { if (Props->GetValue("class", v)) Classes.Add(v.Str()); return Classes.Length() > 0; } ResObject *GetParent(ResObject *obj) { LgiAssert(0); return NULL; } GArray GetChildren(ResObject *obj) { GArray a; return a; } }; bool LgiResources::Res_SetProperties(ResObject *Obj, GDom *Props) { GView *v = dynamic_cast(Obj); if (v && Props) { GVariant i; if (Props->GetValue("enabled", i)) { v->Enabled(i.CastInt32()); } if (Props->GetValue("visible", i)) { v->Visible(i.CastInt32()); } if (Props->GetValue("style", i)) { v->SetCssStyle(i.Str()); } if (Props->GetValue("class", i)) { ResObjectCallback Cb(Props); GCss::SelArray a; if (CssStore.Match(a, &Cb, Obj)) { for (int i=0; iStyle; v->SetCssStyle(style); } } } } GEdit *e = dynamic_cast(v); if (e) { if (Props->GetValue("pw", i)) { e->Password(i.CastInt32()); } if (Props->GetValue("multiline", i)) { e->MultiLine(i.CastInt32()); } } return true; } return false; } GRect LgiResources::Res_GetPos(ResObject *Obj) { GView *w = CastToGWnd(Obj); if (w) { return w->GetPos(); } return GRect(0, 0, 0, 0); } int LgiResources::Res_GetStrRef(ResObject *Obj) { return 0; } bool LgiResources::Res_SetStrRef(ResObject *Obj, int Ref, ResReadCtx *Ctx) { LgiStringRes *s = d->StrRef.Find(Ref); if (!s) return false; if (Ctx && !Ctx->Check(s->Tag)) return false; GView *w = CastToGWnd(Obj); if (w) { w->Name(s->Str); w->SetId(s->Id); } else if (Obj) { GListColumn *Col = dynamic_cast(Obj); if (Col) { Col->Name(s->Str); } else { GTabPage *Page = dynamic_cast(Obj); if (Page) { Page->Name(s->Str); } } } return true; } void LgiResources::Res_Attach(ResObject *Obj, ResObject *Parent) { GView *o = CastToGWnd(Obj); GView *p = CastToGWnd(Parent); GTabPage *Tab = dynamic_cast(Parent); if (o) { if (Tab) { if (Tab) { GRect r = o->GetPos(); r.Offset(-4, -24); o->SetPos(r); Tab->Append(o); } } else if (p) { if (!p->IsAttached() || !o->Attach(p)) { p->AddView(o); o->SetParent(p); } } else { LgiAssert(p); } } } bool LgiResources::Res_GetChildren(ResObject *Obj, List *l, bool Deep) { GView *o = CastToGWnd(Obj); if (o && l) { GAutoPtr It(o->IterateViews()); for (GViewI *w = It->First(); w; w = It->Next()) { ResObject *n = dynamic_cast(w); if (n) { l->Insert(n); } } return true; } return false; } void LgiResources::Res_Append(ResObject *Obj, ResObject *Parent) { if (Obj && Parent) { GListColumn *Col = dynamic_cast(Obj); GList *Lst = dynamic_cast(Parent); if (Lst && Col) { Lst->AddColumn(Col); } GTabView *Tab = dynamic_cast(Obj); GTabPage *Page = dynamic_cast(Parent); if (Tab && Page) { Tab->Append(Page); } } } bool LgiResources::Res_GetItems(ResObject *Obj, List *l) { if (Obj && l) { GList *Lst = dynamic_cast(Obj); if (Lst) { for (int i=0; iGetColumns(); i++) { l->Insert(Lst->ColumnAt(i)); } return true; } GTabView *Tabs = dynamic_cast(Obj); if (Tabs) { for (int i=0; iGetTabs(); i++) { l->Insert(Tabs->TabAt(i)); } return true; } } return false; } GDom *LgiResources::Res_GetDom(ResObject *Obj) { return dynamic_cast(Obj); } /////////////////////////////////////////////////////// LgiDialogRes::LgiDialogRes(LgiResources *res) { Res = res; Dialog = 0; Str = 0; } LgiDialogRes::~LgiDialogRes() { DeleteObj(Dialog); } bool LgiDialogRes::Read(GXmlTag *t, ResFileFormat Format) { if ((Dialog = t)) { char *n = 0; if ((n = Dialog->GetAttr("ref"))) { int Ref = atoi(n); Str = Res->StrFromRef(Ref); } if ((n = Dialog->GetAttr("pos"))) { GToken T(n, ","); if (T.Length() == 4) { Pos.x1 = atoi(T[0]); Pos.y1 = atoi(T[1]); Pos.x2 = atoi(T[2]); Pos.y2 = atoi(T[3]); } } } return true; } ///////////////////////////////////////////////////////////////////////////////////////// LgiMenuRes::LgiMenuRes(LgiResources *res) : Strings(0, true, -1, NULL) { Res = res; Tag = 0; } LgiMenuRes::~LgiMenuRes() { Strings.DeleteObjects(); DeleteObj(Tag); } bool LgiMenuRes::Read(GXmlTag *t, ResFileFormat Format) { Tag = t; if (t && stricmp(t->Tag, "menu") == 0) { char *n; if ((n = t->GetAttr("name"))) { GBase::Name(n); } for (GXmlTag *c = t->Children.First(); c; c = t->Children.Next()) { if (stricmp(c->Tag, "string-group") == 0) { for (GXmlTag *i = c->Children.First(); i; i = c->Children.Next()) { LgiStringRes *s = new LgiStringRes(Res); if (s && s->Read(i, Format)) { LgiAssert(!Strings.Find(s->Ref)); // If this fires the string has a dupe ref Strings.Add(s->Ref, s); } else { DeleteObj(s); } } break; } } return true; } return false; } ///////////////////////////////////////////////////////////////////////////////////////// // Dialog bool GLgiRes::LoadFromResource(int Resource, GViewI *Parent, GRect *Pos, GAutoString *Name, char *TagList) { LgiGetResObj(); for (int i=0; i<_ResourceOwner.Length(); i++) { if (_ResourceOwner[i]->LoadDialog(Resource, Parent, Pos, Name, 0, TagList)) return true; } return false; } //////////////////////////////////////////////////////////////////////// // Get language GLanguage *LgiGetLanguageId() { // Check for command line override char Buf[64]; if (LgiApp->GetOption("i", Buf)) { GLanguage *i = GFindLang(Buf); if (i) return i; } // Check for config setting GXmlTag *LangConfig = LgiApp->GetConfig("Language"); if (LangConfig) { char *Id; if ((Id = LangConfig->GetAttr("Id")) && ValidStr(Id)) { GLanguage *l = GFindLang(Id); if (l) return l; } } // Use a system setting #if defined WIN32 int Lang = GetSystemDefaultLCID(); TCHAR b[256]; if (GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_IDEFAULTLANGUAGE, b, sizeof(b)) > 0) { Lang = htoi(b); } int Primary = PRIMARYLANGID(Lang); int Sub = SUBLANGID(Lang); GLanguage *i, *English = 0; // Search for exact match for (i = GFindLang(NULL); i->Id; i++) { if (i->Win32Id == Lang) return i; } // Search for PRIMARYLANGID match for (i = GFindLang(NULL); i->Id; i++) { if (PRIMARYLANGID(i->Win32Id) == PRIMARYLANGID(Lang)) return i; } #elif defined LINUX GLibrary *WmLib = LgiApp->GetWindowManagerLib(); if (WmLib) { Proc_LgiWmGetLanguage GetLanguage = (Proc_LgiWmGetLanguage) WmLib->GetAddress("LgiWmGetLanguage"); char Lang[256]; if (GetLanguage && GetLanguage(Lang)) { GLanguage *l = GFindLang(Lang); if (l) return l; } } return GFindLang("en"); /* // Read in KDE language setting char Path[256]; if (LgiGetSystemPath(LSP_HOME, Path, sizeof(Path))) { LgiMakePath(Path, sizeof(Path), Path, ".kde/share/config/kdeglobals"); char *Txt = ReadTextFile(Path); if (Txt) { extern bool _GetIniField(char *Grp, char *Field, char *In, char *Out, int OutSize); char Lang[256] = ""; GLanguage *Ret = 0; if (_GetIniField("Locale", "Language", Txt, Lang, sizeof(Lang))) { GToken Langs(Lang, ":,; \t"); for (int i=0; iStringFromId(Res); } if (s) return s; return Default; } bool LgiResources::LoadDialog(int Resource, GViewI *Parent, GRect *Pos, GAutoString *Name, GEventsI *Engine, char *TagList) { bool Status = false; if (Resource) { ScriptEngine = Engine; TagHash Tags(TagList); for (LgiDialogRes *Dlg = Dialogs.First(); Dlg; Dlg = Dialogs.Next()) { if (Dlg->Id() == ((int) Resource)) { // found the dialog to load, set properties if (Dlg->Name()) { if (Name) Name->Reset(NewStr(Dlg->Name())); else if (Parent) Parent->Name(Dlg->Name()); } int x = Dlg->X(); int y = Dlg->Y(); x += LgiApp->GetMetric(LGI_MET_DECOR_X) - 4; y += LgiApp->GetMetric(LGI_MET_DECOR_Y) - 18; if (Pos) Pos->ZOff(x, y); else if (Parent && stricmp(Parent->GetClass(), "GTabPage")) { GRect r = Parent->GetPos(); r.Dimension(x, y); Parent->SetPos(r); } // instantiate control list List::I it = Dlg->Dialog->Children.Start(); for (GXmlTag *t = *it; t; t = *++it) { ResObject *Obj = CreateObject(t, 0); if (Obj) { if (Tags.Check(t)) { if (Res_Read(Obj, t, Tags)) { GView *w = dynamic_cast(Obj); if (w) Parent->AddView(w); } else { LgiMsg( NULL, LgiLoadString( L_ERROR_RES_RESOURCE_READ_FAILED, "Resource read error, tag: %s"), "LgiResources::LoadDialog", MB_OK, t->Tag); break; } } } else { LgiAssert(0); } } Status = true; break; } } } return Status; } ////////////////////////////////////////////////////////////////////// // Menus LgiStringRes *LgiMenuRes::GetString(GXmlTag *Tag) { if (Tag) { char *n = Tag->GetAttr("ref"); if (n) { int Ref = atoi(n); LgiStringRes *s = Strings.Find(Ref); if (s) return s; } } return 0; } bool GMenuLoader::Load(LgiMenuRes *MenuRes, GXmlTag *Tag, ResFileFormat Format, TagHash *TagList) { bool Status = false; if (Tag && Tag->Tag) { if (stricmp(Tag->Tag, "menu") == 0) { #if WIN32NATIVE if (!Info) { Info = ::CreateMenu(); } #endif } #if WIN32NATIVE if (Info) #endif { Status = true; for (GXmlTag *t = Tag->Children.First(); t && Status; t = Tag->Children.Next()) { if (stricmp(t->Tag, "submenu") == 0) { LgiStringRes *Str = MenuRes->GetString(t); if (Str && Str->Str) { bool Add = !TagList || TagList->Check(Str->Tag); GSubMenu *Sub = AppendSub(Str->Str); if (Sub) { GMenuItem *p = Sub->GetParent(); if (p) { p->Id(Str->Id); } Status = Sub->Load(MenuRes, t, Format, TagList); if (!Add) { // printf("Sub->GetParent()=%p this=%p\n", Sub->GetParent(), this); Sub->GetParent()->Remove(); delete Sub->GetParent(); } } } else { LgiAssert(0); } } else if (stricmp(t->Tag, "menuitem") == 0) { char *n = 0; if ((n = t->GetAttr("sep")) && atoi(n) != 0) { AppendSeparator(); } else { LgiStringRes *Str = MenuRes->GetString(t); if (Str && Str->Str) { if (!TagList || TagList->Check(Str->Tag)) { int Enabled = (n = t->GetAttr("enabled")) ? atoi(n) : true; char *Shortcut = t->GetAttr("shortcut"); Status = AppendItem(Str->Str, Str->Id, Enabled, -1, Shortcut) != 0; } else Status = true; } else { LgiAssert(0); } } } } } } return Status; } bool GMenu::Load(GView *w, const char *Res, const char *TagList) { bool Status = false; LgiResources *r = LgiGetResObj(); if (r) { TagHash Tags(TagList); for (LgiMenuRes *m = r->Menus.First(); m; m = r->Menus.Next()) { if (stricmp(m->Name(), Res) == 0) { #if WIN32NATIVE Status = GSubMenu::Load(m, m->Tag, r->GetFormat(), &Tags); #else Status = GMenuLoader::Load(m, m->Tag, r->GetFormat(), &Tags); #endif break; } } } return Status; } LgiResources *LgiGetResObj(bool Warn, const char *filename) { // Look for existing file? if (filename) { for (int i=0; i<_ResourceOwner.Length(); i++) { LgiResources *r = _ResourceOwner[i]; if (r && r->GetFileName()) { if (!_stricmp(filename, r->GetFileName())) return r; } } // Load the new file... return new LgiResources(filename, Warn); } if (_ResourceOwner.Length()) return _ResourceOwner[0]; return new LgiResources(filename, Warn); } diff --git a/src/mac/carbon/LgiCarbon.xcodeproj/project.pbxproj b/src/mac/carbon/LgiCarbon.xcodeproj/project.pbxproj --- a/src/mac/carbon/LgiCarbon.xcodeproj/project.pbxproj +++ b/src/mac/carbon/LgiCarbon.xcodeproj/project.pbxproj @@ -1,1185 +1,1185 @@ // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 46; objects = { /* Begin PBXBuildFile section */ 340BFC15096A0E0100A11AE6 /* LgiCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 340BFC14096A0E0100A11AE6 /* LgiCommon.h */; }; 340BFC4A096A9D4600A11AE6 /* GArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 340BFC49096A9D4600A11AE6 /* GArray.h */; }; 340FEA9E096E375600E534D5 /* GToolBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 340FEA9C096E375600E534D5 /* GToolBar.h */; }; 340FEA9F096E375600E534D5 /* GToolTabBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 340FEA9D096E375600E534D5 /* GToolTabBar.h */; }; 3413BBC21349EC6900AE15B0 /* GXmlTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 3413BBC11349EC6900AE15B0 /* GXmlTree.h */; }; 3416C27B096775AF00DD79DC /* GRect.h in Headers */ = {isa = PBXBuildFile; fileRef = 3416C27A096775AF00DD79DC /* GRect.h */; }; 341B7C491956D3AA00AAA225 /* GCheckBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 341B7C481956D3AA00AAA225 /* GCheckBox.h */; }; 341B7C4B1956E08500AAA225 /* GRadioGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 341B7C4A1956E08500AAA225 /* GRadioGroup.h */; }; 341BE43F123ED1E6009BF203 /* md5.h in Headers */ = {isa = PBXBuildFile; fileRef = 341BE43E123ED1E6009BF203 /* md5.h */; }; 341BE442123ED1F1009BF203 /* sha1.c in Sources */ = {isa = PBXBuildFile; fileRef = 341BE440123ED1F1009BF203 /* sha1.c */; }; 341BE443123ED1F1009BF203 /* sha1.h in Headers */ = {isa = PBXBuildFile; fileRef = 341BE441123ED1F1009BF203 /* sha1.h */; }; 3427C3BE11FC02AE002AC215 /* LgiInc.h in Headers */ = {isa = PBXBuildFile; fileRef = 3427C3BD11FC02AE002AC215 /* LgiInc.h */; }; 3429212C1087D57200578ECC /* GCss.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3429212B1087D57200578ECC /* GCss.cpp */; }; 3429212E1087D58100578ECC /* GCss.h in Headers */ = {isa = PBXBuildFile; fileRef = 3429212D1087D58100578ECC /* GCss.h */; }; 342CE46211FDAB57000B1F3C /* LgiRes.h in Headers */ = {isa = PBXBuildFile; fileRef = 342CE46111FDAB57000B1F3C /* LgiRes.h */; }; 342D52FB0F0CBE0A002A1C7C /* GFileSelect.h in Headers */ = {isa = PBXBuildFile; fileRef = 342D52FA0F0CBE0A002A1C7C /* GFileSelect.h */; }; 342D78F111FAD1AF005BADBD /* GStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 342D78F011FAD1AF005BADBD /* GStream.h */; }; 3433784B19178B09007A4DC5 /* GColourSpace.h in Headers */ = {isa = PBXBuildFile; fileRef = 3433784A19178B09007A4DC5 /* GColourSpace.h */; }; 34372AD00C46E0290090CDC9 /* GDocView.h in Headers */ = {isa = PBXBuildFile; fileRef = 34372ACF0C46E0290090CDC9 /* GDocView.h */; }; 343BF8420B58A110008AFE75 /* GMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 343BF8410B58A110008AFE75 /* GMenu.h */; }; 343E950D1751C6090085611D /* GThreadEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 343E950C1751C6090085611D /* GThreadEvent.cpp */; }; 3443CBFE0C16BA64008F7B02 /* GOptionsFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3443CBFD0C16BA64008F7B02 /* GOptionsFile.cpp */; }; 3444A36112275BDD004ADADE /* GToolBar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3444A36012275BDD004ADADE /* GToolBar.cpp */; }; 34463F2511FBE25E009BB91F /* GTextView3.h in Headers */ = {isa = PBXBuildFile; fileRef = 34463F2411FBE25E009BB91F /* GTextView3.h */; }; 3446E2B908D0E4AF005024EB /* Gdc2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3446E2B508D0E4AF005024EB /* Gdc2.cpp */; }; 3446E2BA08D0E4AF005024EB /* GMemDC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3446E2B608D0E4AF005024EB /* GMemDC.cpp */; }; 3446E2BB08D0E4AF005024EB /* GPrintDC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3446E2B708D0E4AF005024EB /* GPrintDC.cpp */; }; 3446E2BC08D0E4AF005024EB /* GScreenDC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3446E2B808D0E4AF005024EB /* GScreenDC.cpp */; }; 3446E2D008D0E5C2005024EB /* Gdc2.h in Headers */ = {isa = PBXBuildFile; fileRef = 3446E2CF08D0E5C2005024EB /* Gdc2.h */; }; 3446E32508D0E9D6005024EB /* 8Bit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3446E32008D0E9D6005024EB /* 8Bit.cpp */; }; 3446E32608D0E9D6005024EB /* 15Bit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3446E32108D0E9D6005024EB /* 15Bit.cpp */; }; 3446E32708D0E9D6005024EB /* 16Bit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3446E32208D0E9D6005024EB /* 16Bit.cpp */; }; 3446E32808D0E9D6005024EB /* 24Bit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3446E32308D0E9D6005024EB /* 24Bit.cpp */; }; 3446E32908D0E9D6005024EB /* 32Bit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3446E32408D0E9D6005024EB /* 32Bit.cpp */; }; 3446E32B08D0E9E4005024EB /* Alpha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3446E32A08D0E9E4005024EB /* Alpha.cpp */; }; 344AC3E31915AC25003FFE7E /* GFileCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344AC3E21915AC25003FFE7E /* GFileCommon.cpp */; }; 344AF36008E0322F004ED88C /* GToken.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344AF35E08E0322F004ED88C /* GToken.cpp */; }; 344AF36108E0322F004ED88C /* GXmlTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344AF35F08E0322F004ED88C /* GXmlTree.cpp */; }; 344AF36308E03284004ED88C /* GDateTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344AF36208E03284004ED88C /* GDateTime.cpp */; }; 344AF36808E04156004ED88C /* GSurface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344AF36708E04156004ED88C /* GSurface.cpp */; }; 344AF38408E045C5004ED88C /* GStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344AF38308E045C5004ED88C /* GStream.cpp */; }; 344AF38708E045F2004ED88C /* GRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344AF38608E045F2004ED88C /* GRect.cpp */; }; 344AF39008E04707004ED88C /* GVariant.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344AF38F08E04707004ED88C /* GVariant.cpp */; }; 344AF39608E0476A004ED88C /* GApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344AF39508E0476A004ED88C /* GApp.cpp */; }; 344AF3A108E048C2004ED88C /* GProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344AF3A008E048C2004ED88C /* GProcess.cpp */; }; 344AF3C308E04A94004ED88C /* LgiDefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 344AF3C208E04A94004ED88C /* LgiDefs.h */; }; 344AF3C908E04B32004ED88C /* GProperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344AF3C808E04B32004ED88C /* GProperties.cpp */; }; 344AF3CC08E04B63004ED88C /* GLibrary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344AF3CB08E04B63004ED88C /* GLibrary.cpp */; }; 344AF3D708E04BE0004ED88C /* GLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 344AF3D608E04BE0004ED88C /* GLibrary.h */; }; 344AF3DD08E04C75004ED88C /* GObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344AF3DC08E04C75004ED88C /* GObject.cpp */; }; 344B736408D83E8300D49457 /* Lgi.h in Headers */ = {isa = PBXBuildFile; fileRef = 344B736308D83E8300D49457 /* Lgi.h */; }; 344B736C08D83F1800D49457 /* GGeneral.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344B736B08D83F1800D49457 /* GGeneral.cpp */; }; 344B737808D83F6C00D49457 /* LgiClasses.h in Headers */ = {isa = PBXBuildFile; fileRef = 344B737708D83F6C00D49457 /* LgiClasses.h */; }; 344B737B08D8401600D49457 /* Lgi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344B737A08D8401600D49457 /* Lgi.cpp */; }; 344B738108D8406900D49457 /* GdcCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344B738008D8406900D49457 /* GdcCommon.cpp */; }; 344B738708D840CF00D49457 /* GFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344B738608D840CF00D49457 /* GFile.cpp */; }; 344B738A08D8410B00D49457 /* LgiMsg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344B738908D8410B00D49457 /* LgiMsg.cpp */; }; 344B738D08D8414400D49457 /* GGuiUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344B738C08D8414400D49457 /* GGuiUtils.cpp */; }; 344CD2D4176C75B9008A716C /* GCssTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344CD2D3176C75B9008A716C /* GCssTools.cpp */; }; 344D1B0608F4A26300228075 /* GSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 344D1B0508F4A26300228075 /* GSlider.h */; }; 344D1B0E08F4A2DB00228075 /* LgiRes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B0C08F4A2DB00228075 /* LgiRes.cpp */; }; 344D1B0F08F4A2DB00228075 /* Res.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B0D08F4A2DB00228075 /* Res.cpp */; }; 344D1B1308F4A30D00228075 /* GFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B1208F4A30D00228075 /* GFilter.cpp */; }; 344D1B1508F4A33400228075 /* GRadioGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B1408F4A33400228075 /* GRadioGroup.cpp */; }; 344D1B2608F4A36300228075 /* GBitmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B1608F4A36300228075 /* GBitmap.cpp */; }; 344D1B2708F4A36300228075 /* GButton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B1708F4A36300228075 /* GButton.cpp */; }; 344D1B2808F4A36300228075 /* GCheckBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B1808F4A36300228075 /* GCheckBox.cpp */; }; 344D1B2908F4A36300228075 /* GCombo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B1908F4A36300228075 /* GCombo.cpp */; }; 344D1B2A08F4A36300228075 /* GEdit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B1A08F4A36300228075 /* GEdit.cpp */; }; 344D1B2B08F4A36300228075 /* GList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B1B08F4A36300228075 /* GList.cpp */; }; 344D1B2C08F4A36300228075 /* GPanel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B1C08F4A36300228075 /* GPanel.cpp */; }; 344D1B2D08F4A36300228075 /* GProgress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B1D08F4A36300228075 /* GProgress.cpp */; }; 344D1B2E08F4A36300228075 /* GProgressDlg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B1E08F4A36300228075 /* GProgressDlg.cpp */; }; 344D1B2F08F4A36300228075 /* GSplitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B1F08F4A36300228075 /* GSplitter.cpp */; }; 344D1B3008F4A36300228075 /* GStatusBar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B2008F4A36300228075 /* GStatusBar.cpp */; }; 344D1B3108F4A36300228075 /* GTableLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B2108F4A36300228075 /* GTableLayout.cpp */; }; 344D1B3208F4A36300228075 /* GTabView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B2208F4A36300228075 /* GTabView.cpp */; }; 344D1B3308F4A36300228075 /* GTextLabel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B2308F4A36300228075 /* GTextLabel.cpp */; }; 344D1B3508F4A36300228075 /* GTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 344D1B2508F4A36300228075 /* GTree.cpp */; }; 344E922D19602E1B000074D2 /* GThreadEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 344E922C19602E1B000074D2 /* GThreadEvent.h */; }; 345C1BF30B3F4AFF00E80FF1 /* LgiClass.h in Headers */ = {isa = PBXBuildFile; fileRef = 345C1BF20B3F4AFF00E80FF1 /* LgiClass.h */; }; 345C1EC90B46017000E80FF1 /* LgiWidgets.h in Headers */ = {isa = PBXBuildFile; fileRef = 345C1EC80B46017000E80FF1 /* LgiWidgets.h */; }; 345F4B9F0F058D4F0015A7EE /* GScrollBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 345F4B9E0F058D4F0015A7EE /* GScrollBar.h */; }; 345F9C2308F0F622007DAFE2 /* GView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 345F9C2208F0F622007DAFE2 /* GView.cpp */; }; 34637EBA0F876EB1005A9B80 /* GDateTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 34637EB90F876EB1005A9B80 /* GDateTime.h */; }; 3465BDD908C5DEC100B4C217 /* GContainers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3465BDD808C5DEC100B4C217 /* GContainers.cpp */; }; 34661C7913C7407000B4C2A7 /* GUtf8.h in Headers */ = {isa = PBXBuildFile; fileRef = 34661C7813C7407000B4C2A7 /* GUtf8.h */; }; 346BF43B193AAD02000C2030 /* GBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 346BF43A193AAD02000C2030 /* GBox.cpp */; }; 3476333318E2D12300766FC4 /* GColour.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3476333218E2D12300766FC4 /* GColour.cpp */; }; 3476680F093F1FD400623A44 /* LgiInterfaces.h in Headers */ = {isa = PBXBuildFile; fileRef = 3476680E093F1FD400623A44 /* LgiInterfaces.h */; }; 34766828093F207D00623A44 /* GFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 34766827093F207D00623A44 /* GFile.h */; }; 34766832093F20EE00623A44 /* GThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 34766831093F20EE00623A44 /* GThread.h */; }; 347677640FE5BB2800E2E445 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 347677630FE5BB2800E2E445 /* md5.c */; }; 3478B20A12E6F87200936EFA /* GEdit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3478B20912E6F87200936EFA /* GEdit.h */; }; 347CB600172A97D600AC3EA6 /* GTableLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 347CB5FF172A97D600AC3EA6 /* GTableLayout.h */; }; 3489C3EA0DD1C4DB0095F0E1 /* GMru.h in Headers */ = {isa = PBXBuildFile; fileRef = 3489C3E90DD1C4DB0095F0E1 /* GMru.h */; }; 3493304A0F60CE440092EAE8 /* GViewCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 349330490F60CE440092EAE8 /* GViewCommon.cpp */; }; 3493304C0F60CE690092EAE8 /* GViewPriv.h in Headers */ = {isa = PBXBuildFile; fileRef = 3493304B0F60CE690092EAE8 /* GViewPriv.h */; }; 34983BE308F4A54C0054868C /* GDragAndDrop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34983BE208F4A54C0054868C /* GDragAndDrop.cpp */; }; 34983BE608F4A5790054868C /* GMenu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34983BE508F4A5790054868C /* GMenu.cpp */; }; 34983C1408F5482D0054868C /* GDocView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34983C1208F5482D0054868C /* GDocView.cpp */; }; 34983C1508F5482D0054868C /* GTextView3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34983C1308F5482D0054868C /* GTextView3.cpp */; }; 34983C1708F5484C0054868C /* GToolTip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34983C1608F5484C0054868C /* GToolTip.cpp */; }; 34983C1908F548620054868C /* GClipBoard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34983C1808F548620054868C /* GClipBoard.cpp */; }; 34983C2408F548DF0054868C /* GAlert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34983C1D08F548DF0054868C /* GAlert.cpp */; }; 34983C2508F548DF0054868C /* GDataDlg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34983C1E08F548DF0054868C /* GDataDlg.cpp */; }; 34983C2608F548DF0054868C /* GFindReplace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34983C1F08F548DF0054868C /* GFindReplace.cpp */; }; 34983C2708F548DF0054868C /* GInput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34983C2008F548DF0054868C /* GInput.cpp */; }; 34983C2808F548DF0054868C /* GMru.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34983C2108F548DF0054868C /* GMru.cpp */; }; 34983C2908F548DF0054868C /* GTrayIcon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34983C2208F548DF0054868C /* GTrayIcon.cpp */; }; 34983C2A08F548DF0054868C /* LgiRand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34983C2308F548DF0054868C /* LgiRand.cpp */; }; 34983C2E08F5492E0054868C /* GPassword.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34983C2D08F5492E0054868C /* GPassword.cpp */; }; 34A11A7A1675347500FCC5D7 /* GThreadCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34A11A791675347500FCC5D7 /* GThreadCommon.cpp */; }; 34A11A7C1675349900FCC5D7 /* GMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34A11A7B1675349900FCC5D7 /* GMutex.cpp */; }; 34A11A7E167534A500FCC5D7 /* GMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 34A11A7D167534A500FCC5D7 /* GMutex.h */; }; 34A3ABF70EF5AA0A009A5E95 /* GDisplayString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34A3ABF60EF5AA0A009A5E95 /* GDisplayString.cpp */; }; 34A3ABF90EF5AA1A009A5E95 /* GDisplayString.h in Headers */ = {isa = PBXBuildFile; fileRef = 34A3ABF80EF5AA1A009A5E95 /* GDisplayString.h */; }; 34A671970F3725860073A86C /* GContainers.h in Headers */ = {isa = PBXBuildFile; fileRef = 34A671960F3725860073A86C /* GContainers.h */; }; 34A8A3BD1303408000CAA8DF /* GPopup.h in Headers */ = {isa = PBXBuildFile; fileRef = 34A8A3BC1303408000CAA8DF /* GPopup.h */; }; 34ADC9E10F4CC395009C6B75 /* GAutoPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 34ADC9E00F4CC395009C6B75 /* GAutoPtr.h */; }; 34B28AF0143FA69B0023662F /* GPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34B28AEF143FA69B0023662F /* GPath.cpp */; }; 34B28AF2143FA6AF0023662F /* GPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 34B28AF1143FA6AF0023662F /* GPath.h */; }; 34B423820EBE762000D370A7 /* GSymLookup.h in Headers */ = {isa = PBXBuildFile; fileRef = 34B423810EBE762000D370A7 /* GSymLookup.h */; }; 34B4A4FF0C05962100CDD0D1 /* GPrinter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34B4A4FE0C05962100CDD0D1 /* GPrinter.cpp */; }; 34B4A5010C05966000CDD0D1 /* Base64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34B4A5000C05966000CDD0D1 /* Base64.cpp */; }; 34B4A5070C05987F00CDD0D1 /* GMemStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34B4A5060C05987F00CDD0D1 /* GMemStream.cpp */; }; 34B4A50B0C0598B600CDD0D1 /* GMem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34B4A50A0C0598B600CDD0D1 /* GMem.cpp */; }; 34B4A50F0C0598E900CDD0D1 /* GMem.h in Headers */ = {isa = PBXBuildFile; fileRef = 34B4A50E0C0598E900CDD0D1 /* GMem.h */; }; 34B4A5300C059A2100CDD0D1 /* GUtf8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34B4A52F0C059A2100CDD0D1 /* GUtf8.cpp */; }; 34B5EAE40DD5B39F005A24D0 /* GFileSelect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34B5EAE30DD5B39F005A24D0 /* GFileSelect.cpp */; }; 34B9505B0939DA3000477A2D /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34B9505A0939DA3000477A2D /* Carbon.framework */; }; 34B9545D0939DB5A00477A2D /* GString.h in Headers */ = {isa = PBXBuildFile; fileRef = 34B9545C0939DB5A00477A2D /* GString.h */; }; 34B954840939DCC400477A2D /* INet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34B954820939DCC400477A2D /* INet.cpp */; }; 34B954850939DCC400477A2D /* INetTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34B954830939DCC400477A2D /* INetTools.cpp */; }; 34B954880939DCDD00477A2D /* INet.h in Headers */ = {isa = PBXBuildFile; fileRef = 34B954860939DCDD00477A2D /* INet.h */; }; 34B954890939DCDD00477A2D /* INetTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 34B954870939DCDD00477A2D /* INetTools.h */; }; 34BC1E1F134DC748005451EE /* Res.h in Headers */ = {isa = PBXBuildFile; fileRef = 34BC1E1E134DC748005451EE /* Res.h */; }; 34CDDAE308C5DF5B005EAAC7 /* LgiMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 34CDDAE008C5DF5B005EAAC7 /* LgiMac.h */; }; 34CDDAE408C5DF5B005EAAC7 /* LgiOsClasses.h in Headers */ = {isa = PBXBuildFile; fileRef = 34CDDAE108C5DF5B005EAAC7 /* LgiOsClasses.h */; }; 34CDDAE508C5DF5B005EAAC7 /* LgiOsDefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 34CDDAE208C5DF5B005EAAC7 /* LgiOsDefs.h */; }; 34CDDAEB08C5DFB1005EAAC7 /* GString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34CDDAEA08C5DFB1005EAAC7 /* GString.cpp */; }; 34CDDAED08C5DFCF005EAAC7 /* GFontCodePages.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34CDDAEC08C5DFCF005EAAC7 /* GFontCodePages.cpp */; }; 34CEBFE70DDC5EF800DE0E0B /* GCombo.h in Headers */ = {isa = PBXBuildFile; fileRef = 34CEBFE60DDC5EF800DE0E0B /* GCombo.h */; }; 34D2CC4F08F0FB490009968C /* GPopup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34D2CC4E08F0FB490009968C /* GPopup.cpp */; }; 34D2CC6108F0FC7F0009968C /* GFontSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34D2CC6008F0FC7F0009968C /* GFontSystem.cpp */; }; 34D2CC6308F0FCA00009968C /* GFont.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34D2CC6208F0FCA00009968C /* GFont.cpp */; }; 34D2CC7308F115AD0009968C /* GFont.h in Headers */ = {isa = PBXBuildFile; fileRef = 34D2CC7208F115AD0009968C /* GFont.h */; }; 34D2CC8C08F116A80009968C /* GThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34D2CC8B08F116A80009968C /* GThread.cpp */; }; 34D2CCA508F117A20009968C /* GFont_A.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34D2CCA308F117A20009968C /* GFont_A.cpp */; }; 34D2CCA608F117A20009968C /* GFont_W.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34D2CCA408F117A20009968C /* GFont_W.cpp */; }; 34D2CCAA08F1181C0009968C /* GFontSelect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34D2CCA908F1181C0009968C /* GFontSelect.cpp */; }; 34D2CCAC08F1183F0009968C /* GWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34D2CCAB08F1183F0009968C /* GWindow.cpp */; }; 34D2CCED08F11BEF0009968C /* GWidgets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34D2CCEC08F11BEF0009968C /* GWidgets.cpp */; }; 34D4D55B1250AF98000DA1FD /* GHashTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 34D4D55A1250AF98000DA1FD /* GHashTable.h */; }; 34D979D11150F0E100CE462B /* GLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34D979D01150F0E100CE462B /* GLayout.cpp */; }; 34DA5CB70DE0DE930050C7E4 /* GScrollBar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34DA5CB60DE0DE930050C7E4 /* GScrollBar.cpp */; }; 34E51DB00D2EFCCB0021AA08 /* GList.h in Headers */ = {isa = PBXBuildFile; fileRef = 34E51DAF0D2EFCCB0021AA08 /* GList.h */; }; 34F2E65A0E1849D300E8DA6A /* GTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 34F2E6590E1849D300E8DA6A /* GTree.h */; }; 34F45B9E18C161E40040FD99 /* GPixelRops.h in Headers */ = {isa = PBXBuildFile; fileRef = 34F45B9D18C161E40040FD99 /* GPixelRops.h */; }; 34F96DAA0DB9B82B009C64B8 /* GDragAndDrop.h in Headers */ = {isa = PBXBuildFile; fileRef = 34F96DA90DB9B82B009C64B8 /* GDragAndDrop.h */; }; 8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 0867D69BFE84028FC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 340BFC14096A0E0100A11AE6 /* LgiCommon.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = LgiCommon.h; path = ../../../include/common/LgiCommon.h; sourceTree = ""; }; 340BFC49096A9D4600A11AE6 /* GArray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GArray.h; path = ../../../include/common/GArray.h; sourceTree = ""; }; 340FEA9C096E375600E534D5 /* GToolBar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GToolBar.h; path = ../../../include/common/GToolBar.h; sourceTree = ""; }; 340FEA9D096E375600E534D5 /* GToolTabBar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GToolTabBar.h; path = ../../../include/common/GToolTabBar.h; sourceTree = ""; }; 3413BBC11349EC6900AE15B0 /* GXmlTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GXmlTree.h; path = ../../../include/common/GXmlTree.h; sourceTree = ""; }; 3416C27A096775AF00DD79DC /* GRect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GRect.h; path = ../../../include/common/GRect.h; sourceTree = ""; }; 341B7C481956D3AA00AAA225 /* GCheckBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GCheckBox.h; path = ../../../include/common/GCheckBox.h; sourceTree = ""; }; 341B7C4A1956E08500AAA225 /* GRadioGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GRadioGroup.h; path = ../../../include/common/GRadioGroup.h; sourceTree = ""; }; 341BE43E123ED1E6009BF203 /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = md5.h; path = ../../common/Hash/md5/md5.h; sourceTree = ""; }; 341BE440123ED1F1009BF203 /* sha1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sha1.c; path = ../../common/Hash/sha1/sha1.c; sourceTree = ""; }; 341BE441123ED1F1009BF203 /* sha1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sha1.h; path = ../../common/Hash/sha1/sha1.h; sourceTree = ""; }; 3427C3BD11FC02AE002AC215 /* LgiInc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LgiInc.h; path = ../../../include/common/LgiInc.h; sourceTree = ""; }; 3429212B1087D57200578ECC /* GCss.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GCss.cpp; path = ../../common/Lgi/GCss.cpp; sourceTree = ""; }; 3429212D1087D58100578ECC /* GCss.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GCss.h; path = ../../../include/common/GCss.h; sourceTree = ""; }; 342CE46111FDAB57000B1F3C /* LgiRes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LgiRes.h; path = ../../../include/common/LgiRes.h; sourceTree = ""; }; 342D52FA0F0CBE0A002A1C7C /* GFileSelect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GFileSelect.h; path = ../../../include/common/GFileSelect.h; sourceTree = ""; }; 342D78F011FAD1AF005BADBD /* GStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GStream.h; path = ../../../include/common/GStream.h; sourceTree = ""; }; 3433784A19178B09007A4DC5 /* GColourSpace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GColourSpace.h; path = ../../../include/common/GColourSpace.h; sourceTree = ""; }; 34372ACF0C46E0290090CDC9 /* GDocView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GDocView.h; path = ../../../include/common/GDocView.h; sourceTree = ""; }; 343BF8410B58A110008AFE75 /* GMenu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GMenu.h; path = ../../../include/common/GMenu.h; sourceTree = ""; }; 343E950C1751C6090085611D /* GThreadEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GThreadEvent.cpp; path = ../../common/Lgi/GThreadEvent.cpp; sourceTree = ""; }; 3443CBFD0C16BA64008F7B02 /* GOptionsFile.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GOptionsFile.cpp; path = ../../common/Lgi/GOptionsFile.cpp; sourceTree = ""; }; 3444A36012275BDD004ADADE /* GToolBar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GToolBar.cpp; path = ../../common/Widgets/GToolBar.cpp; sourceTree = ""; }; 34463F2411FBE25E009BB91F /* GTextView3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTextView3.h; path = ../../../include/common/GTextView3.h; sourceTree = ""; }; 3446E2B508D0E4AF005024EB /* Gdc2.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Gdc2.cpp; path = Gdc2/Gdc2.cpp; sourceTree = ""; }; 3446E2B608D0E4AF005024EB /* GMemDC.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GMemDC.cpp; path = Gdc2/GMemDC.cpp; sourceTree = ""; }; 3446E2B708D0E4AF005024EB /* GPrintDC.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GPrintDC.cpp; path = Gdc2/GPrintDC.cpp; sourceTree = ""; }; 3446E2B808D0E4AF005024EB /* GScreenDC.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GScreenDC.cpp; path = Gdc2/GScreenDC.cpp; sourceTree = ""; }; 3446E2CF08D0E5C2005024EB /* Gdc2.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Gdc2.h; path = ../../../include/common/Gdc2.h; sourceTree = ""; }; 3446E32008D0E9D6005024EB /* 8Bit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = 8Bit.cpp; path = ../../common/Gdc2/8Bit.cpp; sourceTree = ""; }; 3446E32108D0E9D6005024EB /* 15Bit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = 15Bit.cpp; path = ../../common/Gdc2/15Bit.cpp; sourceTree = ""; }; 3446E32208D0E9D6005024EB /* 16Bit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = 16Bit.cpp; path = ../../common/Gdc2/16Bit.cpp; sourceTree = ""; }; 3446E32308D0E9D6005024EB /* 24Bit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = 24Bit.cpp; path = ../../common/Gdc2/24Bit.cpp; sourceTree = ""; }; 3446E32408D0E9D6005024EB /* 32Bit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = 32Bit.cpp; path = ../../common/Gdc2/32Bit.cpp; sourceTree = ""; }; 3446E32A08D0E9E4005024EB /* Alpha.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Alpha.cpp; path = ../../common/Gdc2/Alpha.cpp; sourceTree = ""; }; 344AC3E21915AC25003FFE7E /* GFileCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GFileCommon.cpp; path = ../../common/General/GFileCommon.cpp; sourceTree = ""; }; 344AF35E08E0322F004ED88C /* GToken.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GToken.cpp; path = ../../common/Text/GToken.cpp; sourceTree = ""; }; 344AF35F08E0322F004ED88C /* GXmlTree.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GXmlTree.cpp; path = ../../common/Text/GXmlTree.cpp; sourceTree = ""; }; 344AF36208E03284004ED88C /* GDateTime.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GDateTime.cpp; path = ../../common/General/GDateTime.cpp; sourceTree = ""; }; 344AF36708E04156004ED88C /* GSurface.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GSurface.cpp; path = ../../common/Gdc2/GSurface.cpp; sourceTree = ""; }; 344AF38308E045C5004ED88C /* GStream.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GStream.cpp; path = ../../common/Lgi/GStream.cpp; sourceTree = ""; }; 344AF38608E045F2004ED88C /* GRect.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GRect.cpp; path = ../../common/Gdc2/GRect.cpp; sourceTree = ""; }; 344AF38F08E04707004ED88C /* GVariant.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GVariant.cpp; path = ../../common/Lgi/GVariant.cpp; sourceTree = ""; }; 344AF39508E0476A004ED88C /* GApp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GApp.cpp; path = Lgi/GApp.cpp; sourceTree = ""; }; 344AF3A008E048C2004ED88C /* GProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GProcess.cpp; path = ../../common/Lgi/GProcess.cpp; sourceTree = ""; }; 344AF3C208E04A94004ED88C /* LgiDefs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = LgiDefs.h; path = ../../../include/common/LgiDefs.h; sourceTree = ""; }; 344AF3C808E04B32004ED88C /* GProperties.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GProperties.cpp; path = ../../common/General/GProperties.cpp; sourceTree = ""; }; 344AF3CB08E04B63004ED88C /* GLibrary.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GLibrary.cpp; path = ../../common/Lgi/GLibrary.cpp; sourceTree = ""; }; 344AF3D608E04BE0004ED88C /* GLibrary.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GLibrary.h; path = ../../../include/common/GLibrary.h; sourceTree = ""; }; 344AF3DC08E04C75004ED88C /* GObject.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GObject.cpp; path = ../../common/Lgi/GObject.cpp; sourceTree = ""; }; 344B736308D83E8300D49457 /* Lgi.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Lgi.h; path = ../../../include/common/Lgi.h; sourceTree = ""; }; 344B736B08D83F1800D49457 /* GGeneral.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GGeneral.cpp; path = Lgi/GGeneral.cpp; sourceTree = ""; }; 344B737708D83F6C00D49457 /* LgiClasses.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = LgiClasses.h; path = ../../../include/common/LgiClasses.h; sourceTree = ""; }; 344B737A08D8401600D49457 /* Lgi.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Lgi.cpp; path = ../../common/Lgi/Lgi.cpp; sourceTree = ""; }; 344B738008D8406900D49457 /* GdcCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GdcCommon.cpp; path = ../../common/Gdc2/GdcCommon.cpp; sourceTree = ""; }; 344B738608D840CF00D49457 /* GFile.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GFile.cpp; path = General/GFile.cpp; sourceTree = ""; }; 344B738908D8410B00D49457 /* LgiMsg.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = LgiMsg.cpp; path = ../../common/Lgi/LgiMsg.cpp; sourceTree = ""; }; 344B738C08D8414400D49457 /* GGuiUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GGuiUtils.cpp; path = ../../common/Lgi/GGuiUtils.cpp; sourceTree = ""; }; 344CD2D3176C75B9008A716C /* GCssTools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GCssTools.cpp; path = ../../common/Lgi/GCssTools.cpp; sourceTree = ""; }; 344D1B0508F4A26300228075 /* GSlider.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GSlider.h; path = ../../../include/common/GSlider.h; sourceTree = ""; }; 344D1B0C08F4A2DB00228075 /* LgiRes.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = LgiRes.cpp; path = ../../common/Resource/LgiRes.cpp; sourceTree = ""; }; 344D1B0D08F4A2DB00228075 /* Res.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Res.cpp; path = ../../common/Resource/Res.cpp; sourceTree = ""; }; 344D1B1208F4A30D00228075 /* GFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GFilter.cpp; path = ../../common/Gdc2/Filters/GFilter.cpp; sourceTree = ""; }; 344D1B1408F4A33400228075 /* GRadioGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GRadioGroup.cpp; path = ../../common/Widgets/GRadioGroup.cpp; sourceTree = ""; }; 344D1B1608F4A36300228075 /* GBitmap.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GBitmap.cpp; path = ../../common/Widgets/GBitmap.cpp; sourceTree = ""; }; 344D1B1708F4A36300228075 /* GButton.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GButton.cpp; path = ../../common/Widgets/GButton.cpp; sourceTree = ""; }; 344D1B1808F4A36300228075 /* GCheckBox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GCheckBox.cpp; path = ../../common/Widgets/GCheckBox.cpp; sourceTree = ""; }; 344D1B1908F4A36300228075 /* GCombo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GCombo.cpp; path = ../../common/Widgets/GCombo.cpp; sourceTree = ""; }; 344D1B1A08F4A36300228075 /* GEdit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GEdit.cpp; path = ../../common/Widgets/GEdit.cpp; sourceTree = ""; }; 344D1B1B08F4A36300228075 /* GList.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GList.cpp; path = ../../common/Widgets/GList.cpp; sourceTree = ""; }; 344D1B1C08F4A36300228075 /* GPanel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GPanel.cpp; path = ../../common/Widgets/GPanel.cpp; sourceTree = ""; }; 344D1B1D08F4A36300228075 /* GProgress.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GProgress.cpp; path = ../../common/Widgets/GProgress.cpp; sourceTree = ""; }; 344D1B1E08F4A36300228075 /* GProgressDlg.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GProgressDlg.cpp; path = ../../common/Widgets/GProgressDlg.cpp; sourceTree = ""; }; 344D1B1F08F4A36300228075 /* GSplitter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GSplitter.cpp; path = ../../common/Widgets/GSplitter.cpp; sourceTree = ""; }; 344D1B2008F4A36300228075 /* GStatusBar.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GStatusBar.cpp; path = ../../common/Widgets/GStatusBar.cpp; sourceTree = ""; }; 344D1B2108F4A36300228075 /* GTableLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GTableLayout.cpp; path = ../../common/Widgets/GTableLayout.cpp; sourceTree = ""; }; 344D1B2208F4A36300228075 /* GTabView.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GTabView.cpp; path = ../../common/Widgets/GTabView.cpp; sourceTree = ""; }; 344D1B2308F4A36300228075 /* GTextLabel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GTextLabel.cpp; path = ../../common/Widgets/GTextLabel.cpp; sourceTree = ""; }; 344D1B2508F4A36300228075 /* GTree.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GTree.cpp; path = ../../common/Widgets/GTree.cpp; sourceTree = ""; }; 344E922C19602E1B000074D2 /* GThreadEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GThreadEvent.h; path = ../../../include/common/GThreadEvent.h; sourceTree = ""; }; 345C1BF20B3F4AFF00E80FF1 /* LgiClass.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = LgiClass.h; path = ../../../include/common/LgiClass.h; sourceTree = ""; }; 345C1EC80B46017000E80FF1 /* LgiWidgets.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = LgiWidgets.h; path = ../../../include/common/LgiWidgets.h; sourceTree = ""; }; 345ECABC0FB1A74700C8BFA8 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = ""; }; 345F4B9E0F058D4F0015A7EE /* GScrollBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GScrollBar.h; path = ../../../include/common/GScrollBar.h; sourceTree = ""; }; 345F9C2208F0F622007DAFE2 /* GView.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GView.cpp; path = Lgi/GView.cpp; sourceTree = ""; }; 34637EB90F876EB1005A9B80 /* GDateTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GDateTime.h; path = ../../../include/common/GDateTime.h; sourceTree = ""; }; 3465BDD808C5DEC100B4C217 /* GContainers.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GContainers.cpp; path = ../../common/General/GContainers.cpp; sourceTree = ""; }; 34661C7813C7407000B4C2A7 /* GUtf8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GUtf8.h; path = ../../../include/common/GUtf8.h; sourceTree = ""; }; 346BF43A193AAD02000C2030 /* GBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GBox.cpp; path = ../../common/Widgets/GBox.cpp; sourceTree = ""; }; 3476333218E2D12300766FC4 /* GColour.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GColour.cpp; path = ../../common/Gdc2/GColour.cpp; sourceTree = ""; }; 3476680E093F1FD400623A44 /* LgiInterfaces.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = LgiInterfaces.h; path = ../../../include/common/LgiInterfaces.h; sourceTree = ""; }; 34766827093F207D00623A44 /* GFile.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GFile.h; path = ../../../include/common/GFile.h; sourceTree = ""; }; 34766831093F20EE00623A44 /* GThread.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GThread.h; path = ../../../include/common/GThread.h; sourceTree = ""; }; 347677630FE5BB2800E2E445 /* md5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md5.c; path = ../../common/Hash/md5/md5.c; sourceTree = ""; }; 3478B20912E6F87200936EFA /* GEdit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GEdit.h; path = ../../../include/common/GEdit.h; sourceTree = ""; }; 347CB5FF172A97D600AC3EA6 /* GTableLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTableLayout.h; path = ../../../include/common/GTableLayout.h; sourceTree = SOURCE_ROOT; }; 3489C3E90DD1C4DB0095F0E1 /* GMru.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GMru.h; path = ../../../include/common/GMru.h; sourceTree = ""; }; 349330490F60CE440092EAE8 /* GViewCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GViewCommon.cpp; path = ../../common/Lgi/GViewCommon.cpp; sourceTree = ""; }; 3493304B0F60CE690092EAE8 /* GViewPriv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GViewPriv.h; path = ../../../include/common/GViewPriv.h; sourceTree = ""; }; 34983BE208F4A54C0054868C /* GDragAndDrop.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GDragAndDrop.cpp; path = ../../common/Lgi/GDragAndDrop.cpp; sourceTree = ""; }; 34983BE508F4A5790054868C /* GMenu.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GMenu.cpp; path = Lgi/GMenu.cpp; sourceTree = ""; }; 34983C1208F5482D0054868C /* GDocView.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GDocView.cpp; path = ../../common/Text/GDocView.cpp; sourceTree = ""; }; 34983C1308F5482D0054868C /* GTextView3.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GTextView3.cpp; path = ../../common/Text/GTextView3.cpp; sourceTree = ""; }; 34983C1608F5484C0054868C /* GToolTip.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GToolTip.cpp; path = ../../common/Lgi/GToolTip.cpp; sourceTree = ""; }; 34983C1808F548620054868C /* GClipBoard.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GClipBoard.cpp; path = Lgi/GClipBoard.cpp; sourceTree = ""; }; 34983C1D08F548DF0054868C /* GAlert.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GAlert.cpp; path = ../../common/Lgi/GAlert.cpp; sourceTree = ""; }; 34983C1E08F548DF0054868C /* GDataDlg.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GDataDlg.cpp; path = ../../common/Lgi/GDataDlg.cpp; sourceTree = ""; }; 34983C1F08F548DF0054868C /* GFindReplace.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GFindReplace.cpp; path = ../../common/Lgi/GFindReplace.cpp; sourceTree = ""; }; 34983C2008F548DF0054868C /* GInput.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GInput.cpp; path = ../../common/Lgi/GInput.cpp; sourceTree = ""; }; 34983C2108F548DF0054868C /* GMru.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GMru.cpp; path = ../../common/Lgi/GMru.cpp; sourceTree = ""; }; 34983C2208F548DF0054868C /* GTrayIcon.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GTrayIcon.cpp; path = ../../common/Lgi/GTrayIcon.cpp; sourceTree = ""; }; 34983C2308F548DF0054868C /* LgiRand.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = LgiRand.cpp; path = ../../common/Lgi/LgiRand.cpp; sourceTree = ""; }; 34983C2D08F5492E0054868C /* GPassword.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GPassword.cpp; path = ../../common/General/GPassword.cpp; sourceTree = ""; }; 34A11A791675347500FCC5D7 /* GThreadCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GThreadCommon.cpp; path = ../../common/Lgi/GThreadCommon.cpp; sourceTree = ""; }; 34A11A7B1675349900FCC5D7 /* GMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GMutex.cpp; path = ../../common/Lgi/GMutex.cpp; sourceTree = ""; }; 34A11A7D167534A500FCC5D7 /* GMutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GMutex.h; path = ../../../include/common/GMutex.h; sourceTree = ""; }; 34A3ABF60EF5AA0A009A5E95 /* GDisplayString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GDisplayString.cpp; path = ../../common/Gdc2/Font/GDisplayString.cpp; sourceTree = ""; }; 34A3ABF80EF5AA1A009A5E95 /* GDisplayString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GDisplayString.h; path = ../../../include/common/GDisplayString.h; sourceTree = ""; }; 34A671960F3725860073A86C /* GContainers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GContainers.h; path = ../../../include/common/GContainers.h; sourceTree = ""; }; 34A8A3BC1303408000CAA8DF /* GPopup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GPopup.h; path = ../../../include/common/GPopup.h; sourceTree = ""; }; 34ADC9E00F4CC395009C6B75 /* GAutoPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GAutoPtr.h; path = ../../../include/common/GAutoPtr.h; sourceTree = ""; }; 34B28AEF143FA69B0023662F /* GPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GPath.cpp; path = ../../common/Gdc2/Path/GPath.cpp; sourceTree = ""; }; 34B28AF1143FA6AF0023662F /* GPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GPath.h; path = ../../../include/common/GPath.h; sourceTree = ""; }; 34B423810EBE762000D370A7 /* GSymLookup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GSymLookup.h; path = ../../../include/mac/carbon/GSymLookup.h; sourceTree = ""; }; 34B4A4FE0C05962100CDD0D1 /* GPrinter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GPrinter.cpp; path = Lgi/GPrinter.cpp; sourceTree = ""; }; 34B4A5000C05966000CDD0D1 /* Base64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Base64.cpp; path = ../../common/INet/Base64.cpp; sourceTree = ""; }; 34B4A5060C05987F00CDD0D1 /* GMemStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GMemStream.cpp; path = ../../common/Lgi/GMemStream.cpp; sourceTree = ""; }; 34B4A50A0C0598B600CDD0D1 /* GMem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GMem.cpp; path = General/GMem.cpp; sourceTree = ""; }; 34B4A50E0C0598E900CDD0D1 /* GMem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GMem.h; path = ../../../include/common/GMem.h; sourceTree = ""; }; 34B4A52F0C059A2100CDD0D1 /* GUtf8.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GUtf8.cpp; path = ../../common/Text/GUtf8.cpp; sourceTree = ""; }; 34B5EAE30DD5B39F005A24D0 /* GFileSelect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GFileSelect.cpp; path = Lgi/GFileSelect.cpp; sourceTree = ""; }; 34B9505A0939DA3000477A2D /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; 34B9545C0939DB5A00477A2D /* GString.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GString.h; path = ../../../include/common/GString.h; sourceTree = SOURCE_ROOT; }; 34B954820939DCC400477A2D /* INet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = INet.cpp; path = ../../common/INet/INet.cpp; sourceTree = SOURCE_ROOT; }; 34B954830939DCC400477A2D /* INetTools.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = INetTools.cpp; path = ../../common/INet/INetTools.cpp; sourceTree = SOURCE_ROOT; }; 34B954860939DCDD00477A2D /* INet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = INet.h; path = ../../../include/common/INet.h; sourceTree = SOURCE_ROOT; }; 34B954870939DCDD00477A2D /* INetTools.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = INetTools.h; path = ../../../include/common/INetTools.h; sourceTree = SOURCE_ROOT; }; 34BC1E1E134DC748005451EE /* Res.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Res.h; path = ../../../include/common/Res.h; sourceTree = ""; }; 34CDDAE008C5DF5B005EAAC7 /* LgiMac.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = LgiMac.h; path = ../../../include/mac/carbon/LgiMac.h; sourceTree = ""; }; 34CDDAE108C5DF5B005EAAC7 /* LgiOsClasses.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = LgiOsClasses.h; path = ../../../include/mac/carbon/LgiOsClasses.h; sourceTree = ""; }; 34CDDAE208C5DF5B005EAAC7 /* LgiOsDefs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = LgiOsDefs.h; path = ../../../include/mac/carbon/LgiOsDefs.h; sourceTree = ""; }; 34CDDAEA08C5DFB1005EAAC7 /* GString.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GString.cpp; path = ../../common/Text/GString.cpp; sourceTree = ""; }; 34CDDAEC08C5DFCF005EAAC7 /* GFontCodePages.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GFontCodePages.cpp; path = ../../common/Gdc2/Font/GFontCodePages.cpp; sourceTree = ""; }; 34CEBFE60DDC5EF800DE0E0B /* GCombo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GCombo.h; path = ../../../include/common/GCombo.h; sourceTree = ""; }; 34D2CC4E08F0FB490009968C /* GPopup.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GPopup.cpp; path = ../../common/Widgets/GPopup.cpp; sourceTree = ""; }; 34D2CC6008F0FC7F0009968C /* GFontSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GFontSystem.cpp; path = ../../common/Gdc2/Font/GFontSystem.cpp; sourceTree = ""; }; 34D2CC6208F0FCA00009968C /* GFont.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GFont.cpp; path = ../../common/Gdc2/Font/GFont.cpp; sourceTree = ""; }; 34D2CC7208F115AD0009968C /* GFont.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GFont.h; path = ../../../include/common/GFont.h; sourceTree = ""; }; 34D2CC8B08F116A80009968C /* GThread.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GThread.cpp; path = Lgi/GThread.cpp; sourceTree = ""; }; 34D2CCA308F117A20009968C /* GFont_A.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GFont_A.cpp; path = ../../common/Gdc2/Font/GFont_A.cpp; sourceTree = ""; }; 34D2CCA408F117A20009968C /* GFont_W.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GFont_W.cpp; path = ../../common/Gdc2/Font/GFont_W.cpp; sourceTree = ""; }; 34D2CCA908F1181C0009968C /* GFontSelect.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GFontSelect.cpp; path = ../../common/Lgi/GFontSelect.cpp; sourceTree = ""; }; 34D2CCAB08F1183F0009968C /* GWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GWindow.cpp; path = Lgi/GWindow.cpp; sourceTree = ""; }; 34D2CCEC08F11BEF0009968C /* GWidgets.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GWidgets.cpp; path = Lgi/GWidgets.cpp; sourceTree = ""; }; 34D4D55A1250AF98000DA1FD /* GHashTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GHashTable.h; path = ../../../include/common/GHashTable.h; sourceTree = ""; }; 34D979D01150F0E100CE462B /* GLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GLayout.cpp; path = ../../common/Lgi/GLayout.cpp; sourceTree = ""; }; 34DA5CB60DE0DE930050C7E4 /* GScrollBar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GScrollBar.cpp; path = ../../common/Widgets/GScrollBar.cpp; sourceTree = ""; }; 34E51DAF0D2EFCCB0021AA08 /* GList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GList.h; path = ../../../include/common/GList.h; sourceTree = ""; }; 34F2E6590E1849D300E8DA6A /* GTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTree.h; path = ../../../include/common/GTree.h; sourceTree = ""; }; 34F45B9D18C161E40040FD99 /* GPixelRops.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GPixelRops.h; path = ../../../include/common/GPixelRops.h; sourceTree = ""; }; 34F96DA90DB9B82B009C64B8 /* GDragAndDrop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GDragAndDrop.h; path = ../../../include/common/GDragAndDrop.h; sourceTree = ""; }; 8DC2EF5A0486A6940098B216 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 8DC2EF5B0486A6940098B216 /* Lgi.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Lgi.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 8DC2EF560486A6940098B216 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 34B9505B0939DA3000477A2D /* Carbon.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 034768DFFF38A50411DB9C8B /* Products */ = { isa = PBXGroup; children = ( 8DC2EF5B0486A6940098B216 /* Lgi.framework */, ); name = Products; sourceTree = ""; }; 0867D691FE84028FC02AAC07 /* Lgi */ = { isa = PBXGroup; children = ( 08FB77AEFE84172EC02AAC07 /* Classes */, 089C1665FE841158C02AAC07 /* Resources */, 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, 034768DFFF38A50411DB9C8B /* Products */, ); name = Lgi; sourceTree = ""; }; 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { isa = PBXGroup; children = ( 1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */, 1058C7B2FEA5585E11CA2CBB /* Other Frameworks */, ); name = "External Frameworks and Libraries"; sourceTree = ""; }; 089C1665FE841158C02AAC07 /* Resources */ = { isa = PBXGroup; children = ( 8DC2EF5A0486A6940098B216 /* Info.plist */, 089C1666FE841158C02AAC07 /* InfoPlist.strings */, ); name = Resources; sourceTree = ""; }; 08FB77AEFE84172EC02AAC07 /* Classes */ = { isa = PBXGroup; children = ( 344B736A08D83F0700D49457 /* Core */, 34D2CCA808F118020009968C /* Dialogs */, 3446E2CE08D0E59E005024EB /* Graphics */, 34CDDADF08C5DF4A005EAAC7 /* Headers */, 34B954810939DCA400477A2D /* Network */, 344B738308D8409900D49457 /* Text */, 34D2CC5008F0FB510009968C /* Widgets */, ); name = Classes; sourceTree = ""; }; 1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( 34B9505A0939DA3000477A2D /* Carbon.framework */, ); name = "Linked Frameworks"; sourceTree = ""; }; 1058C7B2FEA5585E11CA2CBB /* Other Frameworks */ = { isa = PBXGroup; children = ( 345ECABC0FB1A74700C8BFA8 /* SystemConfiguration.framework */, 0867D69BFE84028FC02AAC07 /* Foundation.framework */, ); name = "Other Frameworks"; sourceTree = ""; }; 3416C2790967759800DD79DC /* Regions */ = { isa = PBXGroup; children = ( 3416C27A096775AF00DD79DC /* GRect.h */, 344AF38608E045F2004ED88C /* GRect.cpp */, ); name = Regions; sourceTree = ""; }; 341BE43D123ED1CE009BF203 /* Hashing */ = { isa = PBXGroup; children = ( 341BE440123ED1F1009BF203 /* sha1.c */, 341BE441123ED1F1009BF203 /* sha1.h */, 341BE43E123ED1E6009BF203 /* md5.h */, 347677630FE5BB2800E2E445 /* md5.c */, ); name = Hashing; sourceTree = ""; }; 3429212A1087D55900578ECC /* Css */ = { isa = PBXGroup; children = ( 344CD2D3176C75B9008A716C /* GCssTools.cpp */, 3429212D1087D58100578ECC /* GCss.h */, 3429212B1087D57200578ECC /* GCss.cpp */, ); name = Css; sourceTree = ""; }; 3433784D19178B33007A4DC5 /* Colour */ = { isa = PBXGroup; children = ( 3433784A19178B09007A4DC5 /* GColourSpace.h */, 3476333218E2D12300766FC4 /* GColour.cpp */, ); name = Colour; sourceTree = ""; }; 3446E2CE08D0E59E005024EB /* Graphics */ = { isa = PBXGroup; children = ( 3446E2B508D0E4AF005024EB /* Gdc2.cpp */, 344B738008D8406900D49457 /* GdcCommon.cpp */, 3446E2B608D0E4AF005024EB /* GMemDC.cpp */, 3446E2B708D0E4AF005024EB /* GPrintDC.cpp */, 3446E2B808D0E4AF005024EB /* GScreenDC.cpp */, 344AF36708E04156004ED88C /* GSurface.cpp */, 3446E2CF08D0E5C2005024EB /* Gdc2.h */, 34F45B9D18C161E40040FD99 /* GPixelRops.h */, 3446E31F08D0E9BB005024EB /* Applicators */, 3433784D19178B33007A4DC5 /* Colour */, 344D1B1108F4A2F900228075 /* Filters */, 344B738208D8408500D49457 /* Font */, 34B28AEE143FA6860023662F /* Path */, 3416C2790967759800DD79DC /* Regions */, ); name = Graphics; sourceTree = ""; }; 3446E31F08D0E9BB005024EB /* Applicators */ = { isa = PBXGroup; children = ( 3446E32A08D0E9E4005024EB /* Alpha.cpp */, 3446E32008D0E9D6005024EB /* 8Bit.cpp */, 3446E32108D0E9D6005024EB /* 15Bit.cpp */, 3446E32208D0E9D6005024EB /* 16Bit.cpp */, 3446E32308D0E9D6005024EB /* 24Bit.cpp */, 3446E32408D0E9D6005024EB /* 32Bit.cpp */, ); name = Applicators; sourceTree = ""; }; 344AF36408E0328B004ED88C /* Date/Time */ = { isa = PBXGroup; children = ( 34637EB90F876EB1005A9B80 /* GDateTime.h */, 344AF36208E03284004ED88C /* GDateTime.cpp */, ); name = Date/Time; sourceTree = ""; }; 344AF38208E045A6004ED88C /* Stream */ = { isa = PBXGroup; children = ( 342D78F011FAD1AF005BADBD /* GStream.h */, 34B4A5060C05987F00CDD0D1 /* GMemStream.cpp */, 344AF38F08E04707004ED88C /* GVariant.cpp */, 344AF38308E045C5004ED88C /* GStream.cpp */, ); name = Stream; sourceTree = ""; }; 344AF39F08E0489D004ED88C /* Process */ = { isa = PBXGroup; children = ( 344AF3A008E048C2004ED88C /* GProcess.cpp */, ); name = Process; sourceTree = ""; }; 344AF3CA08E04B4A004ED88C /* Libraries */ = { isa = PBXGroup; children = ( 344AF3D608E04BE0004ED88C /* GLibrary.h */, 344AF3CB08E04B63004ED88C /* GLibrary.cpp */, ); name = Libraries; sourceTree = ""; }; 344B736A08D83F0700D49457 /* Core */ = { isa = PBXGroup; children = ( 341BE43D123ED1CE009BF203 /* Hashing */, 34E9BF35121AA21800C1F0FA /* Exceptions */, 344D1B5208F4A52200228075 /* D'n'd */, 344AF36408E0328B004ED88C /* Date/Time */, 344B738508D840BB00D49457 /* File */, 344AF3CA08E04B4A004ED88C /* Libraries */, 344B738408D840A800D49457 /* Memory */, 34983BE408F4A5680054868C /* Menus */, 344AF39F08E0489D004ED88C /* Process */, 344D1B0B08F4A2C300228075 /* Resources */, 344AF38208E045A6004ED88C /* Stream */, 345F9C4108F0FAA9007DAFE2 /* Threads */, 344AF39508E0476A004ED88C /* GApp.cpp */, 34983C1808F548620054868C /* GClipBoard.cpp */, 344B736B08D83F1800D49457 /* GGeneral.cpp */, 344B738C08D8414400D49457 /* GGuiUtils.cpp */, 344AF3DC08E04C75004ED88C /* GObject.cpp */, 3443CBFD0C16BA64008F7B02 /* GOptionsFile.cpp */, 34B4A4FE0C05962100CDD0D1 /* GPrinter.cpp */, 34983C2208F548DF0054868C /* GTrayIcon.cpp */, 345F9C2208F0F622007DAFE2 /* GView.cpp */, 349330490F60CE440092EAE8 /* GViewCommon.cpp */, 34D2CCAB08F1183F0009968C /* GWindow.cpp */, 344B737A08D8401600D49457 /* Lgi.cpp */, 34983C2308F548DF0054868C /* LgiRand.cpp */, 3493304B0F60CE690092EAE8 /* GViewPriv.h */, ); name = Core; sourceTree = ""; }; 344B738208D8408500D49457 /* Font */ = { isa = PBXGroup; children = ( 34A3ABF80EF5AA1A009A5E95 /* GDisplayString.h */, 34A3ABF60EF5AA0A009A5E95 /* GDisplayString.cpp */, 34D2CC7208F115AD0009968C /* GFont.h */, 34D2CC6208F0FCA00009968C /* GFont.cpp */, 34D2CCA308F117A20009968C /* GFont_A.cpp */, 34D2CCA408F117A20009968C /* GFont_W.cpp */, 34D2CC6008F0FC7F0009968C /* GFontSystem.cpp */, 34CDDAEC08C5DFCF005EAAC7 /* GFontCodePages.cpp */, ); name = Font; sourceTree = ""; }; 344B738308D8409900D49457 /* Text */ = { isa = PBXGroup; children = ( 34661C7813C7407000B4C2A7 /* GUtf8.h */, 3413BBC11349EC6900AE15B0 /* GXmlTree.h */, 34B4A52F0C059A2100CDD0D1 /* GUtf8.cpp */, 34B9545C0939DB5A00477A2D /* GString.h */, 344AF35E08E0322F004ED88C /* GToken.cpp */, 344AF35F08E0322F004ED88C /* GXmlTree.cpp */, 34CDDAEA08C5DFB1005EAAC7 /* GString.cpp */, ); name = Text; sourceTree = ""; }; 344B738408D840A800D49457 /* Memory */ = { isa = PBXGroup; children = ( 34D4D55A1250AF98000DA1FD /* GHashTable.h */, 34ADC9E00F4CC395009C6B75 /* GAutoPtr.h */, 340BFC49096A9D4600A11AE6 /* GArray.h */, 3465BDD808C5DEC100B4C217 /* GContainers.cpp */, 34A671960F3725860073A86C /* GContainers.h */, 34B4A50A0C0598B600CDD0D1 /* GMem.cpp */, 34B4A50E0C0598E900CDD0D1 /* GMem.h */, 344AF3C808E04B32004ED88C /* GProperties.cpp */, ); name = Memory; sourceTree = ""; }; 344B738508D840BB00D49457 /* File */ = { isa = PBXGroup; children = ( 34766827093F207D00623A44 /* GFile.h */, 344B738608D840CF00D49457 /* GFile.cpp */, 344AC3E21915AC25003FFE7E /* GFileCommon.cpp */, ); name = File; sourceTree = ""; }; 344D1B0B08F4A2C300228075 /* Resources */ = { isa = PBXGroup; children = ( 342CE46111FDAB57000B1F3C /* LgiRes.h */, 344D1B0C08F4A2DB00228075 /* LgiRes.cpp */, 344D1B0D08F4A2DB00228075 /* Res.cpp */, 34BC1E1E134DC748005451EE /* Res.h */, ); name = Resources; sourceTree = ""; }; 344D1B1108F4A2F900228075 /* Filters */ = { isa = PBXGroup; children = ( 344D1B1208F4A30D00228075 /* GFilter.cpp */, ); name = Filters; sourceTree = ""; }; 344D1B5208F4A52200228075 /* D'n'd */ = { isa = PBXGroup; children = ( 34F96DA90DB9B82B009C64B8 /* GDragAndDrop.h */, 34983BE208F4A54C0054868C /* GDragAndDrop.cpp */, ); name = "D'n'd"; sourceTree = ""; }; 345F9C4108F0FAA9007DAFE2 /* Threads */ = { isa = PBXGroup; children = ( 344E922C19602E1B000074D2 /* GThreadEvent.h */, 343E950C1751C6090085611D /* GThreadEvent.cpp */, 34A11A7D167534A500FCC5D7 /* GMutex.h */, 34A11A7B1675349900FCC5D7 /* GMutex.cpp */, 34A11A791675347500FCC5D7 /* GThreadCommon.cpp */, 34766831093F20EE00623A44 /* GThread.h */, 34D2CC8B08F116A80009968C /* GThread.cpp */, ); name = Threads; sourceTree = ""; }; 34983BE408F4A5680054868C /* Menus */ = { isa = PBXGroup; children = ( 343BF8410B58A110008AFE75 /* GMenu.h */, 34983BE508F4A5790054868C /* GMenu.cpp */, ); name = Menus; sourceTree = ""; }; 34B28AEE143FA6860023662F /* Path */ = { isa = PBXGroup; children = ( 34B28AF1143FA6AF0023662F /* GPath.h */, 34B28AEF143FA69B0023662F /* GPath.cpp */, ); name = Path; sourceTree = ""; }; 34B5EAE20DD5B374005A24D0 /* Mac Native */ = { isa = PBXGroup; children = ( 342D52FA0F0CBE0A002A1C7C /* GFileSelect.h */, 34B5EAE30DD5B39F005A24D0 /* GFileSelect.cpp */, ); name = "Mac Native"; sourceTree = ""; }; 34B954810939DCA400477A2D /* Network */ = { isa = PBXGroup; children = ( 34B4A5000C05966000CDD0D1 /* Base64.cpp */, 34B954860939DCDD00477A2D /* INet.h */, 34B954820939DCC400477A2D /* INet.cpp */, 34B954870939DCDD00477A2D /* INetTools.h */, 34B954830939DCC400477A2D /* INetTools.cpp */, ); name = Network; sourceTree = ""; }; 34CDDADF08C5DF4A005EAAC7 /* Headers */ = { isa = PBXGroup; children = ( 3427C3BD11FC02AE002AC215 /* LgiInc.h */, 345C1BF20B3F4AFF00E80FF1 /* LgiClass.h */, 340BFC14096A0E0100A11AE6 /* LgiCommon.h */, 3476680E093F1FD400623A44 /* LgiInterfaces.h */, 344AF3C208E04A94004ED88C /* LgiDefs.h */, 344B737708D83F6C00D49457 /* LgiClasses.h */, 344B736308D83E8300D49457 /* Lgi.h */, 34CDDAE008C5DF5B005EAAC7 /* LgiMac.h */, 34CDDAE108C5DF5B005EAAC7 /* LgiOsClasses.h */, 34CDDAE208C5DF5B005EAAC7 /* LgiOsDefs.h */, ); name = Headers; sourceTree = ""; }; 34D2CC5008F0FB510009968C /* Widgets */ = { isa = PBXGroup; children = ( 3429212A1087D55900578ECC /* Css */, 344D1B1608F4A36300228075 /* GBitmap.cpp */, 346BF43A193AAD02000C2030 /* GBox.cpp */, 344D1B1708F4A36300228075 /* GButton.cpp */, 344D1B1808F4A36300228075 /* GCheckBox.cpp */, 341B7C481956D3AA00AAA225 /* GCheckBox.h */, 344D1B1908F4A36300228075 /* GCombo.cpp */, 34CEBFE60DDC5EF800DE0E0B /* GCombo.h */, 34983C1208F5482D0054868C /* GDocView.cpp */, 34372ACF0C46E0290090CDC9 /* GDocView.h */, 344D1B1A08F4A36300228075 /* GEdit.cpp */, 3478B20912E6F87200936EFA /* GEdit.h */, 34D979D01150F0E100CE462B /* GLayout.cpp */, 344D1B1B08F4A36300228075 /* GList.cpp */, 34E51DAF0D2EFCCB0021AA08 /* GList.h */, 344D1B1C08F4A36300228075 /* GPanel.cpp */, 34D2CC4E08F0FB490009968C /* GPopup.cpp */, 34A8A3BC1303408000CAA8DF /* GPopup.h */, 344D1B1D08F4A36300228075 /* GProgress.cpp */, 344D1B1E08F4A36300228075 /* GProgressDlg.cpp */, 344D1B1408F4A33400228075 /* GRadioGroup.cpp */, 341B7C4A1956E08500AAA225 /* GRadioGroup.h */, 34DA5CB60DE0DE930050C7E4 /* GScrollBar.cpp */, 345F4B9E0F058D4F0015A7EE /* GScrollBar.h */, 344D1B0508F4A26300228075 /* GSlider.h */, 344D1B1F08F4A36300228075 /* GSplitter.cpp */, 344D1B2008F4A36300228075 /* GStatusBar.cpp */, 344D1B2108F4A36300228075 /* GTableLayout.cpp */, 347CB5FF172A97D600AC3EA6 /* GTableLayout.h */, 344D1B2208F4A36300228075 /* GTabView.cpp */, 344D1B2308F4A36300228075 /* GTextLabel.cpp */, 34983C1308F5482D0054868C /* GTextView3.cpp */, 34463F2411FBE25E009BB91F /* GTextView3.h */, 3444A36012275BDD004ADADE /* GToolBar.cpp */, 340FEA9D096E375600E534D5 /* GToolTabBar.h */, 34983C1608F5484C0054868C /* GToolTip.cpp */, 344D1B2508F4A36300228075 /* GTree.cpp */, 34F2E6590E1849D300E8DA6A /* GTree.h */, 34D2CCEC08F11BEF0009968C /* GWidgets.cpp */, 345C1EC80B46017000E80FF1 /* LgiWidgets.h */, 34DA5C2C0DE0339E0050C7E4 /* Mac Native */, ); name = Widgets; sourceTree = ""; }; 34D2CCA808F118020009968C /* Dialogs */ = { isa = PBXGroup; children = ( 34B5EAE20DD5B374005A24D0 /* Mac Native */, 34983C1D08F548DF0054868C /* GAlert.cpp */, 34983C1E08F548DF0054868C /* GDataDlg.cpp */, 34983C1F08F548DF0054868C /* GFindReplace.cpp */, 34D2CCA908F1181C0009968C /* GFontSelect.cpp */, 34983C2008F548DF0054868C /* GInput.cpp */, 34983C2108F548DF0054868C /* GMru.cpp */, 3489C3E90DD1C4DB0095F0E1 /* GMru.h */, 34983C2D08F5492E0054868C /* GPassword.cpp */, 344B738908D8410B00D49457 /* LgiMsg.cpp */, ); name = Dialogs; sourceTree = ""; }; 34DA5C2C0DE0339E0050C7E4 /* Mac Native */ = { isa = PBXGroup; children = ( 340FEA9C096E375600E534D5 /* GToolBar.h */, ); name = "Mac Native"; sourceTree = ""; }; 34E9BF35121AA21800C1F0FA /* Exceptions */ = { isa = PBXGroup; children = ( 34B423810EBE762000D370A7 /* GSymLookup.h */, ); name = Exceptions; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ 8DC2EF500486A6940098B216 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 34CDDAE308C5DF5B005EAAC7 /* LgiMac.h in Headers */, 34CDDAE408C5DF5B005EAAC7 /* LgiOsClasses.h in Headers */, 34CDDAE508C5DF5B005EAAC7 /* LgiOsDefs.h in Headers */, 3446E2D008D0E5C2005024EB /* Gdc2.h in Headers */, 344B736408D83E8300D49457 /* Lgi.h in Headers */, 344B737808D83F6C00D49457 /* LgiClasses.h in Headers */, 344AF3C308E04A94004ED88C /* LgiDefs.h in Headers */, 344AF3D708E04BE0004ED88C /* GLibrary.h in Headers */, 34D2CC7308F115AD0009968C /* GFont.h in Headers */, 344D1B0608F4A26300228075 /* GSlider.h in Headers */, 34B9545D0939DB5A00477A2D /* GString.h in Headers */, 34B954880939DCDD00477A2D /* INet.h in Headers */, 34B954890939DCDD00477A2D /* INetTools.h in Headers */, 3476680F093F1FD400623A44 /* LgiInterfaces.h in Headers */, 34766828093F207D00623A44 /* GFile.h in Headers */, 34766832093F20EE00623A44 /* GThread.h in Headers */, 3416C27B096775AF00DD79DC /* GRect.h in Headers */, 340BFC15096A0E0100A11AE6 /* LgiCommon.h in Headers */, 340BFC4A096A9D4600A11AE6 /* GArray.h in Headers */, 340FEA9E096E375600E534D5 /* GToolBar.h in Headers */, 340FEA9F096E375600E534D5 /* GToolTabBar.h in Headers */, 345C1BF30B3F4AFF00E80FF1 /* LgiClass.h in Headers */, 345C1EC90B46017000E80FF1 /* LgiWidgets.h in Headers */, 343BF8420B58A110008AFE75 /* GMenu.h in Headers */, 34B4A50F0C0598E900CDD0D1 /* GMem.h in Headers */, 34372AD00C46E0290090CDC9 /* GDocView.h in Headers */, 34E51DB00D2EFCCB0021AA08 /* GList.h in Headers */, 34F96DAA0DB9B82B009C64B8 /* GDragAndDrop.h in Headers */, 3489C3EA0DD1C4DB0095F0E1 /* GMru.h in Headers */, 34CEBFE70DDC5EF800DE0E0B /* GCombo.h in Headers */, 34F2E65A0E1849D300E8DA6A /* GTree.h in Headers */, 34B423820EBE762000D370A7 /* GSymLookup.h in Headers */, 34A3ABF90EF5AA1A009A5E95 /* GDisplayString.h in Headers */, 345F4B9F0F058D4F0015A7EE /* GScrollBar.h in Headers */, 342D52FB0F0CBE0A002A1C7C /* GFileSelect.h in Headers */, 34A671970F3725860073A86C /* GContainers.h in Headers */, 34ADC9E10F4CC395009C6B75 /* GAutoPtr.h in Headers */, 3493304C0F60CE690092EAE8 /* GViewPriv.h in Headers */, 34637EBA0F876EB1005A9B80 /* GDateTime.h in Headers */, 3429212E1087D58100578ECC /* GCss.h in Headers */, 342D78F111FAD1AF005BADBD /* GStream.h in Headers */, 34463F2511FBE25E009BB91F /* GTextView3.h in Headers */, 3427C3BE11FC02AE002AC215 /* LgiInc.h in Headers */, 342CE46211FDAB57000B1F3C /* LgiRes.h in Headers */, 341BE43F123ED1E6009BF203 /* md5.h in Headers */, 341BE443123ED1F1009BF203 /* sha1.h in Headers */, 34D4D55B1250AF98000DA1FD /* GHashTable.h in Headers */, 3478B20A12E6F87200936EFA /* GEdit.h in Headers */, 34A8A3BD1303408000CAA8DF /* GPopup.h in Headers */, 3413BBC21349EC6900AE15B0 /* GXmlTree.h in Headers */, 34BC1E1F134DC748005451EE /* Res.h in Headers */, 34661C7913C7407000B4C2A7 /* GUtf8.h in Headers */, 34B28AF2143FA6AF0023662F /* GPath.h in Headers */, 34A11A7E167534A500FCC5D7 /* GMutex.h in Headers */, 347CB600172A97D600AC3EA6 /* GTableLayout.h in Headers */, 34F45B9E18C161E40040FD99 /* GPixelRops.h in Headers */, 3433784B19178B09007A4DC5 /* GColourSpace.h in Headers */, 341B7C491956D3AA00AAA225 /* GCheckBox.h in Headers */, 341B7C4B1956E08500AAA225 /* GRadioGroup.h in Headers */, 344E922D19602E1B000074D2 /* GThreadEvent.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ 8DC2EF4F0486A6940098B216 /* Lgi */ = { isa = PBXNativeTarget; buildConfigurationList = 34BA94D70B33ADB400493CD3 /* Build configuration list for PBXNativeTarget "Lgi" */; buildPhases = ( 8DC2EF500486A6940098B216 /* Headers */, 8DC2EF520486A6940098B216 /* Resources */, 8DC2EF540486A6940098B216 /* Sources */, 8DC2EF560486A6940098B216 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = Lgi; productInstallPath = "$(HOME)/Library/Frameworks"; productName = Lgi; productReference = 8DC2EF5B0486A6940098B216 /* Lgi.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 0867D690FE84028FC02AAC07 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0510; + LastUpgradeCheck = 0620; }; buildConfigurationList = 34BA94DB0B33ADB400493CD3 /* Build configuration list for PBXProject "LgiCarbon" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 1; knownRegions = ( English, Japanese, French, German, ); mainGroup = 0867D691FE84028FC02AAC07 /* Lgi */; productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 8DC2EF4F0486A6940098B216 /* Lgi */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 8DC2EF520486A6940098B216 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 8DC2EF540486A6940098B216 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 3465BDD908C5DEC100B4C217 /* GContainers.cpp in Sources */, 34CDDAEB08C5DFB1005EAAC7 /* GString.cpp in Sources */, 34CDDAED08C5DFCF005EAAC7 /* GFontCodePages.cpp in Sources */, 3446E2B908D0E4AF005024EB /* Gdc2.cpp in Sources */, 3446E2BA08D0E4AF005024EB /* GMemDC.cpp in Sources */, 3446E2BB08D0E4AF005024EB /* GPrintDC.cpp in Sources */, 3446E2BC08D0E4AF005024EB /* GScreenDC.cpp in Sources */, 3446E32508D0E9D6005024EB /* 8Bit.cpp in Sources */, 3446E32608D0E9D6005024EB /* 15Bit.cpp in Sources */, 3446E32708D0E9D6005024EB /* 16Bit.cpp in Sources */, 3446E32808D0E9D6005024EB /* 24Bit.cpp in Sources */, 3446E32908D0E9D6005024EB /* 32Bit.cpp in Sources */, 3446E32B08D0E9E4005024EB /* Alpha.cpp in Sources */, 344B736C08D83F1800D49457 /* GGeneral.cpp in Sources */, 344B737B08D8401600D49457 /* Lgi.cpp in Sources */, 344B738108D8406900D49457 /* GdcCommon.cpp in Sources */, 344B738708D840CF00D49457 /* GFile.cpp in Sources */, 344B738A08D8410B00D49457 /* LgiMsg.cpp in Sources */, 344B738D08D8414400D49457 /* GGuiUtils.cpp in Sources */, 344AF36008E0322F004ED88C /* GToken.cpp in Sources */, 344AF36108E0322F004ED88C /* GXmlTree.cpp in Sources */, 344AF36308E03284004ED88C /* GDateTime.cpp in Sources */, 344AF36808E04156004ED88C /* GSurface.cpp in Sources */, 344AF38408E045C5004ED88C /* GStream.cpp in Sources */, 344AF38708E045F2004ED88C /* GRect.cpp in Sources */, 344AF39008E04707004ED88C /* GVariant.cpp in Sources */, 344AF39608E0476A004ED88C /* GApp.cpp in Sources */, 344AF3A108E048C2004ED88C /* GProcess.cpp in Sources */, 344AF3C908E04B32004ED88C /* GProperties.cpp in Sources */, 344AF3CC08E04B63004ED88C /* GLibrary.cpp in Sources */, 344AF3DD08E04C75004ED88C /* GObject.cpp in Sources */, 345F9C2308F0F622007DAFE2 /* GView.cpp in Sources */, 34D2CC4F08F0FB490009968C /* GPopup.cpp in Sources */, 34D2CC6108F0FC7F0009968C /* GFontSystem.cpp in Sources */, 34D2CC6308F0FCA00009968C /* GFont.cpp in Sources */, 34D2CC8C08F116A80009968C /* GThread.cpp in Sources */, 34D2CCA508F117A20009968C /* GFont_A.cpp in Sources */, 34D2CCA608F117A20009968C /* GFont_W.cpp in Sources */, 34D2CCAA08F1181C0009968C /* GFontSelect.cpp in Sources */, 34D2CCAC08F1183F0009968C /* GWindow.cpp in Sources */, 34D2CCED08F11BEF0009968C /* GWidgets.cpp in Sources */, 344D1B0E08F4A2DB00228075 /* LgiRes.cpp in Sources */, 344D1B0F08F4A2DB00228075 /* Res.cpp in Sources */, 344D1B1308F4A30D00228075 /* GFilter.cpp in Sources */, 344D1B1508F4A33400228075 /* GRadioGroup.cpp in Sources */, 344D1B2608F4A36300228075 /* GBitmap.cpp in Sources */, 344D1B2708F4A36300228075 /* GButton.cpp in Sources */, 344D1B2808F4A36300228075 /* GCheckBox.cpp in Sources */, 344D1B2908F4A36300228075 /* GCombo.cpp in Sources */, 344D1B2A08F4A36300228075 /* GEdit.cpp in Sources */, 344D1B2B08F4A36300228075 /* GList.cpp in Sources */, 344D1B2C08F4A36300228075 /* GPanel.cpp in Sources */, 344D1B2D08F4A36300228075 /* GProgress.cpp in Sources */, 344D1B2E08F4A36300228075 /* GProgressDlg.cpp in Sources */, 344D1B2F08F4A36300228075 /* GSplitter.cpp in Sources */, 344D1B3008F4A36300228075 /* GStatusBar.cpp in Sources */, 344D1B3108F4A36300228075 /* GTableLayout.cpp in Sources */, 344D1B3208F4A36300228075 /* GTabView.cpp in Sources */, 344D1B3308F4A36300228075 /* GTextLabel.cpp in Sources */, 344D1B3508F4A36300228075 /* GTree.cpp in Sources */, 34983BE308F4A54C0054868C /* GDragAndDrop.cpp in Sources */, 34983BE608F4A5790054868C /* GMenu.cpp in Sources */, 34983C1408F5482D0054868C /* GDocView.cpp in Sources */, 34983C1508F5482D0054868C /* GTextView3.cpp in Sources */, 34983C1708F5484C0054868C /* GToolTip.cpp in Sources */, 34983C1908F548620054868C /* GClipBoard.cpp in Sources */, 34983C2408F548DF0054868C /* GAlert.cpp in Sources */, 34983C2508F548DF0054868C /* GDataDlg.cpp in Sources */, 34983C2608F548DF0054868C /* GFindReplace.cpp in Sources */, 34983C2708F548DF0054868C /* GInput.cpp in Sources */, 34983C2808F548DF0054868C /* GMru.cpp in Sources */, 34983C2908F548DF0054868C /* GTrayIcon.cpp in Sources */, 34983C2A08F548DF0054868C /* LgiRand.cpp in Sources */, 34983C2E08F5492E0054868C /* GPassword.cpp in Sources */, 34B954840939DCC400477A2D /* INet.cpp in Sources */, 34B954850939DCC400477A2D /* INetTools.cpp in Sources */, 34B4A4FF0C05962100CDD0D1 /* GPrinter.cpp in Sources */, 34B4A5010C05966000CDD0D1 /* Base64.cpp in Sources */, 34B4A5070C05987F00CDD0D1 /* GMemStream.cpp in Sources */, 34B4A50B0C0598B600CDD0D1 /* GMem.cpp in Sources */, 34B4A5300C059A2100CDD0D1 /* GUtf8.cpp in Sources */, 3443CBFE0C16BA64008F7B02 /* GOptionsFile.cpp in Sources */, 34B5EAE40DD5B39F005A24D0 /* GFileSelect.cpp in Sources */, 34DA5CB70DE0DE930050C7E4 /* GScrollBar.cpp in Sources */, 34A3ABF70EF5AA0A009A5E95 /* GDisplayString.cpp in Sources */, 3493304A0F60CE440092EAE8 /* GViewCommon.cpp in Sources */, 347677640FE5BB2800E2E445 /* md5.c in Sources */, 3429212C1087D57200578ECC /* GCss.cpp in Sources */, 34D979D11150F0E100CE462B /* GLayout.cpp in Sources */, 3444A36112275BDD004ADADE /* GToolBar.cpp in Sources */, 341BE442123ED1F1009BF203 /* sha1.c in Sources */, 34B28AF0143FA69B0023662F /* GPath.cpp in Sources */, 34A11A7A1675347500FCC5D7 /* GThreadCommon.cpp in Sources */, 34A11A7C1675349900FCC5D7 /* GMutex.cpp in Sources */, 343E950D1751C6090085611D /* GThreadEvent.cpp in Sources */, 344CD2D4176C75B9008A716C /* GCssTools.cpp in Sources */, 3476333318E2D12300766FC4 /* GColour.cpp in Sources */, 344AC3E31915AC25003FFE7E /* GFileCommon.cpp in Sources */, 346BF43B193AAD02000C2030 /* GBox.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ 089C1666FE841158C02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( 089C1667FE841158C02AAC07 /* English */, ); name = InfoPlist.strings; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 34BA94D80B33ADB400493CD3 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)", ); FRAMEWORK_VERSION = A; GCC_DYNAMIC_NO_PIC = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Lgi_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = MAC; GCC_VERSION = ""; HEADER_SEARCH_PATHS = ( include/mac, include/common, ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "@executable_path/../Frameworks"; MACH_O_TYPE = mh_dylib; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = Lgi; SDKROOT = macosx; SYMROOT = build; WRAPPER_EXTENSION = framework; }; name = Debug; }; 34BA94D90B33ADB400493CD3 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)", ); FRAMEWORK_VERSION = A; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Lgi_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = MAC; GCC_VERSION = ""; HEADER_SEARCH_PATHS = ( include/mac, include/common, ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "@executable_path/../Frameworks"; MACH_O_TYPE = mh_dylib; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = Lgi; SDKROOT = macosx; STRIP_INSTALLED_PRODUCT = YES; SYMROOT = build; WRAPPER_EXTENSION = framework; }; name = Release; }; 34BA94DC0B33ADB400493CD3 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT)"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_OPTIMIZATION_LEVEL = 0; GCC_VERSION = com.apple.compilers.llvmgcc42; GCC_WARN_64_TO_32_BIT_CONVERSION = NO; INSTALL_PATH = "@executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.6; OTHER_CFLAGS = ( "-D_DEBUG", "-DMAC", "-DLGI_LIBRARY", ); SDKROOT = macosx; STRIP_INSTALLED_PRODUCT = NO; SYMROOT = ./build; USER_HEADER_SEARCH_PATHS = "../../../include/common ../../../include/mac/carbon ../../../include/posix"; VALID_ARCHS = i386; }; name = Debug; }; 34BA94DD0B33ADB400493CD3 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT)"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_OPTIMIZATION_LEVEL = s; GCC_VERSION = com.apple.compilers.llvmgcc42; GCC_WARN_64_TO_32_BIT_CONVERSION = NO; INSTALL_PATH = "@executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.6; OTHER_CFLAGS = ( "-DMAC", "-DLGI_LIBRARY", ); SDKROOT = macosx; SYMROOT = ./build; USER_HEADER_SEARCH_PATHS = "../../../include/common ../../../include/mac/carbon ../../../include/posix"; VALID_ARCHS = i386; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 34BA94D70B33ADB400493CD3 /* Build configuration list for PBXNativeTarget "Lgi" */ = { isa = XCConfigurationList; buildConfigurations = ( 34BA94D80B33ADB400493CD3 /* Debug */, 34BA94D90B33ADB400493CD3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; 34BA94DB0B33ADB400493CD3 /* Build configuration list for PBXProject "LgiCarbon" */ = { isa = XCConfigurationList; buildConfigurations = ( 34BA94DC0B33ADB400493CD3 /* Debug */, 34BA94DD0B33ADB400493CD3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; /* End XCConfigurationList section */ }; rootObject = 0867D690FE84028FC02AAC07 /* Project object */; }