Files
lazarus-ccr/bindings/pascocoa/examples/texteditor/model.pas

87 lines
1.9 KiB
ObjectPascal
Raw Normal View History

{
model.pas
Model class for the texteditor class. Holds and manages resource files and user data.
This example project is released under public domain
AUTHORS: Felipe Monteiro de Carvalho
}
unit model;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,
MacOSAll, objc, appkit, foundation;
type
{ TMyModel }
TMyModel = class
private
procedure LoadImages;
function GetResourcesDir: string;
public
{ Routines and variables for program resources }
imgOpen, imgSave, imgClose: NSImage;
ResourcesDir: string;
DocumentName: shortstring;
constructor Create;
end;
const
Str_Untitled = 'Untitled /1';
var
myModel: TMyModel;
implementation
procedure TMyModel.LoadImages;
var
ImagePath: CFStringRef;
begin
ImagePath := CFStringCreateWithPascalString(nil, ResourcesDir + 'imgOpen.png', kCFStringEncodingUTF8);
imgOpen := NSImage.initWithContentsOfFile(ImagePath);
ImagePath := CFStringCreateWithPascalString(nil, ResourcesDir + 'imgSave.png', kCFStringEncodingUTF8);
imgSave := NSImage.initWithContentsOfFile(ImagePath);
ImagePath := CFStringCreateWithPascalString(nil, ResourcesDir + 'imgClose.png', kCFStringEncodingUTF8);
imgClose := NSImage.initWithContentsOfFile(ImagePath);
end;
function TMyModel.GetResourcesDir: string;
const
BundleResourcesDirectory = '/Contents/Resources/';
var
pathRef: CFURLRef;
pathCFStr: CFStringRef;
pathStr: shortstring;
begin
// Under Mac OS X we need to get the location of the bundle
pathRef := CFBundleCopyBundleURL(CFBundleGetMainBundle());
pathCFStr := CFURLCopyFileSystemPath(pathRef, kCFURLPOSIXPathStyle);
CFStringGetPascalString(pathCFStr, @pathStr, 255, CFStringGetSystemEncoding());
CFRelease(pathRef);
CFRelease(pathCFStr);
Result := pathStr + BundleResourcesDirectory;
end;
constructor TMyModel.Create;
begin
ResourcesDir := GetResourcesDir;
LoadImages;
DocumentName := Str_Untitled;
end;
end.