mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-02 06:32:32 +02:00
Opkman: Add the possibility to open the package file(lpk) directly from the package tree.
git-svn-id: trunk@62959 -
This commit is contained in:
parent
083db4d426
commit
2eedadafce
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<CONFIG>
|
<CONFIG>
|
||||||
<Package Version="4">
|
<Package Version="5">
|
||||||
<PathDelim Value="\"/>
|
<PathDelim Value="\"/>
|
||||||
<Name Value="OnlinePackageManager"/>
|
<Name Value="OnlinePackageManager"/>
|
||||||
<Type Value="RunAndDesignTime"/>
|
<Type Value="RunAndDesignTime"/>
|
||||||
|
@ -54,8 +54,8 @@ const
|
|||||||
cOpenSSLURL = 'http://packages.lazarus-ide.org/openssl-1.0.2j-i386-win32.zip';
|
cOpenSSLURL = 'http://packages.lazarus-ide.org/openssl-1.0.2j-i386-win32.zip';
|
||||||
{$endif}
|
{$endif}
|
||||||
cExtractDir = 'ExtractDir';
|
cExtractDir = 'ExtractDir';
|
||||||
cSubmitURL_Zip = 'aHR0cDovL2xhemFydXNvcG0uMDAwd2ViaG9zdGFwcC5jb20vemlwLnBocA==';
|
cSubmitURL_Zip = 'aHR0cDovL2xhemFydXNvcG0ub3JnL3ppcC5waHA=';
|
||||||
cSubmitURL_JSON = 'aHR0cDovL2xhemFydXNvcG0uMDAwd2ViaG9zdGFwcC5jb20vanNvbi5waHA=';
|
cSubmitURL_JSON = 'aHR0cDovL2xhemFydXNvcG0ub3JnL2pzb24ucGhw';
|
||||||
cSep = '#@$%^';
|
cSep = '#@$%^';
|
||||||
|
|
||||||
resourcestring
|
resourcestring
|
||||||
@ -139,6 +139,9 @@ resourcestring
|
|||||||
rsMainFrm_VSTText_PackageCategory27 = 'Games and Game Engines';
|
rsMainFrm_VSTText_PackageCategory27 = 'Games and Game Engines';
|
||||||
rsMainFrm_VSTText_Desc = 'Description for package';
|
rsMainFrm_VSTText_Desc = 'Description for package';
|
||||||
rsMainFrm_VSTText_Lic = 'License info for package';
|
rsMainFrm_VSTText_Lic = 'License info for package';
|
||||||
|
rsMainFrm_VSTText_Open = 'Open';
|
||||||
|
rsMainFrm_VSTText_Open_Notfound = 'Package file not found';
|
||||||
|
rsMainFrm_VSTText_Open_Error = 'Cannot open package file';
|
||||||
rsMainFrm_VSTText_ComDesc = 'Community description for metapackage';
|
rsMainFrm_VSTText_ComDesc = 'Community description for metapackage';
|
||||||
rsMainFrm_cbAll_Caption = 'All/None';
|
rsMainFrm_cbAll_Caption = 'All/None';
|
||||||
rsMainFrm_cbAll_Hint = 'Check/Uncheck packages';
|
rsMainFrm_cbAll_Hint = 'Check/Uncheck packages';
|
||||||
|
@ -30,9 +30,11 @@ uses
|
|||||||
SysUtils, Classes, laz.VirtualTrees,
|
SysUtils, Classes, laz.VirtualTrees,
|
||||||
// LCL
|
// LCL
|
||||||
Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls, ExtCtrls, ButtonPanel,
|
Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls, ExtCtrls, ButtonPanel,
|
||||||
|
// IdeIntf
|
||||||
|
PackageIntf,
|
||||||
// OpkMan
|
// OpkMan
|
||||||
opkman_installer, opkman_common, opkman_const, opkman_downloader, opkman_zipper,
|
opkman_installer, opkman_common, opkman_const, opkman_downloader, opkman_zipper,
|
||||||
opkman_options, opkman_maindm;
|
opkman_options, opkman_maindm, opkman_serializablepackages;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -403,6 +405,7 @@ var
|
|||||||
Msg: String;
|
Msg: String;
|
||||||
Node: PVirtualNode;
|
Node: PVirtualNode;
|
||||||
Data: PData;
|
Data: PData;
|
||||||
|
LazarusPkg: TLazarusPackage;
|
||||||
begin
|
begin
|
||||||
Node := FVST.AddChild(nil);
|
Node := FVST.AddChild(nil);
|
||||||
Data := FVST.GetNodeData(Node);
|
Data := FVST.GetNodeData(Node);
|
||||||
@ -432,6 +435,17 @@ begin
|
|||||||
PackageInstaller.OnPackageInstallError := nil;
|
PackageInstaller.OnPackageInstallError := nil;
|
||||||
PackageInstaller.NeedToBreak := True;
|
PackageInstaller.NeedToBreak := True;
|
||||||
Close;
|
Close;
|
||||||
|
if MessageDlgEx(rsMainFrm_VSTText_Open + ' "' + APackageName + '" ?', mtConfirmation, [mbYes, mbNo], Self) = mrYes then
|
||||||
|
begin
|
||||||
|
LazarusPkg := SerializablePackages.FindLazarusPackage(APackageName);
|
||||||
|
if (LazarusPkg <> nil) and (FileExists(LazarusPkg.PackageAbsolutePath)) then
|
||||||
|
begin
|
||||||
|
if PackageEditingInterface.DoOpenPackageFile(LazarusPkg.PackageAbsolutePath, [], True) <> mrOk then
|
||||||
|
MessageDlgEx(rsMainFrm_VSTText_Open_Error, mtError, [mbOk], TForm(FVST.Parent.Parent));
|
||||||
|
end
|
||||||
|
else
|
||||||
|
MessageDlgEx(rsMainFrm_VSTText_Open_Notfound, mtError, [mbOk], TForm(FVST.Parent.Parent));
|
||||||
|
end
|
||||||
end;
|
end;
|
||||||
Application.ProcessMessages;
|
Application.ProcessMessages;
|
||||||
end;
|
end;
|
||||||
|
@ -107,6 +107,7 @@ type
|
|||||||
FShowHintFrm: TShowHintFrm;
|
FShowHintFrm: TShowHintFrm;
|
||||||
FOldButtonNode: PVirtualNode;
|
FOldButtonNode: PVirtualNode;
|
||||||
FStarSize: Integer;
|
FStarSize: Integer;
|
||||||
|
procedure DoOpenPackage(const APackageName: String);
|
||||||
procedure VSTBeforeCellPaint(Sender: TBaseVirtualTree;
|
procedure VSTBeforeCellPaint(Sender: TBaseVirtualTree;
|
||||||
TargetCanvas: TCanvas; Node: PVirtualNode; {%H-}Column: TColumnIndex;
|
TargetCanvas: TCanvas; Node: PVirtualNode; {%H-}Column: TColumnIndex;
|
||||||
{%H-}CellPaintMode: TVTCellPaintMode; CellRect: TRect; var {%H-}ContentRect: TRect);
|
{%H-}CellPaintMode: TVTCellPaintMode; CellRect: TRect; var {%H-}ContentRect: TRect);
|
||||||
@ -149,6 +150,7 @@ type
|
|||||||
procedure SetButtonVisibility(Node: PVirtualNode; Column: TColumnIndex);
|
procedure SetButtonVisibility(Node: PVirtualNode; Column: TColumnIndex);
|
||||||
procedure CallBack(Sender: TBaseVirtualTree; Node: PVirtualNode; {%H-}Data: Pointer; var {%H-}Abort: Boolean);
|
procedure CallBack(Sender: TBaseVirtualTree; Node: PVirtualNode; {%H-}Data: Pointer; var {%H-}Abort: Boolean);
|
||||||
procedure ShowDetails(const AButtonID: Integer);
|
procedure ShowDetails(const AButtonID: Integer);
|
||||||
|
procedure OpenPackage(const AButtonID: Integer);
|
||||||
procedure ResetDependencyNodes;
|
procedure ResetDependencyNodes;
|
||||||
public
|
public
|
||||||
constructor Create(const AParent: TWinControl; const AImgList: TImageList;
|
constructor Create(const AParent: TWinControl; const AImgList: TImageList;
|
||||||
@ -371,6 +373,8 @@ begin
|
|||||||
ChildData^.PackageState := LazarusPkg.PackageState;
|
ChildData^.PackageState := LazarusPkg.PackageState;
|
||||||
ChildData^.HasUpdate := LazarusPkg.HasUpdate;
|
ChildData^.HasUpdate := LazarusPkg.HasUpdate;
|
||||||
ChildData^.DataType := 2;
|
ChildData^.DataType := 2;
|
||||||
|
Inc(UniqueID);
|
||||||
|
ChildData^.ButtonID := -UniqueID;
|
||||||
//add description(DataType = 3)
|
//add description(DataType = 3)
|
||||||
GrandChildNode := FVST.AddChild(ChildNode);
|
GrandChildNode := FVST.AddChild(ChildNode);
|
||||||
FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent];
|
FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent];
|
||||||
@ -528,6 +532,7 @@ var
|
|||||||
begin
|
begin
|
||||||
if Assigned(PackageDetailsFrm) then
|
if Assigned(PackageDetailsFrm) then
|
||||||
Exit;
|
Exit;
|
||||||
|
|
||||||
Node := VST.GetFirst;
|
Node := VST.GetFirst;
|
||||||
while Assigned(Node) do
|
while Assigned(Node) do
|
||||||
begin
|
begin
|
||||||
@ -570,9 +575,47 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TVisualTree.ButtonClick(Sender: TObject);
|
procedure TVisualTree.DoOpenPackage(const APackageName: String);
|
||||||
|
var
|
||||||
|
LazarusPkg: TLazarusPackage;
|
||||||
begin
|
begin
|
||||||
ShowDetails((Sender as TSpeedButton).Tag);
|
LazarusPkg := SerializablePackages.FindLazarusPackage(APackageName);
|
||||||
|
if (LazarusPkg <> nil) and (FileExists(LazarusPkg.PackageAbsolutePath)) then
|
||||||
|
begin
|
||||||
|
if PackageEditingInterface.DoOpenPackageFile(LazarusPkg.PackageAbsolutePath, [], True) <> mrOk then
|
||||||
|
MessageDlgEx(rsMainFrm_VSTText_Open_Error, mtError, [mbOk], TForm(FVST.Parent.Parent));
|
||||||
|
end
|
||||||
|
else
|
||||||
|
MessageDlgEx(rsMainFrm_VSTText_Open_Notfound, mtError, [mbOk], TForm(FVST.Parent.Parent));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TVisualTree.OpenPackage(const AButtonID: Integer);
|
||||||
|
var
|
||||||
|
Node: PVirtualNode;
|
||||||
|
Data: PData;
|
||||||
|
begin
|
||||||
|
Node := VST.GetFirst;
|
||||||
|
while Assigned(Node) do
|
||||||
|
begin
|
||||||
|
Data := VST.GetNodeData(Node);
|
||||||
|
if Data^.ButtonID = AButtonID then
|
||||||
|
begin
|
||||||
|
DoOpenPackage(Data^.LazarusPackageName);
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
Node := VST.GetNext(Node);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TVisualTree.ButtonClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
Tag: Integer;
|
||||||
|
begin
|
||||||
|
Tag := (Sender as TSpeedButton).Tag;
|
||||||
|
if Tag < 0 then
|
||||||
|
OpenPackage(Tag)
|
||||||
|
else
|
||||||
|
ShowDetails(Tag);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TVisualTree.TranslateCategories(const AStr: String): String;
|
function TVisualTree.TranslateCategories(const AStr: String): String;
|
||||||
@ -1794,17 +1837,23 @@ begin
|
|||||||
|
|
||||||
if (Data^.Button = nil) and
|
if (Data^.Button = nil) and
|
||||||
(
|
(
|
||||||
|
((Data^.DataType = 2) and (Data^.PackageState in [psExtracted, psInstalled])) or
|
||||||
((Data^.DataType = 3) and (Trim(Data^.Description) <> '')) or
|
((Data^.DataType = 3) and (Trim(Data^.Description) <> '')) or
|
||||||
((Data^.DataType = 9) and (Trim(Data^.License) <> '')) or
|
((Data^.DataType = 9) and (Trim(Data^.License) <> '')) or
|
||||||
((Data^.DataType = 19) and (Trim(Data^.CommunityDescription) <> ''))
|
((Data^.DataType = 19) and (Trim(Data^.CommunityDescription) <> ''))
|
||||||
|
|
||||||
) then
|
) then
|
||||||
begin
|
begin
|
||||||
Data := FVST.GetNodeData(FHoverNode);
|
Data := FVST.GetNodeData(FHoverNode);
|
||||||
Data^.Button := TSpeedButton.Create(VST);
|
Data^.Button := TSpeedButton.Create(VST);
|
||||||
with Data^.Button do
|
with Data^.Button do
|
||||||
begin
|
begin
|
||||||
Caption := '...';
|
if Data^.DataType = 2 then
|
||||||
|
begin
|
||||||
|
Width := 75;
|
||||||
|
Caption := rsMainFrm_VSTText_Open;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Caption := '...';
|
||||||
Parent := FVST;
|
Parent := FVST;
|
||||||
Tag := Data^.ButtonID;
|
Tag := Data^.ButtonID;
|
||||||
Visible := True;
|
Visible := True;
|
||||||
@ -1963,14 +2012,17 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TVisualTree.VSTDblClick(Sender: TObject);
|
procedure TVisualTree.VSTDblClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
Data: PData;
|
||||||
|
Node: PVirtualNode;
|
||||||
begin
|
begin
|
||||||
{ if FLinkClicked then
|
Node := FVST.GetFirstSelected;
|
||||||
|
if (Node <> nil) and (FVST.GetNodeLevel(Node) = 2) then
|
||||||
begin
|
begin
|
||||||
FLinkClicked := False;
|
Data := FVST.GetNodeData(Node);
|
||||||
FHoverColumn := -1;
|
if (Data^.DataType = 2) and (Data^.PackageState in [psExtracted, psInstalled]) then
|
||||||
FHoverNode := nil;
|
DoOpenPackage(Data^.LazarusPackageName);
|
||||||
OpenURL(FLink);
|
end;
|
||||||
end;}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TVisualTree.VSTScroll(Sender: TBaseVirtualTree; DeltaX, DeltaY: Integer);
|
procedure TVisualTree.VSTScroll(Sender: TBaseVirtualTree; DeltaX, DeltaY: Integer);
|
||||||
|
Loading…
Reference in New Issue
Block a user