mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-15 19:09:35 +02:00
Opkman: Highlight recently added packages + sort package list by name.
git-svn-id: trunk@54035 -
This commit is contained in:
parent
f51dd9a202
commit
6d610db93b
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -3262,6 +3262,7 @@ components/onlinepackagemanager/images/Tree_Buttons/Database.png -text svneol=un
|
||||
components/onlinepackagemanager/images/Tree_Buttons/Error.png -text svneol=unset#image/png
|
||||
components/onlinepackagemanager/images/Tree_Buttons/FileVersion.png -text svneol=unset#image/png
|
||||
components/onlinepackagemanager/images/Tree_Buttons/Info.png -text svneol=unset#image/png
|
||||
components/onlinepackagemanager/images/Tree_Buttons/New_Package.png -text svneol=unset#image/png
|
||||
components/onlinepackagemanager/images/Tree_Buttons/Ok.png -text svneol=unset#image/png
|
||||
components/onlinepackagemanager/images/Tree_Buttons/Refresh.png -text svneol=unset#image/png
|
||||
components/onlinepackagemanager/images/Tree_Buttons/Refresh1.png -text svneol=unset#image/png
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 573 B |
@ -525,6 +525,14 @@ object MainFrm: TMainFrm
|
||||
Caption = 'Hide JSON'
|
||||
OnClick = miJSONShowClick
|
||||
end
|
||||
object miJSONSort: TMenuItem
|
||||
Caption = 'Sort by name'
|
||||
OnClick = miJSONSortClick
|
||||
end
|
||||
object miSaveToFile: TMenuItem
|
||||
Caption = 'Save to file'
|
||||
OnClick = miSaveToFileClick
|
||||
end
|
||||
end
|
||||
object pmCreate: TPopupMenu
|
||||
left = 144
|
||||
@ -546,7 +554,7 @@ object MainFrm: TMainFrm
|
||||
left = 64
|
||||
top = 163
|
||||
Bitmap = {
|
||||
4C69190000001000000010000000A38D780095806C12B3A18B9FC5B49FFEC6B5
|
||||
4C691A0000001000000010000000A38D780095806C12B3A18B9FC5B49FFEC6B5
|
||||
A0FFC6B5A0FFC6B5A0FFC6B5A1FFBEAD98E3A5917C4BFFFFFF00988674000000
|
||||
0000000000000000000000000000FFEAD300AC9A886AD5C9BBF9E3D9CBFFE2D9
|
||||
CAFFE2D9CAFFE2D9CAFFE3D9CAFFE0D6C8FFC3B4A4CB84715C189B8874000000
|
||||
@ -1346,7 +1354,39 @@ object MainFrm: TMainFrm
|
||||
B3F4A1A1A18D717171164F4F4F014F4F4F0170707016A0A0A08DB3B3B3F4B6B6
|
||||
B6F56D6D6D064D4D4D004D4D4D004D4D4D004D4D4D006565650B9C9C9C877676
|
||||
761F515151014D4D4D004D4D4D004D4D4D004D4D4D00505050017575751F9C9C
|
||||
9C876767670B4D4D4D004D4D4D00
|
||||
9C876767670B4D4D4D004D4D4D00FFFFFF00DD790000FFE8DD00FFE8DD00FFE8
|
||||
DD00DD790080E08417FFE69537FFEBA658FFEEB06FFFEEB06FFFEBA658FFE695
|
||||
37FFE08417FFDD7900BFFFFFFF00FFFFFF00DB780000FFE8DD00FFE8DD00FFE8
|
||||
DD00DB7800FFFFE8DDFFFFE8DDFFFFE8DDFFFFE8DDFFFFE8DDFFFFE8DDFFF6CC
|
||||
A6FFDB7800FFDB780000FFFFFF00FFFFFF00D8770000FFE1CF00FFE1CF00D877
|
||||
0080ECAD68FFFFE1CFFFFFE1CFFFFFE1CFFFFFE1CFFFFFE1CFFFF5C79BFFD877
|
||||
00FFFFE1CF00D8770000FFFFFF00FFFFFF00D5760000FFD9BB00FFD9BB00D576
|
||||
00FFFFD9BBFFFFD9BBFFFFD9BBFFFFD9BBFFFFD9BBFFF4BF8CFFD57600FFFFD9
|
||||
BB00FFD9BB00D5760000FFFFFF00FFFFFF00D2760000FFCEA400D2760080E9A2
|
||||
52FFFFCEA4FFFFCEA4FFFFCEA4FFFFCEA4FFF4B87BFFD27600FFFFCEA400FFCE
|
||||
A400FFCEA400D2760000FFFFFF00FFFFFF00CE740000FFC28A00CE7400FFFFC2
|
||||
8AFFFFC28AFFFFC28AFFFFC28AFFF3AE67FFDA8823FFCE7400FFCE7400FFCE74
|
||||
00FFCE7400FFCE7400BFFFFFFF00FFFFFF00CA730000CA730080E59638FFFFB7
|
||||
6FFFFFB76FFFFFB76FFFFFCFA6FFFFE8DDFFFFE8DDFFFFE8DDFFFFE8DDFFF2CB
|
||||
A6FFCA7300FFCA730000FFFFFF00FFFFFF00C6720000C67200FFF29633FFF297
|
||||
33FFF49939FFFAA347FFFEA850FFFEA850FFFBA449FFFAA246FFF19C3EFFC672
|
||||
00FFFFA95300C6720000FFFFFF00FFFFFF00C1700080E0871DFFEE8C1CFFEE8C
|
||||
1CFFEE8C1CFFEA8615FFE37F0BFFDD7900FFE5810EFFEF922BFFC17000FFFF9E
|
||||
3900FF9E3900C1700000FFFFFF00FFFFFF00BD6F00BFBD6F00FFBD6F00FFBD6F
|
||||
00FFBD6F00FFCE7809FFE27D05FFE8810BFFEE8919FFBD6F00FFFF932200FF93
|
||||
2200FF932200BD6F0000FFFFFF00FFFFFF00B96E0000FF8A0E00FF840000FF84
|
||||
0000B96E0080DC7B07FFEB8006FFED820AFFB96E00FFFF840000FF8A0E00FF8A
|
||||
0E00FF8A0E00B96E0000FFFFFF00FFFFFF00B56C0000FF840000FF840000FF84
|
||||
0000B56C00FFEE7E00FFEC7E00FFB56C00FFDD790000DD790000FF840000FF84
|
||||
0000FF840000B56C0000FFFFFF00FFFFFF00B26B0000FF840000FF840000B26B
|
||||
0080D97800FFEC7E00FFB26B00FFFF840000FF840000FF840000FF840000FF84
|
||||
0000FF840000B26B0000FFFFFF00FFFFFF00AF6A0000FF840000FF840000AF6A
|
||||
00FFEB7D00FFAF6A00FFFF840000FF840000FF840000FF840000FF840000FF84
|
||||
0000FF840000AF6A0000FFFFFF00FFFFFF00AC690000AC690000AC690080AC69
|
||||
00FFAC6900FFAC690000AC690000AC690000AC690000AC690000AC690000AC69
|
||||
0000AC690000AC690000FFFFFF00FFFFFF00AA690000AA690000AA6900BFAA69
|
||||
00FFAA690000AA690000AA690000AA690000AA690000AA690000AA690000AA69
|
||||
0000AA690000AA690000FFFFFF00
|
||||
}
|
||||
end
|
||||
object imTBNor: TImageList
|
||||
@ -3415,4 +3455,10 @@ object MainFrm: TMainFrm
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
end
|
||||
object SD: TSaveDialog
|
||||
DefaultExt = '.*.json'
|
||||
Filter = '*.json|*.json'
|
||||
left = 248
|
||||
top = 288
|
||||
end
|
||||
end
|
||||
|
@ -44,10 +44,13 @@ type
|
||||
cbPackageType: TComboBox;
|
||||
imTBDis: TImageList;
|
||||
MenuItem1: TMenuItem;
|
||||
miSaveToFile: TMenuItem;
|
||||
miJSONSort: TMenuItem;
|
||||
miResetRating: TMenuItem;
|
||||
miCopyToClpBrd: TMenuItem;
|
||||
miCreateRepository: TMenuItem;
|
||||
miCreateRepositoryPackage: TMenuItem;
|
||||
SD: TSaveDialog;
|
||||
tbCleanUp1: TToolButton;
|
||||
tbOptions: TToolButton;
|
||||
cbAll: TCheckBox;
|
||||
@ -82,7 +85,9 @@ type
|
||||
procedure miCopyToClpBrdClick(Sender: TObject);
|
||||
procedure miCreateRepositoryClick(Sender: TObject);
|
||||
procedure miCreateRepositoryPackageClick(Sender: TObject);
|
||||
procedure miJSONSortClick(Sender: TObject);
|
||||
procedure miResetRatingClick(Sender: TObject);
|
||||
procedure miSaveToFileClick(Sender: TObject);
|
||||
procedure pnToolBarResize(Sender: TObject);
|
||||
procedure tbCleanUpClick(Sender: TObject);
|
||||
procedure tbDownloadClick(Sender: TObject);
|
||||
@ -920,6 +925,42 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainFrm.miJSONSortClick(Sender: TObject);
|
||||
var
|
||||
JSON: TJSONStringType;
|
||||
begin
|
||||
JSON := '';
|
||||
SerializablePackages.Sort;
|
||||
SerializablePackages.PackagesToJSON(JSON);
|
||||
mJSON.Lines.BeginUpdate;
|
||||
try
|
||||
mJSON.Clear;
|
||||
mJSON.Text := JSON;
|
||||
finally
|
||||
mJSON.Lines.EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainFrm.miSaveToFileClick(Sender: TObject);
|
||||
var
|
||||
JSON: TJSONStringType;
|
||||
Ms: TMemoryStream;
|
||||
begin
|
||||
if SD.Execute then
|
||||
begin
|
||||
JSON := '';
|
||||
SerializablePackages.PackagesToJSON(JSON);
|
||||
Ms := TMemoryStream.Create;
|
||||
try
|
||||
Ms.Write(Pointer(JSON)^, Length(JSON));
|
||||
Ms.Position := 0;
|
||||
Ms.SaveToFile(SD.FileName);
|
||||
finally
|
||||
Ms.Free;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainFrm.SetupControls;
|
||||
var
|
||||
I: Integer;
|
||||
|
@ -291,6 +291,7 @@ type
|
||||
function IsInstalledVersionOk(PackageDependency: TPackageDependency; InstalledVersion: String): Boolean;
|
||||
function GetPackageInstallState(const APackage: TPackage): Integer; overload;
|
||||
procedure DeleteDownloadedZipFiles;
|
||||
procedure Sort;
|
||||
public
|
||||
property Count: Integer read GetCount;
|
||||
property DownloadCount: Integer read GetDownloadCount;
|
||||
@ -1439,6 +1440,19 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function SortByName(Item1, Item2: TCollectionItem): Integer;
|
||||
var
|
||||
Package1, Package2: TPackage;
|
||||
begin
|
||||
Package1 := TPackage(Item1);
|
||||
Package2 := TPackage(Item2);
|
||||
Result := CompareText(Package1.FDisplayName, Package2.FDisplayName);
|
||||
end;
|
||||
|
||||
procedure TSerializablePackages.Sort;
|
||||
begin
|
||||
FPackages.Sort(@SortByName);
|
||||
end;
|
||||
|
||||
function TSerializablePackages.IsDependencyOk(PackageDependency: TPackageDependency;
|
||||
DependencyPackage: TPackageFile): Boolean;
|
||||
|
@ -31,7 +31,7 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Controls, Graphics, Menus, Dialogs, Forms, LCLIntf, contnrs,
|
||||
PackageIntf, Buttons, Math, opkman_VirtualTrees, opkman_common,
|
||||
PackageIntf, Buttons, Math, dateutils, opkman_VirtualTrees, opkman_common,
|
||||
opkman_serializablepackages;
|
||||
|
||||
|
||||
@ -247,6 +247,7 @@ begin
|
||||
TreeOptions.MiscOptions := [toCheckSupport, toFullRepaintOnResize, toInitOnSave, toWheelPanning];
|
||||
TreeOptions.PaintOptions := [toHideFocusRect, toAlwaysHideSelection, toPopupMode, toShowButtons, toShowDropmark, toShowRoot, toThemeAware];
|
||||
TreeOptions.SelectionOptions := [toFullRowSelect, toRightClickSelect];
|
||||
TreeOptions.StringOptions := [toShowStaticText];
|
||||
TreeOptions.AutoOptions := [toAutoTristateTracking];
|
||||
OnBeforeCellPaint := @VSTBeforeCellPaint;
|
||||
OnChecking := @VSTChecking;
|
||||
@ -322,6 +323,7 @@ begin
|
||||
Data^.HasUpdate := SerializablePackages.Items[I].HasUpdate;
|
||||
Data^.DisableInOPM := SerializablePackages.Items[I].DisableInOPM;
|
||||
Data^.Rating := SerializablePackages.Items[I].Rating;
|
||||
Data^.RepositoryDate := SerializablePackages.Items[I].RepositoryDate;
|
||||
FVST.IsDisabled[Node] := Data^.DisableInOPM;
|
||||
Data^.DataType := 1;
|
||||
for J := 0 to SerializablePackages.Items[I].PackageFiles.Count - 1 do
|
||||
@ -1346,7 +1348,16 @@ var
|
||||
begin
|
||||
Data := FVST.GetNodeData(Node);
|
||||
if Column = 0 then
|
||||
ImageIndex := Data^.DataType
|
||||
begin
|
||||
case Data^.DataType of
|
||||
1: if DaysBetween(Now, Data^.RepositoryDate) <= 31 then
|
||||
ImageIndex := 25
|
||||
else
|
||||
ImageIndex := 1;
|
||||
else
|
||||
ImageIndex := Data^.DataType
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TVisualTree.GetDisplayString(const AStr: String): String;
|
||||
@ -1374,134 +1385,149 @@ var
|
||||
Data: PData;
|
||||
begin
|
||||
Data := FVST.GetNodeData(Node);
|
||||
if Column = 0 then
|
||||
if TextType = ttStatic then
|
||||
begin
|
||||
case Data^.DataType of
|
||||
0: CellText := Data^.Repository;
|
||||
1: if Trim(Data^.PackageDisplayName) = '' then
|
||||
CellText := Data^.PackageName
|
||||
else
|
||||
CellText := Data^.PackageDisplayName;
|
||||
2: CellText := Data^.PackageFileName;
|
||||
3: CellText := rsMainFrm_VSTText_Description;
|
||||
4: CellText := rsMainFrm_VSTText_Author;
|
||||
5: CellText := rsMainFrm_VSTText_LazCompatibility;
|
||||
6: CellText := rsMainFrm_VSTText_FPCCompatibility;
|
||||
7: CellText := rsMainFrm_VSTText_SupportedWidgetsets;
|
||||
8: CellText := rsMainFrm_VSTText_Packagetype;
|
||||
9: CellText := rsMainFrm_VSTText_License;
|
||||
10: CellText := rsMainFrm_VSTText_Dependecies;
|
||||
11: CellText := rsMainFrm_VSTText_PackageInfo;
|
||||
12: CellText := rsMainFrm_VSTText_Category;
|
||||
13: CellText := rsMainFrm_VSTText_RepositoryFilename;
|
||||
14: CellText := rsMainFrm_VSTText_RepositoryFileSize;
|
||||
15: CellText := rsMainFrm_VSTText_RepositoryFileHash;
|
||||
16: CellText := rsMainFrm_VSTText_RepositoryFileDate;
|
||||
17: CellText := rsMainFrm_VSTText_HomePageURL;
|
||||
18: CellText := rsMainFrm_VSTText_DownloadURL;
|
||||
19: CellText := rsMainFrm_VSTText_SVNURL;
|
||||
end;
|
||||
end
|
||||
else if Column = 1 then
|
||||
begin
|
||||
case Data^.DataType of
|
||||
1: case Data^.InstallState of
|
||||
//0: CellText := rsMainFrm_VSTText_Install0;
|
||||
1: CellText := rsMainFrm_VSTText_Install1;
|
||||
2: CellText := rsMainFrm_VSTText_Install2;
|
||||
end;
|
||||
2: begin
|
||||
if Data^.InstalledVersion <> '' then
|
||||
CellText := Data^.InstalledVersion
|
||||
else
|
||||
CellText := '-';
|
||||
end
|
||||
if Column = 0 then
|
||||
begin
|
||||
if DaysBetween(Now, Data^.RepositoryDate) <= 31 then
|
||||
CellText := '- ' + FormatDateTime('YYYY.MM.DD', Data^.RepositoryDate)
|
||||
else
|
||||
CellText := '';
|
||||
end
|
||||
end
|
||||
else if Column = 2 then
|
||||
begin
|
||||
if Data^.DataType = 2 then
|
||||
CellText := Data^.Version
|
||||
else
|
||||
CellText := '';
|
||||
end
|
||||
else if Column = 3 then
|
||||
else if TextType = ttNormal then
|
||||
begin
|
||||
case Data^.DataType of
|
||||
1: if Data^.HasUpdate then
|
||||
CellText := 'NEW';
|
||||
2: begin
|
||||
if (Data^.InstalledVersion <> '') and (Data^.UpdateVersion <> '') then
|
||||
CellText := Data^.UpdateVersion
|
||||
if Column = 0 then
|
||||
begin
|
||||
case Data^.DataType of
|
||||
0: CellText := Data^.Repository;
|
||||
1: if Trim(Data^.PackageDisplayName) = '' then
|
||||
CellText := Data^.PackageName
|
||||
else
|
||||
CellText := '-';
|
||||
end
|
||||
CellText := Data^.PackageDisplayName;
|
||||
2: CellText := Data^.PackageFileName;
|
||||
3: CellText := rsMainFrm_VSTText_Description;
|
||||
4: CellText := rsMainFrm_VSTText_Author;
|
||||
5: CellText := rsMainFrm_VSTText_LazCompatibility;
|
||||
6: CellText := rsMainFrm_VSTText_FPCCompatibility;
|
||||
7: CellText := rsMainFrm_VSTText_SupportedWidgetsets;
|
||||
8: CellText := rsMainFrm_VSTText_Packagetype;
|
||||
9: CellText := rsMainFrm_VSTText_License;
|
||||
10: CellText := rsMainFrm_VSTText_Dependecies;
|
||||
11: CellText := rsMainFrm_VSTText_PackageInfo;
|
||||
12: CellText := rsMainFrm_VSTText_Category;
|
||||
13: CellText := rsMainFrm_VSTText_RepositoryFilename;
|
||||
14: CellText := rsMainFrm_VSTText_RepositoryFileSize;
|
||||
15: CellText := rsMainFrm_VSTText_RepositoryFileHash;
|
||||
16: CellText := rsMainFrm_VSTText_RepositoryFileDate;
|
||||
17: CellText := rsMainFrm_VSTText_HomePageURL;
|
||||
18: CellText := rsMainFrm_VSTText_DownloadURL;
|
||||
19: CellText := rsMainFrm_VSTText_SVNURL;
|
||||
end;
|
||||
end
|
||||
else if Column = 1 then
|
||||
begin
|
||||
case Data^.DataType of
|
||||
1: case Data^.InstallState of
|
||||
//0: CellText := rsMainFrm_VSTText_Install0;
|
||||
1: CellText := rsMainFrm_VSTText_Install1;
|
||||
2: CellText := rsMainFrm_VSTText_Install2;
|
||||
end;
|
||||
2: begin
|
||||
if Data^.InstalledVersion <> '' then
|
||||
CellText := Data^.InstalledVersion
|
||||
else
|
||||
CellText := '-';
|
||||
end
|
||||
else
|
||||
CellText := '';
|
||||
end
|
||||
end
|
||||
else if Column = 2 then
|
||||
begin
|
||||
if Data^.DataType = 2 then
|
||||
CellText := Data^.Version
|
||||
else
|
||||
CellText := '';
|
||||
end
|
||||
end
|
||||
else if Column = 4 then
|
||||
begin
|
||||
case Data^.DataType of
|
||||
0: CellText := '';
|
||||
1: CellText := '';
|
||||
2: case Ord(Data^.PackageState) of
|
||||
0: CellText := rsMainFrm_VSTText_PackageState0;
|
||||
1: CellText := rsMainFrm_VSTText_PackageState1;
|
||||
2: CellText := rsMainFrm_VSTText_PackageState2;
|
||||
3: begin
|
||||
if not Data^.HasUpdate then
|
||||
begin
|
||||
if (Data^.UpdateVersion = '') then
|
||||
else if Column = 3 then
|
||||
begin
|
||||
case Data^.DataType of
|
||||
1: if Data^.HasUpdate then
|
||||
CellText := 'NEW';
|
||||
2: begin
|
||||
if (Data^.InstalledVersion <> '') and (Data^.UpdateVersion <> '') then
|
||||
CellText := Data^.UpdateVersion
|
||||
else
|
||||
CellText := '-';
|
||||
end
|
||||
else
|
||||
CellText := '';
|
||||
end
|
||||
end
|
||||
else if Column = 4 then
|
||||
begin
|
||||
case Data^.DataType of
|
||||
0: CellText := '';
|
||||
1: CellText := '';
|
||||
2: case Ord(Data^.PackageState) of
|
||||
0: CellText := rsMainFrm_VSTText_PackageState0;
|
||||
1: CellText := rsMainFrm_VSTText_PackageState1;
|
||||
2: CellText := rsMainFrm_VSTText_PackageState2;
|
||||
3: begin
|
||||
if not Data^.HasUpdate then
|
||||
begin
|
||||
if Data^.InstalledVersion >= Data^.Version then
|
||||
CellText := rsMainFrm_VSTText_PackageState4
|
||||
if (Data^.UpdateVersion = '') then
|
||||
begin
|
||||
if Data^.InstalledVersion >= Data^.Version then
|
||||
CellText := rsMainFrm_VSTText_PackageState4
|
||||
else
|
||||
CellText := rsMainFrm_VSTText_PackageState5
|
||||
end
|
||||
else
|
||||
CellText := rsMainFrm_VSTText_PackageState5
|
||||
begin
|
||||
if (Data^.InstalledVersion >= Data^.UpdateVersion) then
|
||||
CellText := rsMainFrm_VSTText_PackageState4
|
||||
else
|
||||
CellText := rsMainFrm_VSTText_PackageState6
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if (Data^.InstalledVersion >= Data^.UpdateVersion) then
|
||||
CellText := rsMainFrm_VSTText_PackageState4
|
||||
else
|
||||
CellText := rsMainFrm_VSTText_PackageState6
|
||||
end;
|
||||
end
|
||||
else
|
||||
CellText := rsMainFrm_VSTText_PackageState6;
|
||||
Data^.IsUpdated := CellText = rsMainFrm_VSTText_PackageState4;
|
||||
end;
|
||||
end;
|
||||
3: CellText := GetDisplayString(Data^.Description);
|
||||
4: CellText := Data^.Author;
|
||||
5: CellText := Data^.LazCompatibility;
|
||||
6: CellText := Data^.FPCCompatibility;
|
||||
7: CellText := Data^.SupportedWidgetSet;
|
||||
8: case Data^.PackageType of
|
||||
ptRunAndDesignTime: CellText := rsMainFrm_VSTText_PackageType0;
|
||||
ptDesignTime: CellText := rsMainFrm_VSTText_PackageType1;
|
||||
ptRunTime: CellText := rsMainFrm_VSTText_PackageType2;
|
||||
ptRunTimeOnly: CellText := rsMainFrm_VSTText_PackageType3;
|
||||
end;
|
||||
9: CellText := GetDisplayString(Data^.License);
|
||||
10: CellText := Data^.Dependencies;
|
||||
11: CellText := '';
|
||||
12: CellText := TranslateCategories(Data^.Category);
|
||||
13: CellText := Data^.RepositoryFileName;
|
||||
14: CellText := FormatSize(Data^.RepositoryFileSize);
|
||||
15: CellText := Data^.RepositoryFileHash;
|
||||
16: CellText := FormatDateTime('YYYY.MM.DD', Data^.RepositoryDate);
|
||||
17: CellText := Data^.HomePageURL;
|
||||
18: CellText := Data^.DownloadURL;
|
||||
19: CellText := Data^.SVNURL;
|
||||
end;
|
||||
end
|
||||
else if Column = 5 then
|
||||
begin
|
||||
CellText := '';
|
||||
end
|
||||
CellText := rsMainFrm_VSTText_PackageState6;
|
||||
Data^.IsUpdated := CellText = rsMainFrm_VSTText_PackageState4;
|
||||
end;
|
||||
end;
|
||||
3: CellText := GetDisplayString(Data^.Description);
|
||||
4: CellText := Data^.Author;
|
||||
5: CellText := Data^.LazCompatibility;
|
||||
6: CellText := Data^.FPCCompatibility;
|
||||
7: CellText := Data^.SupportedWidgetSet;
|
||||
8: case Data^.PackageType of
|
||||
ptRunAndDesignTime: CellText := rsMainFrm_VSTText_PackageType0;
|
||||
ptDesignTime: CellText := rsMainFrm_VSTText_PackageType1;
|
||||
ptRunTime: CellText := rsMainFrm_VSTText_PackageType2;
|
||||
ptRunTimeOnly: CellText := rsMainFrm_VSTText_PackageType3;
|
||||
end;
|
||||
9: CellText := GetDisplayString(Data^.License);
|
||||
10: CellText := Data^.Dependencies;
|
||||
11: CellText := '';
|
||||
12: CellText := TranslateCategories(Data^.Category);
|
||||
13: CellText := Data^.RepositoryFileName;
|
||||
14: CellText := FormatSize(Data^.RepositoryFileSize);
|
||||
15: CellText := Data^.RepositoryFileHash;
|
||||
16: CellText := FormatDateTime('YYYY.MM.DD', Data^.RepositoryDate);
|
||||
17: CellText := Data^.HomePageURL;
|
||||
18: CellText := Data^.DownloadURL;
|
||||
19: CellText := Data^.SVNURL;
|
||||
end;
|
||||
end
|
||||
else if Column = 5 then
|
||||
begin
|
||||
CellText := '';
|
||||
end
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TVisualTree.VSTHeaderClick(Sender: TVTHeader; Column: TColumnIndex;
|
||||
@ -1539,66 +1565,80 @@ var
|
||||
Data: PData;
|
||||
begin
|
||||
Data := FVST.GetNodeData(Node);
|
||||
case column of
|
||||
2: begin
|
||||
if Data^.DataType = 2 then
|
||||
begin
|
||||
if (Data^.InstalledVersion = '') or ((Data^.InstalledVersion <> '') and (Data^.InstalledVersion < Data^.Version)) then
|
||||
TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsBold]
|
||||
else
|
||||
TargetCanvas.Font.Style := TargetCanvas.Font.Style - [fsBold];
|
||||
end;
|
||||
if Node <> Sender.FocusedNode then
|
||||
TargetCanvas.Font.Color := clBlack
|
||||
else
|
||||
TargetCanvas.Font.Color := clWhite;
|
||||
end;
|
||||
3: begin
|
||||
case Data^.DataType of
|
||||
1: TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsBold];
|
||||
2: if Data^.HasUpdate then
|
||||
TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsBold]
|
||||
else
|
||||
TargetCanvas.Font.Style := TargetCanvas.Font.Style - [fsBold];
|
||||
end;
|
||||
if Node <> Sender.FocusedNode then
|
||||
TargetCanvas.Font.Color := clBlack
|
||||
else
|
||||
TargetCanvas.Font.Color := clWhite;
|
||||
end;
|
||||
4: begin
|
||||
if (FHoverNode = Node) and (FHoverColumn = Column) and ((Data^.DataType = 17) or (Data^.DataType = 18)) then
|
||||
begin
|
||||
TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsUnderline];
|
||||
if Node <> Sender.FocusedNode then
|
||||
TargetCanvas.Font.Color := clBlue
|
||||
else
|
||||
TargetCanvas.Font.Color := clWhite;
|
||||
end
|
||||
else if (Data^.DataType = 2) and (Data^.IsUpdated) then
|
||||
begin
|
||||
TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsBold];
|
||||
if Node <> Sender.FocusedNode then
|
||||
TargetCanvas.Font.Color := clGreen
|
||||
else
|
||||
TargetCanvas.Font.Color := clWhite;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if Node <> Sender.FocusedNode then
|
||||
if TextType = ttStatic then
|
||||
begin
|
||||
if Column = 0 then
|
||||
begin
|
||||
if DaysBetween(Now, Data^.RepositoryDate) <= 31 then
|
||||
begin
|
||||
TargetCanvas.Font.Style := TargetCanvas.Font.Style - [fsBold];
|
||||
TargetCanvas.Font.Color := clBlack;
|
||||
end
|
||||
end
|
||||
end
|
||||
else if TextType = ttNormal then
|
||||
begin
|
||||
case column of
|
||||
2: begin
|
||||
if Data^.DataType = 2 then
|
||||
begin
|
||||
if (Data^.InstalledVersion = '') or ((Data^.InstalledVersion <> '') and (Data^.InstalledVersion < Data^.Version)) then
|
||||
TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsBold]
|
||||
else
|
||||
TargetCanvas.Font.Style := TargetCanvas.Font.Style - [fsBold];
|
||||
end;
|
||||
if Node <> Sender.FocusedNode then
|
||||
TargetCanvas.Font.Color := clBlack
|
||||
else
|
||||
TargetCanvas.Font.Color := clWhite;
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if Node <> Sender.FocusedNode then
|
||||
TargetCanvas.Font.Color := FVST.Font.Color
|
||||
else
|
||||
TargetCanvas.Font.Color := clWhite;
|
||||
end;
|
||||
end;
|
||||
3: begin
|
||||
case Data^.DataType of
|
||||
1: TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsBold];
|
||||
2: if Data^.HasUpdate then
|
||||
TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsBold]
|
||||
else
|
||||
TargetCanvas.Font.Style := TargetCanvas.Font.Style - [fsBold];
|
||||
end;
|
||||
if Node <> Sender.FocusedNode then
|
||||
TargetCanvas.Font.Color := clBlack
|
||||
else
|
||||
TargetCanvas.Font.Color := clWhite;
|
||||
end;
|
||||
4: begin
|
||||
if (FHoverNode = Node) and (FHoverColumn = Column) and ((Data^.DataType = 17) or (Data^.DataType = 18)) then
|
||||
begin
|
||||
TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsUnderline];
|
||||
if Node <> Sender.FocusedNode then
|
||||
TargetCanvas.Font.Color := clBlue
|
||||
else
|
||||
TargetCanvas.Font.Color := clWhite;
|
||||
end
|
||||
else if (Data^.DataType = 2) and (Data^.IsUpdated) then
|
||||
begin
|
||||
TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsBold];
|
||||
if Node <> Sender.FocusedNode then
|
||||
TargetCanvas.Font.Color := clGreen
|
||||
else
|
||||
TargetCanvas.Font.Color := clWhite;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if Node <> Sender.FocusedNode then
|
||||
TargetCanvas.Font.Color := clBlack
|
||||
else
|
||||
TargetCanvas.Font.Color := clWhite;
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if Node <> Sender.FocusedNode then
|
||||
TargetCanvas.Font.Color := FVST.Font.Color
|
||||
else
|
||||
TargetCanvas.Font.Color := clWhite;
|
||||
end;
|
||||
end;
|
||||
end
|
||||
end;
|
||||
|
||||
procedure TVisualTree.VSTFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||
|
Loading…
Reference in New Issue
Block a user