mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-13 17:59:32 +02:00
Converter: for units omitted from project, add Lazarus Package as a dependency
git-svn-id: trunk@39787 -
This commit is contained in:
parent
87703369e3
commit
4d015441b6
@ -182,7 +182,8 @@ type
|
||||
function ExtractOptionsFromDOF(const DOFFilename: string): TModalResult;
|
||||
function ExtractOptionsFromCFG(const CFGFilename: string): TModalResult;
|
||||
function DoMissingUnits(AUsedUnitsTool: TUsedUnitsTool): integer; override;
|
||||
function CheckPackageDependency(AUnitName: string): Boolean;
|
||||
function CheckPackageDep(AUnitName: string): Boolean;
|
||||
function TryAddPackageDep(AUnitName, ADefaultPkgName: string): Boolean;
|
||||
protected
|
||||
function CreateInstance: TModalResult; virtual; abstract;
|
||||
function CreateMainSourceFile: TModalResult; virtual;
|
||||
@ -539,7 +540,7 @@ begin
|
||||
fUsedUnitsTool:=TUsedUnitsTool.Create(fCTLink, fOrigUnitFilename);
|
||||
if fOwnerConverter is TConvertDelphiProjPack then
|
||||
with TConvertDelphiProjPack(fOwnerConverter) do begin
|
||||
fUsedUnitsTool.OnCheckPackageDependency:=@CheckPackageDependency;
|
||||
fUsedUnitsTool.OnCheckPackageDependency:=@CheckPackageDep;
|
||||
fUsedUnitsTool.IsConsoleApp:=fIsConsoleApp;
|
||||
end;
|
||||
if fOwnerConverter is TConvertDelphiProject then
|
||||
@ -1095,7 +1096,7 @@ var
|
||||
';'+lowercase(DelphiPkgNames)+';')>0 then begin
|
||||
AddPackageDependency(LazarusPkgName);
|
||||
IDEMessagesWindow.AddMsg(
|
||||
Format(lisConvDelphiAddedPackageRequirement, [LazarusPkgName]), '', -1);
|
||||
Format(lisConvDelphiAddedPackageDependency, [LazarusPkgName]), '', -1);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -1265,7 +1266,7 @@ function TConvertDelphiProjPack.DoMissingUnits(AUsedUnitsTool: TUsedUnitsTool):
|
||||
fUnitsToAddToProject.Add(sUnitPath+RealFileName);
|
||||
AUsedUnits.MissingUnits.Delete(i); // No more missing, delete from list.
|
||||
end
|
||||
else if CheckPackageDependency(mUnit) then
|
||||
else if CheckPackageDep(mUnit) then
|
||||
AUsedUnits.MissingUnits.Delete(i);
|
||||
end;
|
||||
end;
|
||||
@ -1276,7 +1277,9 @@ begin
|
||||
Result:=AUsedUnitsTool.MissingUnitCount;
|
||||
end;
|
||||
|
||||
function TConvertDelphiProjPack.CheckPackageDependency(AUnitName: string): Boolean;
|
||||
function TConvertDelphiProjPack.CheckPackageDep(AUnitName: string): Boolean;
|
||||
// Check if the given unit can be found in existing packages. Add a dependency if found.
|
||||
// This is called only if the unit is reported as missing.
|
||||
var
|
||||
Pack: TPkgFile;
|
||||
Dep: TPkgDependency;
|
||||
@ -1290,7 +1293,7 @@ begin
|
||||
if s='LCLBase' then
|
||||
s:='LCL';
|
||||
AddPackageDependency(s);
|
||||
IDEMessagesWindow.AddMsg(Format(lisConvDelphiAddedPackageRequirement, [s]), '', -1);
|
||||
IDEMessagesWindow.AddMsg(Format(lisConvDelphiAddedPackageDependency, [s]), '', -1);
|
||||
Dep:=FindDependencyByName(s);
|
||||
if Assigned(Dep) then
|
||||
PackageGraph.OpenDependency(Dep,false);
|
||||
@ -1300,6 +1303,22 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TConvertDelphiProjPack.TryAddPackageDep(AUnitName, ADefaultPkgName: string): Boolean;
|
||||
var
|
||||
Dep: TPkgDependency;
|
||||
begin
|
||||
Result:=False;
|
||||
if ADefaultPkgName<>'' then begin
|
||||
Dep:=FindDependencyByName(ADefaultPkgName);
|
||||
if not Assigned(Dep) then begin
|
||||
Result:=CheckPackageDep(AUnitName); // Add dependency based on unit name (default is ignored)
|
||||
if not Result then
|
||||
// Package was not found. Add a message about a package that must be installed.
|
||||
IDEMessagesWindow.AddMsg(Format(lisConvDelphiPackageRequired, [ADefaultPkgName]), '', -1);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TConvertDelphiProjPack.CreateMainSourceFile: TModalResult;
|
||||
begin
|
||||
Result:=mrOK; // Do nothing. Overridden in project.
|
||||
@ -1418,7 +1437,6 @@ function TConvertDelphiProject.AddUnit(AFileName: string;
|
||||
var
|
||||
CurUnitInfo: TUnitInfo;
|
||||
RP, PureUnitName: String;
|
||||
x: Integer;
|
||||
begin
|
||||
Result:=mrOK;
|
||||
OutUnitInfo:=nil;
|
||||
@ -1432,7 +1450,13 @@ begin
|
||||
if (RP<>'') and (fUnitSearchPaths.IndexOf(RP)<0) then
|
||||
fUnitSearchPaths.Add(RP);
|
||||
PureUnitName:=ExtractFileNameOnly(AFileName);
|
||||
if not fSettings.OmitProjUnits.Find(PureUnitName, x) then begin
|
||||
if fSettings.OmitProjUnits.Contains(PureUnitName) then
|
||||
begin
|
||||
fMainUnitConverter.fUsedUnitsTool.Remove(PureUnitName);
|
||||
IDEMessagesWindow.AddMsg(Format(lisConvDelphiProjOmittedUnit,[PureUnitName]), '', -1);
|
||||
TryAddPackageDep(PureUnitName, fSettings.OmitProjUnits[PureUnitName]);
|
||||
end
|
||||
else begin
|
||||
// Check unitname and create UnitInfo.
|
||||
CurUnitInfo:=LazProject.UnitInfoWithFilename(AFileName);
|
||||
if CurUnitInfo=nil then begin
|
||||
@ -1461,10 +1485,6 @@ begin
|
||||
end;
|
||||
CurUnitInfo.IsPartOfProject:=true;
|
||||
OutUnitInfo:=CurUnitInfo;
|
||||
end
|
||||
else begin
|
||||
fMainUnitConverter.fUsedUnitsTool.Remove(PureUnitName);
|
||||
IDEMessagesWindow.AddMsg(Format(lisConvDelphiProjOmittedUnit,[PureUnitName]), '', -1);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
@ -68,7 +68,7 @@ type
|
||||
fFuncReplaceMode: TReplaceModeShort;
|
||||
fCoordOffsMode: TReplaceModeShort;
|
||||
// Unit names to leave out of a project. Currently not user editable.
|
||||
fOmitProjUnits: TStringList;
|
||||
fOmitProjUnits: TStringToStringTree;
|
||||
// Delphi units mapped to Lazarus units, will be replaced or removed.
|
||||
fReplaceUnits: TStringToStringTree;
|
||||
// Delphi types mapped to Lazarus types, will be replaced.
|
||||
@ -116,7 +116,7 @@ type
|
||||
property TypeReplaceMode: TReplaceModeAllow read fTypeReplaceMode;
|
||||
property FuncReplaceMode: TReplaceModeShort read fFuncReplaceMode;
|
||||
property CoordOffsMode: TReplaceModeShort read fCoordOffsMode;
|
||||
property OmitProjUnits: TStringList read fOmitProjUnits;
|
||||
property OmitProjUnits: TStringToStringTree read fOmitProjUnits;
|
||||
property ReplaceUnits: TStringToStringTree read fReplaceUnits;
|
||||
property ReplaceTypes: TStringToStringTree read fReplaceTypes;
|
||||
property ReplaceFuncs: TFuncsAndCategories read fReplaceFuncs;
|
||||
@ -382,7 +382,7 @@ begin
|
||||
fMainPath:='';
|
||||
fEnabled:=True;
|
||||
fSettingsForm:=Nil;
|
||||
fOmitProjUnits:=TStringList.Create;
|
||||
fOmitProjUnits:=TStringToStringTree.Create(false);
|
||||
fReplaceUnits:=TStringToStringTree.Create(false);
|
||||
fReplaceTypes:=TStringToStringTree.Create(false);
|
||||
fReplaceFuncs:=TFuncsAndCategories.Create;
|
||||
@ -404,50 +404,49 @@ begin
|
||||
LoadFuncReplacements(fConfigStorage, 'FuncReplacements/', 'Categories/', fReplaceFuncs);
|
||||
LoadVisualOffsets(fConfigStorage, 'VisualOffsets/', fCoordOffsets);
|
||||
|
||||
// * Add default values for configuration if ConfigStorage doesn't have them *
|
||||
|
||||
// Units left out of project. Some projects include them although there are
|
||||
// Lazarus packages for them. This setting is not saved in configuration.
|
||||
with fOmitProjUnits do begin
|
||||
Add('FastMM4');
|
||||
Add('FastMM4Messages');
|
||||
Add('GR32');
|
||||
Add('GR32_Blend');
|
||||
Add('GR32_Containers');
|
||||
Add('GR32_DrawingEx');
|
||||
Add('GR32_Filters');
|
||||
Add('GR32_Image');
|
||||
Add('GR32_Layers');
|
||||
Add('GR32_LowLevel');
|
||||
Add('GR32_Math');
|
||||
Add('GR32_MicroTiles');
|
||||
Add('GR32_OrdinalMaps');
|
||||
Add('GR32_RangeBars');
|
||||
Add('GR32_Rasterizers');
|
||||
Add('GR32_RepaintOpt');
|
||||
Add('GR32_Resamplers');
|
||||
Add('GR32_System');
|
||||
Add('GR32_Transforms');
|
||||
Add('GR32_VectorMaps');
|
||||
Add('OpenGL');
|
||||
Add('SynEdit');
|
||||
Add('SynEditMiscProcs');
|
||||
Add('SynEditTextBuffer');
|
||||
Add('SynEditTypes');
|
||||
Add('SynEditHighlighter');
|
||||
Add('SynEditKbdHandler');
|
||||
Add('SynEditKeyCmds');
|
||||
Add('SynEditKeyConst');
|
||||
Add('SynEditMiscClasses');
|
||||
Add('SynTextDrawer');
|
||||
Add('SynHighlighterMulti');
|
||||
Add('SynRegExpr');
|
||||
Add('SynEditStrConst');
|
||||
Add('SynEditWordWrap');
|
||||
Add('SynHighlighterPas');
|
||||
CaseSensitive:=False;
|
||||
Sorted:=True;
|
||||
end;
|
||||
// Key = Unit name, Value = Lazarus Package to be added to project as dependency
|
||||
fOmitProjUnits['FastMM4'] :=''; // FastMM4 is not needed as FPC's
|
||||
fOmitProjUnits['FastMM4Messages'] :=''; // memory manager does its job well.
|
||||
fOmitProjUnits['GR32'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_Blend'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_Containers'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_DrawingEx'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_Filters'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_Image'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_Layers'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_LowLevel'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_Math'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_MicroTiles'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_OrdinalMaps'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_RangeBars'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_Rasterizers'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_RepaintOpt'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_Resamplers'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_System'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_Transforms'] :='GR32_Lazarus';
|
||||
fOmitProjUnits['GR32_VectorMaps'] :='GR32_Lazarus';
|
||||
// OpenGL will be replaced with dglOpenGL in uses section. Download dglOpenGL :
|
||||
// http://wiki.delphigl.com/index.php/dglOpenGL.pas/en#Download
|
||||
fOmitProjUnits['OpenGL'] :='';
|
||||
fOmitProjUnits['SynEdit'] :='SynEdit';
|
||||
fOmitProjUnits['SynEditMiscProcs'] :='SynEdit';
|
||||
fOmitProjUnits['SynEditTextBuffer'] :='SynEdit';
|
||||
fOmitProjUnits['SynEditTypes'] :='SynEdit';
|
||||
fOmitProjUnits['SynEditHighlighter'] :='SynEdit';
|
||||
fOmitProjUnits['SynEditKbdHandler'] :='SynEdit';
|
||||
fOmitProjUnits['SynEditKeyCmds'] :='SynEdit';
|
||||
fOmitProjUnits['SynEditKeyConst'] :='SynEdit';
|
||||
fOmitProjUnits['SynEditMiscClasses'] :='SynEdit';
|
||||
fOmitProjUnits['SynEditStrConst'] :='SynEdit';
|
||||
fOmitProjUnits['SynEditWordWrap'] :='SynEdit';
|
||||
fOmitProjUnits['SynHighlighterMulti']:='SynEdit';
|
||||
fOmitProjUnits['SynHighlighterPas'] :='SynEdit';
|
||||
fOmitProjUnits['SynTextDrawer'] :='SynEdit';
|
||||
fOmitProjUnits['SynRegExpr'] :='SynEdit';
|
||||
|
||||
// * Add default values for configuration if ConfigStorage doesn't have them *
|
||||
|
||||
// Map Delphi units to Lazarus units.
|
||||
TheMap:=fReplaceUnits;
|
||||
@ -456,8 +455,8 @@ begin
|
||||
MapReplacement('WinProcs', 'LCLIntf, LCLType, LMessages');
|
||||
MapReplacement('Mask', 'MaskEdit');
|
||||
MapReplacement('TabNotBk', 'ComCtrls');
|
||||
MapReplacement('OpenGL', 'GL, GLu');
|
||||
MapReplacement('dglOpenGL', 'GL, GLu, GLut'); // ?
|
||||
MapReplacement('OpenGL', 'dglOpenGL');
|
||||
// MapReplacement('dglOpenGL', 'GL, GLu, GLut'); // ?
|
||||
// Database components
|
||||
MapReplacement('SqlExpr', 'sqldb');
|
||||
MapReplacement('DBLocalS', 'sqldb');
|
||||
|
@ -211,7 +211,6 @@ var
|
||||
OldUnitName, OldInFilename: String;
|
||||
NewUnitName, NewInFilename: String;
|
||||
AFilename, s, LowNU: String;
|
||||
x: Integer;
|
||||
OmitUnit: Boolean;
|
||||
begin
|
||||
UsesNode:=UsesSectionNode;
|
||||
@ -236,7 +235,7 @@ begin
|
||||
if NewInFilename<>'' then
|
||||
s:=s+' in '''+NewInFilename+'''';
|
||||
if AFilename<>'' then begin // unit found
|
||||
OmitUnit := Settings.OmitProjUnits.Find(NewUnitName,x);
|
||||
OmitUnit := Settings.OmitProjUnits.Contains(NewUnitName);
|
||||
if (NewUnitName<>OldUnitName) and not OmitUnit then begin
|
||||
// Character case differs, fix it.
|
||||
fUnitsToFixCase[OldUnitName]:=NewUnitName;
|
||||
@ -443,10 +442,10 @@ procedure TUsedUnits.OmitUnits;
|
||||
// Remove globally omitted units from MissingUnits.
|
||||
// Those units were added to MissingUnits to find possible replacements.
|
||||
var
|
||||
i, x: Integer;
|
||||
i: Integer;
|
||||
begin
|
||||
for i:=fMissingUnits.Count-1 downto 0 do
|
||||
if fCTLink.Settings.OmitProjUnits.Find(fMissingUnits[i], x) then
|
||||
if fCTLink.Settings.OmitProjUnits.Contains(fMissingUnits[i]) then
|
||||
fMissingUnits.Delete(i);
|
||||
end;
|
||||
|
||||
|
@ -5360,7 +5360,8 @@ resourcestring
|
||||
lisConvDelphiKeepBoth = 'Keep both';
|
||||
lisConvDelphiPackageNameExists = 'Package name exists';
|
||||
lisConvDelphiProjOmittedUnit = 'Omitted unit %s from project';
|
||||
lisConvDelphiAddedPackageRequirement = 'Added Package %s as a requirement.';
|
||||
lisConvDelphiAddedPackageDependency = 'Added Package %s as a dependency.';
|
||||
lisConvDelphiPackageRequired = 'Package %s is required but not installed in Lazarus! Install it later.';
|
||||
lisConvDelphiThereIsAlreadyAPackageWithTheNamePleaseCloseThisPa = 'There is '
|
||||
+'already a package with the name "%s"%sPlease close this package first.';
|
||||
lisConvDelphiDelphiPackageMainSourceDpkFileNotFoundForPackage = 'Delphi '
|
||||
|
Loading…
Reference in New Issue
Block a user