mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-20 08:39:41 +02:00
IDE: package: new component: redirecting lclase to lcl, only using LCL units if LCL is used
git-svn-id: trunk@31683 -
This commit is contained in:
parent
4d6031177e
commit
0fe0eeaf6b
@ -241,6 +241,7 @@ type
|
|||||||
function GetPackageCount: integer; virtual; abstract;
|
function GetPackageCount: integer; virtual; abstract;
|
||||||
function GetPackages(Index: integer): TIDEPackage; virtual; abstract;
|
function GetPackages(Index: integer): TIDEPackage; virtual; abstract;
|
||||||
function FindPackageWithName(const PkgName: string): TIDEPackage; virtual; abstract;
|
function FindPackageWithName(const PkgName: string): TIDEPackage; virtual; abstract;
|
||||||
|
function RedirectPackageDependency(APackage: TIDEPackage): TIDEPackage; virtual; abstract;
|
||||||
|
|
||||||
// package editors
|
// package editors
|
||||||
function GetPackageOfEditorItem(Sender: TObject): TIDEPackage; virtual; abstract;
|
function GetPackageOfEditorItem(Sender: TObject): TIDEPackage; virtual; abstract;
|
||||||
|
@ -38,10 +38,12 @@ unit AddToPackageDlg;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Math, Classes, SysUtils, LCLType, Forms, Controls, Buttons, ExtDlgs,
|
Math, Classes, SysUtils, LCLProc, LCLType, Forms, Controls, Buttons, ExtDlgs,
|
||||||
StdCtrls, ExtCtrls, Dialogs, FileUtil, ComCtrls, AVL_Tree, LCLProc,
|
StdCtrls, ExtCtrls, Dialogs, FileUtil, ComCtrls, AVL_Tree,
|
||||||
NewItemIntf, ProjectIntf, PackageIntf, FormEditingIntf,
|
// IDEIntf
|
||||||
LazarusIDEStrConsts, IDEWindowIntf, InputHistory, CodeToolManager, IDEDefs,
|
NewItemIntf, ProjectIntf, PackageIntf, FormEditingIntf, IDEWindowIntf,
|
||||||
|
// IDE
|
||||||
|
LazarusIDEStrConsts, InputHistory, CodeToolManager, IDEDefs,
|
||||||
IDEProcs, EnvironmentOpts, PackageSystem, PackageDefs, ComponentReg,
|
IDEProcs, EnvironmentOpts, PackageSystem, PackageDefs, ComponentReg,
|
||||||
AddDirToPkgDlg;
|
AddDirToPkgDlg;
|
||||||
|
|
||||||
@ -88,15 +90,6 @@ type
|
|||||||
TAddToPackageDlg = class(TForm)
|
TAddToPackageDlg = class(TForm)
|
||||||
CancelDependButton: TBitBtn;
|
CancelDependButton: TBitBtn;
|
||||||
CancelNewComponentButton: TBitBtn;
|
CancelNewComponentButton: TBitBtn;
|
||||||
ComponentIconLabel: TLabel;
|
|
||||||
ComponentIconSpeedButton: TSpeedButton;
|
|
||||||
NewCompBtnPanel: TPanel;
|
|
||||||
NewComponentButton: TBitBtn;
|
|
||||||
NewDepBtnPanel: TPanel;
|
|
||||||
NewDependButton: TBitBtn;
|
|
||||||
NewDepPanel: TPanel;
|
|
||||||
NewFileCancelButton: TBitBtn;
|
|
||||||
NewFileOkButton: TBitBtn;
|
|
||||||
// notebook
|
// notebook
|
||||||
NoteBook: TPageControl;
|
NoteBook: TPageControl;
|
||||||
NewFilePage: TTabSheet;
|
NewFilePage: TTabSheet;
|
||||||
@ -107,7 +100,11 @@ type
|
|||||||
NewFileTreeView: TTreeView;
|
NewFileTreeView: TTreeView;
|
||||||
NewFileDescriptionGroupBox: TGroupBox;
|
NewFileDescriptionGroupBox: TGroupBox;
|
||||||
NewFileHelpLabel: TLabel;
|
NewFileHelpLabel: TLabel;
|
||||||
|
NewFileCancelButton: TBitBtn;
|
||||||
|
NewFileOkButton: TBitBtn;
|
||||||
// new component page
|
// new component page
|
||||||
|
NewCompBtnPanel: TPanel;
|
||||||
|
NewComponentButton: TBitBtn;
|
||||||
AncestorTypeLabel: TLabel;
|
AncestorTypeLabel: TLabel;
|
||||||
AncestorComboBox: TComboBox;
|
AncestorComboBox: TComboBox;
|
||||||
AncestorShowAllCheckBox: TCheckBox;
|
AncestorShowAllCheckBox: TCheckBox;
|
||||||
@ -115,6 +112,8 @@ type
|
|||||||
ClassNameEdit: TEdit;
|
ClassNameEdit: TEdit;
|
||||||
PalettePageLabel: TLabel;
|
PalettePageLabel: TLabel;
|
||||||
PalettePageCombobox: TCombobox;
|
PalettePageCombobox: TCombobox;
|
||||||
|
ComponentIconLabel: TLabel;
|
||||||
|
ComponentIconSpeedButton: TSpeedButton;
|
||||||
ComponentUnitFileLabel: TLabel;
|
ComponentUnitFileLabel: TLabel;
|
||||||
ComponentUnitFileEdit: TEdit;
|
ComponentUnitFileEdit: TEdit;
|
||||||
ComponentUnitFileBrowseButton: TButton;
|
ComponentUnitFileBrowseButton: TButton;
|
||||||
@ -122,6 +121,9 @@ type
|
|||||||
ComponentUnitNameLabel: TLabel;
|
ComponentUnitNameLabel: TLabel;
|
||||||
ComponentUnitNameEdit: TEdit;
|
ComponentUnitNameEdit: TEdit;
|
||||||
// new required package
|
// new required package
|
||||||
|
NewDepBtnPanel: TPanel;
|
||||||
|
NewDependButton: TBitBtn;
|
||||||
|
NewDepPanel: TPanel;
|
||||||
DependPkgNameLabel: TLabel;
|
DependPkgNameLabel: TLabel;
|
||||||
DependPkgNameComboBox: TComboBox;
|
DependPkgNameComboBox: TComboBox;
|
||||||
DependMinVersionLabel: TLabel;
|
DependMinVersionLabel: TLabel;
|
||||||
@ -861,6 +863,9 @@ begin
|
|||||||
if PkgComponent<>nil then begin
|
if PkgComponent<>nil then begin
|
||||||
Params.UsedUnitname:=PkgComponent.GetUnitName;
|
Params.UsedUnitname:=PkgComponent.GetUnitName;
|
||||||
ARequiredPackage:=PkgComponent.PkgFile.LazPackage;
|
ARequiredPackage:=PkgComponent.PkgFile.LazPackage;
|
||||||
|
ARequiredPackage:=TLazPackage(
|
||||||
|
PackageEditingInterface.RedirectPackageDependency(ARequiredPackage));
|
||||||
|
|
||||||
if (LazPackage<>ARequiredPackage)
|
if (LazPackage<>ARequiredPackage)
|
||||||
and (not LazPackage.Requires(PkgComponent.PkgFile.LazPackage))
|
and (not LazPackage.Requires(PkgComponent.PkgFile.LazPackage))
|
||||||
then
|
then
|
||||||
|
@ -1140,9 +1140,13 @@ var
|
|||||||
FNextSelectedPart := LazPackage.AddFile(UnitFilename,Unit_Name,FileType,
|
FNextSelectedPart := LazPackage.AddFile(UnitFilename,Unit_Name,FileType,
|
||||||
PkgFileFlags,cpNormal);
|
PkgFileFlags,cpNormal);
|
||||||
// add dependency
|
// add dependency
|
||||||
if AddParams.Dependency<>nil then begin
|
if (AddParams.Dependency<>nil)
|
||||||
|
and (LazPackage.FindDependencyByName(AddParams.Dependency.PackageName)=nil)
|
||||||
|
then
|
||||||
PackageGraph.AddDependencyToPackage(LazPackage,AddParams.Dependency);
|
PackageGraph.AddDependencyToPackage(LazPackage,AddParams.Dependency);
|
||||||
end;
|
if (AddParams.IconFile<>'')
|
||||||
|
and (LazPackage.FindDependencyByName('LCL')=nil) then
|
||||||
|
PackageGraph.AddDependencyToPackage(LazPackage,PackageGraph.LCLPackage);
|
||||||
PackageEditors.DeleteAmbiguousFiles(LazPackage,AddParams.UnitFilename);
|
PackageEditors.DeleteAmbiguousFiles(LazPackage,AddParams.UnitFilename);
|
||||||
// open file in editor
|
// open file in editor
|
||||||
PackageEditors.CreateNewFile(Self,AddParams);
|
PackageEditors.CreateNewFile(Self,AddParams);
|
||||||
|
@ -1212,17 +1212,10 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
function TLazPackageGraph.CreateUniqueUnitName(const Prefix: string): string;
|
function TLazPackageGraph.CreateUniqueUnitName(const Prefix: string): string;
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
begin
|
begin
|
||||||
if FindUnitInAllPackages(Prefix,false)=nil then
|
Result:=Prefix;
|
||||||
Result:=Prefix
|
while FindUnitInAllPackages(Result,false)<>nil do
|
||||||
else begin
|
Result:=CreateNextIdentifier(Result);
|
||||||
i:=1;
|
|
||||||
repeat
|
|
||||||
Result:=Prefix+IntToStr(i);
|
|
||||||
until FindUnitInAllPackages(Result,false)=nil;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TLazPackageGraph.PackageNameExists(const PkgName: string;
|
function TLazPackageGraph.PackageNameExists(const PkgName: string;
|
||||||
|
@ -239,7 +239,7 @@ type
|
|||||||
function GetPackageCount: integer; override;
|
function GetPackageCount: integer; override;
|
||||||
function GetPackages(Index: integer): TIDEPackage; override;
|
function GetPackages(Index: integer): TIDEPackage; override;
|
||||||
function FindPackageWithName(const PkgName: string): TIDEPackage; override;
|
function FindPackageWithName(const PkgName: string): TIDEPackage; override;
|
||||||
procedure RedirectPackageDependency(var APackage: TLazPackage);
|
function RedirectPackageDependency(APackage: TIDEPackage): TIDEPackage; override;
|
||||||
|
|
||||||
// project
|
// project
|
||||||
function OpenProjectDependencies(AProject: TProject;
|
function OpenProjectDependencies(AProject: TProject;
|
||||||
@ -670,7 +670,12 @@ begin
|
|||||||
|
|
||||||
// create sourcecode
|
// create sourcecode
|
||||||
LE:=LineEnding;
|
LE:=LineEnding;
|
||||||
UsesLine:='Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs';
|
if PackageGraph.FindDependencyRecursively(Params.Pkg.FirstRequiredDependency,
|
||||||
|
'LCL')<>nil
|
||||||
|
then
|
||||||
|
UsesLine:='Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs'
|
||||||
|
else
|
||||||
|
UsesLine:='Classes, SysUtils';
|
||||||
if (System.Pos(Params.UsedUnitname,UsesLine)<1)
|
if (System.Pos(Params.UsedUnitname,UsesLine)<1)
|
||||||
and (Params.UsedUnitname<>'') then
|
and (Params.UsedUnitname<>'') then
|
||||||
UsesLine:=UsesLine+', '+Params.UsedUnitname;
|
UsesLine:=UsesLine+', '+Params.UsedUnitname;
|
||||||
@ -1941,7 +1946,7 @@ begin
|
|||||||
if (PkgFile=nil) then exit;
|
if (PkgFile=nil) then exit;
|
||||||
|
|
||||||
APackage:=PkgFile.LazPackage;
|
APackage:=PkgFile.LazPackage;
|
||||||
RedirectPackageDependency(APackage);
|
APackage:=TLazPackage(RedirectPackageDependency(APackage));
|
||||||
|
|
||||||
AddProjectDependency(AProject,APackage);
|
AddProjectDependency(AProject,APackage);
|
||||||
end;
|
end;
|
||||||
@ -2493,12 +2498,14 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPkgManager.RedirectPackageDependency(var APackage: TLazPackage);
|
function TPkgManager.RedirectPackageDependency(APackage: TIDEPackage
|
||||||
|
): TIDEPackage;
|
||||||
begin
|
begin
|
||||||
if APackage=PackageGraph.LCLBasePackage then begin
|
Result:=APackage;
|
||||||
|
if Result=PackageGraph.LCLBasePackage then begin
|
||||||
// Older Lazarus does not have a LCLBase and a component does not work
|
// Older Lazarus does not have a LCLBase and a component does not work
|
||||||
// without an LCLBase implementation, so we have to use LCL instead.
|
// without an LCLBase implementation, so we have to use LCL instead.
|
||||||
APackage:=PackageGraph.LCLPackage;
|
Result:=PackageGraph.LCLPackage;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2708,7 +2715,7 @@ var
|
|||||||
PkgFile:=TPkgComponent(RegComp).PkgFile;
|
PkgFile:=TPkgComponent(RegComp).PkgFile;
|
||||||
if (PkgFile<>nil) then begin
|
if (PkgFile<>nil) then begin
|
||||||
APackage:=PkgFile.LazPackage;
|
APackage:=PkgFile.LazPackage;
|
||||||
RedirectPackageDependency(APackage);
|
APackage:=TLazPackage(RedirectPackageDependency(APackage));
|
||||||
if (Packages.IndexOf(APackage)<0) then
|
if (Packages.IndexOf(APackage)<0) then
|
||||||
Packages.Add(APackage);
|
Packages.Add(APackage);
|
||||||
end;
|
end;
|
||||||
@ -2762,7 +2769,7 @@ var
|
|||||||
for i:=0 to MissingDependencies.Count-1 do begin
|
for i:=0 to MissingDependencies.Count-1 do begin
|
||||||
UnitOwner:=TObject(MissingDependencies[i]);
|
UnitOwner:=TObject(MissingDependencies[i]);
|
||||||
RequiredPackage:=TLazPackage(MissingDependencies.Objects[i]);
|
RequiredPackage:=TLazPackage(MissingDependencies.Objects[i]);
|
||||||
RedirectPackageDependency(RequiredPackage);
|
RequiredPackage:=TLazPackage(RedirectPackageDependency(RequiredPackage));
|
||||||
if UnitOwner is TProject then begin
|
if UnitOwner is TProject then begin
|
||||||
PackageAdditions:=Format(
|
PackageAdditions:=Format(
|
||||||
lisPkgMangAddingNewDependencyForProjectPackage, [PackageAdditions,
|
lisPkgMangAddingNewDependencyForProjectPackage, [PackageAdditions,
|
||||||
@ -2801,7 +2808,7 @@ var
|
|||||||
for i:=0 to MissingDependencies.Count-1 do begin
|
for i:=0 to MissingDependencies.Count-1 do begin
|
||||||
UnitOwner:=TObject(MissingDependencies[i]);
|
UnitOwner:=TObject(MissingDependencies[i]);
|
||||||
RequiredPackage:=TLazPackage(MissingDependencies.Objects[i]);
|
RequiredPackage:=TLazPackage(MissingDependencies.Objects[i]);
|
||||||
RedirectPackageDependency(RequiredPackage);
|
RequiredPackage:=TLazPackage(RedirectPackageDependency(RequiredPackage));
|
||||||
if UnitOwner is TProject then begin
|
if UnitOwner is TProject then begin
|
||||||
DebugLn('TPkgManager.AddUnitDependenciesForComponentClasses Adding Project Dependency ',TProject(UnitOwner).Title,' -> ',RequiredPackage.Name);
|
DebugLn('TPkgManager.AddUnitDependenciesForComponentClasses Adding Project Dependency ',TProject(UnitOwner).Title,' -> ',RequiredPackage.Name);
|
||||||
AddProjectDependency(TProject(UnitOwner),RequiredPackage);
|
AddProjectDependency(TProject(UnitOwner),RequiredPackage);
|
||||||
@ -3278,7 +3285,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
// add package dependency
|
// add package dependency
|
||||||
//DebugLn(['TPkgManager.AddDependencyToUnitOwners ',dbgsName(TObject(OwnersList[0])),' ',RequiredPkg.IDAsString]);
|
//DebugLn(['TPkgManager.AddDependencyToUnitOwners ',dbgsName(TObject(OwnersList[0])),' ',RequiredPkg.IDAsString]);
|
||||||
RedirectPackageDependency(RequiredPkg);
|
RequiredPkg:=TLazPackage(RedirectPackageDependency(RequiredPkg));
|
||||||
Result:=AddDependencyToOwners(OwnersList,RequiredPkg,false);
|
Result:=AddDependencyToOwners(OwnersList,RequiredPkg,false);
|
||||||
finally
|
finally
|
||||||
OwnersList.Free;
|
OwnersList.Free;
|
||||||
|
Loading…
Reference in New Issue
Block a user