lazarus-ccr/applications/fpchess/chessconfig.pas
2011-07-21 14:44:39 +00:00

77 lines
1.2 KiB
ObjectPascal

unit chessconfig;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms;
type
{ TChessConfig }
TChessConfig = class
public
function GetResourcesDir: string;
function GetCurrentSkinDir: string;
end;
var
vChessConfig: TChessConfig;
implementation
{$ifdef Darwin}
uses
MacOSAll;
{$endif}
const
BundleResourcesDirectory = '/Contents/Resources/';
{ TChessConfig }
function TChessConfig.GetResourcesDir: string;
{$ifdef Darwin}
var
pathRef: CFURLRef;
pathCFStr: CFStringRef;
pathStr: shortstring;
{$endif}
begin
{$ifdef UNIX}
{$ifdef Darwin}
pathRef := CFBundleCopyBundleURL(CFBundleGetMainBundle());
pathCFStr := CFURLCopyFileSystemPath(pathRef, kCFURLPOSIXPathStyle);
CFStringGetPascalString(pathCFStr, @pathStr, 255, CFStringGetSystemEncoding());
CFRelease(pathRef);
CFRelease(pathCFStr);
Result := pathStr + BundleResourcesDirectory;
{$else}
Result := '';
{$endif}
{$endif}
{$ifdef Windows}
Result := ExtractFilePath(Application.EXEName);
{$endif}
end;
function TChessConfig.GetCurrentSkinDir: string;
begin
Result := GetResourcesDir() + 'skins' + PathDelim + 'classic' + PathDelim;
end;
initialization
vChessConfig := TChessConfig.Create;
finalization
vChessConfig.Free;
end.