mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-01 06:09:36 +01:00
Packager: Use new AddPkgDependencyDlg for dependencies of projects and packages. Support multiselection.
git-svn-id: trunk@53129 -
This commit is contained in:
parent
09b6ef75ac
commit
60e607f3e0
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -7817,6 +7817,8 @@ packager/adddirtopkgdlg.lfm svneol=native#text/plain
|
|||||||
packager/adddirtopkgdlg.pas svneol=native#text/plain
|
packager/adddirtopkgdlg.pas svneol=native#text/plain
|
||||||
packager/addfiletoapackagedlg.lfm svneol=native#text/plain
|
packager/addfiletoapackagedlg.lfm svneol=native#text/plain
|
||||||
packager/addfiletoapackagedlg.pas svneol=native#text/pascal
|
packager/addfiletoapackagedlg.pas svneol=native#text/pascal
|
||||||
|
packager/addpkgdependencydlg.lfm svneol=native#text/plain
|
||||||
|
packager/addpkgdependencydlg.pas svneol=native#text/pascal
|
||||||
packager/addtopackagedlg.lfm svneol=native#text/plain
|
packager/addtopackagedlg.lfm svneol=native#text/plain
|
||||||
packager/addtopackagedlg.pas svneol=native#text/pascal
|
packager/addtopackagedlg.pas svneol=native#text/pascal
|
||||||
packager/basepkgmanager.pas svneol=native#text/pascal
|
packager/basepkgmanager.pas svneol=native#text/pascal
|
||||||
|
|||||||
@ -17,20 +17,20 @@ object AddToProjectDialog: TAddToProjectDialog
|
|||||||
Height = 317
|
Height = 317
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 658
|
Width = 658
|
||||||
ActivePage = NewDependPage
|
ActivePage = AddEditorFilePage
|
||||||
Align = alClient
|
Align = alClient
|
||||||
TabIndex = 1
|
TabIndex = 0
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
OnChange = NotebookChange
|
OnChange = NotebookChange
|
||||||
object AddEditorFilePage: TTabSheet
|
object AddEditorFilePage: TTabSheet
|
||||||
Caption = 'AddEditorFilePage'
|
Caption = 'AddEditorFilePage'
|
||||||
ClientHeight = 273
|
ClientHeight = 282
|
||||||
ClientWidth = 590
|
ClientWidth = 650
|
||||||
object AddFileLabel: TLabel
|
object AddFileLabel: TLabel
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 15
|
Height = 18
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 578
|
Width = 638
|
||||||
Align = alTop
|
Align = alTop
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
Caption = 'AddFileLabel'
|
Caption = 'AddFileLabel'
|
||||||
@ -38,9 +38,9 @@ object AddToProjectDialog: TAddToProjectDialog
|
|||||||
end
|
end
|
||||||
object AddFileListView: TListView
|
object AddFileListView: TListView
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 238
|
Height = 244
|
||||||
Top = 27
|
Top = 30
|
||||||
Width = 578
|
Width = 638
|
||||||
Align = alTop
|
Align = alTop
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
AutoWidthLastColumn = True
|
AutoWidthLastColumn = True
|
||||||
@ -55,118 +55,16 @@ object AddToProjectDialog: TAddToProjectDialog
|
|||||||
OnSelectItem = AddFileListViewSelectItem
|
OnSelectItem = AddFileListViewSelectItem
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object NewDependPage: TTabSheet
|
|
||||||
Caption = 'NewDependPage'
|
|
||||||
ClientHeight = 282
|
|
||||||
ClientWidth = 650
|
|
||||||
object DependPkgNameLabel: TLabel
|
|
||||||
AnchorSideTop.Control = DependPkgNameFilter
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
AnchorSideRight.Control = DependPkgNameFilter
|
|
||||||
Left = 141
|
|
||||||
Height = 18
|
|
||||||
Top = 15
|
|
||||||
Width = 141
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
BorderSpacing.Right = 6
|
|
||||||
Caption = 'DependPkgNameLabel'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object DependMinVersionLabel: TLabel
|
|
||||||
AnchorSideTop.Control = DependMinVersionEdit
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
AnchorSideRight.Control = DependMinVersionEdit
|
|
||||||
Left = 132
|
|
||||||
Height = 18
|
|
||||||
Top = 209
|
|
||||||
Width = 150
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
BorderSpacing.Right = 6
|
|
||||||
Caption = 'DependMinVersionLabel'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object DependMaxVersionLabel: TLabel
|
|
||||||
AnchorSideTop.Control = DependMaxVersionEdit
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
AnchorSideRight.Control = DependMaxVersionEdit
|
|
||||||
Left = 129
|
|
||||||
Height = 18
|
|
||||||
Top = 247
|
|
||||||
Width = 153
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
BorderSpacing.Right = 6
|
|
||||||
Caption = 'DependMaxVersionLabel'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object DependMinVersionEdit: TEdit
|
|
||||||
AnchorSideLeft.Control = DependPkgNameListBox
|
|
||||||
AnchorSideRight.Control = DependPkgNameListBox
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
AnchorSideBottom.Control = DependMaxVersionEdit
|
|
||||||
Left = 288
|
|
||||||
Height = 32
|
|
||||||
Top = 202
|
|
||||||
Width = 250
|
|
||||||
Anchors = [akLeft, akRight, akBottom]
|
|
||||||
BorderSpacing.Top = 6
|
|
||||||
BorderSpacing.Bottom = 6
|
|
||||||
TabOrder = 2
|
|
||||||
Text = 'DependMinVersionEdit'
|
|
||||||
end
|
|
||||||
object DependMaxVersionEdit: TEdit
|
|
||||||
AnchorSideLeft.Control = DependMinVersionEdit
|
|
||||||
AnchorSideRight.Control = DependPkgNameListBox
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 288
|
|
||||||
Height = 32
|
|
||||||
Top = 240
|
|
||||||
Width = 250
|
|
||||||
Anchors = [akLeft, akRight, akBottom]
|
|
||||||
BorderSpacing.Top = 6
|
|
||||||
TabOrder = 3
|
|
||||||
Text = 'DependMaxVersionEdit'
|
|
||||||
end
|
|
||||||
object DependPkgNameListBox: TListBox
|
|
||||||
AnchorSideLeft.Control = DependPkgNameFilter
|
|
||||||
AnchorSideTop.Control = DependPkgNameFilter
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = DependPkgNameFilter
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
AnchorSideBottom.Control = DependMinVersionEdit
|
|
||||||
Left = 288
|
|
||||||
Height = 150
|
|
||||||
Top = 46
|
|
||||||
Width = 250
|
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
|
||||||
BorderSpacing.Top = 6
|
|
||||||
BorderSpacing.Bottom = 6
|
|
||||||
ItemHeight = 0
|
|
||||||
OnSelectionChange = DependPkgNameListBoxSelectionChange
|
|
||||||
TabOrder = 1
|
|
||||||
end
|
|
||||||
object DependPkgNameFilter: TListFilterEdit
|
|
||||||
Left = 288
|
|
||||||
Height = 32
|
|
||||||
Top = 8
|
|
||||||
Width = 250
|
|
||||||
ButtonWidth = 23
|
|
||||||
NumGlyphs = 1
|
|
||||||
Anchors = [akTop]
|
|
||||||
MaxLength = 0
|
|
||||||
TabOrder = 0
|
|
||||||
FilteredListbox = DependPkgNameListBox
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object AddFilesPage: TTabSheet
|
object AddFilesPage: TTabSheet
|
||||||
Caption = 'AddFilesPage'
|
Caption = 'AddFilesPage'
|
||||||
ClientHeight = 263
|
ClientHeight = 282
|
||||||
ClientWidth = 590
|
ClientWidth = 650
|
||||||
object FilesListView: TListView
|
object FilesListView: TListView
|
||||||
AnchorSideBottom.Control = FilesDirButton
|
AnchorSideBottom.Control = FilesDirButton
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 216
|
Height = 235
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 578
|
Width = 638
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
AutoWidthLastColumn = True
|
AutoWidthLastColumn = True
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
@ -185,7 +83,7 @@ object AddToProjectDialog: TAddToProjectDialog
|
|||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 29
|
Height = 29
|
||||||
Top = 228
|
Top = 247
|
||||||
Width = 101
|
Width = 101
|
||||||
Anchors = [akLeft, akBottom]
|
Anchors = [akLeft, akBottom]
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
@ -201,7 +99,7 @@ object AddToProjectDialog: TAddToProjectDialog
|
|||||||
AnchorSideTop.Side = asrCenter
|
AnchorSideTop.Side = asrCenter
|
||||||
Left = 113
|
Left = 113
|
||||||
Height = 29
|
Height = 29
|
||||||
Top = 228
|
Top = 247
|
||||||
Width = 132
|
Width = 132
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
@ -216,7 +114,7 @@ object AddToProjectDialog: TAddToProjectDialog
|
|||||||
AnchorSideTop.Side = asrCenter
|
AnchorSideTop.Side = asrCenter
|
||||||
Left = 251
|
Left = 251
|
||||||
Height = 29
|
Height = 29
|
||||||
Top = 228
|
Top = 247
|
||||||
Width = 123
|
Width = 123
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
|
|||||||
@ -37,26 +37,22 @@ uses
|
|||||||
Classes, SysUtils, AVL_Tree,
|
Classes, SysUtils, AVL_Tree,
|
||||||
// LCL
|
// LCL
|
||||||
Forms, Controls, Buttons, ComCtrls, StdCtrls, Dialogs, ButtonPanel,
|
Forms, Controls, Buttons, ComCtrls, StdCtrls, Dialogs, ButtonPanel,
|
||||||
ListFilterEdit,
|
|
||||||
// LazUtils
|
// LazUtils
|
||||||
FileUtil, LazFileUtils,
|
FileUtil, LazFileUtils,
|
||||||
// IDEIntf
|
// IDEIntf
|
||||||
IDEWindowIntf, PackageIntf, IDEDialogs,
|
IDEWindowIntf, PackageIntf,
|
||||||
// IDE
|
// IDE
|
||||||
LazarusIDEStrConsts, Project, InputHistory, PackageDefs, PackageSystem,
|
LazarusIDEStrConsts, Project, InputHistory, PackageDefs, ProjPackChecks;
|
||||||
ProjPackChecks;
|
|
||||||
|
|
||||||
type
|
type
|
||||||
TAddToProjectType = (
|
TAddToProjectType = (
|
||||||
a2pFiles,
|
a2pFiles,
|
||||||
a2pRequiredPkg,
|
|
||||||
a2pEditorFiles
|
a2pEditorFiles
|
||||||
);
|
);
|
||||||
|
|
||||||
TAddToProjectResult = class
|
TAddToProjectResult = class
|
||||||
public
|
public
|
||||||
AddType: TAddToProjectType;
|
AddType: TAddToProjectType;
|
||||||
Dependency: TPkgDependency;
|
|
||||||
FileNames: TStrings;
|
FileNames: TStrings;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
end;
|
end;
|
||||||
@ -69,21 +65,12 @@ type
|
|||||||
FilesDeleteButton: TBitBtn;
|
FilesDeleteButton: TBitBtn;
|
||||||
FilesDirButton: TBitBtn;
|
FilesDirButton: TBitBtn;
|
||||||
FilesShortenButton: TBitBtn;
|
FilesShortenButton: TBitBtn;
|
||||||
DependPkgNameListBox: TListBox;
|
|
||||||
DependPkgNameFilter: TListFilterEdit;
|
|
||||||
// notebook
|
// notebook
|
||||||
NoteBook: TPageControl;
|
NoteBook: TPageControl;
|
||||||
AddEditorFilePage: TTabSheet;
|
AddEditorFilePage: TTabSheet;
|
||||||
NewDependPage: TTabSheet;
|
|
||||||
AddFilesPage: TTabSheet;
|
AddFilesPage: TTabSheet;
|
||||||
// add file page
|
// add file page
|
||||||
AddFileLabel: TLabel;
|
AddFileLabel: TLabel;
|
||||||
// new required package
|
|
||||||
DependPkgNameLabel: TLabel;
|
|
||||||
DependMinVersionLabel: TLabel;
|
|
||||||
DependMinVersionEdit: TEdit;
|
|
||||||
DependMaxVersionLabel: TLabel;
|
|
||||||
DependMaxVersionEdit: TEdit;
|
|
||||||
// add files page
|
// add files page
|
||||||
FilesListView: TListView;
|
FilesListView: TListView;
|
||||||
procedure AddFileButtonClick(Sender: TObject);
|
procedure AddFileButtonClick(Sender: TObject);
|
||||||
@ -92,11 +79,9 @@ type
|
|||||||
procedure AddToProjectDialogClose(Sender: TObject;
|
procedure AddToProjectDialogClose(Sender: TObject;
|
||||||
var {%H-}CloseAction: TCloseAction);
|
var {%H-}CloseAction: TCloseAction);
|
||||||
procedure AddToProjectDialogShow(Sender: TObject);
|
procedure AddToProjectDialogShow(Sender: TObject);
|
||||||
procedure DependPkgNameListBoxSelectionChange(Sender: TObject; {%H-}User: boolean);
|
|
||||||
procedure FilesDirButtonClick(Sender: TObject);
|
procedure FilesDirButtonClick(Sender: TObject);
|
||||||
procedure FilesListViewSelectItem(Sender: TObject; {%H-}Item: TListItem;
|
procedure FilesListViewSelectItem(Sender: TObject; {%H-}Item: TListItem;
|
||||||
{%H-}Selected: Boolean);
|
{%H-}Selected: Boolean);
|
||||||
procedure NewDependButtonClick(Sender: TObject);
|
|
||||||
procedure FilesAddButtonClick(Sender: TObject);
|
procedure FilesAddButtonClick(Sender: TObject);
|
||||||
procedure FilesDeleteButtonClick(Sender: TObject);
|
procedure FilesDeleteButtonClick(Sender: TObject);
|
||||||
procedure FilesShortenButtonClick(Sender: TObject);
|
procedure FilesShortenButtonClick(Sender: TObject);
|
||||||
@ -106,17 +91,13 @@ type
|
|||||||
fProject: TProject;
|
fProject: TProject;
|
||||||
procedure SetupComponents;
|
procedure SetupComponents;
|
||||||
procedure SetupAddEditorFilePage;
|
procedure SetupAddEditorFilePage;
|
||||||
procedure SetupAddRequirementPage;
|
|
||||||
procedure SetupAddFilesPage;
|
procedure SetupAddFilesPage;
|
||||||
function CheckNewReqOk: Boolean;
|
procedure UpdateAvailableFiles;
|
||||||
procedure OnIteratePackages(APackageID: TLazPackageID);
|
procedure UpdateFilesButtons;
|
||||||
public
|
public
|
||||||
AddResult: TAddToProjectResult;
|
AddResult: TAddToProjectResult;
|
||||||
constructor Create(TheOwner: TComponent); override;
|
constructor Create(TheOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure UpdateAvailableDependencyNames;
|
|
||||||
procedure UpdateAvailableFiles;
|
|
||||||
procedure UpdateFilesButtons;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function ShowAddToProjectDlg(AProject: TProject;
|
function ShowAddToProjectDlg(AProject: TProject;
|
||||||
@ -136,12 +117,10 @@ begin
|
|||||||
AddToProjectDialog:=TAddToProjectDialog.Create(nil);
|
AddToProjectDialog:=TAddToProjectDialog.Create(nil);
|
||||||
AddToProjectDialog.fProject:=AProject;
|
AddToProjectDialog.fProject:=AProject;
|
||||||
AddToProjectDialog.UpdateAvailableFiles;
|
AddToProjectDialog.UpdateAvailableFiles;
|
||||||
AddToProjectDialog.UpdateAvailableDependencyNames;
|
|
||||||
|
|
||||||
case AInitTab of
|
case AInitTab of
|
||||||
a2pFiles: AddToProjectDialog.NoteBook.ActivePageIndex:=2;
|
a2pFiles: AddToProjectDialog.NoteBook.ActivePageIndex:=1;
|
||||||
a2pEditorFiles: AddToProjectDialog.NoteBook.ActivePageIndex:=0;
|
a2pEditorFiles: AddToProjectDialog.NoteBook.ActivePageIndex:=0;
|
||||||
a2pRequiredPkg: AddToProjectDialog.NoteBook.ActivePageIndex:=1;
|
|
||||||
end;
|
end;
|
||||||
// hide tabs for simple look
|
// hide tabs for simple look
|
||||||
AddToProjectDialog.NoteBook.ShowTabs:=false;
|
AddToProjectDialog.NoteBook.ShowTabs:=false;
|
||||||
@ -173,12 +152,6 @@ begin
|
|||||||
SelectNext(NoteBook.ActivePage, True, True);
|
SelectNext(NoteBook.ActivePage, True, True);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAddToProjectDialog.DependPkgNameListBoxSelectionChange(Sender: TObject;
|
|
||||||
User: boolean);
|
|
||||||
begin
|
|
||||||
CheckNewReqOk;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAddToProjectDialog.FilesDirButtonClick(Sender: TObject);
|
procedure TAddToProjectDialog.FilesDirButtonClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
DirDlg: TSelectDirectoryDialog;
|
DirDlg: TSelectDirectoryDialog;
|
||||||
@ -221,52 +194,6 @@ begin
|
|||||||
UpdateFilesButtons;
|
UpdateFilesButtons;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAddToProjectDialog.NewDependButtonClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
NewDependency: TPkgDependency;
|
|
||||||
begin
|
|
||||||
NewDependency:=TPkgDependency.Create;
|
|
||||||
try
|
|
||||||
// check minimum version
|
|
||||||
if DependMinVersionEdit.Text<>'' then begin
|
|
||||||
if not NewDependency.MinVersion.ReadString(DependMinVersionEdit.Text) then
|
|
||||||
begin
|
|
||||||
IDEMessageDialog(lisProjAddInvalidVersion,
|
|
||||||
Format(lisProjAddTheMinimumVersionIsInvalid,
|
|
||||||
[DependMinVersionEdit.Text, LineEnding, LineEnding]),
|
|
||||||
mtError,[mbCancel]);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
NewDependency.Flags:=NewDependency.Flags+[pdfMinVersion];
|
|
||||||
end;
|
|
||||||
// check maximum version
|
|
||||||
if DependMaxVersionEdit.Text<>'' then begin
|
|
||||||
if not NewDependency.MaxVersion.ReadString(DependMaxVersionEdit.Text) then
|
|
||||||
begin
|
|
||||||
IDEMessageDialog(lisProjAddInvalidVersion,
|
|
||||||
Format(lisProjAddTheMaximumVersionIsInvalid,
|
|
||||||
[DependMaxVersionEdit.Text, LineEnding, LineEnding]),
|
|
||||||
mtError,[mbCancel]);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
NewDependency.Flags:=NewDependency.Flags+[pdfMaxVersion];
|
|
||||||
end;
|
|
||||||
|
|
||||||
NewDependency.PackageName:=DependPkgNameListBox.Items[DependPkgNameListBox.ItemIndex];
|
|
||||||
if not CheckAddingProjectDependency(fProject,NewDependency) then exit;
|
|
||||||
|
|
||||||
// ok
|
|
||||||
AddResult:=TAddToProjectResult.Create;
|
|
||||||
AddResult.Dependency:=NewDependency;
|
|
||||||
NewDependency:=nil;
|
|
||||||
AddResult.AddType:=a2pRequiredPkg;
|
|
||||||
|
|
||||||
ModalResult:=mrOk;
|
|
||||||
finally
|
|
||||||
NewDependency.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAddToProjectDialog.AddFileButtonClick(Sender: TObject);
|
procedure TAddToProjectDialog.AddFileButtonClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
@ -372,12 +299,7 @@ begin
|
|||||||
ButtonPanel.OkButton.OnClick:=@AddFileButtonClick;
|
ButtonPanel.OkButton.OnClick:=@AddFileButtonClick;
|
||||||
ButtonPanel.OkButton.Enabled:=AddFileListView.SelCount>0;
|
ButtonPanel.OkButton.Enabled:=AddFileListView.SelCount>0;
|
||||||
end;
|
end;
|
||||||
1: begin // New Requirement
|
1: begin // Add Files
|
||||||
ButtonPanel.OkButton.Caption:=lisA2PCreateNewReq;
|
|
||||||
ButtonPanel.OkButton.OnClick:=@NewDependButtonClick;
|
|
||||||
CheckNewReqOk;
|
|
||||||
end;
|
|
||||||
2: begin // Add Files
|
|
||||||
ButtonPanel.OkButton.Caption:=lisProjAddAddFilesToProject;
|
ButtonPanel.OkButton.Caption:=lisProjAddAddFilesToProject;
|
||||||
ButtonPanel.OkButton.OnClick:=@FilesAddButtonClick;
|
ButtonPanel.OkButton.OnClick:=@FilesAddButtonClick;
|
||||||
UpdateFilesButtons;
|
UpdateFilesButtons;
|
||||||
@ -393,7 +315,6 @@ begin
|
|||||||
NotebookChange(NoteBook);
|
NotebookChange(NoteBook);
|
||||||
|
|
||||||
SetupAddEditorFilePage;
|
SetupAddEditorFilePage;
|
||||||
SetupAddRequirementPage;
|
|
||||||
SetupAddFilesPage;
|
SetupAddFilesPage;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -407,16 +328,6 @@ begin
|
|||||||
CurColumn.Caption:=lisA2PFilename2;
|
CurColumn.Caption:=lisA2PFilename2;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAddToProjectDialog.SetupAddRequirementPage;
|
|
||||||
begin
|
|
||||||
NewDependPage.Caption := lisProjAddNewRequirement;
|
|
||||||
DependPkgNameLabel.Caption:=lisProjAddPackageName;
|
|
||||||
DependMinVersionLabel.Caption:=lisProjAddMinimumVersionOptional;
|
|
||||||
DependMinVersionEdit.Text:='';
|
|
||||||
DependMaxVersionLabel.Caption:=lisProjAddMaximumVersionOptional;
|
|
||||||
DependMaxVersionEdit.Text:='';
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAddToProjectDialog.SetupAddFilesPage;
|
procedure TAddToProjectDialog.SetupAddFilesPage;
|
||||||
var
|
var
|
||||||
CurColumn: TListColumn;
|
CurColumn: TListColumn;
|
||||||
@ -450,18 +361,6 @@ begin
|
|||||||
UpdateFilesButtons;
|
UpdateFilesButtons;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAddToProjectDialog.CheckNewReqOk: Boolean;
|
|
||||||
begin
|
|
||||||
Result:=DependPkgNameListBox.ItemIndex>-1;
|
|
||||||
ButtonPanel.OkButton.Enabled:=Result;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAddToProjectDialog.OnIteratePackages(APackageID: TLazPackageID);
|
|
||||||
begin
|
|
||||||
if (fPackages.Find(APackageID)=nil) then
|
|
||||||
fPackages.Add(APackageID);
|
|
||||||
end;
|
|
||||||
|
|
||||||
constructor TAddToProjectDialog.Create(TheOwner: TComponent);
|
constructor TAddToProjectDialog.Create(TheOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited Create(TheOwner);
|
inherited Create(TheOwner);
|
||||||
@ -477,24 +376,6 @@ begin
|
|||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAddToProjectDialog.UpdateAvailableDependencyNames;
|
|
||||||
var
|
|
||||||
ANode: TAVLTreeNode;
|
|
||||||
sl: TStringList;
|
|
||||||
begin
|
|
||||||
fPackages.Clear;
|
|
||||||
PackageGraph.IteratePackages(fpfSearchAllExisting,@OnIteratePackages);
|
|
||||||
sl:=TStringList.Create;
|
|
||||||
ANode:=fPackages.FindLowest;
|
|
||||||
while ANode<>nil do begin
|
|
||||||
sl.Add(TLazPackageID(ANode.Data).Name);
|
|
||||||
ANode:=fPackages.FindSuccessor(ANode);
|
|
||||||
end;
|
|
||||||
DependPkgNameFilter.Items.Assign(sl);
|
|
||||||
DependPkgNameFilter.InvalidateFilter;
|
|
||||||
sl.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAddToProjectDialog.UpdateAvailableFiles;
|
procedure TAddToProjectDialog.UpdateAvailableFiles;
|
||||||
var
|
var
|
||||||
CurFile: TUnitInfo;
|
CurFile: TUnitInfo;
|
||||||
|
|||||||
@ -63,7 +63,8 @@ uses
|
|||||||
PackageIntf,
|
PackageIntf,
|
||||||
// IDE
|
// IDE
|
||||||
LazarusIDEStrConsts, IDEProcs, DialogProcs, IDEOptionDefs, EnvironmentOpts,
|
LazarusIDEStrConsts, IDEProcs, DialogProcs, IDEOptionDefs, EnvironmentOpts,
|
||||||
PackageDefs, Project, PackageEditor, AddToProjectDlg, InputHistory, ProjPackChecks;
|
PackageDefs, Project, PackageEditor, AddToProjectDlg, AddPkgDependencyDlg,
|
||||||
|
InputHistory, ProjPackChecks;
|
||||||
|
|
||||||
type
|
type
|
||||||
TOnAddUnitToProject =
|
TOnAddUnitToProject =
|
||||||
@ -173,6 +174,7 @@ type
|
|||||||
procedure AddMenuItemClick(Sender: TObject);
|
procedure AddMenuItemClick(Sender: TObject);
|
||||||
function AddOneFile(aFilename: string): TModalResult;
|
function AddOneFile(aFilename: string): TModalResult;
|
||||||
procedure DoAddMoreDialog(AInitTab: TAddToProjectType);
|
procedure DoAddMoreDialog(AInitTab: TAddToProjectType);
|
||||||
|
procedure DoAddDepDialog;
|
||||||
procedure FreeNodeData(Typ: TPENodeType);
|
procedure FreeNodeData(Typ: TPENodeType);
|
||||||
function CreateNodeData(Typ: TPENodeType; aName: string; aRemoved: boolean): TPENodeData;
|
function CreateNodeData(Typ: TPENodeType; aName: string; aRemoved: boolean): TPENodeData;
|
||||||
procedure SetDependencyDefaultFilename(AsPreferred: boolean);
|
procedure SetDependencyDefaultFilename(AsPreferred: boolean);
|
||||||
@ -373,7 +375,7 @@ end;
|
|||||||
|
|
||||||
procedure TProjectInspectorForm.mnuAddReqClick(Sender: TObject);
|
procedure TProjectInspectorForm.mnuAddReqClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
DoAddMoreDialog(a2pRequiredPkg);
|
DoAddDepDialog;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectInspectorForm.MoveDependencyUpClick(Sender: TObject);
|
procedure TProjectInspectorForm.MoveDependencyUpClick(Sender: TObject);
|
||||||
@ -490,17 +492,6 @@ begin
|
|||||||
UpdateAll;
|
UpdateAll;
|
||||||
EndUpdate;
|
EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
a2pRequiredPkg:
|
|
||||||
begin
|
|
||||||
BeginUpdate;
|
|
||||||
if Assigned(OnAddDependency) then
|
|
||||||
OnAddDependency(Self,AddResult.Dependency);
|
|
||||||
FNextSelectedPart:=AddResult.Dependency;
|
|
||||||
UpdateRequiredPackages;
|
|
||||||
EndUpdate;
|
|
||||||
end;
|
|
||||||
|
|
||||||
else
|
else
|
||||||
Showmessage('Not implemented');
|
Showmessage('Not implemented');
|
||||||
end;
|
end;
|
||||||
@ -508,6 +499,29 @@ begin
|
|||||||
AddResult.Free;
|
AddResult.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TProjectInspectorForm.DoAddDepDialog;
|
||||||
|
var
|
||||||
|
Deps: TPkgDependencyList;
|
||||||
|
i: Integer;
|
||||||
|
Resu: TModalResult;
|
||||||
|
begin
|
||||||
|
Resu:=ShowAddPkgDependencyDlg(LazProject, Deps);
|
||||||
|
try
|
||||||
|
if (Resu<>mrOK) or (Deps.Count=0) then exit;
|
||||||
|
BeginUpdate;
|
||||||
|
for i := 0 to Deps.Count-1 do
|
||||||
|
begin
|
||||||
|
if Assigned(OnAddDependency) then
|
||||||
|
OnAddDependency(Self, Deps[i]);
|
||||||
|
end;
|
||||||
|
FNextSelectedPart:=Deps[Deps.Count];
|
||||||
|
UpdateRequiredPackages;
|
||||||
|
EndUpdate;
|
||||||
|
finally
|
||||||
|
Deps.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TProjectInspectorForm.CopyMoveToDirMenuItemClick(Sender: TObject);
|
procedure TProjectInspectorForm.CopyMoveToDirMenuItemClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
OnCopyMoveFiles(Self);
|
OnCopyMoveFiles(Self);
|
||||||
|
|||||||
135
packager/addpkgdependencydlg.lfm
Normal file
135
packager/addpkgdependencydlg.lfm
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
object AddPkgDependencyDialog: TAddPkgDependencyDialog
|
||||||
|
Left = 466
|
||||||
|
Height = 374
|
||||||
|
Top = 122
|
||||||
|
Width = 570
|
||||||
|
Caption = 'AddPkgDependencyDialog'
|
||||||
|
ClientHeight = 374
|
||||||
|
ClientWidth = 570
|
||||||
|
LCLVersion = '1.7'
|
||||||
|
object DependPkgNameLabel: TLabel
|
||||||
|
AnchorSideTop.Control = DependPkgNameFilter
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
AnchorSideRight.Control = DependPkgNameFilter
|
||||||
|
Left = 141
|
||||||
|
Height = 18
|
||||||
|
Top = 23
|
||||||
|
Width = 141
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Right = 6
|
||||||
|
BorderSpacing.CellAlignHorizontal = ccaLeftTop
|
||||||
|
BorderSpacing.CellAlignVertical = ccaCenter
|
||||||
|
Caption = 'DependPkgNameLabel'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object DependPkgNameFilter: TListFilterEdit
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 288
|
||||||
|
Height = 32
|
||||||
|
Top = 16
|
||||||
|
Width = 256
|
||||||
|
ButtonWidth = 23
|
||||||
|
NumGlyphs = 1
|
||||||
|
Anchors = [akTop]
|
||||||
|
AutoSize = False
|
||||||
|
MaxLength = 0
|
||||||
|
TabOrder = 0
|
||||||
|
FilteredListbox = DependPkgNameListBox
|
||||||
|
end
|
||||||
|
object DependPkgNameListBox: TListBox
|
||||||
|
AnchorSideLeft.Control = DependPkgNameFilter
|
||||||
|
AnchorSideTop.Control = DependPkgNameFilter
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = DependPkgNameFilter
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
AnchorSideBottom.Control = DependMinVersionEdit
|
||||||
|
Left = 288
|
||||||
|
Height = 174
|
||||||
|
Top = 54
|
||||||
|
Width = 256
|
||||||
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
BorderSpacing.Bottom = 6
|
||||||
|
ItemHeight = 0
|
||||||
|
MultiSelect = True
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
object DependMinVersionEdit: TEdit
|
||||||
|
AnchorSideLeft.Control = DependPkgNameListBox
|
||||||
|
AnchorSideRight.Control = DependPkgNameListBox
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
AnchorSideBottom.Control = DependMaxVersionEdit
|
||||||
|
Left = 288
|
||||||
|
Height = 32
|
||||||
|
Top = 234
|
||||||
|
Width = 256
|
||||||
|
Anchors = [akLeft, akRight, akBottom]
|
||||||
|
AutoSize = False
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
TabOrder = 2
|
||||||
|
Text = 'DependMinVersionEdit'
|
||||||
|
end
|
||||||
|
object DependMaxVersionEdit: TEdit
|
||||||
|
AnchorSideLeft.Control = DependMinVersionEdit
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = DependPkgNameListBox
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 288
|
||||||
|
Height = 32
|
||||||
|
Top = 272
|
||||||
|
Width = 256
|
||||||
|
Anchors = [akLeft, akRight, akBottom]
|
||||||
|
AutoSize = False
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
TabOrder = 3
|
||||||
|
Text = 'DependMaxVersionEdit'
|
||||||
|
end
|
||||||
|
object DependMinVersionLabel: TLabel
|
||||||
|
AnchorSideTop.Control = DependMinVersionEdit
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
AnchorSideRight.Control = DependMinVersionEdit
|
||||||
|
Left = 132
|
||||||
|
Height = 18
|
||||||
|
Top = 241
|
||||||
|
Width = 150
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Right = 6
|
||||||
|
BorderSpacing.CellAlignHorizontal = ccaLeftTop
|
||||||
|
BorderSpacing.CellAlignVertical = ccaCenter
|
||||||
|
Caption = 'DependMinVersionLabel'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object DependMaxVersionLabel: TLabel
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = DependMaxVersionEdit
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
AnchorSideRight.Control = DependMaxVersionEdit
|
||||||
|
Left = 129
|
||||||
|
Height = 18
|
||||||
|
Top = 279
|
||||||
|
Width = 153
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Right = 6
|
||||||
|
BorderSpacing.CellAlignHorizontal = ccaLeftTop
|
||||||
|
BorderSpacing.CellAlignVertical = ccaCenter
|
||||||
|
Caption = 'DependMaxVersionLabel'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object ButtonPanel1: TButtonPanel
|
||||||
|
Left = 6
|
||||||
|
Height = 37
|
||||||
|
Top = 331
|
||||||
|
Width = 558
|
||||||
|
OKButton.Name = 'OKButton'
|
||||||
|
OKButton.DefaultCaption = True
|
||||||
|
OKButton.OnClick = OKButtonClick
|
||||||
|
HelpButton.Name = 'HelpButton'
|
||||||
|
HelpButton.DefaultCaption = True
|
||||||
|
CloseButton.Name = 'CloseButton'
|
||||||
|
CloseButton.DefaultCaption = True
|
||||||
|
CancelButton.Name = 'CancelButton'
|
||||||
|
CancelButton.DefaultCaption = True
|
||||||
|
TabOrder = 4
|
||||||
|
ShowButtons = [pbOK, pbCancel, pbHelp]
|
||||||
|
end
|
||||||
|
end
|
||||||
200
packager/addpkgdependencydlg.pas
Normal file
200
packager/addpkgdependencydlg.pas
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
unit AddPkgDependencyDlg;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, AVL_Tree, fgl,
|
||||||
|
// LCL
|
||||||
|
Forms, Controls, Graphics, Dialogs, StdCtrls, ButtonPanel, LCLProc,
|
||||||
|
// LazControls
|
||||||
|
ListFilterEdit,
|
||||||
|
// LazUtils
|
||||||
|
FileUtil,
|
||||||
|
// IDEIntf
|
||||||
|
IDEWindowIntf, PackageIntf, ProjPackIntf, IDEDialogs,
|
||||||
|
// IDE
|
||||||
|
LazarusIDEStrConsts, InputHistory, PackageDefs, PackageSystem,
|
||||||
|
ProjPackBase, ProjPackChecks;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
TPkgDependencyList = specialize TFPGList<TPkgDependency>;
|
||||||
|
|
||||||
|
{ TAddPkgDependencyDialog }
|
||||||
|
|
||||||
|
TAddPkgDependencyDialog = class(TForm)
|
||||||
|
ButtonPanel1: TButtonPanel;
|
||||||
|
DependMaxVersionEdit: TEdit;
|
||||||
|
DependMaxVersionLabel: TLabel;
|
||||||
|
DependMinVersionEdit: TEdit;
|
||||||
|
DependMinVersionLabel: TLabel;
|
||||||
|
DependPkgNameFilter: TListFilterEdit;
|
||||||
|
DependPkgNameLabel: TLabel;
|
||||||
|
DependPkgNameListBox: TListBox;
|
||||||
|
procedure OKButtonClick(Sender: TObject);
|
||||||
|
private
|
||||||
|
fPackages: TAVLTree; // tree of TLazPackage or TPackageLink
|
||||||
|
fProjPack: IProjPack;
|
||||||
|
fResultDependencies: TPkgDependencyList;
|
||||||
|
procedure AddUniquePackagesToList(APackageID: TLazPackageID);
|
||||||
|
procedure UpdateAvailableDependencyNames;
|
||||||
|
public
|
||||||
|
constructor Create(TheOwner: TComponent); override;
|
||||||
|
destructor Destroy; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
AddPkgDependencyDialog: TAddPkgDependencyDialog;
|
||||||
|
|
||||||
|
function ShowAddPkgDependencyDlg(AProjPack: IProjPack;
|
||||||
|
out AResultDependencies: TPkgDependencyList): TModalResult;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{$R *.lfm}
|
||||||
|
|
||||||
|
function ShowAddPkgDependencyDlg(AProjPack: IProjPack;
|
||||||
|
out AResultDependencies: TPkgDependencyList): TModalResult;
|
||||||
|
var
|
||||||
|
AddDepDialog: TAddPkgDependencyDialog;
|
||||||
|
begin
|
||||||
|
AddDepDialog:=TAddPkgDependencyDialog.Create(nil);
|
||||||
|
AddDepDialog.fProjPack:=AProjPack;
|
||||||
|
AddDepDialog.UpdateAvailableDependencyNames;
|
||||||
|
|
||||||
|
Result:=AddDepDialog.ShowModal;
|
||||||
|
if Result=mrOk then begin
|
||||||
|
AResultDependencies:=AddDepDialog.fResultDependencies;
|
||||||
|
AddDepDialog.fResultDependencies:=nil;
|
||||||
|
end else begin
|
||||||
|
AResultDependencies:=nil;
|
||||||
|
end;
|
||||||
|
AddDepDialog.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TAddPkgDependencyDialog }
|
||||||
|
|
||||||
|
constructor TAddPkgDependencyDialog.Create(TheOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited Create(TheOwner);
|
||||||
|
Caption:=lisProjAddNewRequirement;
|
||||||
|
fPackages:=TAVLTree.Create(@CompareLazPackageIDNames);
|
||||||
|
IDEDialogLayoutList.ApplyLayout(Self,500,300);
|
||||||
|
|
||||||
|
DependPkgNameLabel.Caption:=lisProjAddPackageName;
|
||||||
|
DependMinVersionLabel.Caption:=lisProjAddMinimumVersionOptional;
|
||||||
|
DependMinVersionEdit.Text:='';
|
||||||
|
DependMaxVersionLabel.Caption:=lisProjAddMaximumVersionOptional;
|
||||||
|
DependMaxVersionEdit.Text:='';
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TAddPkgDependencyDialog.Destroy;
|
||||||
|
begin
|
||||||
|
FreeAndNil(fPackages);
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAddPkgDependencyDialog.AddUniquePackagesToList(APackageID: TLazPackageID);
|
||||||
|
begin
|
||||||
|
if (APackageID.IDAsString<>fProjPack.IDAsString) and (fPackages.Find(APackageID)=Nil) then
|
||||||
|
fPackages.Add(APackageID);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAddPkgDependencyDialog.UpdateAvailableDependencyNames;
|
||||||
|
var
|
||||||
|
ANode: TAVLTreeNode;
|
||||||
|
sl: TStringList;
|
||||||
|
begin
|
||||||
|
fPackages.Clear;
|
||||||
|
PackageGraph.IteratePackages(fpfSearchAllExisting,@AddUniquePackagesToList);
|
||||||
|
sl:=TStringList.Create;
|
||||||
|
try
|
||||||
|
ANode:=fPackages.FindLowest;
|
||||||
|
while ANode<>nil do begin
|
||||||
|
sl.Add(TLazPackageID(ANode.Data).Name);
|
||||||
|
ANode:=fPackages.FindSuccessor(ANode);
|
||||||
|
end;
|
||||||
|
DependPkgNameFilter.Items.Assign(sl);
|
||||||
|
DependPkgNameFilter.InvalidateFilter;
|
||||||
|
finally
|
||||||
|
sl.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAddPkgDependencyDialog.OKButtonClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
NewDependency: TPkgDependency;
|
||||||
|
MinVerTest, MaxVerTest: TPkgVersion;
|
||||||
|
MinMaxVerFlags: TPkgDependencyFlags;
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
MinVerTest := Nil;
|
||||||
|
MaxVerTest := Nil;
|
||||||
|
MinMaxVerFlags := [];
|
||||||
|
try
|
||||||
|
// check minimum version
|
||||||
|
if DependMinVersionEdit.Text <> '' then
|
||||||
|
begin
|
||||||
|
MinVerTest := TPkgVersion.Create;
|
||||||
|
if not MinVerTest.ReadString(DependMinVersionEdit.Text) then
|
||||||
|
begin
|
||||||
|
IDEMessageDialog(lisProjAddInvalidVersion,
|
||||||
|
Format(lisProjAddTheMinimumVersionIsInvalid,
|
||||||
|
[DependMinVersionEdit.Text, LineEnding, LineEnding]),
|
||||||
|
mtError,[mbCancel]);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
MinMaxVerFlags := [pdfMinVersion];
|
||||||
|
end;
|
||||||
|
// check maximum version
|
||||||
|
if DependMaxVersionEdit.Text <> '' then
|
||||||
|
begin
|
||||||
|
MaxVerTest := TPkgVersion.Create;
|
||||||
|
if not MaxVerTest.ReadString(DependMaxVersionEdit.Text) then
|
||||||
|
begin
|
||||||
|
IDEMessageDialog(lisProjAddInvalidVersion,
|
||||||
|
Format(lisProjAddTheMaximumVersionIsInvalid,
|
||||||
|
[DependMaxVersionEdit.Text, LineEnding, LineEnding]),
|
||||||
|
mtError,[mbCancel]);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
MinMaxVerFlags := MinMaxVerFlags + [pdfMaxVersion];
|
||||||
|
end;
|
||||||
|
|
||||||
|
// Add all selected packages.
|
||||||
|
fResultDependencies := TPkgDependencyList.Create; // Will be freed by the caller.
|
||||||
|
DebugLn(['TAddPkgDependencyDialog.OKButtonClick: ListBox.SelCount=', DependPkgNameListBox.SelCount]);
|
||||||
|
if DependPkgNameListBox.SelCount > 0 then
|
||||||
|
begin
|
||||||
|
for i := 0 to DependPkgNameListBox.Count-1 do
|
||||||
|
begin
|
||||||
|
DebugLn(['TAddPkgDependencyDialog.OKButtonClick: Iterating ', DependPkgNameListBox.Items[i]]);
|
||||||
|
if DependPkgNameListBox.Selected[i] then
|
||||||
|
begin
|
||||||
|
DebugLn(['TAddPkgDependencyDialog.OKButtonClick: ', DependPkgNameListBox.Items[i], ' is selected.']);
|
||||||
|
NewDependency := TPkgDependency.Create; // Will be added to package graph.
|
||||||
|
NewDependency.PackageName := DependPkgNameListBox.Items[i];
|
||||||
|
if Assigned(MinVerTest) then
|
||||||
|
NewDependency.MinVersion.Assign(MinVerTest);
|
||||||
|
if Assigned(MaxVerTest) then
|
||||||
|
NewDependency.MaxVersion.Assign(MaxVerTest);
|
||||||
|
NewDependency.Flags := NewDependency.Flags + MinMaxVerFlags;
|
||||||
|
DebugLn(['TAddPkgDependencyDialog.OKButtonClick: Checking ', DependPkgNameListBox.Items[i], ' ...']);
|
||||||
|
if not CheckAddingDependency(fProjPack, NewDependency) then exit;
|
||||||
|
DebugLn(['TAddPkgDependencyDialog.OKButtonClick: Adding ', DependPkgNameListBox.Items[i], ' to result.']);
|
||||||
|
fResultDependencies.Add(NewDependency);
|
||||||
|
NewDependency := nil;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
ModalResult := mrOk;
|
||||||
|
finally
|
||||||
|
MinVerTest.Free;
|
||||||
|
MaxVerTest.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
||||||
@ -20,9 +20,9 @@ object AddToPackageDlg: TAddToPackageDlg
|
|||||||
Height = 316
|
Height = 316
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 658
|
Width = 658
|
||||||
ActivePage = NewRequirementPage
|
ActivePage = NewComponentPage
|
||||||
Align = alClient
|
Align = alClient
|
||||||
TabIndex = 1
|
TabIndex = 0
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
OnChange = PageControl1Change
|
OnChange = PageControl1Change
|
||||||
object NewComponentPage: TTabSheet
|
object NewComponentPage: TTabSheet
|
||||||
@ -250,134 +250,6 @@ object AddToPackageDlg: TAddToPackageDlg
|
|||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object NewRequirementPage: TTabSheet
|
|
||||||
Caption = 'New Requirement'
|
|
||||||
ClientHeight = 281
|
|
||||||
ClientWidth = 650
|
|
||||||
object NewDepPanel: TPanel
|
|
||||||
Left = 0
|
|
||||||
Height = 281
|
|
||||||
Top = 0
|
|
||||||
Width = 650
|
|
||||||
Align = alClient
|
|
||||||
BevelOuter = bvNone
|
|
||||||
ChildSizing.LeftRightSpacing = 6
|
|
||||||
ChildSizing.TopBottomSpacing = 6
|
|
||||||
ChildSizing.HorizontalSpacing = 6
|
|
||||||
ChildSizing.VerticalSpacing = 6
|
|
||||||
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
|
||||||
ChildSizing.ControlsPerLine = 2
|
|
||||||
ClientHeight = 281
|
|
||||||
ClientWidth = 650
|
|
||||||
TabOrder = 0
|
|
||||||
object DependPkgNameLabel: TLabel
|
|
||||||
AnchorSideTop.Control = DependPkgNameFilter
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
AnchorSideRight.Control = DependPkgNameFilter
|
|
||||||
Left = 141
|
|
||||||
Height = 18
|
|
||||||
Top = 15
|
|
||||||
Width = 141
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
BorderSpacing.CellAlignHorizontal = ccaLeftTop
|
|
||||||
BorderSpacing.CellAlignVertical = ccaCenter
|
|
||||||
Caption = 'DependPkgNameLabel'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object DependMinVersionLabel: TLabel
|
|
||||||
AnchorSideTop.Control = DependMinVersionEdit
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
AnchorSideRight.Control = DependMinVersionEdit
|
|
||||||
Left = 132
|
|
||||||
Height = 18
|
|
||||||
Top = 207
|
|
||||||
Width = 150
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
BorderSpacing.CellAlignHorizontal = ccaLeftTop
|
|
||||||
BorderSpacing.CellAlignVertical = ccaCenter
|
|
||||||
Caption = 'DependMinVersionLabel'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object DependMinVersionEdit: TEdit
|
|
||||||
AnchorSideLeft.Control = DependPkgNameListBox
|
|
||||||
AnchorSideRight.Control = DependPkgNameListBox
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
AnchorSideBottom.Control = DependMaxVersionEdit
|
|
||||||
Left = 288
|
|
||||||
Height = 32
|
|
||||||
Top = 200
|
|
||||||
Width = 256
|
|
||||||
Anchors = [akLeft, akRight, akBottom]
|
|
||||||
AutoSize = False
|
|
||||||
BorderSpacing.Top = 6
|
|
||||||
TabOrder = 2
|
|
||||||
Text = 'DependMinVersionEdit'
|
|
||||||
end
|
|
||||||
object DependMaxVersionLabel: TLabel
|
|
||||||
AnchorSideLeft.Side = asrBottom
|
|
||||||
AnchorSideTop.Control = DependMaxVersionEdit
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
AnchorSideRight.Control = DependMaxVersionEdit
|
|
||||||
Left = 129
|
|
||||||
Height = 18
|
|
||||||
Top = 245
|
|
||||||
Width = 153
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
BorderSpacing.CellAlignHorizontal = ccaLeftTop
|
|
||||||
BorderSpacing.CellAlignVertical = ccaCenter
|
|
||||||
Caption = 'DependMaxVersionLabel'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object DependMaxVersionEdit: TEdit
|
|
||||||
AnchorSideLeft.Control = DependMinVersionEdit
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = DependPkgNameListBox
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 288
|
|
||||||
Height = 32
|
|
||||||
Top = 238
|
|
||||||
Width = 256
|
|
||||||
Anchors = [akLeft, akRight, akBottom]
|
|
||||||
AutoSize = False
|
|
||||||
BorderSpacing.Top = 6
|
|
||||||
TabOrder = 3
|
|
||||||
Text = 'DependMaxVersionEdit'
|
|
||||||
end
|
|
||||||
object DependPkgNameFilter: TListFilterEdit
|
|
||||||
AnchorSideRight.Control = DependPkgNameListBox
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 288
|
|
||||||
Height = 32
|
|
||||||
Top = 8
|
|
||||||
Width = 256
|
|
||||||
ButtonWidth = 23
|
|
||||||
NumGlyphs = 1
|
|
||||||
Anchors = [akTop]
|
|
||||||
AutoSize = False
|
|
||||||
MaxLength = 0
|
|
||||||
TabOrder = 0
|
|
||||||
FilteredListbox = DependPkgNameListBox
|
|
||||||
end
|
|
||||||
object DependPkgNameListBox: TListBox
|
|
||||||
AnchorSideLeft.Control = DependPkgNameFilter
|
|
||||||
AnchorSideTop.Control = DependPkgNameFilter
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = DependPkgNameFilter
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
AnchorSideBottom.Control = DependMinVersionEdit
|
|
||||||
Left = 288
|
|
||||||
Height = 148
|
|
||||||
Top = 46
|
|
||||||
Width = 256
|
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
|
||||||
BorderSpacing.Top = 6
|
|
||||||
BorderSpacing.Bottom = 6
|
|
||||||
ItemHeight = 0
|
|
||||||
OnSelectionChange = DependPkgNameListBoxSelectionChange
|
|
||||||
TabOrder = 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object AddFilesPage: TTabSheet
|
object AddFilesPage: TTabSheet
|
||||||
Caption = 'Add Files'
|
Caption = 'Add Files'
|
||||||
ClientHeight = 281
|
ClientHeight = 281
|
||||||
|
|||||||
@ -34,7 +34,6 @@ uses
|
|||||||
// LCL
|
// LCL
|
||||||
LCLProc, LCLType, Forms, Controls, Buttons, ExtDlgs, StdCtrls, ExtCtrls,
|
LCLProc, LCLType, Forms, Controls, Buttons, ExtDlgs, StdCtrls, ExtCtrls,
|
||||||
Dialogs, ComCtrls, ButtonPanel,
|
Dialogs, ComCtrls, ButtonPanel,
|
||||||
ListFilterEdit,
|
|
||||||
// LazUtils
|
// LazUtils
|
||||||
FileUtil, LazFileUtils,
|
FileUtil, LazFileUtils,
|
||||||
// IDEIntf
|
// IDEIntf
|
||||||
@ -91,21 +90,12 @@ type
|
|||||||
ComponentUnitFileShortenButton: TButton;
|
ComponentUnitFileShortenButton: TButton;
|
||||||
ComponentUnitNameEdit: TEdit;
|
ComponentUnitNameEdit: TEdit;
|
||||||
ComponentUnitNameLabel: TLabel;
|
ComponentUnitNameLabel: TLabel;
|
||||||
DependMaxVersionEdit: TEdit;
|
|
||||||
DependMaxVersionLabel: TLabel;
|
|
||||||
DependMinVersionEdit: TEdit;
|
|
||||||
DependMinVersionLabel: TLabel;
|
|
||||||
DependPkgNameLabel: TLabel;
|
|
||||||
FilesDeleteButton: TBitBtn;
|
FilesDeleteButton: TBitBtn;
|
||||||
FilesDirButton: TBitBtn;
|
FilesDirButton: TBitBtn;
|
||||||
FilesListView: TListView;
|
FilesListView: TListView;
|
||||||
FilesShortenButton: TBitBtn;
|
FilesShortenButton: TBitBtn;
|
||||||
LabelIconInfo: TLabel;
|
LabelIconInfo: TLabel;
|
||||||
DependPkgNameListBox: TListBox;
|
|
||||||
DependPkgNameFilter: TListFilterEdit;
|
|
||||||
NewComponentPage: TTabSheet;
|
NewComponentPage: TTabSheet;
|
||||||
NewDepPanel: TPanel;
|
|
||||||
NewRequirementPage: TTabSheet;
|
|
||||||
PageControl1: TPageControl;
|
PageControl1: TPageControl;
|
||||||
PalettePageCombobox: TComboBox;
|
PalettePageCombobox: TComboBox;
|
||||||
PalettePageLabel: TLabel;
|
PalettePageLabel: TLabel;
|
||||||
@ -121,7 +111,6 @@ type
|
|||||||
procedure ComponentUnitFileBrowseButtonClick(Sender: TObject);
|
procedure ComponentUnitFileBrowseButtonClick(Sender: TObject);
|
||||||
procedure ComponentUnitFileShortenButtonClick(Sender: TObject);
|
procedure ComponentUnitFileShortenButtonClick(Sender: TObject);
|
||||||
procedure ComponentUnitNameEditChange(Sender: TObject);
|
procedure ComponentUnitNameEditChange(Sender: TObject);
|
||||||
procedure DependPkgNameListBoxSelectionChange(Sender: TObject; {%H-}User: boolean);
|
|
||||||
procedure FilesAddButtonClick(Sender: TObject);
|
procedure FilesAddButtonClick(Sender: TObject);
|
||||||
procedure FilesDeleteButtonClick(Sender: TObject);
|
procedure FilesDeleteButtonClick(Sender: TObject);
|
||||||
procedure FilesDirButtonClick(Sender: TObject);
|
procedure FilesDirButtonClick(Sender: TObject);
|
||||||
@ -132,7 +121,6 @@ type
|
|||||||
procedure FormShow(Sender: TObject);
|
procedure FormShow(Sender: TObject);
|
||||||
procedure NewComponentButtonClick(Sender: TObject);
|
procedure NewComponentButtonClick(Sender: TObject);
|
||||||
procedure NewComponentPageResize(Sender: TObject);
|
procedure NewComponentPageResize(Sender: TObject);
|
||||||
procedure NewDependButtonClick(Sender: TObject);
|
|
||||||
procedure PageControl1Change(Sender: TObject);
|
procedure PageControl1Change(Sender: TObject);
|
||||||
private
|
private
|
||||||
fLastNewComponentAncestorType: string;
|
fLastNewComponentAncestorType: string;
|
||||||
@ -148,12 +136,9 @@ type
|
|||||||
procedure SetLazPackage(const AValue: TLazPackage);
|
procedure SetLazPackage(const AValue: TLazPackage);
|
||||||
procedure SetupComponents;
|
procedure SetupComponents;
|
||||||
procedure SetupNewComponentPage;
|
procedure SetupNewComponentPage;
|
||||||
procedure SetupAddDependencyPage;
|
|
||||||
procedure SetupAddFilesPage;
|
procedure SetupAddFilesPage;
|
||||||
procedure OnIterateComponentClasses(PkgComponent: TPkgComponent);
|
procedure OnIterateComponentClasses(PkgComponent: TPkgComponent);
|
||||||
procedure OnIteratePackages(APackageID: TLazPackageID);
|
|
||||||
function CheckNewCompOk: Boolean;
|
function CheckNewCompOk: Boolean;
|
||||||
function CheckNewReqOk: Boolean;
|
|
||||||
function CheckFilesButtonsOk: Boolean;
|
function CheckFilesButtonsOk: Boolean;
|
||||||
procedure AutoCompleteNewComponent;
|
procedure AutoCompleteNewComponent;
|
||||||
procedure AutoCompleteNewComponentUnitName;
|
procedure AutoCompleteNewComponentUnitName;
|
||||||
@ -164,7 +149,6 @@ type
|
|||||||
Params: TAddToPkgResult;
|
Params: TAddToPkgResult;
|
||||||
procedure UpdateAvailableAncestorTypes;
|
procedure UpdateAvailableAncestorTypes;
|
||||||
procedure UpdateAvailablePageNames;
|
procedure UpdateAvailablePageNames;
|
||||||
procedure UpdateAvailableDependencyNames;
|
|
||||||
public
|
public
|
||||||
property LazPackage: TLazPackage read FLazPackage write SetLazPackage;
|
property LazPackage: TLazPackage read FLazPackage write SetLazPackage;
|
||||||
property OnGetIDEFileInfo: TGetIDEFileStateEvent read FOnGetIDEFileInfo
|
property OnGetIDEFileInfo: TGetIDEFileStateEvent read FOnGetIDEFileInfo
|
||||||
@ -326,11 +310,6 @@ begin
|
|||||||
CheckNewCompOk;
|
CheckNewCompOk;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAddToPackageDlg.DependPkgNameListBoxSelectionChange(Sender: TObject; User: boolean);
|
|
||||||
begin
|
|
||||||
CheckNewReqOk;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAddToPackageDlg.FilesAddButtonClick(Sender: TObject);
|
procedure TAddToPackageDlg.FilesAddButtonClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
@ -634,52 +613,6 @@ begin
|
|||||||
AncestorComboBox.Left:=x+6;
|
AncestorComboBox.Left:=x+6;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAddToPackageDlg.NewDependButtonClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
NewDependency: TPkgDependency;
|
|
||||||
begin
|
|
||||||
Params.Clear;
|
|
||||||
Params.AddType:=d2ptRequiredPkg;
|
|
||||||
|
|
||||||
NewDependency:=TPkgDependency.Create;
|
|
||||||
try
|
|
||||||
// check minimum version
|
|
||||||
if DependMinVersionEdit.Text<>'' then begin
|
|
||||||
if not NewDependency.MinVersion.ReadString(DependMinVersionEdit.Text) then
|
|
||||||
begin
|
|
||||||
IDEMessageDialog(lisProjAddInvalidVersion,
|
|
||||||
Format(lisA2PTheMinimumVersionIsInvalidPleaseUseTheFormatMajor,
|
|
||||||
[DependMinVersionEdit.Text, LineEnding, LineEnding]),
|
|
||||||
mtError,[mbCancel]);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
NewDependency.Flags:=NewDependency.Flags+[pdfMinVersion];
|
|
||||||
end;
|
|
||||||
// check maximum version
|
|
||||||
if DependMaxVersionEdit.Text<>'' then begin
|
|
||||||
if not NewDependency.MaxVersion.ReadString(DependMaxVersionEdit.Text) then
|
|
||||||
begin
|
|
||||||
IDEMessageDialog(lisProjAddInvalidVersion,
|
|
||||||
Format(lisA2PTheMaximumVersionIsInvalidPleaseUseTheFormatMajor,
|
|
||||||
[DependMaxVersionEdit.Text, LineEnding, LineEnding]),
|
|
||||||
mtError,[mbCancel]);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
NewDependency.Flags:=NewDependency.Flags+[pdfMaxVersion];
|
|
||||||
end;
|
|
||||||
|
|
||||||
NewDependency.PackageName:=DependPkgNameListBox.Items[DependPkgNameListBox.ItemIndex];
|
|
||||||
ModalResult:=CheckAddingPackageDependency(LazPackage,NewDependency,false,true);
|
|
||||||
if ModalResult<>mrOk then exit;
|
|
||||||
|
|
||||||
// ok
|
|
||||||
Params.Dependency:=NewDependency;
|
|
||||||
NewDependency:=nil;
|
|
||||||
finally
|
|
||||||
NewDependency.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAddToPackageDlg.SetLazPackage(const AValue: TLazPackage);
|
procedure TAddToPackageDlg.SetLazPackage(const AValue: TLazPackage);
|
||||||
begin
|
begin
|
||||||
if FLazPackage=AValue then exit;
|
if FLazPackage=AValue then exit;
|
||||||
@ -687,29 +620,23 @@ begin
|
|||||||
Params.Pkg:=FLazPackage;
|
Params.Pkg:=FLazPackage;
|
||||||
UpdateAvailableAncestorTypes;
|
UpdateAvailableAncestorTypes;
|
||||||
UpdateAvailablePageNames;
|
UpdateAvailablePageNames;
|
||||||
UpdateAvailableDependencyNames;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAddToPackageDlg.GetActivatePage: TAddToPkgType;
|
function TAddToPackageDlg.GetActivatePage: TAddToPkgType;
|
||||||
begin
|
begin
|
||||||
if PageControl1.ActivePage=NewComponentPage then
|
if PageControl1.ActivePage=NewComponentPage then
|
||||||
Result:=d2ptNewComponent
|
Result:=d2ptNewComponent
|
||||||
else if PageControl1.ActivePage=NewRequirementPage then
|
|
||||||
Result:=d2ptRequiredPkg
|
|
||||||
else {if PageControl1.ActivePage=AddFilesPage then } begin
|
else {if PageControl1.ActivePage=AddFilesPage then } begin
|
||||||
Assert(PageControl1.ActivePage=AddFilesPage,
|
Assert(PageControl1.ActivePage=AddFilesPage,
|
||||||
'TAddToPackageDlg.GetActivatePage: PageControl1.ActivePage <> AddFilesPage');
|
'TAddToPackageDlg.GetActivatePage: PageControl1.ActivePage <> AddFilesPage');
|
||||||
Result:=d2ptFiles;
|
Result:=d2ptFiles;
|
||||||
end;
|
end;
|
||||||
//else
|
|
||||||
// Result:=d2ptNewFile;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAddToPackageDlg.SetActivatePage(AValue: TAddToPkgType);
|
procedure TAddToPackageDlg.SetActivatePage(AValue: TAddToPkgType);
|
||||||
begin
|
begin
|
||||||
case AValue of
|
case AValue of
|
||||||
d2ptNewComponent: PageControl1.ActivePage:=NewComponentPage;
|
d2ptNewComponent: PageControl1.ActivePage:=NewComponentPage;
|
||||||
d2ptRequiredPkg: PageControl1.ActivePage:=NewRequirementPage;
|
|
||||||
d2ptFiles: PageControl1.ActivePage:=AddFilesPage;
|
d2ptFiles: PageControl1.ActivePage:=AddFilesPage;
|
||||||
else raise Exception.Create('TAddToPackageDlg.SetActivatePage: invalid value.');
|
else raise Exception.Create('TAddToPackageDlg.SetActivatePage: invalid value.');
|
||||||
end;
|
end;
|
||||||
@ -721,12 +648,6 @@ begin
|
|||||||
ButtonPanel1.OKButton.Enabled:=Result;
|
ButtonPanel1.OKButton.Enabled:=Result;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAddToPackageDlg.CheckNewReqOk: Boolean;
|
|
||||||
begin
|
|
||||||
Result:=DependPkgNameListBox.ItemIndex>-1;
|
|
||||||
ButtonPanel1.OKButton.Enabled:=Result;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAddToPackageDlg.PageControl1Change(Sender: TObject);
|
procedure TAddToPackageDlg.PageControl1Change(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
case PageControl1.PageIndex of
|
case PageControl1.PageIndex of
|
||||||
@ -735,12 +656,7 @@ begin
|
|||||||
ButtonPanel1.OkButton.OnClick:=@NewComponentButtonClick;
|
ButtonPanel1.OkButton.OnClick:=@NewComponentButtonClick;
|
||||||
CheckNewCompOk;
|
CheckNewCompOk;
|
||||||
end;
|
end;
|
||||||
1: begin // New Requirement
|
1: begin // Add Files
|
||||||
ButtonPanel1.OkButton.Caption:=lisA2PCreateNewReq;
|
|
||||||
ButtonPanel1.OkButton.OnClick:=@NewDependButtonClick;
|
|
||||||
CheckNewReqOk;
|
|
||||||
end;
|
|
||||||
2: begin // Add Files
|
|
||||||
ButtonPanel1.OkButton.Caption:=lisA2PAddFilesToPackage;
|
ButtonPanel1.OkButton.Caption:=lisA2PAddFilesToPackage;
|
||||||
ButtonPanel1.OkButton.OnClick:=@FilesAddButtonClick;
|
ButtonPanel1.OkButton.OnClick:=@FilesAddButtonClick;
|
||||||
CheckFilesButtonsOk;
|
CheckFilesButtonsOk;
|
||||||
@ -750,17 +666,12 @@ end;
|
|||||||
|
|
||||||
procedure TAddToPackageDlg.SetupComponents;
|
procedure TAddToPackageDlg.SetupComponents;
|
||||||
begin
|
begin
|
||||||
//NewFilePage.Caption:=lisA2PNewFile;
|
|
||||||
NewComponentPage.Caption:=lisA2PNewComponent;
|
NewComponentPage.Caption:=lisA2PNewComponent;
|
||||||
NewRequirementPage.Caption:=lisProjAddNewRequirement;
|
|
||||||
AddFilesPage.Caption:=lisA2PAddFiles;
|
AddFilesPage.Caption:=lisA2PAddFiles;
|
||||||
ButtonPanel1.CancelButton.Caption:=lisCancel;
|
ButtonPanel1.CancelButton.Caption:=lisCancel;
|
||||||
PageControl1.PageIndex:=0;
|
PageControl1.PageIndex:=0;
|
||||||
PageControl1Change(PageControl1);
|
PageControl1Change(PageControl1);
|
||||||
|
|
||||||
//SetupNewFilePage;
|
|
||||||
SetupNewComponentPage;
|
SetupNewComponentPage;
|
||||||
SetupAddDependencyPage;
|
|
||||||
SetupAddFilesPage;
|
SetupAddFilesPage;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -792,15 +703,6 @@ begin
|
|||||||
ComponentIconBitBtn.Height:=ComponentPaletteBtnHeight;
|
ComponentIconBitBtn.Height:=ComponentPaletteBtnHeight;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAddToPackageDlg.SetupAddDependencyPage;
|
|
||||||
begin
|
|
||||||
DependPkgNameLabel.Caption:=lisProjAddPackageName;
|
|
||||||
DependMinVersionLabel.Caption:=lisProjAddMinimumVersionOptional;
|
|
||||||
DependMinVersionEdit.Text:='';
|
|
||||||
DependMaxVersionLabel.Caption:=lisProjAddMaximumVersionOptional;
|
|
||||||
DependMaxVersionEdit.Text:='';
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAddToPackageDlg.SetupAddFilesPage;
|
procedure TAddToPackageDlg.SetupAddFilesPage;
|
||||||
var
|
var
|
||||||
CurColumn: TListColumn;
|
CurColumn: TListColumn;
|
||||||
@ -840,14 +742,6 @@ begin
|
|||||||
fPkgComponents.Add(PkgComponent);
|
fPkgComponents.Add(PkgComponent);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAddToPackageDlg.OnIteratePackages(APackageID: TLazPackageID);
|
|
||||||
begin
|
|
||||||
if (APackageID<>LazPackage) and (fPackages.Find(APackageID)=nil) then begin
|
|
||||||
//DebugLn(['TAddToPackageDlg.OnIteratePackages ',APackageID.IDAsString,' ',DbgSName(APackageID)]);
|
|
||||||
fPackages.Add(APackageID);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TAddToPackageDlg.AutoCompleteNewComponent;
|
procedure TAddToPackageDlg.AutoCompleteNewComponent;
|
||||||
var
|
var
|
||||||
PkgComponent: TPkgComponent;
|
PkgComponent: TPkgComponent;
|
||||||
@ -906,8 +800,7 @@ begin
|
|||||||
ComponentUnitFileEdit.Text:=NewFileName;
|
ComponentUnitFileEdit.Text:=NewFileName;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAddToPackageDlg.SwitchRelativeAbsoluteFilename(const Filename: string
|
function TAddToPackageDlg.SwitchRelativeAbsoluteFilename(const Filename: string): string;
|
||||||
): string;
|
|
||||||
begin
|
begin
|
||||||
Result:=Filename;
|
Result:=Filename;
|
||||||
if (not LazPackage.HasDirectory)
|
if (not LazPackage.HasDirectory)
|
||||||
@ -1019,29 +912,6 @@ begin
|
|||||||
sl.Free;
|
sl.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAddToPackageDlg.UpdateAvailableDependencyNames;
|
|
||||||
var
|
|
||||||
ANode: TAVLTreeNode;
|
|
||||||
sl: TStringList;
|
|
||||||
PkgName: String;
|
|
||||||
Pkg: TLazPackage;
|
|
||||||
begin
|
|
||||||
fPackages.Clear;
|
|
||||||
PackageGraph.IteratePackages(fpfSearchAllExisting,@OnIteratePackages);
|
|
||||||
sl:=TStringList.Create;
|
|
||||||
ANode:=fPackages.FindLowest;
|
|
||||||
while ANode<>nil do begin
|
|
||||||
Pkg:=TLazPackage(ANode.Data);
|
|
||||||
PkgName:=Pkg.Name;
|
|
||||||
if (sl.IndexOf(PkgName)<0) then
|
|
||||||
sl.Add(PkgName);
|
|
||||||
ANode:=fPackages.FindSuccessor(ANode);
|
|
||||||
end;
|
|
||||||
DependPkgNameFilter.Items.Assign(sl);
|
|
||||||
DependPkgNameFilter.InvalidateFilter;
|
|
||||||
sl.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TAddToPkgResult }
|
{ TAddToPkgResult }
|
||||||
|
|
||||||
procedure TAddToPkgResult.Clear;
|
procedure TAddToPkgResult.Clear;
|
||||||
|
|||||||
@ -47,8 +47,8 @@ uses
|
|||||||
// IDE
|
// IDE
|
||||||
MainBase, IDEProcs, LazarusIDEStrConsts, IDEDefs, CompilerOptions,
|
MainBase, IDEProcs, LazarusIDEStrConsts, IDEDefs, CompilerOptions,
|
||||||
EnvironmentOpts, DialogProcs, InputHistory,
|
EnvironmentOpts, DialogProcs, InputHistory,
|
||||||
PackageDefs, AddToPackageDlg, PkgVirtualUnitEditor, MissingPkgFilesDlg,
|
PackageDefs, AddToPackageDlg, AddPkgDependencyDlg, ProjPackChecks,
|
||||||
PackageSystem, ProjPackChecks, CleanPkgDeps;
|
PkgVirtualUnitEditor, MissingPkgFilesDlg, PackageSystem, CleanPkgDeps;
|
||||||
|
|
||||||
const
|
const
|
||||||
PackageEditorMenuRootName = 'PackageEditor';
|
PackageEditorMenuRootName = 'PackageEditor';
|
||||||
@ -373,6 +373,7 @@ type
|
|||||||
procedure DoSortFiles;
|
procedure DoSortFiles;
|
||||||
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;
|
||||||
public
|
public
|
||||||
// IFilesEditorInterface
|
// IFilesEditorInterface
|
||||||
function FilesEditTreeView: TTreeView;
|
function FilesEditTreeView: TTreeView;
|
||||||
@ -1065,7 +1066,7 @@ end;
|
|||||||
|
|
||||||
procedure TPackageEditorForm.mnuAddNewReqrClick(Sender: TObject);
|
procedure TPackageEditorForm.mnuAddNewReqrClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ShowAddDialogEx(d2ptRequiredPkg);
|
ShowAddDepDialog;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPackageEditorForm.mnuAddNewFileClick(Sender: TObject);
|
procedure TPackageEditorForm.mnuAddNewFileClick(Sender: TObject);
|
||||||
@ -2108,7 +2109,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function TPackageEditorForm.ShowAddDialog(var DlgPage: TAddToPkgType): TModalResult;
|
function TPackageEditorForm.ShowAddDialog(var DlgPage: TAddToPkgType): TModalResult;
|
||||||
var
|
var
|
||||||
IgnoreUnitPaths, IgnoreIncPaths: TFilenameToStringTree;
|
IgnoreUnitPaths, IgnoreIncPaths: TFilenameToStringTree;
|
||||||
@ -2183,16 +2183,6 @@ var
|
|||||||
PackageEditors.CreateNewFile(Self,AddParams);
|
PackageEditors.CreateNewFile(Self,AddParams);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure AddRequiredPkg(AddParams: TAddToPkgResult);
|
|
||||||
begin
|
|
||||||
// add dependency
|
|
||||||
fForcedFlags:=[pefNeedUpdateRequiredPkgs];
|
|
||||||
PackageGraph.AddDependencyToPackage(LazPackage,AddParams.Dependency);
|
|
||||||
FreeAndNil(FNextSelectedPart);
|
|
||||||
FNextSelectedPart:=TPENodeData.Create(penDependency,
|
|
||||||
AddParams.Dependency.PackageName,false);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure AddFile(AddParams: TAddToPkgResult);
|
procedure AddFile(AddParams: TAddToPkgResult);
|
||||||
begin
|
begin
|
||||||
// add file
|
// add file
|
||||||
@ -2229,7 +2219,6 @@ begin
|
|||||||
d2ptUnit: AddUnit(AddParams);
|
d2ptUnit: AddUnit(AddParams);
|
||||||
d2ptVirtualUnit: AddVirtualUnit(AddParams);
|
d2ptVirtualUnit: AddVirtualUnit(AddParams);
|
||||||
d2ptNewComponent: AddNewComponent(AddParams);
|
d2ptNewComponent: AddNewComponent(AddParams);
|
||||||
d2ptRequiredPkg: AddRequiredPkg(AddParams);
|
|
||||||
d2ptFile: AddFile(AddParams);
|
d2ptFile: AddFile(AddParams);
|
||||||
end;
|
end;
|
||||||
OldParams:=AddParams;
|
OldParams:=AddParams;
|
||||||
@ -2238,7 +2227,7 @@ begin
|
|||||||
OldParams.Free;
|
OldParams.Free;
|
||||||
end;
|
end;
|
||||||
AddParams.Free;
|
AddParams.Free;
|
||||||
Assert(LazPackage.Modified, 'ShowAddDialog: LazPackage.Modified = False');
|
Assert(LazPackage.Modified, 'TPackageEditorForm.ShowAddDialog: LazPackage.Modified = False');
|
||||||
finally
|
finally
|
||||||
IgnoreUnitPaths.Free;
|
IgnoreUnitPaths.Free;
|
||||||
IgnoreIncPaths.Free;
|
IgnoreIncPaths.Free;
|
||||||
@ -2246,6 +2235,37 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TPackageEditorForm.ShowAddDepDialog: TModalResult;
|
||||||
|
var
|
||||||
|
Deps: TPkgDependencyList;
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
if LazPackage.ReadOnly then begin
|
||||||
|
UpdateButtons;
|
||||||
|
exit(mrCancel);
|
||||||
|
end;
|
||||||
|
Result:=ShowAddPkgDependencyDlg(LazPackage, Deps);
|
||||||
|
DebugLn(['TPackageEditorForm.ShowAddDepDialog: Deps.Count=', Deps.Count]);
|
||||||
|
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.ShowAddDepDialog: LazPackage.Modified = False');
|
||||||
|
finally
|
||||||
|
PackageGraph.EndUpdate;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
Deps.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TPackageEditorForm.BeginUpdate;
|
procedure TPackageEditorForm.BeginUpdate;
|
||||||
begin
|
begin
|
||||||
inc(fUpdateLock);
|
inc(fUpdateLock);
|
||||||
|
|||||||
@ -13,7 +13,7 @@ uses
|
|||||||
// IDEIntf
|
// IDEIntf
|
||||||
ComponentReg, IDEDialogs,
|
ComponentReg, IDEDialogs,
|
||||||
// IDE
|
// IDE
|
||||||
LazarusIDEStrConsts, IDEDefs, Project, PackageSystem, PackageDefs;
|
LazarusIDEStrConsts, IDEDefs, Project, PackageSystem, PackageDefs, ProjPackBase;
|
||||||
|
|
||||||
// Packages:
|
// Packages:
|
||||||
type
|
type
|
||||||
@ -21,7 +21,6 @@ type
|
|||||||
d2ptUnit,
|
d2ptUnit,
|
||||||
d2ptVirtualUnit,
|
d2ptVirtualUnit,
|
||||||
d2ptNewComponent,
|
d2ptNewComponent,
|
||||||
d2ptRequiredPkg,
|
|
||||||
d2ptFile,
|
d2ptFile,
|
||||||
d2ptFiles
|
d2ptFiles
|
||||||
);
|
);
|
||||||
@ -42,6 +41,10 @@ function CheckAddingProjectFile(AProject: TProject; NewFiles: TStringList;
|
|||||||
function CheckAddingProjectDependency(AProject: TProject;
|
function CheckAddingProjectDependency(AProject: TProject;
|
||||||
NewDependency: TPkgDependency): boolean;
|
NewDependency: TPkgDependency): boolean;
|
||||||
|
|
||||||
|
// Project or Package using the common interface
|
||||||
|
|
||||||
|
function CheckAddingDependency(AProjPack: IProjPack; ADependency: TPkgDependency): boolean;
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
@ -183,7 +186,7 @@ var
|
|||||||
s: String;
|
s: String;
|
||||||
begin
|
begin
|
||||||
Result:=mrCancel;
|
Result:=mrCancel;
|
||||||
|
DebugLn(['CheckAddingPackageDependency: ', LazPackage.Name]);
|
||||||
NewPkgName:=NewDependency.PackageName;
|
NewPkgName:=NewDependency.PackageName;
|
||||||
|
|
||||||
// check Max-Min version
|
// check Max-Min version
|
||||||
@ -199,7 +202,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// package name is checked earlier
|
// package name is checked earlier
|
||||||
Assert(IsValidPkgName(NewPkgName), 'CheckAddingDependency: '+NewPkgName+' is not valid.');
|
Assert(IsValidPkgName(NewPkgName), 'CheckAddingPackageDependency: '+NewPkgName+' is not valid.');
|
||||||
|
|
||||||
// check if package is already required
|
// check if package is already required
|
||||||
if (CompareText(NewPkgName,LazPackage.Name)=0)
|
if (CompareText(NewPkgName,LazPackage.Name)=0)
|
||||||
@ -230,7 +233,7 @@ begin
|
|||||||
ConflictDependency:=PackageGraph.FindConflictRecursively(
|
ConflictDependency:=PackageGraph.FindConflictRecursively(
|
||||||
LazPackage.FirstRequiredDependency,RequiredPackage);
|
LazPackage.FirstRequiredDependency,RequiredPackage);
|
||||||
if ConflictDependency<>nil then begin
|
if ConflictDependency<>nil then begin
|
||||||
DebugLn(['CheckAddingDependency ',LazPackage.Name,' requiring ',RequiredPackage.IDAsString,' conflicts with ',ConflictDependency.AsString]);
|
DebugLn(['CheckAddingPackageDependency ',LazPackage.Name,' requiring ',RequiredPackage.IDAsString,' conflicts with ',ConflictDependency.AsString]);
|
||||||
if not Quiet then
|
if not Quiet then
|
||||||
IDEMessageDialog(lisVersionMismatch,
|
IDEMessageDialog(lisVersionMismatch,
|
||||||
Format(lisUnableToAddTheDependencyBecauseThePackageHasAlread, [
|
Format(lisUnableToAddTheDependencyBecauseThePackageHasAlread, [
|
||||||
@ -245,7 +248,7 @@ begin
|
|||||||
if PathList<>nil then begin
|
if PathList<>nil then begin
|
||||||
try
|
try
|
||||||
s:=PackagePathToStr(PathList);
|
s:=PackagePathToStr(PathList);
|
||||||
DebugLn(['CheckAddingDependency ',LazPackage.Name,' requiring ',RequiredPackage.IDAsString,' creates cycles with ',s]);
|
DebugLn(['CheckAddingPackageDependency ',LazPackage.Name,' requiring ',RequiredPackage.IDAsString,' creates cycles with ',s]);
|
||||||
if not Quiet then
|
if not Quiet then
|
||||||
IDEMessageDialog(lisCircularDependencyDetected,
|
IDEMessageDialog(lisCircularDependencyDetected,
|
||||||
Format(lisUnableToAddTheDependencyBecauseThisWouldCreateA, [
|
Format(lisUnableToAddTheDependencyBecauseThisWouldCreateA, [
|
||||||
@ -263,7 +266,7 @@ begin
|
|||||||
if ProvidingAPackage<>nil then
|
if ProvidingAPackage<>nil then
|
||||||
begin
|
begin
|
||||||
// package is already provided by another package
|
// package is already provided by another package
|
||||||
DebugLn(['CheckAddingDependency ',LazPackage.Name,' requiring ',NewPkgName,', but is already provided by ',ProvidingAPackage.IDAsString]);
|
DebugLn(['CheckAddingPackageDependency ',LazPackage.Name,' requiring ',NewPkgName,', but is already provided by ',ProvidingAPackage.IDAsString]);
|
||||||
if WarnIfAlreadyThere then
|
if WarnIfAlreadyThere then
|
||||||
IDEMessageDialog(lisProjAddDependencyAlreadyExists,
|
IDEMessageDialog(lisProjAddDependencyAlreadyExists,
|
||||||
Format(lisUnableToAddTheDependencyBecauseThePackageHasAlread, [
|
Format(lisUnableToAddTheDependencyBecauseThePackageHasAlread, [
|
||||||
@ -355,7 +358,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// package name is checked earlier
|
// package name is checked earlier
|
||||||
Assert(IsValidPkgName(NewPkgName), 'CheckAddingDependency: ' + NewPkgName + ' is not valid.');
|
Assert(IsValidPkgName(NewPkgName), 'CheckAddingProjectDependency: ' + NewPkgName + ' is not valid.');
|
||||||
|
|
||||||
// check if package is already required
|
// check if package is already required
|
||||||
if AProject.FindDependencyByName(NewPkgName)<>nil then begin
|
if AProject.FindDependencyByName(NewPkgName)<>nil then begin
|
||||||
@ -377,6 +380,19 @@ begin
|
|||||||
Result:=true;
|
Result:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// Package or Project:
|
||||||
|
|
||||||
|
function CheckAddingDependency(AProjPack: IProjPack; ADependency: TPkgDependency): boolean;
|
||||||
|
// ToDo: Try to combine CheckAddingPackageDependency and CheckAddingProjectDependency
|
||||||
|
// somehow to use IProjPack param.
|
||||||
|
begin
|
||||||
|
Assert((AProjPack is TLazPackage) or (AProjPack is TProject),
|
||||||
|
'CheckAddingDependency: AProjPack is neither a project nor a package.');
|
||||||
|
if AProjPack is TLazPackage then
|
||||||
|
Result := CheckAddingPackageDependency(AProjPack as TLazPackage, ADependency, False, True) = mrOK
|
||||||
|
else
|
||||||
|
Result := CheckAddingProjectDependency(AProjPack as TProject, ADependency)
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user