1
0
Files
applications
bindings
components
Comba_Animation
aboutcomponent
acs
beepfp
callite
captcha
chelper
chemtext
cmdline
cmdlinecfg
colorpalette
cryptini
csvdocument
epiktimer
everettrandom
examplecomponent
exctrls
extrasyn
fpexif
fpsound
fpspreadsheet
fractions
freetypepascal
geckoport
gradcontrols
grid_semaphor
gridprinter
industrialstuff
iosdesigner
Examples
icons
README.txt
ios_views.pas
iosdesigner.lpk
iosdesigner.pas
iosdesigner.res
iosideintf.pas
iosnibdesigner.pas
iosxibresource.pas
iphonelazext
jujiboutils
jvcllaz
kcontrols
lazautoupdate
lazbarcodes
lazmapviewer
lclextensions
longtimer
manualdock
mbColorLib
mplayer
multithreadprocs
nicechart
nicegrid
nicesidebar
nvidia-widgets
onguard
orpheus
playsoundpackage
poweredby
powerpdf
rgbgraphics
richmemo
richview
rtfview
rx
scrolltext
smnetgradient
spktoolbar
splashabout
svn
systools
tdi
thtmlport
tparadoxdataset
tvplanit
xdev_toolkit
zlibar
zmsql
examples
image_sources
lclbindings
wst
lazarus-ccr/components/iosdesigner/iosxibresource.pas

126 lines
3.4 KiB
ObjectPascal
Raw Normal View History

unit iOSXIBResource;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,
LCLMemManager, forms,
dom, XMLRead,XMLWrite,
ProjectIntf, UnitResources;
type
{ TXIBResourcefileFormat }
TXIBResourcefileFormat = class(TUnitResourcefileFormat)
public
class function FindResourceDirective(Source: TObject): boolean; override;
class function ResourceDirectiveFilename: string; override;
class function GetUnitResourceFilename(AUnitFilename: string; Loading: boolean): string; override;
class procedure TextStreamToBinStream(ATxtStream, ABinStream: TExtMemoryStream); override;
class procedure BinStreamToTextStream(ABinStream, ATextStream: TExtMemoryStream); override;
class function GetClassNameFromStream(s: TStream; out IsInherited: Boolean): shortstring; override;
class function CreateReader(s: TStream; var DestroyDriver: boolean): TReader; override;
class function CreateWriter(s: TStream; var DestroyDriver: boolean): TWriter; override;
class function QuickCheckResourceBuffer(PascalBuffer, LFMBuffer: TObject;
out LFMType, LFMComponentName, LFMClassName: string; out
LCLVersion: string; out MissingClasses: TStrings): TModalResult; override;
end;
implementation
uses
CodeCache,
CodeToolManager,
BasicCodeTools,
ios_views;
{ TXIBResourcefileFormat }
class function TXIBResourcefileFormat.FindResourceDirective(Source: TObject): boolean;
var
cb: TCodeBuffer;
nx,ny,nt: integer;
r,p: integer;
begin
r := FindNextCompilerDirectiveWithName((source as TCodeBuffer).Source, -1, 'FakeResource', False, p);
result := (r > -1)
end;
class function TXIBResourcefileFormat.ResourceDirectiveFilename: string;
begin
result := '*.xib';
end;
class function TXIBResourcefileFormat.GetUnitResourceFilename(
AUnitFilename: string; Loading: boolean): string;
begin
result := ChangeFileExt(AUnitFilename,'.xib');
end;
class procedure TXIBResourcefileFormat.TextStreamToBinStream(ATxtStream,
ABinStream: TExtMemoryStream);
begin
ABinStream.LoadFromStream(ATxtStream);
end;
class procedure TXIBResourcefileFormat.BinStreamToTextStream(ABinStream,
ATextStream: TExtMemoryStream);
begin
ATextStream.LoadFromStream(ABinStream);
end;
class function TXIBResourcefileFormat.GetClassNameFromStream(s: TStream; out
IsInherited: Boolean): shortstring;
begin
result := 'TAppDelegate_iPhone';
end;
class function TXIBResourcefileFormat.CreateReader(s: TStream;
var DestroyDriver: boolean): TReader;
begin
result := TXIBReader.Create(S, 4096);
end;
class function TXIBResourcefileFormat.CreateWriter(s: TStream;
var DestroyDriver: boolean): TWriter;
begin
result := TWriter.Create(TNIBObjectWriter.Create(s));
end;
class function TXIBResourcefileFormat.QuickCheckResourceBuffer(PascalBuffer,
LFMBuffer: TObject; out LFMType, LFMComponentName, LFMClassName: string; out
LCLVersion: string; out MissingClasses: TStrings): TModalResult;
var
ms: TStream;
XMLDocument: TXMLDocument;
RO, CR, OO, MO : TDOMElement;
i: int64;
b: boolean;
AnElement: TDOMElement;
begin
ms := TStringStream.Create((LFMBuffer as TCodeBuffer).Source);
try
ObtainBaseObjectInfoFromXIB(ms, XMLDocument, RO, CR, OO, MO,i, b);
try
AnElement := FindKeyNode(MO,'string','objectName');
if assigned(AnElement) then
LFMComponentName:=AnElement.TextContent;
finally
XMLDocument.Free;
end;
finally
ms.Free;
end;
LCLVersion:='1.1';
LFMType:='unknown';
LFMClassName:='TAppDelegate_iPhone';
end;
end.