mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-05 04:27:55 +02:00
219 lines
5.1 KiB
ObjectPascal
219 lines
5.1 KiB
ObjectPascal
unit ConverterTypes;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, contnrs;
|
|
|
|
type
|
|
|
|
TAddUnitEvent = function (AUnitName: string): Boolean of object;
|
|
TCheckUnitEvent = function (AUnitName: string): Boolean of object;
|
|
|
|
// What to do with {$R *.RES} directive, convert to lowercase or delete.
|
|
TResAction = (raNone, raLowerCase, raDelete);
|
|
|
|
{ TSrcPropOffset }
|
|
|
|
// Used when fixing top coordinates of controls inside a visual container.
|
|
TSrcPropOffset = class
|
|
private
|
|
fParentType: string;
|
|
fChildType: string;
|
|
fPropName: string;
|
|
fStartPos: integer;
|
|
public
|
|
constructor Create(aParentType, aChildType, aPropName: string; aStartPos: integer);
|
|
destructor Destroy; override;
|
|
property ParentType: string read fParentType;
|
|
property ChildType: string read fChildType;
|
|
property PropName: string read fPropName;
|
|
property StartPos: integer read fStartPos;
|
|
end;
|
|
|
|
{ TVisualOffset }
|
|
|
|
// User defined settings of visual offsets.
|
|
TVisualOffset = class
|
|
private
|
|
fParentType: string;
|
|
fTop: Integer;
|
|
fLeft: Integer;
|
|
public
|
|
constructor Create(const aParentType: string; aTop, aLeft: Integer);
|
|
destructor Destroy; override;
|
|
function ByProperty(aPropName: string): Integer;
|
|
public
|
|
property ParentType: string read fParentType;
|
|
property Top: Integer read fTop;
|
|
property Left: Integer read fLeft;
|
|
end;
|
|
|
|
{ TVisualOffsets }
|
|
|
|
// Collection of TVisualOffset items.
|
|
TVisualOffsets = class(TObjectList)
|
|
private
|
|
function GetVisualOffset(Index: Integer): TVisualOffset;
|
|
procedure SetVisualOffset(Index: Integer; const AValue: TVisualOffset);
|
|
public
|
|
constructor Create;
|
|
destructor Destroy; override;
|
|
function Find(aParentType: string; out Index: Integer): Boolean;
|
|
function AddVisualOffset(const aParentType: string; aTop, aLeft: Integer): integer;
|
|
property Items[Index: Integer]: TVisualOffset read GetVisualOffset
|
|
write SetVisualOffset; default;
|
|
end;
|
|
|
|
{ TAddPropEntry }
|
|
|
|
// A new property to be added to lfm form file.
|
|
TAddPropEntry = class
|
|
private
|
|
fStartPos: integer;
|
|
fEndPos: integer;
|
|
fNewPrefix: string;
|
|
fNewText: string;
|
|
fParentType: string;
|
|
public
|
|
constructor Create(aStartPos, aEndPos: Integer;
|
|
const aNewPrefix, aNewText, aParentType: string);
|
|
destructor Destroy; override;
|
|
property StartPos: integer read fStartPos;
|
|
property EndPos: integer read fEndPos;
|
|
property NewPrefix: string read fNewPrefix;
|
|
property NewText: string read fNewText;
|
|
property ParentType: string read fParentType;
|
|
end;
|
|
|
|
{ EConverterError }
|
|
|
|
EDelphiConverterError = class(Exception)
|
|
constructor Create(const AMessage: string);
|
|
end;
|
|
|
|
//procedure RaiseDelphiConverterErrorFmt(const AMessage: string;
|
|
// const args: array of const{; ClearNicePos: boolean});
|
|
|
|
|
|
implementation
|
|
|
|
|
|
{ TSrcPropOffset }
|
|
|
|
constructor TSrcPropOffset.Create(aParentType, aChildType, aPropName: string; aStartPos: integer);
|
|
begin
|
|
fParentType:=aParentType;
|
|
fChildType:=aChildType;
|
|
fPropName:=aPropName;
|
|
fStartPos:=aStartPos;
|
|
end;
|
|
|
|
destructor TSrcPropOffset.Destroy;
|
|
begin
|
|
inherited Destroy;
|
|
end;
|
|
|
|
{ TVisualOffset }
|
|
|
|
constructor TVisualOffset.Create(const aParentType: string; aTop, aLeft: Integer);
|
|
begin
|
|
fParentType:=aParentType;
|
|
fTop:=aTop;
|
|
fLeft:=aLeft;
|
|
end;
|
|
|
|
destructor TVisualOffset.Destroy;
|
|
begin
|
|
inherited Destroy;
|
|
end;
|
|
|
|
function TVisualOffset.ByProperty(aPropName: string): Integer;
|
|
begin
|
|
if aPropName='Top' then
|
|
Result:=Top
|
|
else if aPropName='Left' then
|
|
Result:=Left
|
|
else
|
|
Result:=0
|
|
end;
|
|
|
|
{ TVisualOffsets }
|
|
|
|
constructor TVisualOffsets.Create;
|
|
begin
|
|
inherited Create;
|
|
end;
|
|
|
|
destructor TVisualOffsets.Destroy;
|
|
begin
|
|
inherited Destroy;
|
|
end;
|
|
|
|
function TVisualOffsets.Find(aParentType: string; out Index: Integer): Boolean;
|
|
var
|
|
i: Integer;
|
|
begin
|
|
Result:=False;
|
|
Index:=-1;
|
|
for i:=0 to Count-1 do
|
|
if Items[i].fParentType = aParentType then begin
|
|
Result:=True;
|
|
Index:=i;
|
|
Break;
|
|
end;
|
|
end;
|
|
|
|
function TVisualOffsets.AddVisualOffset(const aParentType: string; aTop, aLeft: Integer): integer;
|
|
// This is called when settings are read or when user made changes in GUI.
|
|
// Returns index for the added object, or -1 if not added (duplicate).
|
|
var
|
|
x: integer;
|
|
begin
|
|
Result:=-1;
|
|
if (aParentType<>'') and not Find(aParentType, x) then
|
|
Result:=Add(TVisualOffset.Create(aParentType, aTop, aLeft));
|
|
end;
|
|
|
|
// Getter / Setter :
|
|
|
|
function TVisualOffsets.GetVisualOffset(Index: Integer): TVisualOffset;
|
|
begin
|
|
Result:=Inherited Items[Index] as TVisualOffset;
|
|
end;
|
|
|
|
procedure TVisualOffsets.SetVisualOffset(Index: Integer; const AValue: TVisualOffset);
|
|
begin
|
|
Inherited Items[Index]:=AValue;
|
|
end;
|
|
|
|
{ TAddPropEntry }
|
|
|
|
constructor TAddPropEntry.Create(aStartPos, aEndPos: Integer;
|
|
const aNewPrefix, aNewText, aParentType: string);
|
|
begin
|
|
inherited Create;
|
|
fStartPos:=aStartPos;
|
|
fEndPos:=aEndPos;
|
|
fNewPrefix:=aNewPrefix;
|
|
fNewText:=aNewText;
|
|
fParentType:=aParentType;
|
|
end;
|
|
|
|
destructor TAddPropEntry.Destroy;
|
|
begin
|
|
inherited Destroy;
|
|
end;
|
|
|
|
{ EConverterError }
|
|
|
|
constructor EDelphiConverterError.Create(const AMessage: string);
|
|
begin
|
|
inherited Create('Converter: '+AMessage);
|
|
end;
|
|
|
|
end.
|
|
|