mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 15:59:13 +02:00
ide: Added ability to add fpmake-dependencies to packages
git-svn-id: trunk@58382 -
This commit is contained in:
parent
4d46bbfd23
commit
00e814dac8
@ -4004,6 +4004,7 @@ resourcestring
|
|||||||
+'already exists in the selection%swith file: "%s".';
|
+'already exists in the selection%swith file: "%s".';
|
||||||
lisProjAddToProject = 'Add to Project';
|
lisProjAddToProject = 'Add to Project';
|
||||||
lisProjAddNewRequirement = 'New Requirement';
|
lisProjAddNewRequirement = 'New Requirement';
|
||||||
|
lisProjAddNewFPMakeRequirement = 'New FPMake Requirement';
|
||||||
lisProjAddEditorFile = 'Add Editor Files';
|
lisProjAddEditorFile = 'Add Editor Files';
|
||||||
lisProjFiles = 'Files:';
|
lisProjFiles = 'Files:';
|
||||||
lisProjAddAddFilesToProject = 'Add Files to Project';
|
lisProjAddAddFilesToProject = 'Add Files to Project';
|
||||||
|
@ -375,5 +375,9 @@ object PackageEditorForm: TPackageEditorForm
|
|||||||
Caption = 'New requirement...'
|
Caption = 'New requirement...'
|
||||||
OnClick = mnuAddNewReqrClick
|
OnClick = mnuAddNewReqrClick
|
||||||
end
|
end
|
||||||
|
object mnuAddFPMakeReq: TMenuItem
|
||||||
|
Caption = 'New FPMake requirement...'
|
||||||
|
OnClick = mnuAddFPMakeReqClick
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -47,8 +47,8 @@ uses
|
|||||||
// IDE
|
// IDE
|
||||||
MainBase, IDEProcs, LazarusIDEStrConsts, IDEDefs, CompilerOptions,
|
MainBase, IDEProcs, LazarusIDEStrConsts, IDEDefs, CompilerOptions,
|
||||||
EnvironmentOpts, DialogProcs, InputHistory, PackageDefs, AddToPackageDlg,
|
EnvironmentOpts, DialogProcs, InputHistory, PackageDefs, AddToPackageDlg,
|
||||||
AddPkgDependencyDlg, ProjPackChecks, PkgVirtualUnitEditor, MissingPkgFilesDlg,
|
AddPkgDependencyDlg, AddFPMakeDependencyDlg, ProjPackChecks, PkgVirtualUnitEditor,
|
||||||
PackageSystem, CleanPkgDeps, ImgList;
|
MissingPkgFilesDlg, PackageSystem, CleanPkgDeps, ImgList;
|
||||||
|
|
||||||
const
|
const
|
||||||
PackageEditorMenuRootName = 'PackageEditor';
|
PackageEditorMenuRootName = 'PackageEditor';
|
||||||
@ -62,6 +62,7 @@ var
|
|||||||
PkgEditMenuAddNewFile: TIDEMenuCommand;
|
PkgEditMenuAddNewFile: TIDEMenuCommand;
|
||||||
PkgEditMenuAddNewComp: TIDEMenuCommand;
|
PkgEditMenuAddNewComp: TIDEMenuCommand;
|
||||||
PkgEditMenuAddNewReqr: TIDEMenuCommand;
|
PkgEditMenuAddNewReqr: TIDEMenuCommand;
|
||||||
|
PkgEditMenuAddNewFPMakeReqr: TIDEMenuCommand;
|
||||||
|
|
||||||
// selected files
|
// selected files
|
||||||
PkgEditMenuOpenFile: TIDEMenuCommand;
|
PkgEditMenuOpenFile: TIDEMenuCommand;
|
||||||
@ -186,6 +187,7 @@ type
|
|||||||
|
|
||||||
TPackageEditorForm = class(TBasePackageEditor,IFilesEditorInterface)
|
TPackageEditorForm = class(TBasePackageEditor,IFilesEditorInterface)
|
||||||
MenuItem1: TMenuItem;
|
MenuItem1: TMenuItem;
|
||||||
|
mnuAddFPMakeReq: TMenuItem;
|
||||||
mnuAddDiskFile: TMenuItem;
|
mnuAddDiskFile: TMenuItem;
|
||||||
mnuAddDiskFiles: TMenuItem;
|
mnuAddDiskFiles: TMenuItem;
|
||||||
mnuAddNewFile: TMenuItem;
|
mnuAddNewFile: TMenuItem;
|
||||||
@ -266,6 +268,7 @@ type
|
|||||||
procedure ItemsTreeViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
procedure ItemsTreeViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||||
procedure mnuAddDiskFileClick(Sender: TObject);
|
procedure mnuAddDiskFileClick(Sender: TObject);
|
||||||
procedure mnuAddDiskFilesClick(Sender: TObject);
|
procedure mnuAddDiskFilesClick(Sender: TObject);
|
||||||
|
procedure mnuAddFPMakeReqClick(Sender: TObject);
|
||||||
procedure mnuAddNewCompClick(Sender: TObject);
|
procedure mnuAddNewCompClick(Sender: TObject);
|
||||||
procedure mnuAddNewReqrClick(Sender: TObject);
|
procedure mnuAddNewReqrClick(Sender: TObject);
|
||||||
procedure mnuAddNewFileClick(Sender: TObject);
|
procedure mnuAddNewFileClick(Sender: TObject);
|
||||||
@ -377,6 +380,7 @@ type
|
|||||||
function DoOpenPkgFile(PkgFile: TPkgFile): TModalResult;
|
function DoOpenPkgFile(PkgFile: TPkgFile): TModalResult;
|
||||||
function ShowAddDialog(var DlgPage: TAddToPkgType): TModalResult;
|
function ShowAddDialog(var DlgPage: TAddToPkgType): TModalResult;
|
||||||
function ShowAddDepDialog: TModalResult;
|
function ShowAddDepDialog: TModalResult;
|
||||||
|
function ShowAddFPMakeDepDialog: TModalResult;
|
||||||
function PkgNameToFormName(const PkgName: string): string;
|
function PkgNameToFormName(const PkgName: string): string;
|
||||||
public
|
public
|
||||||
// IFilesEditorInterface
|
// IFilesEditorInterface
|
||||||
@ -572,6 +576,7 @@ begin
|
|||||||
PkgEditMenuAddNewFile:=RegisterIDEMenuCommand(AParent,'New file',lisA2PNewFile);
|
PkgEditMenuAddNewFile:=RegisterIDEMenuCommand(AParent,'New file',lisA2PNewFile);
|
||||||
PkgEditMenuAddNewComp:=RegisterIDEMenuCommand(AParent,'New component',lisA2PNewComponent);
|
PkgEditMenuAddNewComp:=RegisterIDEMenuCommand(AParent,'New component',lisA2PNewComponent);
|
||||||
PkgEditMenuAddNewReqr:=RegisterIDEMenuCommand(AParent,'New requirement',lisProjAddNewRequirement);
|
PkgEditMenuAddNewReqr:=RegisterIDEMenuCommand(AParent,'New requirement',lisProjAddNewRequirement);
|
||||||
|
PkgEditMenuAddNewFPMakeReqr:=RegisterIDEMenuCommand(AParent,'New FPMake requirement',lisProjAddNewFPMakeRequirement);
|
||||||
//
|
//
|
||||||
PkgEditMenuOpenFile:=RegisterIDEMenuCommand(AParent,'Open File',lisOpen);
|
PkgEditMenuOpenFile:=RegisterIDEMenuCommand(AParent,'Open File',lisOpen);
|
||||||
PkgEditMenuRemoveFile:=RegisterIDEMenuCommand(AParent,'Remove File',lisPckEditRemoveFile);
|
PkgEditMenuRemoveFile:=RegisterIDEMenuCommand(AParent,'Remove File',lisPckEditRemoveFile);
|
||||||
@ -650,6 +655,8 @@ begin
|
|||||||
else
|
else
|
||||||
Result:=Format(lisPckEditDefault, [Result, aFilename]);
|
Result:=Format(lisPckEditDefault, [Result, aFilename]);
|
||||||
end;
|
end;
|
||||||
|
if ADependency.DependencyType=pdtFPMake then
|
||||||
|
Result:=Result+' '+lisPckEditFPMakePackage;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TPENodeData }
|
{ TPENodeData }
|
||||||
@ -717,8 +724,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
type
|
type
|
||||||
PackageSelType = (pstFile, pstDir, pstDep, pstFilesNode, pstReqPackNode,
|
PackageSelType = (pstFile, pstDir, pstDep, pstFPMake, pstFilesNode,
|
||||||
pstRemFile, pstRemDep);
|
pstReqPackNode, pstRemFile, pstRemDep);
|
||||||
PackageSelTypes = set of PackageSelType;
|
PackageSelTypes = set of PackageSelType;
|
||||||
|
|
||||||
procedure TPackageEditorForm.ItemsPopupMenuPopup(Sender: TObject);
|
procedure TPackageEditorForm.ItemsPopupMenuPopup(Sender: TObject);
|
||||||
@ -752,6 +759,8 @@ var
|
|||||||
CurDependency := TPkgDependency(Item);
|
CurDependency := TPkgDependency(Item);
|
||||||
if (ItemsTreeView.SelectionCount=1) and Assigned(CurDependency.RequiredPackage) then
|
if (ItemsTreeView.SelectionCount=1) and Assigned(CurDependency.RequiredPackage) then
|
||||||
FSingleSelectedDep:=CurDependency;
|
FSingleSelectedDep:=CurDependency;
|
||||||
|
if CurDependency.DependencyType=pdtFPMake then
|
||||||
|
Include(UserSelection, pstFPMake);
|
||||||
if NodeData.Removed then
|
if NodeData.Removed then
|
||||||
Include(UserSelection, pstRemDep)
|
Include(UserSelection, pstRemDep)
|
||||||
else
|
else
|
||||||
@ -840,9 +849,11 @@ begin
|
|||||||
Writable);
|
Writable);
|
||||||
SetItem(PkgEditMenuAddNewReqr, @mnuAddNewReqrClick, UserSelection=[pstReqPackNode],
|
SetItem(PkgEditMenuAddNewReqr, @mnuAddNewReqrClick, UserSelection=[pstReqPackNode],
|
||||||
Writable);
|
Writable);
|
||||||
|
SetItem(PkgEditMenuAddNewFPMakeReqr, @mnuAddFPMakeReqClick, UserSelection=[pstReqPackNode],
|
||||||
|
Writable);
|
||||||
// selected files
|
// selected files
|
||||||
SetItem(PkgEditMenuOpenFile, @OpenFileMenuItemClick,
|
SetItem(PkgEditMenuOpenFile, @OpenFileMenuItemClick,
|
||||||
UserSelection*[pstFilesNode,pstReqPackNode]=[]);
|
UserSelection*[pstFilesNode,pstReqPackNode,pstFPMake]=[]);
|
||||||
SetItem(PkgEditMenuReAddFile, @ReAddMenuItemClick, UserSelection=[pstRemFile]);
|
SetItem(PkgEditMenuReAddFile, @ReAddMenuItemClick, UserSelection=[pstRemFile]);
|
||||||
SetItem(PkgEditMenuCopyMoveToDirectory, @CopyMoveToDirMenuItemClick,
|
SetItem(PkgEditMenuCopyMoveToDirectory, @CopyMoveToDirMenuItemClick,
|
||||||
(UserSelection=[pstFile]) and LazPackage.HasDirectory);
|
(UserSelection=[pstFile]) and LazPackage.HasDirectory);
|
||||||
@ -870,9 +881,9 @@ begin
|
|||||||
if PkgEditMenuSectionDependency.Visible then
|
if PkgEditMenuSectionDependency.Visible then
|
||||||
begin
|
begin
|
||||||
SetItem(PkgEditMenuRemoveDependency, @RemoveBitBtnClick,
|
SetItem(PkgEditMenuRemoveDependency, @RemoveBitBtnClick,
|
||||||
UserSelection=[pstDep], Writable);
|
pstdep in UserSelection, Writable);
|
||||||
SetItem(PkgEditMenuReAddDependency,@ReAddMenuItemClick,
|
SetItem(PkgEditMenuReAddDependency,@ReAddMenuItemClick,
|
||||||
UserSelection=[pstRemDep], Writable);
|
pstRemDep in UserSelection, Writable);
|
||||||
SetItem(PkgEditMenuDepStoreFileNameDefault, @SetDepDefaultFilenameMenuItemClick,
|
SetItem(PkgEditMenuDepStoreFileNameDefault, @SetDepDefaultFilenameMenuItemClick,
|
||||||
Assigned(FSingleSelectedDep), Writable);
|
Assigned(FSingleSelectedDep), Writable);
|
||||||
SetItem(PkgEditMenuDepStoreFileNamePreferred, @SetDepPreferredFilenameMenuItemClick,
|
SetItem(PkgEditMenuDepStoreFileNamePreferred, @SetDepPreferredFilenameMenuItemClick,
|
||||||
@ -1080,6 +1091,11 @@ begin
|
|||||||
ShowAddDialogEx(d2ptFiles);
|
ShowAddDialogEx(d2ptFiles);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TPackageEditorForm.mnuAddFPMakeReqClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ShowAddFPMakeDepDialog
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TPackageEditorForm.mnuAddNewCompClick(Sender: TObject);
|
procedure TPackageEditorForm.mnuAddNewCompClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ShowAddDialogEx(d2ptNewComponent);
|
ShowAddDialogEx(d2ptNewComponent);
|
||||||
@ -1968,6 +1984,7 @@ begin
|
|||||||
mnuAddNewFile.Caption := lisA2PNewFile;
|
mnuAddNewFile.Caption := lisA2PNewFile;
|
||||||
mnuAddNewComp.Caption := lisA2PNewComponent;
|
mnuAddNewComp.Caption := lisA2PNewComponent;
|
||||||
mnuAddNewReqr.Caption := lisProjAddNewRequirement;
|
mnuAddNewReqr.Caption := lisProjAddNewRequirement;
|
||||||
|
mnuAddFPMakeReq.Caption := lisProjAddNewFPMakeRequirement;
|
||||||
|
|
||||||
// Buttons on FilterPanel
|
// Buttons on FilterPanel
|
||||||
IDEImages.AssignImage(OpenButton, 'laz_open');
|
IDEImages.AssignImage(OpenButton, 'laz_open');
|
||||||
@ -2292,6 +2309,37 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TPackageEditorForm.ShowAddFPMakeDepDialog: TModalResult;
|
||||||
|
var
|
||||||
|
Deps: TPkgDependencyList;
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
if LazPackage.ReadOnly then begin
|
||||||
|
UpdateButtons;
|
||||||
|
exit(mrCancel);
|
||||||
|
end;
|
||||||
|
Result:=ShowAddFPMakeDependencyDlg(LazPackage, Deps);
|
||||||
|
try
|
||||||
|
if (Result<>mrOk) or (Deps.Count=0) then exit;
|
||||||
|
PackageGraph.BeginUpdate(false);
|
||||||
|
try
|
||||||
|
// add all dependencies
|
||||||
|
fForcedFlags := [pefNeedUpdateRequiredPkgs];
|
||||||
|
FreeAndNil(FNextSelectedPart);
|
||||||
|
for i := 0 to Deps.Count-1 do
|
||||||
|
PackageGraph.AddDependencyToPackage(LazPackage, Deps[i]);
|
||||||
|
FNextSelectedPart := TPENodeData.Create(penDependency,
|
||||||
|
Deps[Deps.Count-1].PackageName, false);
|
||||||
|
Assert(LazPackage.Modified, 'TPackageEditorForm.ShowAddFPMakeDepDialog: LazPackage.Modified = False');
|
||||||
|
finally
|
||||||
|
PackageGraph.EndUpdate;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
Deps.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
function TPackageEditorForm.PkgNameToFormName(const PkgName: string): string;
|
function TPackageEditorForm.PkgNameToFormName(const PkgName: string): string;
|
||||||
begin
|
begin
|
||||||
Result:=PackageEditorWindowPrefix+StringReplace(PkgName,'.','_',[rfReplaceAll]);
|
Result:=PackageEditorWindowPrefix+StringReplace(PkgName,'.','_',[rfReplaceAll]);
|
||||||
@ -3460,8 +3508,13 @@ begin
|
|||||||
Result:=mrCancel;
|
Result:=mrCancel;
|
||||||
if PackageGraph.OpenDependency(Dependency,false)=lprSuccess then
|
if PackageGraph.OpenDependency(Dependency,false)=lprSuccess then
|
||||||
begin
|
begin
|
||||||
APackage:=Dependency.RequiredPackage;
|
if Dependency.DependencyType=pdtLazarus then
|
||||||
if Assigned(OnOpenPackage) then Result:=OnOpenPackage(Sender,APackage);
|
begin
|
||||||
|
APackage:=Dependency.RequiredPackage;
|
||||||
|
if Assigned(OnOpenPackage) then Result:=OnOpenPackage(Sender,APackage);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
ShowMessage('It is not possible to open FPMake packages.');
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -2403,7 +2403,7 @@ begin
|
|||||||
// put all required packages on stack
|
// put all required packages on stack
|
||||||
Dependency:=Pkg.FirstRequiredDependency;
|
Dependency:=Pkg.FirstRequiredDependency;
|
||||||
while Dependency<>nil do begin
|
while Dependency<>nil do begin
|
||||||
if Dependency.LoadPackageResult=lprSuccess then begin
|
if (Dependency.DependencyType=pdtLazarus) and (Dependency.LoadPackageResult=lprSuccess) then begin
|
||||||
RequiredPackage:=Dependency.RequiredPackage;
|
RequiredPackage:=Dependency.RequiredPackage;
|
||||||
if (not (lpfNeeded in RequiredPackage.Flags)) then begin
|
if (not (lpfNeeded in RequiredPackage.Flags)) then begin
|
||||||
RequiredPackage.Flags:=RequiredPackage.Flags+[lpfNeeded];
|
RequiredPackage.Flags:=RequiredPackage.Flags+[lpfNeeded];
|
||||||
@ -2690,7 +2690,7 @@ function TLazPackageGraph.FindUnsavedDependencyPath(APackage: TLazPackage;
|
|||||||
RequiredPackage: TLazPackage;
|
RequiredPackage: TLazPackage;
|
||||||
begin
|
begin
|
||||||
while Dependency<>nil do begin
|
while Dependency<>nil do begin
|
||||||
if Dependency.LoadPackageResult=lprSuccess then begin
|
if (Dependency.DependencyType=pdtLazarus) and (Dependency.LoadPackageResult=lprSuccess) then begin
|
||||||
// dependency ok
|
// dependency ok
|
||||||
RequiredPackage:=Dependency.RequiredPackage;
|
RequiredPackage:=Dependency.RequiredPackage;
|
||||||
if RequiredPackage.Modified then begin
|
if RequiredPackage.Modified then begin
|
||||||
@ -2740,7 +2740,7 @@ function TLazPackageGraph.FindNotInstalledRegisterUnits(
|
|||||||
APkgFile: TPkgFile;
|
APkgFile: TPkgFile;
|
||||||
begin
|
begin
|
||||||
while Dependency<>nil do begin
|
while Dependency<>nil do begin
|
||||||
if Dependency.LoadPackageResult=lprSuccess then begin
|
if (Dependency.DependencyType=pdtLazarus) and (Dependency.LoadPackageResult=lprSuccess) then begin
|
||||||
// dependency ok
|
// dependency ok
|
||||||
RequiredPackage:=Dependency.RequiredPackage;
|
RequiredPackage:=Dependency.RequiredPackage;
|
||||||
if not (lpfVisited in RequiredPackage.Flags) then begin
|
if not (lpfVisited in RequiredPackage.Flags) then begin
|
||||||
@ -3042,7 +3042,7 @@ var
|
|||||||
begin
|
begin
|
||||||
Dependency:=FirstDependency;
|
Dependency:=FirstDependency;
|
||||||
while Dependency<>nil do begin
|
while Dependency<>nil do begin
|
||||||
if Dependency.LoadPackageResult=lprSuccess then begin
|
if (Dependency.DependencyType=pdtLazarus) and (Dependency.LoadPackageResult=lprSuccess) then begin
|
||||||
RequiredPackage:=Dependency.RequiredPackage;
|
RequiredPackage:=Dependency.RequiredPackage;
|
||||||
if not (lpfVisited in RequiredPackage.Flags) then begin
|
if not (lpfVisited in RequiredPackage.Flags) then begin
|
||||||
RequiredPackage.Flags:=RequiredPackage.Flags+[lpfVisited];
|
RequiredPackage.Flags:=RequiredPackage.Flags+[lpfVisited];
|
||||||
|
Loading…
Reference in New Issue
Block a user