Opkman: Add "community description" for each package. This is especially important for packages that are no longer maintained.

git-svn-id: trunk@58753 -
This commit is contained in:
balazs 2018-08-22 05:31:01 +00:00
parent f386e5ab6b
commit 13d5bd13c3
8 changed files with 139 additions and 79 deletions

View File

@ -85,6 +85,7 @@ resourcestring
rsMainFrm_VSTText_License = 'License';
rsMainFrm_VSTText_PackageInfo = 'Package info';
rsMainFrm_VSTText_Category = 'Category';
rsMainFrm_VSTText_CommunityDescription = 'Community description';
rsMainFrm_VSTText_RepositoryFilename = 'Repository filename';
rsMainFrm_VSTText_RepositoryFileSize = 'Repository filesize';
rsMainFrm_VSTText_RepositoryFileHash = 'Repository filehash';
@ -136,6 +137,7 @@ resourcestring
rsMainFrm_VSTText_PackageCategory27 = 'Games and Game Engines';
rsMainFrm_VSTText_Desc = 'Description for package';
rsMainFrm_VSTText_Lic = 'License info for package';
rsMainFrm_VSTText_ComDesc = 'Community description for metapackage';
rsMainFrm_cbAll_Caption = 'All/None';
rsMainFrm_cbAll_Hint = 'Check/Uncheck packages';
rsMainFrm_lbFilter_Caption = 'Filter by:';

View File

@ -1045,9 +1045,6 @@ object CreateRepositoryFrm: TCreateRepositoryFrm
00FFAA690000AA690000AA690000AA690000AA690000AA690000AA690000AA69
0000AA690000AA690000FFFFFF00
}
BitmapAdv = {
4C6900000000
}
end
object tmWait: TTimer
Enabled = False

View File

@ -156,6 +156,7 @@ type
FHomePageURL: String;
FDownloadURL: String;
FSVNURL: String;
FCommunityDescription: String;
end;
procedure TCreateRepositoryFrm.FormCreate(Sender: TObject);
@ -695,6 +696,7 @@ begin
Data^.FRepositoryDate := MetaPackage.RepositoryDate;
Data^.FHomePageURL := MetaPackage.HomePageURL;
Data^.FDownloadURL := MetaPackage.DownloadURL;
Data^.FCommunityDescription := MetaPackage.CommunityDescription;
Data^.FDataType := 1;
for J := 0 to MetaPackage.LazarusPackages.Count - 1 do
begin
@ -916,6 +918,11 @@ begin
DetailData := FVSTDetails.GetNodeData(DetailNode);
DetailData^.FDownloadURL := Data^.FDownloadURL;
DetailData^.FDataType := 18;
//add CommunityDescription(DataType = 19)
DetailNode := FVSTDetails.AddChild(nil);
DetailData := FVSTDetails.GetNodeData(DetailNode);
DetailData^.FCommunityDescription := Data^.FCommunityDescription;
DetailData^.FDataType := 19;
end;
2: begin
//add description(DataType = 2)
@ -1038,6 +1045,10 @@ begin
CellText := rsCreateRepositoryFrm_VSTText_DownloadURL
else
CellText := DetailData^.FDownloadURL;
19: if Column = 0 then
CellText := rsMainFrm_VSTText_CommunityDescription
else
CellText := DetailData^.FCommunityDescription;
end;
end;
2: begin

View File

@ -1,7 +1,7 @@
object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
Left = 550
Left = 511
Height = 600
Top = 254
Top = 198
Width = 800
BorderIcons = [biSystemMenu]
Caption = 'CreateRepositoryPackagesFrm'
@ -106,13 +106,13 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
TabOrder = 3
object pnPackageData: TPanel
Left = 0
Height = 313
Top = 189
Height = 187
Top = 315
Width = 553
Align = alClient
BevelOuter = bvNone
BorderStyle = bsSingle
ClientHeight = 309
ClientHeight = 183
ClientWidth = 549
TabOrder = 1
Visible = False
@ -203,13 +203,13 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
end
object pnCategory: TPanel
Left = 0
Height = 189
Height = 315
Top = 0
Width = 553
Align = alTop
BevelOuter = bvNone
BorderStyle = bsSingle
ClientHeight = 185
ClientHeight = 311
ClientWidth = 549
TabOrder = 0
Visible = False
@ -336,6 +336,21 @@ object CreateRepositoryPackagesFrm: TCreateRepositoryPackagesFrm
TabOrder = 0
end
end
object mComDescr: TMemo
Left = 170
Height = 152
Top = 152
Width = 350
TabOrder = 5
end
object lbComDescr: TLabel
Left = 9
Height = 15
Top = 154
Width = 65
Caption = 'lbComDescr'
ParentColor = False
end
end
end
object spMain: TSplitter

View File

@ -73,6 +73,8 @@ type
lbOF4: TLabel;
lbPackagedir: TLabel;
lbSupportedWidgetSet: TLabel;
lbComDescr: TLabel;
mComDescr: TMemo;
pnB: TPanel;
pnButtons: TPanel;
pnCategories: TPanel;
@ -181,6 +183,7 @@ type
FHomePageURL: String;
FDownloadURL: String;
FSVNURL: String;
FCommunityDescription: String;
end;
procedure TCreateRepositoryPackagesFrm.FormCreate(Sender: TObject);
@ -197,6 +200,8 @@ begin
lbHomePageURL.Caption := rsCreateRepositoryPackageFrm_lbHomePageURL_Caption;
lbDownloadURL.Caption := rsCreateRepositoryPackageFrm_lbDownloadURL_Caption;
lbSVNURL.Caption := rsCreateRepositoryPackageFrm_lbSVNURL_Caption;
lbComDescr.Caption := rsMainFrm_VSTText_CommunityDescription + ':';
bHelp.Caption := rsCreateRepositoryPackageFrm_bHelp_Caption;
bHelp.Hint := rsCreateRepositoryPackageFrm_bHelp_Hint;
bOptions.Caption := rsCreateRepositoryPackageFrm_bOptions_Caption;
@ -460,6 +465,7 @@ begin
RootData^.FHomePageURL := '';
RootData^.FDownloadURL := '';
RootData^.FSVNURL := '';
RootData^.FCommunityDescription := '';
RootData^.FDataType := 0;
FPackageName := RootData^.FName;
for I := 0 to PackageList.Count - 1 do
@ -717,6 +723,7 @@ begin
Data^.FHomePageURL := edHomePageURL.Text;
Data^.FDownloadURL := edDownloadURL.Text;
Data^.FSVNURL := edSVNURL.Text;
Data^.FCommunityDescription := mComDescr.Text;
end;
1: begin
Data^.FLazCompatibility := edLazCompatibility.Text;
@ -765,6 +772,7 @@ begin
edHomePageURL.Text := Data^.FHomePageURL;
edDownloadURL.Text := Data^.FDownloadURL;
edSVNURL.Text := Data^.FSVNURL;
mComDescr.Text := Data^.FCommunityDescription;
end
else if Level = 1 then
begin
@ -1040,6 +1048,7 @@ begin
MetaPkg.HomePageURL := RootData^.FHomePageURL;
MetaPkg.DownloadURL := RootData^.FDownloadURL;
MetaPkg.SVNURL := RootData^.FSVNURL;
MetaPkg.CommunityDescription := RootData^.FCommunityDescription;
Node := FVSTPackages.GetFirstChild(RootNode);
while Assigned(Node) do
begin

View File

@ -1211,39 +1211,39 @@ object MainFrm: TMainFrm
AAFFAFABAAFFAFABAAFFAFABAAFFAFABAAFFAFABAAFFAFABAAFFAFABA9FFAFAC
AAFFACA8A7FFE1DEDCFFB2AFADFF7F7A7900AAA7A5F9B3AFAEF3B2AEADF3B2AE
ADF3B2AEADF3B2AEADF3B2AEADF3B2AEADF3B2AEADF3B2AEADF3B2AEADF3B2AE
ADF3B3AFAEF3AFABA8F7827E7CB1FFFFFF00DF943800E4993B00E89D3F00EA9F
4048EA9F4048E89D3F00E4993B00DF943800A76F2A006E481B00A46C2800A46C
280036230C000000000000000000FFFFFF00DF943800E4993B00E89D3F5CE89D
3FCCE89D3FCCE89D3F5CE4993B00DF943800DE933700DB903500DA8F3400DA8F
3400D4892F009B62200032200A00FFFFFF00DF943800E4993B5CE4993BCCFEDB
8FFFFEDB8FFFE4993BCCE4993B5CDF943800DE933700DB903500DA8F3400DA8F
3400D4892F00CD822A00C87D2600FFFFFF00DF94385CDF9438CCFCD68AFFFAC9
7DFFFAC97DFFFCD589FFDF9438CCDF94385CDE933700DB903500DA8F3400DA8F
3400D4892F00CD822A00C87D2600FFFFFF00DB903599DA8F34CCDA8F34CCF9D1
85FFF9D084FFDA8F34CCDA8F34CCDB903599D88D3300D88D3200D98E3399D98E
335CD4892F00CD822A00C87D2600FFFFFF00DA8F3400D78C3100D4892FCCF7CA
7EFFF6CA7EFFD4892FCCD4892F00D2872D00CF842B00D1862D00D4892FCCD489
2FCCD3882F5CCD822A00C87D2600FFFFFF00D3882F00CD822A00CD822ACCF5C8
7CFFF5C77BFFCD822ACCCB802966CD822A81CD822AAACD822AC5CD822ACCEEC7
7AFFCD822ACCCC812A5CC87D2600FFFFFF00C77C2500C77C2500C77C25CCF2C2
73FFECBB66FFC77C25CCCD8731D3DDA34CE8E2AD54F6E3AF55FDE3AE54FFDCA2
45FFECBF6AFFC77C25CCC77C2548FFFFFF00C0752000C0752000C07520CCECB7
51FFEBB54DFFD5983FDFE7AD43FBE3A22FFFE5A839FFE7AE43FFE7AF45FFE4A6
36FFEEBE5BFFC07520CCC0752048FFFFFF00B96E1B00B96E1B00B96E1BCCF2B9
40FFF2B83DFFEFB02EFEEEAB23FFE1A53BEFC9852CD9BD741FCFB96E1BCCF4BF
4BFFB96E1BCCBA6F1C5CBE731F00FFFFFF00B2671600B2671600B26716CCF9BC
31FFF7AD0BFFF7B115FFD5932AE4B26716AAB368173FB469170FB26716CCB267
16CCB368175CB96E1B00BE731F00FFFFFF00AC611100AC611100AC6111CCFFBD
25FFFEB204FFE6A425EFAC6111AAAF641413B2671600B1661500AD621299AD62
125CB2671600B96E1B00BE731F00FFFFFF007D450A00A65B0D00A65B0DCCFFBC
1EFFFFB70EFFBE7817D9A75C0E3FA75C0E0059340B0059330B00AC611100AC61
110059340B000000000000000000FFFFFF000000000079400700A05508CCFFBB
18FFFFB813FFA75D0BCFA055080F291603000000000000000000000000000000
0000000000000000000000000000FFFFFF000000000A000000189B5005CCFFBC
1CFFFFBB19FF9B5005CC0000001A0000001900000016000000130000000E0000
000A000000050000000200000000FFFFFF00000000130000002F723A02A6974C
02CC974C02CC723A02A600000033000000320000002C000000250000001C0000
00130000000A0000000400000000000000000000000000000000000000000000
ADF3B3AFAEF3AFABA8F7827E7CB1000000000000000000000000000000000000
0000000000000000000000000000C8E6F240C6E5F04000000000000000001CA7
1D6014AB26BF1FB438FF19AA23FF00000000000000000000000000000000C9E7
F220C2E7F4CFB3E6F9FFACE1F9FFADE1F8FFAEE1F7FFAEE1F6FFADDFF5FF90D8
DCFF77E294FF98EDAAFF5BC962FF000000000000000000000000C9E7F230BFE8
F6EFADE7FCFFABE3F9FFA3DEF8FFA9E1FAFFB0E4F9FFB7E7F9FFB6E7F9FFA7DE
F5FFB8F4C3FFB6F4B7FF5AC65BFF0000000000000000C9E7F230B6E7F8EFA4E0
F8FFA5E1F9FF95D6F3FFB0E4F7FFA6DFF8FFA4DFFAFFA5DFFAFFACE2F9FFA7DF
F6FF7BD296FF67CC67FF2EB02EFFD1BDA9FFC9BAA7FFAFD4DAFFA2DEF5FF98D7
F1FF9AD8F3FFA0DEF6FF97D8F4FFA5DEF5FFAEE3F9FF9FDCF8FF8CD3F3FF75C6
EDFF3CAA82FF20A921FF0DA00DFFD1BDA9FFCAEBF5FFA8E0F4FF8DCEE8FFA0DD
F6FF92D2EDFF9BD9F3FF78BFDDFF9BDAF7FF89D0F0FF79C9EFFF61BEE9FF57B8
E4FF299058FF15A415FF10A110FFD1BDA9FFC2E5F1FF99D0E4FFAAE4FBFF87CA
E6FFA4DFF8FF79C0DDFF9CDBF4FF7FC1DCFF6399ABFF5A91A4FF48656BFF91B2
BE8F19A02460029A0280059B0550D1BDA9FFEEF7FAFFC1E8F3FF90CFE8FFA4DE
F4FF86C9E6FF98D7F1FF85C4DFFF6E7F7FFF9A8A7BFFC1B5ABFF77604EFFDCD5
D030000000000000000000000000D1BDA9FFF5FAFCFFB3D5DFFF8CC6DDFFAEE0
F0FF96CFE4FFA3DBF1FF739DA9FFB7ADA0FFF2EBE4FFFFFFFFFF8F7966FF0000
0000000000000000000000000000D1BDA9FFFFFFFFFFFBF5EEFFE1E6E4FFB6D0
D7FF99C6D5FF87BBCDFFC4CAC6FFF7F1EAFFFBF5EEFFFFFFFFFF8F7966FF0000
0000000000000000000000000000D1BDA9FFFFFFFFFFFAF2EAFFFAF2EAFFFAF2
EAFFFAF2EAFFF3EEE8FFFAF2EAFFFAF2EAFFFAF2EAFFFFFFFFFF8F7966FF0000
0000000000000000000000000000D1BDA9FFFFFFFFFFF9F0E7FFF9F0E7FFF9F0
E7FFF9F0E7FFF9F0E7FFF9F0E7FFF9F0E7FFF9F0E7FFFFFFFFFF8F7966FF0000
0000000000000000000000000000C9B4A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F7966FF0000
0000000000000000000000000000927C69FF8F7966FF8F7966FF8F7966FF8F79
66FF8F7966FF8F7966FF8F7966FF8F7966FF8F7966FF8F7966FF8F7966FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000203011A699B401C6DA2400002030100000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000100082131022AA4F2CF2AA5F3CF0925380200000100000000000000

View File

@ -171,6 +171,7 @@ type
FName: String;
FDisplayName: String;
FCategory: String;
FCommunityDescription: String;
FRepositoryFileName: String;
FRepositoryFileSize: Int64;
FRepositoryFileHash: String;
@ -213,6 +214,7 @@ type
property Name: String read FName write FName;
property DisplayName: String read FDisplayName write FDisplayName;
property Category: String read FCategory write FCategory;
property CommunityDescription: string read FCommunityDescription write FCommunityDescription;
property Checked: Boolean read FChecked write FChecked;
property RepositoryFileName: String read FRepositoryFileName write FRepositoryFileName;
property RepositoryFileSize: int64 read FRepositoryFileSize write FRepositoryFileSize;
@ -847,6 +849,7 @@ begin
AMetaPackage.Name := PackageData.Get('Name');
AMetaPackage.DisplayName := PackageData.Get('DisplayName');
AMetaPackage.Category := PackageData.Get('Category');
AMetaPackage.CommunityDescription := PackageData.Get('CommunityDescription');
AMetaPackage.RepositoryFileName := PackageData.Get('RepositoryFileName');
AMetaPackage.RepositoryFileSize := PackageData.Get('RepositoryFileSize');
AMetaPackage.RepositoryFileHash := PackageData.Get('RepositoryFileHash');
@ -1210,6 +1213,7 @@ begin
APackageData.Add('Name', AMetaPackage.Name);
APackageData.Add('DisplayName', AMetaPackage.DisplayName);
APackageData.Add('Category', AMetaPackage.Category);
APackageData.Add('CommunityDescription', AMetaPackage.CommunityDescription);
APackageData.Add('RepositoryFileName', AMetaPackage.RepositoryFileName);
APackageData.Add('RepositoryFileSize', AMetaPackage.RepositoryFileSize);
APackageData.Add('RepositoryFileHash', AMetaPackage.RepositoryFileHash);

View File

@ -74,6 +74,7 @@ type
DisableInOPM: Boolean;
IsUpdated: Boolean;
SVNURL: String;
CommunityDescription: String;
InstallState: Integer;
ButtonID: Integer;
Button: TSpeedButton;
@ -104,6 +105,7 @@ type
FOnChecked: TNotifyEvent;
FMouseEnter: Boolean;
FShowHintFrm: TShowHintFrm;
FOldButtonNode: PVirtualNode;
procedure VSTBeforeCellPaint(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; {%H-}Column: TColumnIndex;
{%H-}CellPaintMode: TVTCellPaintMode; CellRect: TRect; var {%H-}ContentRect: TRect);
@ -302,18 +304,6 @@ begin
end;
procedure TVisualTree.PopulateTree;
procedure CreateButton(AUniqueID: Integer; AData: PData);
begin
AData^.Button := TSpeedButton.Create(FVST);
AData^.Button.Caption := '...';
AData^.Button.Parent := FVST;
AData^.Button.Visible := True;
AData^.Button.Tag := AUniqueID;
AData^.Button.OnClick := @ButtonClick;
AData^.ButtonID := AUniqueID;
AData^.Button.Width := 25;
end;
var
I, J: Integer;
RootNode, Node, ChildNode, GrandChildNode: PVirtualNode;
@ -373,8 +363,7 @@ begin
GrandChildData^.Description := LazarusPkg.Description;
GrandChildData^.DataType := 3;
Inc(UniqueID);
CreateButton(UniqueID, GrandChildData);
GrandChildData^.Button.Enabled := not FVST.IsDisabled[GrandChildNode];
GrandChildData^.ButtonID := UniqueID;
//add author(DataType = 4)
GrandChildNode := FVST.AddChild(ChildNode);
FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent];
@ -415,8 +404,7 @@ begin
GrandChildData^.License := LazarusPkg.License;
GrandChildData^.DataType := 9;
Inc(UniqueID);
CreateButton(UniqueID, GrandChildData);
GrandChildData^.Button.Enabled := not FVST.IsDisabled[GrandChildNode];
GrandChildData^.ButtonID := UniqueID;
//add dependencies(DataType = 10)
GrandChildNode := FVST.AddChild(ChildNode);
FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent];
@ -472,12 +460,14 @@ begin
GrandChildData := FVST.GetNodeData(GrandChildNode);
GrandChildData^.DownloadURL := SerializablePackages.Items[I].DownloadURL;
GrandChildData^.DataType := 18;
//add SVNURL(DataType = 19)
{GrandChildNode := FVST.AddChild(ChildNode);
//add community description(DataType = 19) - added 2018.08.21
GrandChildNode := FVST.AddChild(ChildNode);
FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent];
GrandChildData := FVST.GetNodeData(GrandChildNode);
GrandChildData^.SVNURL := SerializablePackages.Items[I].SVNURL;
GrandChildData^.DataType := 19;}
GrandChildData^.CommunityDescription := SerializablePackages.Items[I].CommunityDescription;
GrandChildData^.DataType := 19;
Inc(UniqueID);
GrandChildData^.ButtonID := UniqueID;
end;
FVST.SortTree(0, VirtualTrees.sdAscending);
ExpandEx;
@ -509,8 +499,8 @@ end;
procedure TVisualTree.ShowDetails(const AButtonID: Integer);
var
Node, ParentNode: PVirtualNode;
Data, ParentData: PData;
Node, ParentNode, MetaPackageNode: PVirtualNode;
Data, ParentData, MetaPackageData: PData;
Text: String;
FrmCaption: String;
begin
@ -533,6 +523,15 @@ begin
Text := Data^.License;
FrmCaption := rsMainFrm_VSTText_Lic + ' "' + ParentData^.LazarusPackageName + '"';
end;
19: begin
MetaPackageNode := ParentNode^.Parent;
if MetaPackageNode <> nil then
begin
MetaPackageData := VST.GetNodeData(MetaPackageNode);
Text := Data^.CommunityDescription;
FrmCaption := rsMainFrm_VSTText_ComDesc + ' "' + MetaPackageData^.PackageDisplayName + '"';
end;
end;
end;
Break;
end;
@ -1468,7 +1467,7 @@ begin
16: CellText := rsMainFrm_VSTText_RepositoryFileDate;
17: CellText := rsMainFrm_VSTText_HomePageURL;
18: CellText := rsMainFrm_VSTText_DownloadURL;
19: CellText := rsMainFrm_VSTText_SVNURL;
19: CellText := rsMainFrm_VSTText_CommunityDescription;
end;
end
else if Column = 1 then
@ -1570,7 +1569,7 @@ begin
16: CellText := FormatDateTime('YYYY.MM.DD', Data^.RepositoryDate);
17: CellText := Data^.HomePageURL;
18: CellText := Data^.DownloadURL;
19: CellText := Data^.SVNURL;
19: CellText := GetDisplayString(Data^.CommunityDescription);
end;
end
else if Column = 5 then
@ -1716,6 +1715,17 @@ begin
FHoverP.Y := Y;
FHoverNode:= VST.GetNodeAt(X, Y);
FHoverColumn := GetColumn(X);
if (FOldButtonNode <> nil) and (FOldButtonNode <> FHoverNode) then
begin
Data := FVST.GetNodeData(FOldButtonNode);
if Data^.Button <> nil then
begin
Data^.Button.Free;
Data^.Button := nil;
end;
end;
if ((FHoverColumn = 0) or (FShowHintFrm.Visible)) and (FHoverNode <> nil) then
begin
case Options.HintFormOption of
@ -1761,7 +1771,28 @@ begin
if ((Data^.DataType = 17) and (Trim(Data^.HomePageURL) <> '')) or
((Data^.DataType = 18) and (Trim(Data^.DownloadURL) <> '')) then
FVST.Cursor := crHandPoint;
end;
if (Data^.Button = nil) and
(
((Data^.DataType = 3) and (Trim(Data^.Description) <> '')) or
((Data^.DataType = 9) and (Trim(Data^.License) <> '')) or
((Data^.DataType = 19) and (Trim(Data^.CommunityDescription) <> ''))
) then
begin
Data := FVST.GetNodeData(FHoverNode);
Data^.Button := TSpeedButton.Create(VST);
with Data^.Button do
begin
Caption := '...';
Parent := FVST;
Tag := Data^.ButtonID;
Visible := True;
OnClick := @ButtonClick;
end;
FOldButtonNode := FHoverNode;
end;
end
end;
procedure TVisualTree.VSTMouseEnter(Sender: TObject);
@ -1799,16 +1830,7 @@ begin
if Button = mbLeft then
begin
case DownColumn of
4: if (Data^.DataType = 3) or (Data^.DataType = 9) and (DownColumn = 4) then
begin
R := FVST.GetDisplayRect(Node, DownColumn, False);
if X > R.Right - Data^.Button.Width - 1 then
begin
if Assigned(Data^.Button) then
ShowDetails(Data^.ButtonID);
end;
end
else if (Data^.DataType = 17) or (Data^.DataType = 18) and (DownColumn = 4) then
4: if (Data^.DataType = 17) or (Data^.DataType = 18) and (DownColumn = 4) then
begin
FLinkClicked := True;
if (Data^.DataType = 17) and (Trim(Data^.HomePageURL) <> '') then
@ -1914,7 +1936,7 @@ begin
16: HintText := FormatDateTime('YYYY.MM.DD', Data^.RepositoryDate);
17: HintText := Data^.HomePageURL;
18: HintText := Data^.DownloadURL;
19: HintText := Data^.SVNURL;
19: HintText := Data^.CommunityDescription;
else
HintText := '';
end;