mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-01 16:52:33 +02:00
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:
parent
6e4539b4b4
commit
e05552a178
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user