Package editor: Update the image for dependent package after modifying min/max version. Issue #32546.

git-svn-id: trunk@56082 -
This commit is contained in:
juha 2017-10-16 13:31:15 +00:00
parent 6e4539b4b4
commit e05552a178

View File

@ -317,6 +317,7 @@ type
FShowDirectoryHierarchy: boolean;
FSortAlphabetically: boolean;
FDirSummaryLabel: TLabel;
FSingleSelectedNode: TTreeNode;
FSingleSelectedFile: TPkgFile;
FSingleSelectedDep: TPkgDependency;
FFirstNodeData: array[TPENodeType] of TPENodeData;
@ -333,7 +334,8 @@ type
procedure SetupComponents;
function OnTreeViewGetImageIndex({%H-}Str: String; Data: TObject; var {%H-}AIsEnabled: Boolean): Integer;
procedure ShowAddDialogEx(AType: TAddToPkgType);
procedure UpdateNodeImage(TVNode: TTreeNode; NodeData: TPENodeData);
procedure UpdateNodeImage(TVNode: TTreeNode);
procedure UpdateNodeImage(TVNode: TTreeNode; NodeData: TPENodeData; Item: TObject);
procedure UpdatePending;
function CanUpdate(Flag: TPEFlag; Immediately: boolean): boolean;
procedure UpdateTitle(Immediately: boolean = false);
@ -651,11 +653,10 @@ end;
{ TPENodeData }
constructor TPENodeData.Create(aTyp: TPENodeType; aName: string;
aRemoved: boolean);
constructor TPENodeData.Create(aTyp: TPENodeType; aName: string; aRemoved: boolean);
begin
Typ:=aTyp;
Name:=aName;;
Name:=aName;
Removed:=aRemoved;
end;
@ -1677,9 +1678,8 @@ var
Flags: TPkgDependencyFlags;
MinVers, MaxVers: TPkgVersion;
begin
if LazPackage=nil then exit;
if FSingleSelectedDep=nil then exit;
if LazPackage.FindDependencyByName(FSingleSelectedDep.PackageName)<>FSingleSelectedDep
if (LazPackage=nil) or (FSingleSelectedNode=nil) or (FSingleSelectedDep=nil)
or (LazPackage.FindDependencyByName(FSingleSelectedDep.PackageName)<>FSingleSelectedDep)
then exit;
MinVers:=TPkgVersion.Create;
@ -1723,7 +1723,8 @@ begin
FSingleSelectedDep.MinVersion.Assign(MinVers);
FSingleSelectedDep.MaxVersion.Assign(MaxVers);
fForcedFlags:=[pefNeedUpdateRequiredPkgs];
UpdateNodeImage(FSingleSelectedNode);
//fForcedFlags:=[pefNeedUpdateRequiredPkgs];
LazPackage.Modified:=True;
finally
MaxVers.Free;
@ -1750,7 +1751,7 @@ begin
CurFile.HasRegisterProc:=CallRegisterProcCheckBox.Checked;
if not NodeData.Removed then
LazPackage.ModifySilently;
UpdateNodeImage(TVNode, NodeData);
UpdateNodeImage(TVNode, NodeData, Item);
end;
end;
@ -2323,13 +2324,31 @@ begin
Caption:=NewCaption;
end;
procedure TPackageEditorForm.UpdateNodeImage(TVNode: TTreeNode; NodeData: TPENodeData);
procedure TPackageEditorForm.UpdateNodeImage(TVNode: TTreeNode);
var
ena: Boolean;
ImgIndex: Integer;
NodeData: TPENodeData;
Item: TObject;
begin
ena := True; // String param is not used.
ImgIndex:=OnTreeViewGetImageIndex('', NodeData, ena);
if GetNodeDataItem(TVNode, NodeData, Item) then
UpdateNodeImage(TVNode, NodeData, Item);
end;
procedure TPackageEditorForm.UpdateNodeImage(TVNode: TTreeNode;
NodeData: TPENodeData; Item: TObject);
var
PkgDependency: TPkgDependency;
ImgIndex: Integer;
Ena: Boolean;
begin
Assert(Assigned(Item), 'TPackageEditorForm.UpdateNodeImage: Item = Nil.');
if Item is TPkgDependency then begin
PkgDependency:=TPkgDependency(Item);
// Try to load the package again. Min/max version may have changed.
PkgDependency.LoadPackageResult := lprUndefined;
PackageGraph.OpenDependency(PkgDependency, False);
end;
Ena := True; // Neither Ena nor the String param are used.
ImgIndex := OnTreeViewGetImageIndex('', NodeData, Ena);
TVNode.ImageIndex:=ImgIndex;
TVNode.SelectedIndex:=ImgIndex;
end;
@ -2658,7 +2677,6 @@ var
TVNode: TTreeNode;
SingleSelectedDirectory: TTreeNode;
SingleSelectedRemoved: Boolean;
SingleSelected: TTreeNode;
FileCount: integer;
HasRegisterProcCount: integer;
AddToUsesPkgSectionCount: integer;
@ -2668,11 +2686,11 @@ begin
FPlugins.Clear;
// check selection
FSingleSelectedNode:=nil;
FSingleSelectedDep:=nil;
FSingleSelectedFile:=nil;
SingleSelectedDirectory:=nil;
SingleSelectedRemoved:=false;
SingleSelected:=nil;
SelFileCount:=0;
SelDepCount:=0;
SelHasRegisterProc:=mubNone;
@ -2688,7 +2706,7 @@ begin
CurFile:=TPkgFile(Item);
inc(SelFileCount);
FSingleSelectedFile:=CurFile;
SingleSelected:=TVNode;
FSingleSelectedNode:=TVNode;
SingleSelectedRemoved:=NodeData.Removed;
MergeMultiBool(SelHasRegisterProc,CurFile.HasRegisterProc);
if CurFile.FileType in PkgFileUnitTypes then begin
@ -2715,13 +2733,13 @@ begin
inc(SelDepCount);
CurDependency:=TPkgDependency(Item);
FSingleSelectedDep:=CurDependency;
SingleSelected:=TVNode;
FSingleSelectedNode:=TVNode;
SingleSelectedRemoved:=NodeData.Removed;
end;
end else if IsDirectoryNode(TVNode) or (TVNode=FFilesNode) then begin
inc(SelDirCount);
SingleSelectedDirectory:=TVNode;
SingleSelected:=TVNode;
FSingleSelectedNode:=TVNode;
end;
end;
@ -2730,7 +2748,7 @@ begin
FSingleSelectedFile:=nil;
FSingleSelectedDep:=nil;
SingleSelectedDirectory:=nil;
SingleSelected:=nil;
FSingleSelectedNode:=nil;
end;
OnlyFilesSelected:=(SelFileCount>0) and (SelDepCount=0) and (SelDirCount=0);
OnlyFilesWithUnitsSelected:=OnlyFilesSelected and (SelUnitCount>0);
@ -2743,8 +2761,8 @@ begin
// move up/down (only single selection)
aVisible:=(not (SortAlphabetically or SingleSelectedRemoved))
and ((FSingleSelectedFile<>nil) or (FSingleSelectedDep<>nil));
MoveUpBtn.Enabled :=aVisible and Assigned(SingleSelected.GetPrevVisibleSibling);
MoveDownBtn.Enabled:=aVisible and Assigned(SingleSelected.GetNextVisibleSibling);
MoveUpBtn.Enabled :=aVisible and Assigned(FSingleSelectedNode.GetPrevVisibleSibling);
MoveDownBtn.Enabled:=aVisible and Assigned(FSingleSelectedNode.GetNextVisibleSibling);
// Min/Max version of dependency (only single selection)
aVisible:=FSingleSelectedDep<>nil;