mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 10:47:58 +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"?>
|
||||
<CONFIG>
|
||||
<Package Version="4">
|
||||
<Package Version="5">
|
||||
<PathDelim Value="\"/>
|
||||
<Name Value="OnlinePackageManager"/>
|
||||
<Type Value="RunAndDesignTime"/>
|
||||
|
@ -54,8 +54,8 @@ const
|
||||
cOpenSSLURL = 'http://packages.lazarus-ide.org/openssl-1.0.2j-i386-win32.zip';
|
||||
{$endif}
|
||||
cExtractDir = 'ExtractDir';
|
||||
cSubmitURL_Zip = 'aHR0cDovL2xhemFydXNvcG0uMDAwd2ViaG9zdGFwcC5jb20vemlwLnBocA==';
|
||||
cSubmitURL_JSON = 'aHR0cDovL2xhemFydXNvcG0uMDAwd2ViaG9zdGFwcC5jb20vanNvbi5waHA=';
|
||||
cSubmitURL_Zip = 'aHR0cDovL2xhemFydXNvcG0ub3JnL3ppcC5waHA=';
|
||||
cSubmitURL_JSON = 'aHR0cDovL2xhemFydXNvcG0ub3JnL2pzb24ucGhw';
|
||||
cSep = '#@$%^';
|
||||
|
||||
resourcestring
|
||||
@ -139,6 +139,9 @@ resourcestring
|
||||
rsMainFrm_VSTText_PackageCategory27 = 'Games and Game Engines';
|
||||
rsMainFrm_VSTText_Desc = 'Description 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_cbAll_Caption = 'All/None';
|
||||
rsMainFrm_cbAll_Hint = 'Check/Uncheck packages';
|
||||
|
@ -30,9 +30,11 @@ uses
|
||||
SysUtils, Classes, laz.VirtualTrees,
|
||||
// LCL
|
||||
Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls, ExtCtrls, ButtonPanel,
|
||||
// IdeIntf
|
||||
PackageIntf,
|
||||
// OpkMan
|
||||
opkman_installer, opkman_common, opkman_const, opkman_downloader, opkman_zipper,
|
||||
opkman_options, opkman_maindm;
|
||||
opkman_options, opkman_maindm, opkman_serializablepackages;
|
||||
|
||||
type
|
||||
|
||||
@ -403,6 +405,7 @@ var
|
||||
Msg: String;
|
||||
Node: PVirtualNode;
|
||||
Data: PData;
|
||||
LazarusPkg: TLazarusPackage;
|
||||
begin
|
||||
Node := FVST.AddChild(nil);
|
||||
Data := FVST.GetNodeData(Node);
|
||||
@ -432,6 +435,17 @@ begin
|
||||
PackageInstaller.OnPackageInstallError := nil;
|
||||
PackageInstaller.NeedToBreak := True;
|
||||
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;
|
||||
Application.ProcessMessages;
|
||||
end;
|
||||
|
@ -107,6 +107,7 @@ type
|
||||
FShowHintFrm: TShowHintFrm;
|
||||
FOldButtonNode: PVirtualNode;
|
||||
FStarSize: Integer;
|
||||
procedure DoOpenPackage(const APackageName: String);
|
||||
procedure VSTBeforeCellPaint(Sender: TBaseVirtualTree;
|
||||
TargetCanvas: TCanvas; Node: PVirtualNode; {%H-}Column: TColumnIndex;
|
||||
{%H-}CellPaintMode: TVTCellPaintMode; CellRect: TRect; var {%H-}ContentRect: TRect);
|
||||
@ -149,6 +150,7 @@ type
|
||||
procedure SetButtonVisibility(Node: PVirtualNode; Column: TColumnIndex);
|
||||
procedure CallBack(Sender: TBaseVirtualTree; Node: PVirtualNode; {%H-}Data: Pointer; var {%H-}Abort: Boolean);
|
||||
procedure ShowDetails(const AButtonID: Integer);
|
||||
procedure OpenPackage(const AButtonID: Integer);
|
||||
procedure ResetDependencyNodes;
|
||||
public
|
||||
constructor Create(const AParent: TWinControl; const AImgList: TImageList;
|
||||
@ -371,6 +373,8 @@ begin
|
||||
ChildData^.PackageState := LazarusPkg.PackageState;
|
||||
ChildData^.HasUpdate := LazarusPkg.HasUpdate;
|
||||
ChildData^.DataType := 2;
|
||||
Inc(UniqueID);
|
||||
ChildData^.ButtonID := -UniqueID;
|
||||
//add description(DataType = 3)
|
||||
GrandChildNode := FVST.AddChild(ChildNode);
|
||||
FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent];
|
||||
@ -528,6 +532,7 @@ var
|
||||
begin
|
||||
if Assigned(PackageDetailsFrm) then
|
||||
Exit;
|
||||
|
||||
Node := VST.GetFirst;
|
||||
while Assigned(Node) do
|
||||
begin
|
||||
@ -570,9 +575,47 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TVisualTree.ButtonClick(Sender: TObject);
|
||||
procedure TVisualTree.DoOpenPackage(const APackageName: String);
|
||||
var
|
||||
LazarusPkg: TLazarusPackage;
|
||||
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;
|
||||
|
||||
function TVisualTree.TranslateCategories(const AStr: String): String;
|
||||
@ -1794,17 +1837,23 @@ begin
|
||||
|
||||
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 = 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 := '...';
|
||||
if Data^.DataType = 2 then
|
||||
begin
|
||||
Width := 75;
|
||||
Caption := rsMainFrm_VSTText_Open;
|
||||
end
|
||||
else
|
||||
Caption := '...';
|
||||
Parent := FVST;
|
||||
Tag := Data^.ButtonID;
|
||||
Visible := True;
|
||||
@ -1963,14 +2012,17 @@ begin
|
||||
end;
|
||||
|
||||
procedure TVisualTree.VSTDblClick(Sender: TObject);
|
||||
var
|
||||
Data: PData;
|
||||
Node: PVirtualNode;
|
||||
begin
|
||||
{ if FLinkClicked then
|
||||
Node := FVST.GetFirstSelected;
|
||||
if (Node <> nil) and (FVST.GetNodeLevel(Node) = 2) then
|
||||
begin
|
||||
FLinkClicked := False;
|
||||
FHoverColumn := -1;
|
||||
FHoverNode := nil;
|
||||
OpenURL(FLink);
|
||||
end;}
|
||||
Data := FVST.GetNodeData(Node);
|
||||
if (Data^.DataType = 2) and (Data^.PackageState in [psExtracted, psInstalled]) then
|
||||
DoOpenPackage(Data^.LazarusPackageName);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TVisualTree.VSTScroll(Sender: TBaseVirtualTree; DeltaX, DeltaY: Integer);
|
||||
|
Loading…
Reference in New Issue
Block a user