Opkman: Link OPM to VTV from the component folder.

git-svn-id: trunk@56966 -
This commit is contained in:
balazs 2018-01-05 14:56:27 +00:00
parent 581a4a19d4
commit 65d289f941
12 changed files with 89 additions and 94 deletions

View File

@ -17,7 +17,9 @@
<CustomOptions Value="$(IDEBuildOptions)"/> <CustomOptions Value="$(IDEBuildOptions)"/>
</Other> </Other>
</CompilerOptions> </CompilerOptions>
<Description Value="Online package manger"/> <Description Value="Online Package Manager is a tool that automates the process of installing, upgrading, configuring Lazarus packages. The packages are stored in the main repository(see repository column) as zip files, along with a JSON file. The JSON contains all necessary information about the packages. On request the packages are downloaded/extracted/compiled/installed into the IDE. If available, it's also possible to update a previously installed package from the maintainer webpage.
For more info please visit: http://wiki.freepascal.org/Online_Package_Manager"/>
<License Value="GPL"/> <License Value="GPL"/>
<Version Major="1" Release="1" Build="2"/> <Version Major="1" Release="1" Build="2"/>
<Files Count="29"> <Files Count="29">
@ -148,13 +150,16 @@
<EnableI18N Value="True"/> <EnableI18N Value="True"/>
<OutDir Value="languages"/> <OutDir Value="languages"/>
</i18n> </i18n>
<RequiredPkgs Count="2"> <RequiredPkgs Count="3">
<Item1> <Item1>
<PackageName Value="IDEIntf"/> <PackageName Value="virtualtreeview_package"/>
</Item1> </Item1>
<Item2> <Item2>
<PackageName Value="FCL"/> <PackageName Value="IDEIntf"/>
</Item2> </Item2>
<Item3>
<PackageName Value="FCL"/>
</Item3>
</RequiredPkgs> </RequiredPkgs>
<UsageOptions> <UsageOptions>
<UnitPath Value="$(PkgOutDir)"/> <UnitPath Value="$(PkgOutDir)"/>

View File

@ -30,9 +30,9 @@ interface
uses uses
Classes, SysUtils, Classes, SysUtils,
// LCL // LCL
Forms, Controls, Graphics, ExtCtrls, StdCtrls, ButtonPanel, Forms, Controls, Graphics, ExtCtrls, StdCtrls, ButtonPanel, VirtualTrees,
// OpkMan // OpkMan
opkman_const, opkman_common, opkman_VirtualTrees, opkman_options; opkman_const, opkman_common, opkman_options;
type type
@ -284,7 +284,7 @@ begin
else else
Data^.FType := 0; Data^.FType := 0;
end; end;
FVST.SortTree(0, opkman_VirtualTrees.sdAscending); FVST.SortTree(0, VirtualTrees.sdAscending);
SL := TStringList.Create; SL := TStringList.Create;
try try

View File

@ -28,12 +28,12 @@ unit opkman_createjsonforupdatesfrm;
interface interface
uses uses
Classes, SysUtils, fpjson, Classes, SysUtils, fpjson, VirtualTrees,
// LCL // LCL
Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, LCLIntf, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, LCLIntf,
// OpkMan // OpkMan
opkman_serializablepackages, opkman_const, opkman_common, opkman_updates, opkman_serializablepackages, opkman_const, opkman_common, opkman_updates,
opkman_VirtualTrees, opkman_options; opkman_options;
type type
@ -59,7 +59,7 @@ type
FVST: TVirtualStringTree; FVST: TVirtualStringTree;
FMetaPackage: TMetaPackage; FMetaPackage: TMetaPackage;
FSortCol: Integer; FSortCol: Integer;
FSortDir: opkman_VirtualTrees.TSortDirection; FSortDir: VirtualTrees.TSortDirection;
procedure VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; procedure VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; {%H-}TextType: TVSTTextType; var CellText: String); Column: TColumnIndex; {%H-}TextType: TVSTTextType; var CellText: String);
procedure VSTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; procedure VSTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
@ -68,8 +68,7 @@ type
procedure VSTCompareNodes(Sender: TBaseVirtualTree; Node1, procedure VSTCompareNodes(Sender: TBaseVirtualTree; Node1,
Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer); Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer);
procedure VSTFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode); procedure VSTFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
procedure VSTHeaderClick(Sender: TVTHeader; Column: TColumnIndex; procedure VSTHeaderClick(Sender: TVTHeader; HitInfo: TVTHeaderHitInfo);
Button: TMouseButton; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);
public public
procedure PopluateTree; procedure PopluateTree;
end; end;
@ -309,26 +308,25 @@ begin
Finalize(Data^) Finalize(Data^)
end; end;
procedure TCreateJSONForUpdatesFrm.VSTHeaderClick(Sender: TVTHeader; procedure TCreateJSONForUpdatesFrm.VSTHeaderClick(Sender: TVTHeader; HitInfo: TVTHeaderHitInfo);
Column: TColumnIndex; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin begin
if Column > 1 then if HitInfo.Column > 1 then
Exit; Exit;
if Button = mbLeft then if HitInfo.Button = mbLeft then
begin begin
with Sender, Treeview do with Sender, Treeview do
begin begin
if (SortColumn = NoColumn) or (SortColumn <> Column) then if (SortColumn = NoColumn) or (SortColumn <> HitInfo.Column) then
begin begin
SortColumn := Column; SortColumn := HitInfo.Column;
SortDirection := opkman_VirtualTrees.sdAscending; SortDirection := VirtualTrees.sdAscending;
end end
else else
begin begin
if SortDirection = opkman_VirtualTrees.sdAscending then if SortDirection = VirtualTrees.sdAscending then
SortDirection := opkman_VirtualTrees.sdDescending SortDirection := VirtualTrees.sdDescending
else else
SortDirection := opkman_VirtualTrees.sdAscending; SortDirection := VirtualTrees.sdAscending;
FSortDir := SortDirection; FSortDir := SortDirection;
end; end;
SortTree(SortColumn, SortDirection, False); SortTree(SortColumn, SortDirection, False);

View File

@ -28,7 +28,7 @@ unit opkman_createrepositoryfrm;
interface interface
uses uses
Classes, SysUtils, FileUtil, fpjson, Classes, SysUtils, FileUtil, fpjson, VirtualTrees,
// LCL // LCL
Forms, Controls, Graphics, Dialogs, ExtCtrls, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls, Buttons, Menus, StdCtrls, Buttons, Menus,
@ -37,7 +37,7 @@ uses
// LazUtils // LazUtils
LazFileUtils, LazUTF8, LazFileUtils, LazUTF8,
// OpkMan // OpkMan
opkman_VirtualTrees, opkman_serializablepackages; opkman_serializablepackages;
type type
@ -100,8 +100,7 @@ type
procedure VSTPackagesGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; procedure VSTPackagesGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
{%H-}Kind: TVTImageKind; {%H-}Column: TColumnIndex; var {%H-}Ghosted: Boolean; {%H-}Kind: TVTImageKind; {%H-}Column: TColumnIndex; var {%H-}Ghosted: Boolean;
var ImageIndex: Integer); var ImageIndex: Integer);
procedure VSTPackagesHeaderClick(Sender: TVTHeader; {%H-}Column: TColumnIndex; procedure VSTPackagesHeaderClick(Sender: TVTHeader; HitInfo: TVTHeaderHitInfo);
Button: TMouseButton; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);
procedure VSTPackagesCompareNodes(Sender: TBaseVirtualTree; Node1, procedure VSTPackagesCompareNodes(Sender: TBaseVirtualTree; Node1,
Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer); Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer);
procedure VSTPackagesFocusChanged(Sender: TBaseVirtualTree; Node: PVirtualNode; procedure VSTPackagesFocusChanged(Sender: TBaseVirtualTree; Node: PVirtualNode;
@ -808,24 +807,23 @@ begin
ImageIndex := Data^.FDataType; ImageIndex := Data^.FDataType;
end; end;
procedure TCreateRepositoryFrm.VSTPackagesHeaderClick(Sender: TVTHeader; procedure TCreateRepositoryFrm.VSTPackagesHeaderClick(Sender: TVTHeader; HitInfo: TVTHeaderHitInfo);
Column: TColumnIndex; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin begin
if Button = mbLeft then if HitInfo.Button = mbLeft then
begin begin
with Sender, Treeview do with Sender, Treeview do
begin begin
if (SortColumn = NoColumn) or (SortColumn <> Column) then if (SortColumn = NoColumn) or (SortColumn <> HitInfo.Column) then
begin begin
SortColumn := Column; SortColumn := HitInfo.Column;
SortDirection := opkman_VirtualTrees.sdAscending; SortDirection := VirtualTrees.sdAscending;
end end
else else
begin begin
if SortDirection = opkman_VirtualTrees.sdAscending then if SortDirection = VirtualTrees.sdAscending then
SortDirection := opkman_VirtualTrees.sdDescending SortDirection := VirtualTrees.sdDescending
else else
SortDirection := opkman_VirtualTrees.sdAscending; SortDirection := VirtualTrees.sdAscending;
end; end;
SortTree(SortColumn, SortDirection, False); SortTree(SortColumn, SortDirection, False);
FSortDirection := SortDirection; FSortDirection := SortDirection;

View File

@ -28,7 +28,7 @@ unit opkman_createrepositorypackagefrm;
interface interface
uses uses
Classes, SysUtils, md5, fpjson, Classes, SysUtils, md5, fpjson, VirtualTrees,
// LCL // LCL
Forms, Controls, ExtCtrls, StdCtrls, Dialogs, Graphics, Buttons, EditBtn, Forms, Controls, ExtCtrls, StdCtrls, Dialogs, Graphics, Buttons, EditBtn,
// IDEIntf // IDEIntf
@ -36,7 +36,7 @@ uses
// LazUtils // LazUtils
FileUtil, LazFileUtils, Laz2_XMLCfg, FileUtil, LazFileUtils, Laz2_XMLCfg,
// OpkMan // OpkMan
opkman_VirtualTrees, opkman_serializablepackages, opkman_zipper, opkman_uploader; opkman_serializablepackages, opkman_zipper, opkman_uploader;
type type
TPackageOperation = (poCreate, poSubmit); TPackageOperation = (poCreate, poSubmit);
@ -486,7 +486,7 @@ begin
FVSTPackages.Selected[RootNode] := True; FVSTPackages.Selected[RootNode] := True;
CanGo := True; CanGo := True;
end; end;
FVSTPackages.SortTree(0, opkman_VirtualTrees.sdAscending); FVSTPackages.SortTree(0, VirtualTrees.sdAscending);
end end
else else
MessageDlgEx(rsCreateRepositoryPackageFrm_NoPackage, mtInformation, [mbOk], Self); MessageDlgEx(rsCreateRepositoryPackageFrm_NoPackage, mtInformation, [mbOk], Self);

View File

@ -5,14 +5,14 @@ unit opkman_intf_packagelistfrm;
interface interface
uses uses
SysUtils, Classes, SysUtils, Classes, VirtualTrees,
// LCL // LCL
Forms, Controls, Buttons, Graphics, ExtCtrls, StdCtrls, LCLType, ButtonPanel, Forms, Controls, Buttons, Graphics, ExtCtrls, StdCtrls, LCLType, ButtonPanel,
Menus, Menus,
//IDEIntf //IDEIntf
PackageIntf, PackageIntf,
// OpkMan // OpkMan
opkman_VirtualTrees, opkman_const, opkman_serializablepackages, opkman_options, opkman_const, opkman_serializablepackages, opkman_options,
opkman_Common; opkman_Common;
type type
@ -33,7 +33,7 @@ type
private private
FVST: TVirtualStringTree; FVST: TVirtualStringTree;
FSortCol: Integer; FSortCol: Integer;
FSortDir: opkman_VirtualTrees.TSortDirection; FSortDir: VirtualTrees.TSortDirection;
procedure VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; procedure VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; {%H-}TextType: TVSTTextType; var CellText: String); Column: TColumnIndex; {%H-}TextType: TVSTTextType; var CellText: String);
procedure VSTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; procedure VSTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
@ -41,8 +41,7 @@ type
var ImageIndex: Integer); var ImageIndex: Integer);
procedure VSTCompareNodes(Sender: TBaseVirtualTree; Node1, procedure VSTCompareNodes(Sender: TBaseVirtualTree; Node1,
Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer); Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer);
procedure VSTHeaderClick(Sender: TVTHeader; Column: TColumnIndex; procedure VSTHeaderClick(Sender: TVTHeader; HitInfo: TVTHeaderHitInfo);
Button: TMouseButton; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);
procedure VSTGetHint(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; procedure VSTGetHint(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
var LineBreakStyle: TVTTooltipLineBreakStyle; var HintText: String); var LineBreakStyle: TVTTooltipLineBreakStyle; var HintText: String);
procedure VSTFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode); procedure VSTFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
@ -200,26 +199,25 @@ begin
Result := CompareText(Data1^.LazarusPackageName, Data2^.LazarusPackageName); Result := CompareText(Data1^.LazarusPackageName, Data2^.LazarusPackageName);
end; end;
procedure TIntfPackageListFrm.VSTHeaderClick(Sender: TVTHeader; procedure TIntfPackageListFrm.VSTHeaderClick(Sender: TVTHeader; HitInfo: TVTHeaderHitInfo);
Column: TColumnIndex; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin begin
if (Column <> 0) and (Column <> 1) and (Column <> 3) then if (HitInfo.Column <> 0) and (HitInfo.Column <> 1) and (HitInfo.Column <> 3) then
Exit; Exit;
if Button = mbLeft then if HitInfo.Button = mbLeft then
begin begin
with Sender, Treeview do with Sender, Treeview do
begin begin
if (SortColumn = NoColumn) or (SortColumn <> Column) then if (SortColumn = NoColumn) or (SortColumn <> HitInfo.Column) then
begin begin
SortColumn := Column; SortColumn := HitInfo.Column;
SortDirection := opkman_VirtualTrees.sdAscending; SortDirection := VirtualTrees.sdAscending;
end end
else else
begin begin
if SortDirection = opkman_VirtualTrees.sdAscending then if SortDirection = VirtualTrees.sdAscending then
SortDirection := opkman_VirtualTrees.sdDescending SortDirection := VirtualTrees.sdDescending
else else
SortDirection := opkman_VirtualTrees.sdAscending; SortDirection := VirtualTrees.sdAscending;
FSortDir := SortDirection; FSortDir := SortDirection;
end; end;
SortTree(SortColumn, SortDirection, False); SortTree(SortColumn, SortDirection, False);

View File

@ -29,7 +29,7 @@ unit opkman_mainfrm;
interface interface
uses uses
Classes, SysUtils, fpjson, md5, Graphics, Classes, SysUtils, fpjson, md5, Graphics, VirtualTrees,
// LCL // LCL
Forms, Controls, Dialogs, StdCtrls, ExtCtrls, Buttons, Menus, ComCtrls, Clipbrd, Forms, Controls, Dialogs, StdCtrls, ExtCtrls, Buttons, Menus, ComCtrls, Clipbrd,
LCLIntf, LCLVersion, LCLProc, LCLIntf, LCLVersion, LCLProc,
@ -38,7 +38,7 @@ uses
// IdeIntf // IdeIntf
IDECommands, PackageIntf, IDECommands, PackageIntf,
// OpkMan // OpkMan
opkman_VirtualTrees, opkman_downloader, opkman_installer, opkman_downloader, opkman_installer,
opkman_serializablepackages, opkman_visualtree, opkman_const, opkman_common, opkman_serializablepackages, opkman_visualtree, opkman_const, opkman_common,
opkman_progressfrm, opkman_zipper, opkman_packagelistfrm, opkman_options, opkman_progressfrm, opkman_zipper, opkman_packagelistfrm, opkman_options,
opkman_optionsfrm, opkman_createrepositorypackagefrm, opkman_updates, opkman_optionsfrm, opkman_createrepositorypackagefrm, opkman_updates,

View File

@ -28,9 +28,9 @@ interface
uses uses
SysUtils, SysUtils,
// LCL // LCL
Forms, Controls, Graphics, ExtCtrls, StdCtrls, Forms, Controls, Graphics, ExtCtrls, StdCtrls, VirtualTrees,
// OpkMan // OpkMan
opkman_VirtualTrees, opkman_const, opkman_serializablepackages, opkman_options; opkman_const, opkman_serializablepackages, opkman_options;
type type
@ -194,7 +194,7 @@ begin
bOk.Visible := True; bOk.Visible := True;
lbMessage.Caption := rsMainFrm_PackageUpdate1; lbMessage.Caption := rsMainFrm_PackageUpdate1;
end; end;
FVST.SortTree(0, opkman_VirtualTrees.sdAscending); FVST.SortTree(0, sdAscending);
end; end;
procedure TPackageListFrm.FormClose(Sender: TObject; procedure TPackageListFrm.FormClose(Sender: TObject;

View File

@ -27,12 +27,12 @@ unit opkman_progressfrm;
interface interface
uses uses
SysUtils, Classes, SysUtils, Classes, VirtualTrees,
// LCL // LCL
Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls, ExtCtrls, ButtonPanel, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls, ExtCtrls, ButtonPanel,
// OpkMan // OpkMan
opkman_installer, opkman_common, opkman_const, opkman_downloader, opkman_zipper, opkman_installer, opkman_common, opkman_const, opkman_downloader, opkman_zipper,
opkman_VirtualTrees, opkman_options; opkman_options;
type type

View File

@ -28,11 +28,11 @@ unit opkman_repositories;
interface interface
uses uses
Classes, SysUtils, Classes, SysUtils, VirtualTrees,
// LCL // LCL
Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, ButtonPanel, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, ButtonPanel,
// OpkMan // OpkMan
opkman_const, opkman_common, opkman_options, opkman_VirtualTrees; opkman_const, opkman_common, opkman_options;
type type
@ -52,7 +52,7 @@ type
private private
FVST: TVirtualStringTree; FVST: TVirtualStringTree;
FSortCol: Integer; FSortCol: Integer;
FSortDir: opkman_VirtualTrees.TSortDirection; FSortDir: VirtualTrees.TSortDirection;
procedure VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; procedure VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; {%H-}TextType: TVSTTextType; var CellText: String); Column: TColumnIndex; {%H-}TextType: TVSTTextType; var CellText: String);
procedure VSTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; procedure VSTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
@ -63,8 +63,7 @@ type
procedure VSTFocuseChanged(Sender: TBaseVirtualTree; {%H-}Node: PVirtualNode; {%H-}Column: TColumnIndex); procedure VSTFocuseChanged(Sender: TBaseVirtualTree; {%H-}Node: PVirtualNode; {%H-}Column: TColumnIndex);
procedure VSTPaintText(Sender: TBaseVirtualTree; const TargetCanvas: TCanvas; procedure VSTPaintText(Sender: TBaseVirtualTree; const TargetCanvas: TCanvas;
Node: PVirtualNode; {%H-}Column: TColumnIndex; {%H-}TextType: TVSTTextType); Node: PVirtualNode; {%H-}Column: TColumnIndex; {%H-}TextType: TVSTTextType);
procedure VSTHeaderClick(Sender: TVTHeader; Column: TColumnIndex; procedure VSTHeaderClick(Sender: TVTHeader; HitInfo: TVTHeaderHitInfo);
Button: TMouseButton; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);
procedure VSTFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode); procedure VSTFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
procedure PopulateTree; procedure PopulateTree;
procedure EnableDisableButtons; procedure EnableDisableButtons;
@ -229,7 +228,7 @@ var
begin begin
Options.RemoteRepositoryTmp.Clear; Options.RemoteRepositoryTmp.Clear;
FVST.BeginUpdate; FVST.BeginUpdate;
FVST.SortTree(0, opkman_VirtualTrees.sdAscending); FVST.SortTree(0, VirtualTrees.sdAscending);
Node := FVST.GetFirst; Node := FVST.GetFirst;
while Assigned(Node) do while Assigned(Node) do
begin begin
@ -304,26 +303,25 @@ begin
TargetCanvas.Font.Style := TargetCanvas.Font.Style - [fsBold] TargetCanvas.Font.Style := TargetCanvas.Font.Style - [fsBold]
end; end;
procedure TRepositoriesFrm.VSTHeaderClick(Sender: TVTHeader; procedure TRepositoriesFrm.VSTHeaderClick(Sender: TVTHeader; HitInfo: TVTHeaderHitInfo);
Column: TColumnIndex; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin begin
if (Column <> 0) and (Column <> 1) and (Column <> 3) then if (HitInfo.Column <> 0) and (HitInfo.Column <> 1) and (HitInfo.Column <> 3) then
Exit; Exit;
if Button = mbLeft then if HitInfo.Button = mbLeft then
begin begin
with Sender, Treeview do with Sender, Treeview do
begin begin
if (SortColumn = NoColumn) or (SortColumn <> Column) then if (SortColumn = NoColumn) or (SortColumn <> HitInfo.Column) then
begin begin
SortColumn := Column; SortColumn := HitInfo.Column;
SortDirection := opkman_VirtualTrees.sdAscending; SortDirection := VirtualTrees.sdAscending;
end end
else else
begin begin
if SortDirection = opkman_VirtualTrees.sdAscending then if SortDirection = VirtualTrees.sdAscending then
SortDirection := opkman_VirtualTrees.sdDescending SortDirection := VirtualTrees.sdDescending
else else
SortDirection := opkman_VirtualTrees.sdAscending; SortDirection := VirtualTrees.sdAscending;
FSortDir := SortDirection; FSortDir := SortDirection;
end; end;
SortTree(SortColumn, SortDirection, False); SortTree(SortColumn, SortDirection, False);
@ -403,7 +401,7 @@ begin
Data^.FUniqueID := UniqueID; Data^.FUniqueID := UniqueID;
end; end;
end; end;
FVST.SortTree(0, opkman_VirtualTrees.sdAscending); FVST.SortTree(0, VirtualTrees.sdAscending);
Node := FVST.GetFirst; Node := FVST.GetFirst;
if Node <> nil then if Node <> nil then
begin begin

View File

@ -35,7 +35,7 @@ uses
//Interface //Interface
LCLIntf, LCLIntf,
//OpkMan //OpkMan
opkman_virtualtrees; virtualtrees;
type type

View File

@ -30,13 +30,13 @@ unit opkman_visualtree;
interface interface
uses uses
Classes, SysUtils, contnrs, Math, dateutils, Classes, SysUtils, contnrs, Math, dateutils, VirtualTrees,
// LCL // LCL
Controls, Graphics, Menus, Dialogs, Forms, LCLType, Buttons, Controls, Graphics, Menus, Dialogs, Forms, LCLType, Buttons,
// IDEIntf // IDEIntf
LCLIntf, PackageIntf, LCLIntf, PackageIntf,
// OpkMan // OpkMan
opkman_VirtualTrees, opkman_common, opkman_serializablepackages, opkman_const, opkman_common, opkman_serializablepackages, opkman_const,
opkman_options, opkman_packagedetailsfrm, opkman_showhint; opkman_options, opkman_packagedetailsfrm, opkman_showhint;
@ -96,7 +96,7 @@ type
FLink: String; FLink: String;
FLinkClicked: Boolean; FLinkClicked: Boolean;
FSortCol: Integer; FSortCol: Integer;
FSortDir: opkman_VirtualTrees.TSortDirection; FSortDir: VirtualTrees.TSortDirection;
FCheckingNodes: Boolean; FCheckingNodes: Boolean;
FLeaving: Boolean; FLeaving: Boolean;
FOnChecking: TOnChecking; FOnChecking: TOnChecking;
@ -116,8 +116,7 @@ type
var ImageIndex: Integer); var ImageIndex: Integer);
procedure VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; procedure VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; {%H-}TextType: TVSTTextType; var CellText: String); Column: TColumnIndex; {%H-}TextType: TVSTTextType; var CellText: String);
procedure VSTHeaderClick(Sender: TVTHeader; Column: TColumnIndex; procedure VSTHeaderClick(Sender: TVTHeader; HitInfo: TVTHeaderHitInfo);
Button: TMouseButton; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);
procedure VSTPaintText(Sender: TBaseVirtualTree; procedure VSTPaintText(Sender: TBaseVirtualTree;
const TargetCanvas: TCanvas; Node: PVirtualNode; {%H-}Column: TColumnIndex; const TargetCanvas: TCanvas; Node: PVirtualNode; {%H-}Column: TColumnIndex;
{%H-}TextType: TVSTTextType); {%H-}TextType: TVSTTextType);
@ -475,7 +474,7 @@ begin
GrandChildData^.SVNURL := SerializablePackages.Items[I].SVNURL; GrandChildData^.SVNURL := SerializablePackages.Items[I].SVNURL;
GrandChildData^.DataType := 19;} GrandChildData^.DataType := 19;}
end; end;
FVST.SortTree(0, opkman_VirtualTrees.sdAscending); FVST.SortTree(0, VirtualTrees.sdAscending);
ExpandEx; ExpandEx;
CollapseEx; CollapseEx;
RootNode := VST.GetFirst; RootNode := VST.GetFirst;
@ -1539,26 +1538,25 @@ begin
end; end;
end; end;
procedure TVisualTree.VSTHeaderClick(Sender: TVTHeader; Column: TColumnIndex; procedure TVisualTree.VSTHeaderClick(Sender: TVTHeader; HitInfo: TVTHeaderHitInfo);
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin begin
if (Column <> 0) and (Column <> 1) and (Column <> 3) then if (HitInfo.Column <> 0) and (HitInfo.Column <> 1) and (HitInfo.Column <> 3) then
Exit; Exit;
if Button = mbLeft then if HitInfo.Button = mbLeft then
begin begin
with Sender, Treeview do with Sender, Treeview do
begin begin
if (SortColumn = NoColumn) or (SortColumn <> Column) then if (SortColumn = NoColumn) or (SortColumn <> HitInfo.Column) then
begin begin
SortColumn := Column; SortColumn := HitInfo.Column;
SortDirection := opkman_VirtualTrees.sdAscending; SortDirection := VirtualTrees.sdAscending;
end end
else else
begin begin
if SortDirection = opkman_VirtualTrees.sdAscending then if SortDirection = VirtualTrees.sdAscending then
SortDirection := opkman_VirtualTrees.sdDescending SortDirection := VirtualTrees.sdDescending
else else
SortDirection := opkman_VirtualTrees.sdAscending; SortDirection := VirtualTrees.sdAscending;
FSortDir := SortDirection; FSortDir := SortDirection;
end; end;
SortTree(SortColumn, SortDirection, False); SortTree(SortColumn, SortDirection, False);