Opkman: Add a new node("Orphaned package") to the package tree. The node describe if the node is actively maintained.

git-svn-id: trunk@63634 -
This commit is contained in:
balazs 2020-07-23 14:07:21 +00:00
parent 2a1638310f
commit 9ce85ae018
8 changed files with 142 additions and 32 deletions

View File

@ -89,6 +89,8 @@ resourcestring
rsMainFrm_VSTText_Category = 'Category';
rsMainFrm_VSTText_CommunityDescription = 'Community description';
rsMainFrm_VSTText_ExternalDeps = 'External dependencies';
rsMainFrm_VSTText_OrphanedPackage1 = 'Orphaned package';
rsMainFrm_VSTText_OrphanedPackage2 = 'currently has no active maintainer';
rsMainFrm_VSTText_RepositoryFilename = 'Repository filename';
rsMainFrm_VSTText_RepositoryFileSize = 'Repository filesize';
rsMainFrm_VSTText_RepositoryFileHash = 'Repository filehash';

View File

@ -139,12 +139,12 @@ object CreateRepositoryFrm: TCreateRepositoryFrm
Enabled = False
Interval = 100
OnTimer = tmWaitTimer
left = 85
top = 32
Left = 85
Top = 32
end
object pm: TPopupMenu
left = 139
top = 37
Left = 139
Top = 37
object miRepDetails: TMenuItem
Caption = 'Repository details'
OnClick = miRepDetailsClick
@ -153,7 +153,7 @@ object CreateRepositoryFrm: TCreateRepositoryFrm
object ODRep: TOpenDialog
DefaultExt = '.opmrep'
Filter = '*.opmrep|*.opmrep'
left = 85
top = 104
Left = 85
Top = 104
end
end

View File

@ -156,6 +156,8 @@ type
FDownloadURL: String;
FSVNURL: String;
FCommunityDescription: String;
FExternalDependencies: String;
FOrphanPackage: Integer;
end;
procedure TCreateRepositoryFrm.FormCreate(Sender: TObject);
@ -700,6 +702,8 @@ begin
Data^.FHomePageURL := MetaPackage.HomePageURL;
Data^.FDownloadURL := MetaPackage.DownloadURL;
Data^.FCommunityDescription := MetaPackage.CommunityDescription;
Data^.FExternalDependencies := MetaPackage.ExternalDependecies;
Data^.FOrphanPackage := MetaPackage.OrphanedPackage;
Data^.FDataType := 1;
for J := 0 to MetaPackage.LazarusPackages.Count - 1 do
begin
@ -813,7 +817,15 @@ var
Data: PData;
begin
Data := FVSTPackages.GetNodeData(Node);
ImageIndex := Data^.FDataType;
case Data^.FDataType of
0: ImageIndex := 0;
1: if Data^.FOrphanPackage = 1 then
ImageIndex := 36
else
ImageIndex := 1;
2: ImageIndex := 0;
end;
end;
procedure TCreateRepositoryFrm.VSTPackagesHeaderClick(Sender: TVTHeader; HitInfo: TVTHeaderHitInfo);
@ -926,6 +938,18 @@ begin
DetailData := FVSTDetails.GetNodeData(DetailNode);
DetailData^.FCommunityDescription := Data^.FCommunityDescription;
DetailData^.FDataType := 19;
//add ExternalDependencies(DataType = 20)
DetailNode := FVSTDetails.AddChild(nil);
DetailData := FVSTDetails.GetNodeData(DetailNode);
DetailData^.FExternalDependencies := Data^.FExternalDependencies;
DetailData^.FDataType := 20;
//add OrphanedPackage(DataType = 21)
DetailNode := FVSTDetails.AddChild(nil);
DetailData := FVSTDetails.GetNodeData(DetailNode);
DetailData^.FOrphanPackage := Data^.FOrphanPackage;
DetailData^.FDataType := 21;
end;
2: begin
//add description(DataType = 2)
@ -1052,6 +1076,17 @@ begin
CellText := rsMainFrm_VSTText_CommunityDescription
else
CellText := DetailData^.FCommunityDescription;
20: if Column = 0 then
CellText := rsMainFrm_VSTText_ExternalDeps
else
CellText := DetailData^.FExternalDependencies;
21: if Column = 0 then
CellText := rsMainFrm_VSTText_OrphanedPackage1
else
case DetailData^.FOrphanPackage of
0: CellText := rsMainFrm_VSTText_Install0;
1: CellText := rsMainFrm_VSTText_Install1;
end;
end;
end;
2: begin
@ -1113,7 +1148,12 @@ begin
if Column = 0 then
begin
Data := FVSTDetails.GetNodeData(Node);
ImageIndex := Data^.FDataType;
case Data^.FDataType of
20: ImageIndex := 10;
21: ImageIndex := 36;
else
ImageIndex := Data^.FDataType;
end;
end;
end;

View File

@ -106,13 +106,13 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
TabOrder = 3
object pnPackageData: TPanel
Left = 0
Height = 110
Top = 479
Height = 77
Top = 512
Width = 657
Align = alClient
BevelOuter = bvNone
BorderStyle = bsSingle
ClientHeight = 106
ClientHeight = 73
ClientWidth = 653
TabOrder = 1
Visible = False
@ -290,13 +290,13 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
end
object pnCategory: TPanel
Left = 0
Height = 479
Height = 512
Top = 0
Width = 657
Align = alTop
BevelOuter = bvNone
BorderStyle = bsSingle
ClientHeight = 475
ClientHeight = 508
ClientWidth = 653
TabOrder = 0
Visible = False
@ -323,7 +323,7 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
object lbHomePageURL: TLabel
Left = 9
Height = 15
Top = 87
Top = 89
Width = 90
Caption = 'lbHomePageURL'
ParentColor = False
@ -331,7 +331,7 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
object lbDownloadURL: TLabel
Left = 9
Height = 15
Top = 123
Top = 125
Width = 85
Caption = 'lbDownloadURL'
ParentColor = False
@ -339,7 +339,7 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
object edHomePageURL: TEdit
Left = 170
Height = 23
Top = 83
Top = 84
Width = 454
Anchors = [akTop, akLeft, akRight]
TabOrder = 2
@ -347,7 +347,7 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
object edDownloadURL: TEdit
Left = 170
Height = 23
Top = 118
Top = 120
Width = 454
Anchors = [akTop, akLeft, akRight]
TabOrder = 3
@ -355,7 +355,7 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
object lbSVNURL: TLabel
Left = 9
Height = 15
Top = 154
Top = 156
Width = 53
Caption = 'lbSVNURL'
ParentColor = False
@ -364,7 +364,7 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
object edSVNURL: TEdit
Left = 170
Height = 23
Top = 152
Top = 155
Width = 454
Anchors = [akTop, akLeft, akRight]
TabOrder = 4
@ -427,14 +427,14 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
object mComDescr: TMemo
Left = 170
Height = 152
Top = 152
Top = 156
Width = 454
TabOrder = 5
end
object lbComDescr: TLabel
Left = 9
Height = 15
Top = 154
Top = 156
Width = 65
Caption = 'lbComDescr'
ParentColor = False
@ -442,7 +442,7 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
object lbExternalDependencies: TLabel
Left = 9
Height = 15
Top = 314
Top = 316
Width = 125
Caption = 'lbExternalDependencies'
ParentColor = False
@ -450,10 +450,19 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
object mExternalDependencies: TMemo
Left = 170
Height = 152
Top = 314
Top = 319
Width = 454
TabOrder = 6
end
object cbOrphanedPackage: TCheckBox
Left = 9
Height = 19
Top = 481
Width = 294
Caption = 'Orphan package(currently has no active maintainer)'
OnClick = cbOrphanedPackageClick
TabOrder = 7
end
end
end
object spMain: TSplitter
@ -590,7 +599,7 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
end
end
object SDD: TSelectDirectoryDialog
left = 88
top = 88
Left = 88
Top = 88
end
end

View File

@ -50,6 +50,7 @@ type
bOptions: TButton;
bSubmit: TButton;
cbJSONForUpdates: TCheckBox;
cbOrphanedPackage: TCheckBox;
edCategories: TEdit;
edFPCCompatibility: TEdit;
edSupportedWidgetset: TEdit;
@ -99,6 +100,7 @@ type
procedure bHelpClick(Sender: TObject);
procedure bOptionsClick(Sender: TObject);
procedure bSubmitClick(Sender: TObject);
procedure cbOrphanedPackageClick(Sender: TObject);
procedure edDisplayNameKeyPress(Sender: TObject; var Key: char);
procedure edPackageDirAcceptDirectory(Sender: TObject; Var Value: String);
procedure edPackageDirButtonClick(Sender: TObject);
@ -197,6 +199,7 @@ type
FSVNURL: String;
FCommunityDescription: String;
FExternalDependencies: String;
FOrphanedPackage: Integer;
end;
procedure TCreateRepositoryPackagesFrm.FormCreate(Sender: TObject);
@ -215,7 +218,7 @@ begin
lbSVNURL.Caption := rsCreateRepositoryPackageFrm_lbSVNURL_Caption;
lbComDescr.Caption := rsMainFrm_VSTText_CommunityDescription + ':';
lbExternalDependencies.Caption := rsMainFrm_VSTText_ExternalDeps + ':';
cbOrphanedPackage.Caption := rsMainFrm_VSTText_OrphanedPackage1 + '(' + rsMainFrm_VSTText_OrphanedPackage2 + ')';
bHelp.Caption := rsCreateRepositoryPackageFrm_bHelp_Caption;
bHelp.Hint := rsCreateRepositoryPackageFrm_bHelp_Hint;
bOptions.Caption := rsCreateRepositoryPackageFrm_bOptions_Caption;
@ -693,6 +696,22 @@ begin
fPackageZipper.StartZip(FPackageDir, FPackageFile);
end;
procedure TCreateRepositoryPackagesFrm.cbOrphanedPackageClick(Sender: TObject);
var
Node: PVirtualNode;
Data: PData;
begin
Node := FVSTPackages.GetFirstSelected;
if Node = nil then
Exit;
if FVSTPackages.GetNodeLevel(Node) <> 0 then
Exit;
Data := FVSTPackages.GetNodeData(Node);
Data^.FOrphanedPackage := Ord(cbOrphanedPackage.Checked);
FVSTPackages.ReinitNode(Node, False);
FVSTPackages.RepaintNode(Node);
end;
procedure TCreateRepositoryPackagesFrm.edDisplayNameKeyPress(Sender: TObject;
var Key: char);
begin
@ -735,9 +754,22 @@ end;
procedure TCreateRepositoryPackagesFrm.VSTPackagesGetImageIndex(
Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind;
Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
var
Data: PData;
begin
if Column = 0 then
ImageIndex := IMAGE_INDEX_MAP[FVSTPackages.GetNodeLevel(Node)];
begin
Data := FVSTPackages.GetNodeData(Node);
if FVSTPackages.GetNodeLevel(Node) = 0 then
begin
if Data^.FOrphanedPackage = 1 then
ImageIndex := 36
else
ImageIndex := 1;
end
else
ImageIndex := IMAGE_INDEX_MAP[FVSTPackages.GetNodeLevel(Node)];
end;
end;
procedure TCreateRepositoryPackagesFrm.SaveExtraInfo(const ANode: PVirtualNode);
@ -754,6 +786,7 @@ begin
Data^.FSVNURL := edSVNURL.Text;
Data^.FCommunityDescription := mComDescr.Text;
Data^.FExternalDependencies := mExternalDependencies.Text;
Data^.FOrphanedPackage := Ord(cbOrphanedPackage.Checked);
end;
1: begin
Data^.FLazCompatibility := edLazCompatibility.Text;
@ -804,6 +837,7 @@ begin
edSVNURL.Text := Data^.FSVNURL;
mComDescr.Text := Data^.FCommunityDescription;
mExternalDependencies.Text := Data^.FExternalDependencies;
cbOrphanedPackage.Checked := Data^.FOrphanedPackage = 1;
end
else if Level = 1 then
begin

View File

@ -173,6 +173,7 @@ type
FCategory: String;
FCommunityDescription: String;
FExternalDependencies: String;
FOrphanedPackage: Integer;
FRepositoryFileName: String;
FRepositoryFileSize: Int64;
FRepositoryFileHash: String;
@ -217,6 +218,7 @@ type
property Category: String read FCategory write FCategory;
property CommunityDescription: String read FCommunityDescription write FCommunityDescription;
property ExternalDependecies: String read FExternalDependencies write FExternalDependencies;
property OrphanedPackage: Integer read FOrphanedPackage write FOrphanedPackage;
property Checked: Boolean read FChecked write FChecked;
property RepositoryFileName: String read FRepositoryFileName write FRepositoryFileName;
property RepositoryFileSize: int64 read FRepositoryFileSize write FRepositoryFileSize;
@ -859,6 +861,7 @@ begin
AMetaPackage.Category := PackageData.Get('Category');
AMetaPackage.CommunityDescription := PackageData.Get('CommunityDescription');
AMetaPackage.ExternalDependecies := PackageData.Get('ExternalDependecies');
AMetaPackage.OrphanedPackage := PackageData.Get('OrphanedPackage');
AMetaPackage.RepositoryFileName := PackageData.Get('RepositoryFileName');
AMetaPackage.RepositoryFileSize := PackageData.Get('RepositoryFileSize');
AMetaPackage.RepositoryFileHash := PackageData.Get('RepositoryFileHash');
@ -1315,6 +1318,7 @@ begin
APackageData.Add('Category', AMetaPackage.Category);
APackageData.Add('CommunityDescription', AMetaPackage.CommunityDescription);
APackageData.Add('ExternalDependecies', AMetaPackage.ExternalDependecies);
APackageData.Add('OrphanedPackage', AMetaPackage.OrphanedPackage);
APackageData.Add('RepositoryFileName', AMetaPackage.RepositoryFileName);
APackageData.Add('RepositoryFileSize', AMetaPackage.RepositoryFileSize);
APackageData.Add('RepositoryFileHash', AMetaPackage.RepositoryFileHash);

View File

@ -172,7 +172,10 @@ var
begin
Data := VisualTree.VST.GetNodeData(ANode);
Caption := Format(rsMainFrm_rsPackageInformation, [Data^.PackageDisplayName]);
pnPackageName.Caption := Data^.PackageDisplayName;
if Data^.OrphanedPackage = 0 then
pnPackageName.Caption := Data^.PackageDisplayName
else
pnPackageName.Caption := Data^.PackageDisplayName + '(' + rsMainFrm_VSTText_OrphanedPackage1 + ' - ' + rsMainFrm_VSTText_OrphanedPackage2 + ')';
CalcHeight(mDescription, Data^.CommunityDescription);
for I := FFrames.Count - 1 downto 0 do
begin

View File

@ -76,6 +76,7 @@ type
SVNURL: String;
CommunityDescription: String;
ExternalDependencies: String;
OrphanedPackage: Integer;
InstallState: Integer;
ButtonID: Integer;
Button: TSpeedButton;
@ -501,7 +502,13 @@ begin
Inc(UniqueID);
GrandChildData^.ButtonID := UniqueID;
Data^.ExternalDependencies := SerializablePackages.Items[I].ExternalDependecies;
//add orphaned package(DataType = 21) - added 2020.07.23
GrandChildNode := FVST.AddChild(ChildNode);
FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent];
GrandChildData := FVST.GetNodeData(GrandChildNode);
GrandChildData^.OrphanedPackage := SerializablePackages.Items[I].OrphanedPackage;
GrandChildData^.DataType := 21;
Data^.OrphanedPackage := SerializablePackages.Items[I].OrphanedPackage;
end;
FVST.SortTree(0, laz.VirtualTrees.sdAscending);
ExpandEx;
@ -1476,8 +1483,14 @@ begin
((not Options.ShowRegularIcons) or ((Options.ShowRegularIcons) and (Data^.InstallState = 0))) then
ImageIndex := 25
else
ImageIndex := 1;
20: ImageIndex := 10
begin
if Data^.OrphanedPackage = 0 then
ImageIndex := 1
else
ImageIndex := 36;
end;
20: ImageIndex := 10;
21: ImageIndex := 36;
else
ImageIndex := Data^.DataType
end;
@ -1550,7 +1563,8 @@ begin
17: CellText := rsMainFrm_VSTText_HomePageURL;
18: CellText := rsMainFrm_VSTText_DownloadURL;
19: CellText := rsMainFrm_VSTText_CommunityDescription;
20: CellText := rsMainFrm_VSTText_ExternalDeps
20: CellText := rsMainFrm_VSTText_ExternalDeps;
21: CellText := rsMainFrm_VSTText_OrphanedPackage1;
end;
end
else if Column = 1 then
@ -1654,6 +1668,10 @@ begin
18: CellText := Data^.DownloadURL;
19: CellText := GetDisplayString(Data^.CommunityDescription);
20: CellText := GetDisplayString(Data^.ExternalDependencies);
21: case Data^.OrphanedPackage of
0: CellText := rsMainFrm_VSTText_Install0;
1: CellText := rsMainFrm_VSTText_Install1;
end;
end;
end
else if Column = 5 then