From 4323c5527317372be4a1d612ff3430ed060086c6 Mon Sep 17 00:00:00 2001 From: juha Date: Tue, 14 Feb 2012 07:04:03 +0000 Subject: [PATCH] IDE: Fix ordering of required packages in Project Inspector and Package Editor. Issue #21277 git-svn-id: trunk@35362 - --- components/lazcontrols/treefilteredit.pas | 14 ++++- ide/main.pp | 9 ++- ide/projectinspector.pas | 22 +++---- packager/packageeditor.pas | 75 +++++++---------------- 4 files changed, 47 insertions(+), 73 deletions(-) diff --git a/components/lazcontrols/treefilteredit.pas b/components/lazcontrols/treefilteredit.pas index 4688a1ba7d..27b8fae77c 100644 --- a/components/lazcontrols/treefilteredit.pas +++ b/components/lazcontrols/treefilteredit.pas @@ -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; @@ -135,6 +136,14 @@ begin fFilenameMap[ANodeText]:=AFullFilename; end; +function TTreeFilterBranch.GetData(AIndex: integer): TObject; +begin + if AIndexnil 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; diff --git a/ide/projectinspector.pas b/ide/projectinspector.pas index 8050112b5a..5279b0186c 100644 --- a/ide/projectinspector.pas +++ b/ide/projectinspector.pas @@ -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; diff --git a/packager/packageeditor.pas b/packager/packageeditor.pas index 0572967f3a..8b8651fd6b 100644 --- a/packager/packageeditor.pas +++ b/packager/packageeditor.pas @@ -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;