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 */; }