mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-08 11:19:16 +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);
|
||||
destructor Destroy; override;
|
||||
procedure AddNodeData(ANodeText: string; AData: TObject; AFullFilename: string = '');
|
||||
function GetData(AIndex: integer): TObject;
|
||||
end;
|
||||
|
||||
TBranchList = specialize TFPGObjectList<TTreeFilterBranch>;
|
||||
@ -135,6 +136,14 @@ begin
|
||||
fFilenameMap[ANodeText]:=AFullFilename;
|
||||
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;
|
||||
begin
|
||||
if fOwner.SortData then
|
||||
@ -467,7 +476,6 @@ begin
|
||||
for i := 0 to fBranches.Count-1 do
|
||||
if fBranches[i].fRootNode = ARootNode then begin
|
||||
Result := fBranches[i];
|
||||
Result.fOriginalData.Clear;
|
||||
Break;
|
||||
end;
|
||||
end;
|
||||
@ -478,7 +486,9 @@ begin
|
||||
if not Assigned(fBranches) then
|
||||
fBranches := TBranchList.Create;
|
||||
Result := GetExistingBranch(ARootNode);
|
||||
if Result = Nil then begin
|
||||
if Assigned(Result) then
|
||||
Result.fOriginalData.Clear
|
||||
else begin
|
||||
Result := TTreeFilterBranch.Create(Self, ARootNode);
|
||||
fBranches.Add(Result);
|
||||
end;
|
||||
|
@ -17768,11 +17768,10 @@ var
|
||||
CurUnitInfo: TUnitInfo;
|
||||
begin
|
||||
CurUnitInfo:=ProjInspector.GetSelectedFile;
|
||||
if CurUnitInfo<>nil then begin
|
||||
DoOpenEditorFile(CurUnitInfo.Filename,-1,-1,[ofRegularFile]);
|
||||
exit;
|
||||
end;
|
||||
if PkgBoss.OnProjectInspectorOpen(Sender) then exit;
|
||||
if CurUnitInfo<>nil then
|
||||
DoOpenEditorFile(CurUnitInfo.Filename,-1,-1,[ofRegularFile])
|
||||
else
|
||||
PkgBoss.OnProjectInspectorOpen(Sender);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.OnExtToolNeedsOutputFilter(var OutputFilter: TOutputFilter;
|
||||
|
@ -238,7 +238,7 @@ var
|
||||
Dependency: TPkgDependency;
|
||||
begin
|
||||
Dependency:=GetSelectedDependency;
|
||||
if (Dependency=nil) or (Dependency.Removed)
|
||||
if SortAlphabetically or (Dependency=nil) or Dependency.Removed
|
||||
or (Dependency.PrevRequiresDependency=nil) then exit;
|
||||
LazProject.MoveRequiredDependencyUp(Dependency);
|
||||
end;
|
||||
@ -248,7 +248,7 @@ var
|
||||
Dependency: TPkgDependency;
|
||||
begin
|
||||
Dependency:=GetSelectedDependency;
|
||||
if (Dependency=nil) or (Dependency.Removed)
|
||||
if SortAlphabetically or (Dependency=nil) or Dependency.Removed
|
||||
or (Dependency.NextRequiresDependency=nil) then exit;
|
||||
LazProject.MoveRequiredDependencyDown(Dependency);
|
||||
end;
|
||||
@ -782,20 +782,17 @@ end;
|
||||
function TProjectInspectorForm.GetSelectedDependency: TPkgDependency;
|
||||
var
|
||||
CurNode: TTreeNode;
|
||||
NodeIndex: Integer;
|
||||
Branch: TTreeFilterBranch;
|
||||
begin
|
||||
Result:=nil;
|
||||
if LazProject=nil then exit;
|
||||
CurNode:=ItemsTreeView.Selected;
|
||||
if (CurNode=nil) then exit;
|
||||
NodeIndex:=CurNode.Index;
|
||||
if (CurNode.Parent=DependenciesNode) then begin
|
||||
Result:=GetDependencyWithIndex(LazProject.FirstRequiredDependency,
|
||||
pdlRequires,NodeIndex);
|
||||
end;
|
||||
if (CurNode.Parent=RemovedDependenciesNode) then begin
|
||||
Result:=GetDependencyWithIndex(LazProject.FirstRemovedDependency,
|
||||
pdlRequires,NodeIndex);
|
||||
if Assigned(CurNode) and Assigned(CurNode.Parent)
|
||||
and ((CurNode.Parent=DependenciesNode) or (CurNode.Parent=RemovedDependenciesNode))
|
||||
then begin
|
||||
Branch:=FilterEdit.GetExistingBranch(CurNode.Parent);
|
||||
Assert(Assigned(Branch));
|
||||
Result:=Branch.GetData(CurNode.Index) as TPkgDependency;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -805,7 +802,6 @@ begin
|
||||
Name:=NonModalIDEWindowNames[nmiwProjectInspector];
|
||||
Caption:=lisMenuProjectInspector;
|
||||
KeyPreview:=true;
|
||||
|
||||
SetupComponents;
|
||||
KeyPreview:=true;
|
||||
end;
|
||||
|
@ -802,6 +802,7 @@ end;
|
||||
|
||||
procedure TPackageEditorForm.MoveUpBtnClick(Sender: TObject);
|
||||
begin
|
||||
if SortAlphabetically then exit;
|
||||
if Assigned(FSelectedFile) then
|
||||
DoMoveCurrentFile(-1)
|
||||
else if Assigned(FSelectedDependency) then
|
||||
@ -810,6 +811,7 @@ end;
|
||||
|
||||
procedure TPackageEditorForm.MoveDownBtnClick(Sender: TObject);
|
||||
begin
|
||||
if SortAlphabetically then exit;
|
||||
if Assigned(FSelectedFile) then
|
||||
DoMoveCurrentFile(1)
|
||||
else if Assigned(FSelectedDependency) then
|
||||
@ -819,29 +821,18 @@ end;
|
||||
procedure TPackageEditorForm.OpenFileMenuItemClick(Sender: TObject);
|
||||
var
|
||||
CurNode: TTreeNode;
|
||||
NodeIndex: Integer;
|
||||
CurFile: TPkgFile;
|
||||
CurDependency: TPkgDependency;
|
||||
Removed: boolean;
|
||||
begin
|
||||
CurNode:=FilesTreeView.Selected;
|
||||
if CurNode=nil then exit;
|
||||
NodeIndex:=CurNode.Index;
|
||||
if CurNode.Parent<>nil then begin
|
||||
if TObject(CurNode.Data) is TFileNameItem then begin
|
||||
CurFile:=GetCurrentFile(Removed);
|
||||
if CurFile=nil then exit;
|
||||
DoOpenPkgFile(CurFile);
|
||||
end else if CurNode.Parent=FRequiredPackagesNode then begin
|
||||
CurDependency:=LazPackage.RequiredDepByIndex(NodeIndex);
|
||||
CurDependency:=nil;
|
||||
CurFile:=GetCurrentFile(Removed);
|
||||
if Assigned(CurFile) then
|
||||
DoOpenPkgFile(CurFile)
|
||||
else begin
|
||||
CurDependency:=GetCurrentDependency(Removed);
|
||||
if Assigned(CurDependency) then
|
||||
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;
|
||||
|
||||
@ -1802,7 +1793,7 @@ begin
|
||||
and LazPackage.EnableI18NForLFM;
|
||||
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);
|
||||
MoveDownBtn.Enabled:=b and Assigned(CurNode.GetNextVisibleSibling);
|
||||
|
||||
@ -1906,58 +1897,36 @@ end;
|
||||
function TPackageEditorForm.GetCurrentDependency(out Removed: boolean): TPkgDependency;
|
||||
var
|
||||
CurNode: TTreeNode;
|
||||
NodeIndex: Integer;
|
||||
Branch: TTreeFilterBranch;
|
||||
begin
|
||||
Result:=nil;
|
||||
Removed:=false;
|
||||
CurNode:=FilesTreeView.Selected;
|
||||
if (CurNode<>nil) and (CurNode.Parent<>nil) then begin
|
||||
NodeIndex:=CurNode.Index;
|
||||
if CurNode.Parent=FRequiredPackagesNode then begin
|
||||
Result:=LazPackage.RequiredDepByIndex(NodeIndex);
|
||||
Removed:=false;
|
||||
end else if CurNode.Parent=FRemovedRequiredNode then begin
|
||||
Result:=LazPackage.RemovedDepByIndex(NodeIndex);
|
||||
Removed:=true;
|
||||
end;
|
||||
if Assigned(CurNode) and Assigned(CurNode.Parent)
|
||||
and ((CurNode.Parent=FRequiredPackagesNode) or (CurNode.Parent=FRemovedRequiredNode))
|
||||
then begin
|
||||
Removed:=CurNode.Parent=FRemovedRequiredNode;
|
||||
Branch:=FilterEdit.GetExistingBranch(CurNode.Parent);
|
||||
Assert(Assigned(Branch));
|
||||
Result:=Branch.GetData(CurNode.Index) as TPkgDependency;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TPackageEditorForm.GetCurrentFile(out Removed: boolean): TPkgFile;
|
||||
var
|
||||
CurNode: TTreeNode;
|
||||
NodeIndex: Integer;
|
||||
Item: TFileNameItem;
|
||||
i: Integer;
|
||||
begin
|
||||
Result:=nil;
|
||||
Removed:=false;
|
||||
CurNode:=FilesTreeView.Selected;
|
||||
if (CurNode=nil) or (CurNode.Parent=nil) then exit;
|
||||
NodeIndex:=CurNode.Index;
|
||||
if CurNode.Parent=FRemovedFilesNode then
|
||||
begin
|
||||
Result:=LazPackage.RemovedFiles[NodeIndex];
|
||||
Result:=LazPackage.RemovedFiles[CurNode.Index];
|
||||
Removed:=true;
|
||||
exit;
|
||||
end;
|
||||
//debugln(['TPackageEditorForm.GetCurrentFile ',DbgSName(TObject(CurNode.Data)),' ',CurNode.Text]);
|
||||
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
|
||||
else if TObject(CurNode.Data) is TFileNameItem then
|
||||
Result:=LazPackage.FindPkgFile(TFileNameItem(CurNode.Data).Filename, False, True);
|
||||
end;
|
||||
|
||||
function TPackageEditorForm.IsDirectoryNode(Node: TTreeNode): boolean;
|
||||
|
Loading…
Reference in New Issue
Block a user