mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-10-02 14:11:14 +02:00
IDE: Fix ordering of required packages in Project Inspector and Package Editor. Issue #21277
git-svn-id: trunk@35362 -
This commit is contained in:
parent
2550bbf3be
commit
4323c55273
@ -40,6 +40,7 @@ type
|
|||||||
constructor Create(AOwner: TTreeFilterEdit; ARootNode: TTreeNode);
|
constructor Create(AOwner: TTreeFilterEdit; ARootNode: TTreeNode);
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure AddNodeData(ANodeText: string; AData: TObject; AFullFilename: string = '');
|
procedure AddNodeData(ANodeText: string; AData: TObject; AFullFilename: string = '');
|
||||||
|
function GetData(AIndex: integer): TObject;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TBranchList = specialize TFPGObjectList<TTreeFilterBranch>;
|
TBranchList = specialize TFPGObjectList<TTreeFilterBranch>;
|
||||||
@ -135,6 +136,14 @@ begin
|
|||||||
fFilenameMap[ANodeText]:=AFullFilename;
|
fFilenameMap[ANodeText]:=AFullFilename;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TTreeFilterBranch.GetData(AIndex: integer): TObject;
|
||||||
|
begin
|
||||||
|
if AIndex<fSortedData.Count then
|
||||||
|
Result:=fSortedData.Objects[AIndex]
|
||||||
|
else
|
||||||
|
Result:=Nil;
|
||||||
|
end;
|
||||||
|
|
||||||
function TTreeFilterBranch.CompareFNs(AFilename1,AFilename2: string): integer;
|
function TTreeFilterBranch.CompareFNs(AFilename1,AFilename2: string): integer;
|
||||||
begin
|
begin
|
||||||
if fOwner.SortData then
|
if fOwner.SortData then
|
||||||
@ -467,7 +476,6 @@ begin
|
|||||||
for i := 0 to fBranches.Count-1 do
|
for i := 0 to fBranches.Count-1 do
|
||||||
if fBranches[i].fRootNode = ARootNode then begin
|
if fBranches[i].fRootNode = ARootNode then begin
|
||||||
Result := fBranches[i];
|
Result := fBranches[i];
|
||||||
Result.fOriginalData.Clear;
|
|
||||||
Break;
|
Break;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -478,7 +486,9 @@ begin
|
|||||||
if not Assigned(fBranches) then
|
if not Assigned(fBranches) then
|
||||||
fBranches := TBranchList.Create;
|
fBranches := TBranchList.Create;
|
||||||
Result := GetExistingBranch(ARootNode);
|
Result := GetExistingBranch(ARootNode);
|
||||||
if Result = Nil then begin
|
if Assigned(Result) then
|
||||||
|
Result.fOriginalData.Clear
|
||||||
|
else begin
|
||||||
Result := TTreeFilterBranch.Create(Self, ARootNode);
|
Result := TTreeFilterBranch.Create(Self, ARootNode);
|
||||||
fBranches.Add(Result);
|
fBranches.Add(Result);
|
||||||
end;
|
end;
|
||||||
|
@ -17768,11 +17768,10 @@ var
|
|||||||
CurUnitInfo: TUnitInfo;
|
CurUnitInfo: TUnitInfo;
|
||||||
begin
|
begin
|
||||||
CurUnitInfo:=ProjInspector.GetSelectedFile;
|
CurUnitInfo:=ProjInspector.GetSelectedFile;
|
||||||
if CurUnitInfo<>nil then begin
|
if CurUnitInfo<>nil then
|
||||||
DoOpenEditorFile(CurUnitInfo.Filename,-1,-1,[ofRegularFile]);
|
DoOpenEditorFile(CurUnitInfo.Filename,-1,-1,[ofRegularFile])
|
||||||
exit;
|
else
|
||||||
end;
|
PkgBoss.OnProjectInspectorOpen(Sender);
|
||||||
if PkgBoss.OnProjectInspectorOpen(Sender) then exit;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.OnExtToolNeedsOutputFilter(var OutputFilter: TOutputFilter;
|
procedure TMainIDE.OnExtToolNeedsOutputFilter(var OutputFilter: TOutputFilter;
|
||||||
|
@ -238,7 +238,7 @@ var
|
|||||||
Dependency: TPkgDependency;
|
Dependency: TPkgDependency;
|
||||||
begin
|
begin
|
||||||
Dependency:=GetSelectedDependency;
|
Dependency:=GetSelectedDependency;
|
||||||
if (Dependency=nil) or (Dependency.Removed)
|
if SortAlphabetically or (Dependency=nil) or Dependency.Removed
|
||||||
or (Dependency.PrevRequiresDependency=nil) then exit;
|
or (Dependency.PrevRequiresDependency=nil) then exit;
|
||||||
LazProject.MoveRequiredDependencyUp(Dependency);
|
LazProject.MoveRequiredDependencyUp(Dependency);
|
||||||
end;
|
end;
|
||||||
@ -248,7 +248,7 @@ var
|
|||||||
Dependency: TPkgDependency;
|
Dependency: TPkgDependency;
|
||||||
begin
|
begin
|
||||||
Dependency:=GetSelectedDependency;
|
Dependency:=GetSelectedDependency;
|
||||||
if (Dependency=nil) or (Dependency.Removed)
|
if SortAlphabetically or (Dependency=nil) or Dependency.Removed
|
||||||
or (Dependency.NextRequiresDependency=nil) then exit;
|
or (Dependency.NextRequiresDependency=nil) then exit;
|
||||||
LazProject.MoveRequiredDependencyDown(Dependency);
|
LazProject.MoveRequiredDependencyDown(Dependency);
|
||||||
end;
|
end;
|
||||||
@ -782,20 +782,17 @@ end;
|
|||||||
function TProjectInspectorForm.GetSelectedDependency: TPkgDependency;
|
function TProjectInspectorForm.GetSelectedDependency: TPkgDependency;
|
||||||
var
|
var
|
||||||
CurNode: TTreeNode;
|
CurNode: TTreeNode;
|
||||||
NodeIndex: Integer;
|
Branch: TTreeFilterBranch;
|
||||||
begin
|
begin
|
||||||
Result:=nil;
|
Result:=nil;
|
||||||
if LazProject=nil then exit;
|
if LazProject=nil then exit;
|
||||||
CurNode:=ItemsTreeView.Selected;
|
CurNode:=ItemsTreeView.Selected;
|
||||||
if (CurNode=nil) then exit;
|
if Assigned(CurNode) and Assigned(CurNode.Parent)
|
||||||
NodeIndex:=CurNode.Index;
|
and ((CurNode.Parent=DependenciesNode) or (CurNode.Parent=RemovedDependenciesNode))
|
||||||
if (CurNode.Parent=DependenciesNode) then begin
|
then begin
|
||||||
Result:=GetDependencyWithIndex(LazProject.FirstRequiredDependency,
|
Branch:=FilterEdit.GetExistingBranch(CurNode.Parent);
|
||||||
pdlRequires,NodeIndex);
|
Assert(Assigned(Branch));
|
||||||
end;
|
Result:=Branch.GetData(CurNode.Index) as TPkgDependency;
|
||||||
if (CurNode.Parent=RemovedDependenciesNode) then begin
|
|
||||||
Result:=GetDependencyWithIndex(LazProject.FirstRemovedDependency,
|
|
||||||
pdlRequires,NodeIndex);
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -805,7 +802,6 @@ begin
|
|||||||
Name:=NonModalIDEWindowNames[nmiwProjectInspector];
|
Name:=NonModalIDEWindowNames[nmiwProjectInspector];
|
||||||
Caption:=lisMenuProjectInspector;
|
Caption:=lisMenuProjectInspector;
|
||||||
KeyPreview:=true;
|
KeyPreview:=true;
|
||||||
|
|
||||||
SetupComponents;
|
SetupComponents;
|
||||||
KeyPreview:=true;
|
KeyPreview:=true;
|
||||||
end;
|
end;
|
||||||
|
@ -802,6 +802,7 @@ end;
|
|||||||
|
|
||||||
procedure TPackageEditorForm.MoveUpBtnClick(Sender: TObject);
|
procedure TPackageEditorForm.MoveUpBtnClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
if SortAlphabetically then exit;
|
||||||
if Assigned(FSelectedFile) then
|
if Assigned(FSelectedFile) then
|
||||||
DoMoveCurrentFile(-1)
|
DoMoveCurrentFile(-1)
|
||||||
else if Assigned(FSelectedDependency) then
|
else if Assigned(FSelectedDependency) then
|
||||||
@ -810,6 +811,7 @@ end;
|
|||||||
|
|
||||||
procedure TPackageEditorForm.MoveDownBtnClick(Sender: TObject);
|
procedure TPackageEditorForm.MoveDownBtnClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
if SortAlphabetically then exit;
|
||||||
if Assigned(FSelectedFile) then
|
if Assigned(FSelectedFile) then
|
||||||
DoMoveCurrentFile(1)
|
DoMoveCurrentFile(1)
|
||||||
else if Assigned(FSelectedDependency) then
|
else if Assigned(FSelectedDependency) then
|
||||||
@ -819,29 +821,18 @@ end;
|
|||||||
procedure TPackageEditorForm.OpenFileMenuItemClick(Sender: TObject);
|
procedure TPackageEditorForm.OpenFileMenuItemClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
CurNode: TTreeNode;
|
CurNode: TTreeNode;
|
||||||
NodeIndex: Integer;
|
|
||||||
CurFile: TPkgFile;
|
CurFile: TPkgFile;
|
||||||
CurDependency: TPkgDependency;
|
CurDependency: TPkgDependency;
|
||||||
Removed: boolean;
|
Removed: boolean;
|
||||||
begin
|
begin
|
||||||
CurNode:=FilesTreeView.Selected;
|
CurDependency:=nil;
|
||||||
if CurNode=nil then exit;
|
CurFile:=GetCurrentFile(Removed);
|
||||||
NodeIndex:=CurNode.Index;
|
if Assigned(CurFile) then
|
||||||
if CurNode.Parent<>nil then begin
|
DoOpenPkgFile(CurFile)
|
||||||
if TObject(CurNode.Data) is TFileNameItem then begin
|
else begin
|
||||||
CurFile:=GetCurrentFile(Removed);
|
CurDependency:=GetCurrentDependency(Removed);
|
||||||
if CurFile=nil then exit;
|
if Assigned(CurDependency) then
|
||||||
DoOpenPkgFile(CurFile);
|
|
||||||
end else if CurNode.Parent=FRequiredPackagesNode then begin
|
|
||||||
CurDependency:=LazPackage.RequiredDepByIndex(NodeIndex);
|
|
||||||
PackageEditors.OpenDependency(Self,CurDependency);
|
PackageEditors.OpenDependency(Self,CurDependency);
|
||||||
end else if CurNode.Parent=FRemovedFilesNode then begin
|
|
||||||
CurFile:=LazPackage.RemovedFiles[NodeIndex];
|
|
||||||
DoOpenPkgFile(CurFile);
|
|
||||||
end else if CurNode.Parent=FRemovedRequiredNode then begin
|
|
||||||
CurDependency:=LazPackage.RemovedDepByIndex(NodeIndex);
|
|
||||||
PackageEditors.OpenDependency(Self,CurDependency);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1802,7 +1793,7 @@ begin
|
|||||||
and LazPackage.EnableI18NForLFM;
|
and LazPackage.EnableI18NForLFM;
|
||||||
FDirSummaryLabel.Visible:=IsDir;
|
FDirSummaryLabel.Visible:=IsDir;
|
||||||
|
|
||||||
b:=Assigned(FSelectedFile) or Assigned(FSelectedDependency);
|
b:=(Assigned(FSelectedFile) or Assigned(FSelectedDependency)) and not SortAlphabetically;
|
||||||
MoveUpBtn.Enabled :=b and Assigned(CurNode.GetPrevVisibleSibling);
|
MoveUpBtn.Enabled :=b and Assigned(CurNode.GetPrevVisibleSibling);
|
||||||
MoveDownBtn.Enabled:=b and Assigned(CurNode.GetNextVisibleSibling);
|
MoveDownBtn.Enabled:=b and Assigned(CurNode.GetNextVisibleSibling);
|
||||||
|
|
||||||
@ -1906,58 +1897,36 @@ end;
|
|||||||
function TPackageEditorForm.GetCurrentDependency(out Removed: boolean): TPkgDependency;
|
function TPackageEditorForm.GetCurrentDependency(out Removed: boolean): TPkgDependency;
|
||||||
var
|
var
|
||||||
CurNode: TTreeNode;
|
CurNode: TTreeNode;
|
||||||
NodeIndex: Integer;
|
Branch: TTreeFilterBranch;
|
||||||
begin
|
begin
|
||||||
Result:=nil;
|
Result:=nil;
|
||||||
Removed:=false;
|
Removed:=false;
|
||||||
CurNode:=FilesTreeView.Selected;
|
CurNode:=FilesTreeView.Selected;
|
||||||
if (CurNode<>nil) and (CurNode.Parent<>nil) then begin
|
if Assigned(CurNode) and Assigned(CurNode.Parent)
|
||||||
NodeIndex:=CurNode.Index;
|
and ((CurNode.Parent=FRequiredPackagesNode) or (CurNode.Parent=FRemovedRequiredNode))
|
||||||
if CurNode.Parent=FRequiredPackagesNode then begin
|
then begin
|
||||||
Result:=LazPackage.RequiredDepByIndex(NodeIndex);
|
Removed:=CurNode.Parent=FRemovedRequiredNode;
|
||||||
Removed:=false;
|
Branch:=FilterEdit.GetExistingBranch(CurNode.Parent);
|
||||||
end else if CurNode.Parent=FRemovedRequiredNode then begin
|
Assert(Assigned(Branch));
|
||||||
Result:=LazPackage.RemovedDepByIndex(NodeIndex);
|
Result:=Branch.GetData(CurNode.Index) as TPkgDependency;
|
||||||
Removed:=true;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TPackageEditorForm.GetCurrentFile(out Removed: boolean): TPkgFile;
|
function TPackageEditorForm.GetCurrentFile(out Removed: boolean): TPkgFile;
|
||||||
var
|
var
|
||||||
CurNode: TTreeNode;
|
CurNode: TTreeNode;
|
||||||
NodeIndex: Integer;
|
|
||||||
Item: TFileNameItem;
|
|
||||||
i: Integer;
|
|
||||||
begin
|
begin
|
||||||
Result:=nil;
|
Result:=nil;
|
||||||
Removed:=false;
|
Removed:=false;
|
||||||
CurNode:=FilesTreeView.Selected;
|
CurNode:=FilesTreeView.Selected;
|
||||||
if (CurNode=nil) or (CurNode.Parent=nil) then exit;
|
if (CurNode=nil) or (CurNode.Parent=nil) then exit;
|
||||||
NodeIndex:=CurNode.Index;
|
|
||||||
if CurNode.Parent=FRemovedFilesNode then
|
if CurNode.Parent=FRemovedFilesNode then
|
||||||
begin
|
begin
|
||||||
Result:=LazPackage.RemovedFiles[NodeIndex];
|
Result:=LazPackage.RemovedFiles[CurNode.Index];
|
||||||
Removed:=true;
|
Removed:=true;
|
||||||
exit;
|
end
|
||||||
end;
|
else if TObject(CurNode.Data) is TFileNameItem then
|
||||||
//debugln(['TPackageEditorForm.GetCurrentFile ',DbgSName(TObject(CurNode.Data)),' ',CurNode.Text]);
|
Result:=LazPackage.FindPkgFile(TFileNameItem(CurNode.Data).Filename, False, True);
|
||||||
if TObject(CurNode.Data) is TFileNameItem then
|
|
||||||
begin
|
|
||||||
Item:=TFileNameItem(CurNode.Data);
|
|
||||||
//debugln(['TPackageEditorForm.GetCurrentFile Item=',Item.Filename,' ',Item.IsDirectory]);
|
|
||||||
for i:=0 to LazPackage.FileCount-1 do
|
|
||||||
begin
|
|
||||||
//if ExtractFIlename(LazPackage.Files[i].Filename)=ExtractFIlename(Item.Filename) then
|
|
||||||
// debugln(['TPackageEditorForm.GetCurrentFile FOUND ',LazPackage.Files[i].Filename,' ',Item.Filename=LazPackage.Files[i].Filename]);
|
|
||||||
if Item.Filename=LazPackage.Files[i].Filename then
|
|
||||||
begin
|
|
||||||
Result:=LazPackage.Files[i];
|
|
||||||
Removed:=false;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TPackageEditorForm.IsDirectoryNode(Node: TTreeNode): boolean;
|
function TPackageEditorForm.IsDirectoryNode(Node: TTreeNode): boolean;
|
||||||
|
Loading…
Reference in New Issue
Block a user