mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 08:36:04 +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;
|
FShowDirectoryHierarchy: boolean;
|
||||||
FSortAlphabetically: boolean;
|
FSortAlphabetically: boolean;
|
||||||
FDirSummaryLabel: TLabel;
|
FDirSummaryLabel: TLabel;
|
||||||
|
FSingleSelectedNode: TTreeNode;
|
||||||
FSingleSelectedFile: TPkgFile;
|
FSingleSelectedFile: TPkgFile;
|
||||||
FSingleSelectedDep: TPkgDependency;
|
FSingleSelectedDep: TPkgDependency;
|
||||||
FFirstNodeData: array[TPENodeType] of TPENodeData;
|
FFirstNodeData: array[TPENodeType] of TPENodeData;
|
||||||
@ -333,7 +334,8 @@ type
|
|||||||
procedure SetupComponents;
|
procedure SetupComponents;
|
||||||
function OnTreeViewGetImageIndex({%H-}Str: String; Data: TObject; var {%H-}AIsEnabled: Boolean): Integer;
|
function OnTreeViewGetImageIndex({%H-}Str: String; Data: TObject; var {%H-}AIsEnabled: Boolean): Integer;
|
||||||
procedure ShowAddDialogEx(AType: TAddToPkgType);
|
procedure ShowAddDialogEx(AType: TAddToPkgType);
|
||||||
procedure UpdateNodeImage(TVNode: TTreeNode; NodeData: TPENodeData);
|
procedure UpdateNodeImage(TVNode: TTreeNode);
|
||||||
|
procedure UpdateNodeImage(TVNode: TTreeNode; NodeData: TPENodeData; Item: TObject);
|
||||||
procedure UpdatePending;
|
procedure UpdatePending;
|
||||||
function CanUpdate(Flag: TPEFlag; Immediately: boolean): boolean;
|
function CanUpdate(Flag: TPEFlag; Immediately: boolean): boolean;
|
||||||
procedure UpdateTitle(Immediately: boolean = false);
|
procedure UpdateTitle(Immediately: boolean = false);
|
||||||
@ -651,11 +653,10 @@ end;
|
|||||||
|
|
||||||
{ TPENodeData }
|
{ TPENodeData }
|
||||||
|
|
||||||
constructor TPENodeData.Create(aTyp: TPENodeType; aName: string;
|
constructor TPENodeData.Create(aTyp: TPENodeType; aName: string; aRemoved: boolean);
|
||||||
aRemoved: boolean);
|
|
||||||
begin
|
begin
|
||||||
Typ:=aTyp;
|
Typ:=aTyp;
|
||||||
Name:=aName;;
|
Name:=aName;
|
||||||
Removed:=aRemoved;
|
Removed:=aRemoved;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1677,9 +1678,8 @@ var
|
|||||||
Flags: TPkgDependencyFlags;
|
Flags: TPkgDependencyFlags;
|
||||||
MinVers, MaxVers: TPkgVersion;
|
MinVers, MaxVers: TPkgVersion;
|
||||||
begin
|
begin
|
||||||
if LazPackage=nil then exit;
|
if (LazPackage=nil) or (FSingleSelectedNode=nil) or (FSingleSelectedDep=nil)
|
||||||
if FSingleSelectedDep=nil then exit;
|
or (LazPackage.FindDependencyByName(FSingleSelectedDep.PackageName)<>FSingleSelectedDep)
|
||||||
if LazPackage.FindDependencyByName(FSingleSelectedDep.PackageName)<>FSingleSelectedDep
|
|
||||||
then exit;
|
then exit;
|
||||||
|
|
||||||
MinVers:=TPkgVersion.Create;
|
MinVers:=TPkgVersion.Create;
|
||||||
@ -1723,7 +1723,8 @@ begin
|
|||||||
FSingleSelectedDep.MinVersion.Assign(MinVers);
|
FSingleSelectedDep.MinVersion.Assign(MinVers);
|
||||||
FSingleSelectedDep.MaxVersion.Assign(MaxVers);
|
FSingleSelectedDep.MaxVersion.Assign(MaxVers);
|
||||||
|
|
||||||
fForcedFlags:=[pefNeedUpdateRequiredPkgs];
|
UpdateNodeImage(FSingleSelectedNode);
|
||||||
|
//fForcedFlags:=[pefNeedUpdateRequiredPkgs];
|
||||||
LazPackage.Modified:=True;
|
LazPackage.Modified:=True;
|
||||||
finally
|
finally
|
||||||
MaxVers.Free;
|
MaxVers.Free;
|
||||||
@ -1750,7 +1751,7 @@ begin
|
|||||||
CurFile.HasRegisterProc:=CallRegisterProcCheckBox.Checked;
|
CurFile.HasRegisterProc:=CallRegisterProcCheckBox.Checked;
|
||||||
if not NodeData.Removed then
|
if not NodeData.Removed then
|
||||||
LazPackage.ModifySilently;
|
LazPackage.ModifySilently;
|
||||||
UpdateNodeImage(TVNode, NodeData);
|
UpdateNodeImage(TVNode, NodeData, Item);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2323,13 +2324,31 @@ begin
|
|||||||
Caption:=NewCaption;
|
Caption:=NewCaption;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPackageEditorForm.UpdateNodeImage(TVNode: TTreeNode; NodeData: TPENodeData);
|
procedure TPackageEditorForm.UpdateNodeImage(TVNode: TTreeNode);
|
||||||
var
|
var
|
||||||
ena: Boolean;
|
NodeData: TPENodeData;
|
||||||
ImgIndex: Integer;
|
Item: TObject;
|
||||||
begin
|
begin
|
||||||
ena := True; // String param is not used.
|
if GetNodeDataItem(TVNode, NodeData, Item) then
|
||||||
ImgIndex:=OnTreeViewGetImageIndex('', NodeData, ena);
|
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.ImageIndex:=ImgIndex;
|
||||||
TVNode.SelectedIndex:=ImgIndex;
|
TVNode.SelectedIndex:=ImgIndex;
|
||||||
end;
|
end;
|
||||||
@ -2658,7 +2677,6 @@ var
|
|||||||
TVNode: TTreeNode;
|
TVNode: TTreeNode;
|
||||||
SingleSelectedDirectory: TTreeNode;
|
SingleSelectedDirectory: TTreeNode;
|
||||||
SingleSelectedRemoved: Boolean;
|
SingleSelectedRemoved: Boolean;
|
||||||
SingleSelected: TTreeNode;
|
|
||||||
FileCount: integer;
|
FileCount: integer;
|
||||||
HasRegisterProcCount: integer;
|
HasRegisterProcCount: integer;
|
||||||
AddToUsesPkgSectionCount: integer;
|
AddToUsesPkgSectionCount: integer;
|
||||||
@ -2668,11 +2686,11 @@ begin
|
|||||||
FPlugins.Clear;
|
FPlugins.Clear;
|
||||||
|
|
||||||
// check selection
|
// check selection
|
||||||
|
FSingleSelectedNode:=nil;
|
||||||
FSingleSelectedDep:=nil;
|
FSingleSelectedDep:=nil;
|
||||||
FSingleSelectedFile:=nil;
|
FSingleSelectedFile:=nil;
|
||||||
SingleSelectedDirectory:=nil;
|
SingleSelectedDirectory:=nil;
|
||||||
SingleSelectedRemoved:=false;
|
SingleSelectedRemoved:=false;
|
||||||
SingleSelected:=nil;
|
|
||||||
SelFileCount:=0;
|
SelFileCount:=0;
|
||||||
SelDepCount:=0;
|
SelDepCount:=0;
|
||||||
SelHasRegisterProc:=mubNone;
|
SelHasRegisterProc:=mubNone;
|
||||||
@ -2688,7 +2706,7 @@ begin
|
|||||||
CurFile:=TPkgFile(Item);
|
CurFile:=TPkgFile(Item);
|
||||||
inc(SelFileCount);
|
inc(SelFileCount);
|
||||||
FSingleSelectedFile:=CurFile;
|
FSingleSelectedFile:=CurFile;
|
||||||
SingleSelected:=TVNode;
|
FSingleSelectedNode:=TVNode;
|
||||||
SingleSelectedRemoved:=NodeData.Removed;
|
SingleSelectedRemoved:=NodeData.Removed;
|
||||||
MergeMultiBool(SelHasRegisterProc,CurFile.HasRegisterProc);
|
MergeMultiBool(SelHasRegisterProc,CurFile.HasRegisterProc);
|
||||||
if CurFile.FileType in PkgFileUnitTypes then begin
|
if CurFile.FileType in PkgFileUnitTypes then begin
|
||||||
@ -2715,13 +2733,13 @@ begin
|
|||||||
inc(SelDepCount);
|
inc(SelDepCount);
|
||||||
CurDependency:=TPkgDependency(Item);
|
CurDependency:=TPkgDependency(Item);
|
||||||
FSingleSelectedDep:=CurDependency;
|
FSingleSelectedDep:=CurDependency;
|
||||||
SingleSelected:=TVNode;
|
FSingleSelectedNode:=TVNode;
|
||||||
SingleSelectedRemoved:=NodeData.Removed;
|
SingleSelectedRemoved:=NodeData.Removed;
|
||||||
end;
|
end;
|
||||||
end else if IsDirectoryNode(TVNode) or (TVNode=FFilesNode) then begin
|
end else if IsDirectoryNode(TVNode) or (TVNode=FFilesNode) then begin
|
||||||
inc(SelDirCount);
|
inc(SelDirCount);
|
||||||
SingleSelectedDirectory:=TVNode;
|
SingleSelectedDirectory:=TVNode;
|
||||||
SingleSelected:=TVNode;
|
FSingleSelectedNode:=TVNode;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2730,7 +2748,7 @@ begin
|
|||||||
FSingleSelectedFile:=nil;
|
FSingleSelectedFile:=nil;
|
||||||
FSingleSelectedDep:=nil;
|
FSingleSelectedDep:=nil;
|
||||||
SingleSelectedDirectory:=nil;
|
SingleSelectedDirectory:=nil;
|
||||||
SingleSelected:=nil;
|
FSingleSelectedNode:=nil;
|
||||||
end;
|
end;
|
||||||
OnlyFilesSelected:=(SelFileCount>0) and (SelDepCount=0) and (SelDirCount=0);
|
OnlyFilesSelected:=(SelFileCount>0) and (SelDepCount=0) and (SelDirCount=0);
|
||||||
OnlyFilesWithUnitsSelected:=OnlyFilesSelected and (SelUnitCount>0);
|
OnlyFilesWithUnitsSelected:=OnlyFilesSelected and (SelUnitCount>0);
|
||||||
@ -2743,8 +2761,8 @@ begin
|
|||||||
// move up/down (only single selection)
|
// move up/down (only single selection)
|
||||||
aVisible:=(not (SortAlphabetically or SingleSelectedRemoved))
|
aVisible:=(not (SortAlphabetically or SingleSelectedRemoved))
|
||||||
and ((FSingleSelectedFile<>nil) or (FSingleSelectedDep<>nil));
|
and ((FSingleSelectedFile<>nil) or (FSingleSelectedDep<>nil));
|
||||||
MoveUpBtn.Enabled :=aVisible and Assigned(SingleSelected.GetPrevVisibleSibling);
|
MoveUpBtn.Enabled :=aVisible and Assigned(FSingleSelectedNode.GetPrevVisibleSibling);
|
||||||
MoveDownBtn.Enabled:=aVisible and Assigned(SingleSelected.GetNextVisibleSibling);
|
MoveDownBtn.Enabled:=aVisible and Assigned(FSingleSelectedNode.GetNextVisibleSibling);
|
||||||
|
|
||||||
// Min/Max version of dependency (only single selection)
|
// Min/Max version of dependency (only single selection)
|
||||||
aVisible:=FSingleSelectedDep<>nil;
|
aVisible:=FSingleSelectedDep<>nil;
|
||||||
|
Loading…
Reference in New Issue
Block a user