OpkMan: Rename PackageFile to LazarusPackage in type and variable names.

git-svn-id: trunk@54419 -
This commit is contained in:
juha 2017-03-16 17:49:39 +00:00
parent 8631eaec16
commit 1a173eeae9
9 changed files with 434 additions and 427 deletions

View File

@ -906,7 +906,7 @@ var
JSON: TJSONStringType; JSON: TJSONStringType;
Ms: TMemoryStream; Ms: TMemoryStream;
UpdatePackage: TUpdatePackage; UpdatePackage: TUpdatePackage;
UpdatePackageFiles: TUpdatePackageFiles; UpdateLazPkgs: TUpdateLazPackages;
begin begin
Result := False; Result := False;
pnMessage.Caption := rsCreateRepositoryPackageFrm_Message6; pnMessage.Caption := rsCreateRepositoryPackageFrm_Message6;
@ -927,11 +927,11 @@ begin
if FVSTPackages.CheckState[Node] = csCheckedNormal then if FVSTPackages.CheckState[Node] = csCheckedNormal then
begin begin
Data := FVSTPackages.GetNodeData(Node); Data := FVSTPackages.GetNodeData(Node);
UpdatePackageFiles := TUpdatePackageFiles(UpdatePackage.UpdatePackageFiles.Add); UpdateLazPkgs := TUpdateLazPackages(UpdatePackage.UpdateLazPackages.Add);
UpdatePackageFiles.Name := Data^.FName; UpdateLazPkgs.Name := Data^.FName;
UpdatePackageFiles.Version := Data^.FVersionAsString; UpdateLazPkgs.Version := Data^.FVersionAsString;
UpdatePackageFiles.ForceNotify := False; UpdateLazPkgs.ForceNotify := False;
UpdatePackageFiles.InternalVersion := 1; UpdateLazPkgs.InternalVersion := 1;
end; end;
Node := FVSTPackages.GetNextSibling(Node); Node := FVSTPackages.GetNextSibling(Node);
end; end;
@ -961,7 +961,7 @@ function TCreateRepositoryPackagefr.CreateJSON(var AErrMsg: String): Boolean;
var var
SerializablePackages: TSerializablePackages; SerializablePackages: TSerializablePackages;
Package: TPackage; Package: TPackage;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
RootNode, Node: PVirtualNode; RootNode, Node: PVirtualNode;
RootData, Data: PData; RootData, Data: PData;
JSON: TJSONStringType; JSON: TJSONStringType;
@ -995,20 +995,20 @@ begin
if FVSTPackages.CheckState[Node] = csCheckedNormal then if FVSTPackages.CheckState[Node] = csCheckedNormal then
begin begin
Data := FVSTPackages.GetNodeData(Node); Data := FVSTPackages.GetNodeData(Node);
PackageFile := TPackageFile(Package.PackageFiles.Add); LazarusPkg := TLazarusPackage(Package.LazarusPackages.Add);
PackageFile.Name := Data^.FName; LazarusPkg.Name := Data^.FName;
PackageFile.PackageRelativePath := Data^.FPackageRelativePath; LazarusPkg.PackageRelativePath := Data^.FPackageRelativePath;
PackageFile.Version := TPackageVersion.Create; LazarusPkg.Version := TPackageVersion.Create;
PackageFile.Version.AsString := Data^.FVersionAsString; LazarusPkg.Version.AsString := Data^.FVersionAsString;
PackageFile.Description := Data^.FDescription; LazarusPkg.Description := Data^.FDescription;
PackageFile.Author := Data^.FAuthor; LazarusPkg.Author := Data^.FAuthor;
PackageFile.LazCompatibility := Data^.FLazCompatibility; LazarusPkg.LazCompatibility := Data^.FLazCompatibility;
PackageFile.FPCCompatibility := Data^.FFPCCompatibility; LazarusPkg.FPCCompatibility := Data^.FFPCCompatibility;
PackageFile.SupportedWidgetSet := Data^.FSupportedWidgetSet; LazarusPkg.SupportedWidgetSet := Data^.FSupportedWidgetSet;
PackageFile.PackageType := Data^.FPackageType; LazarusPkg.PackageType := Data^.FPackageType;
PackageFile.Dependencies := TPackageDependencies.Create(TPackageDependency); LazarusPkg.Dependencies := TPackageDependencies.Create(TPackageDependency);
PackageFile.Dependencies.SetDependenciesAsString(Data^.FDependenciesAsString); LazarusPkg.Dependencies.SetDependenciesAsString(Data^.FDependenciesAsString);
PackageFile.License := Data^.FLicense; LazarusPkg.License := Data^.FLicense;
end; end;
Node := FVSTPackages.GetNextSibling(Node); Node := FVSTPackages.GetNextSibling(Node);
end; end;
@ -1038,7 +1038,7 @@ end;
procedure TCreateRepositoryPackagefr.DoOnZipCompleted(Sender: TObject); procedure TCreateRepositoryPackagefr.DoOnZipCompleted(Sender: TObject);
var var
ErrMsg: String; ErrMsg, JsonUpd: String;
begin begin
ErrMsg := ''; ErrMsg := '';
if not CreateJSON(ErrMsg) then if not CreateJSON(ErrMsg) then
@ -1074,9 +1074,11 @@ begin
Uploader.OnUploadError := @DoOnUploadError; Uploader.OnUploadError := @DoOnUploadError;
Uploader.OnUploadCompleted := @DoOnUploadCompleted; Uploader.OnUploadCompleted := @DoOnUploadCompleted;
if cbJSONForUpdates.Checked then if cbJSONForUpdates.Checked then
Uploader.StartUpload(cSubmitURL_Zip, cSubmitURL_JSON, FPackageFile, FDestDir + FPackageName + '.json', FDestDir + 'update_' + FPackageName + '.json') JsonUpd := FDestDir + 'update_' + FPackageName + '.json'
else else
Uploader.StartUpload(cSubmitURL_Zip, cSubmitURL_JSON, FPackageFile, FDestDir + FPackageName + '.json', '') JsonUpd := '';
Uploader.StartUpload(cSubmitURL_Zip, cSubmitURL_JSON, FPackageFile,
FDestDir + FPackageName + '.json', JsonUpd);
end; end;
end; end;
end; end;

View File

@ -65,7 +65,7 @@ resourcestring
//main form //main form
rsPackagesFound = '(%s packages found)'; rsPackagesFound = '(%s packages found)';
rsMainFrm_VSTHeaderColumn_PackageName = 'Packages'; rsMainFrm_VSTHeaderColumn_PackageName = 'Packages';
rsMainFrm_VSTHeaderColumn_PackageFile = 'Package file (.lpk)'; rsMainFrm_VSTHeaderColumn_LazarusPackage = 'Lazarus Package (.lpk)';
rsMainFrm_VSTHeaderColumn_Repository = 'Repository'; rsMainFrm_VSTHeaderColumn_Repository = 'Repository';
rsMainFrm_VSTHeaderColumn_Installed = 'Installed'; rsMainFrm_VSTHeaderColumn_Installed = 'Installed';
rsMainFrm_VSTHeaderColumn_Update = 'Update'; rsMainFrm_VSTHeaderColumn_Update = 'Update';

View File

@ -184,8 +184,8 @@ end;
procedure TCreateJSONForUpdatesFrm.bCreateClick(Sender: TObject); procedure TCreateJSONForUpdatesFrm.bCreateClick(Sender: TObject);
var var
UpdatePackage: TUpdatePackage; UpdatePkg: TUpdatePackage;
UpdatePackageFiles: TUpdatePackageFiles; UpdateLazPkgs: TUpdateLazPackages;
JSON: TJSONStringType; JSON: TJSONStringType;
Ms: TMemoryStream; Ms: TMemoryStream;
Node: PVirtualNode; Node: PVirtualNode;
@ -205,10 +205,10 @@ begin
SD.FileName := 'update_' + FPackage.Name; SD.FileName := 'update_' + FPackage.Name;
if SD.Execute then if SD.Execute then
begin begin
UpdatePackage := TUpdatePackage.Create; UpdatePkg := TUpdatePackage.Create;
try try
UpdatePackage.UpdatePackageData.Name := FPackage.Name; UpdatePkg.UpdatePackageData.Name := FPackage.Name;
UpdatePackage.UpdatePackageData.DownloadZipURL := edLinkToZip.Text; UpdatePkg.UpdatePackageData.DownloadZipURL := edLinkToZip.Text;
Node := FVST.GetFirst; Node := FVST.GetFirst;
while Assigned(Node) do while Assigned(Node) do
@ -216,16 +216,16 @@ begin
if FVST.CheckState[Node] = csCheckedNormal then if FVST.CheckState[Node] = csCheckedNormal then
begin begin
Data := FVST.GetNodeData(Node); Data := FVST.GetNodeData(Node);
UpdatePackageFiles := TUpdatePackageFiles(UpdatePackage.UpdatePackageFiles.Add); UpdateLazPkgs := TUpdateLazPackages(UpdatePkg.UpdateLazPackages.Add);
UpdatePackageFiles.Name := Data^.FName; UpdateLazPkgs.Name := Data^.FName;
UpdatePackageFiles.Version := Data^.FVersion; UpdateLazPkgs.Version := Data^.FVersion;
UpdatePackageFiles.ForceNotify := Data^.FForceNotify; UpdateLazPkgs.ForceNotify := Data^.FForceNotify;
UpdatePackageFiles.InternalVersion := Data^.FInternalVersion; UpdateLazPkgs.InternalVersion := Data^.FInternalVersion;
end; end;
Node := FVST.GetNext(Node); Node := FVST.GetNext(Node);
end; end;
JSON := ''; JSON := '';
if UpdatePackage.SaveToJSON(JSON) then if UpdatePkg.SaveToJSON(JSON) then
begin begin
JSON := StringReplace(JSON, '\/', '/', [rfReplaceAll]); JSON := StringReplace(JSON, '\/', '/', [rfReplaceAll]);
Ms := TMemoryStream.Create; Ms := TMemoryStream.Create;
@ -241,11 +241,11 @@ begin
end end
else else
begin begin
ErrMsg := StringReplace(UpdatePackage.LastError, '"', '', [rfReplaceAll]); ErrMsg := StringReplace(UpdatePkg.LastError, '"', '', [rfReplaceAll]);
MessageDlgEx(rsCreateJSONForUpdatesFrm_Error1 + sLineBreak + '"' + ErrMsg + '"', mtError, [mbOk], Self); MessageDlgEx(rsCreateJSONForUpdatesFrm_Error1 + sLineBreak + '"' + ErrMsg + '"', mtError, [mbOk], Self);
end; end;
finally finally
UpdatePackage.Free; UpdatePkg.Free;
end; end;
end; end;
if CanClose then if CanClose then
@ -340,7 +340,7 @@ var
I, J: Integer; I, J: Integer;
Node: PVirtualNode; Node: PVirtualNode;
Data: PData; Data: PData;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
begin begin
for I := 0 to SerializablePackages.Count - 1 do for I := 0 to SerializablePackages.Count - 1 do
begin begin
@ -348,17 +348,17 @@ begin
if FPackage.Checked then if FPackage.Checked then
begin begin
Caption := Caption + ' "' + FPackage.DisplayName +'"'; Caption := Caption + ' "' + FPackage.DisplayName +'"';
for J := 0 to FPackage.PackageFiles.Count - 1 do for J := 0 to FPackage.LazarusPackages.Count - 1 do
begin begin
PackageFile := TPackageFile(FPackage.PackageFiles.Items[J]); LazarusPkg := TLazarusPackage(FPackage.LazarusPackages.Items[J]);
if PackageFile.Checked then if LazarusPkg.Checked then
begin begin
Node := FVST.AddChild(nil); Node := FVST.AddChild(nil);
Node^.CheckType := ctTriStateCheckBox; Node^.CheckType := ctTriStateCheckBox;
FVST.CheckState[Node] := csCheckedNormal; FVST.CheckState[Node] := csCheckedNormal;
Data := FVST.GetNodeData(Node); Data := FVST.GetNodeData(Node);
Data^.FName := PackageFile.Name; Data^.FName := LazarusPkg.Name;
Data^.FVersion := PackageFile.VersionAsString; Data^.FVersion := LazarusPkg.VersionAsString;
Data^.FForceNotify := False; Data^.FForceNotify := False;
Data^.FInternalVersion := 1; Data^.FInternalVersion := 1;
Data^.FImageIndex := 1; Data^.FImageIndex := 1;

View File

@ -50,6 +50,7 @@ type
TOnPackageInstallProgress = procedure(Sender: TObject; ACnt, ATotCnt: Integer; APackgaName: String; AInstallMessage: TInstallMessage) of object; TOnPackageInstallProgress = procedure(Sender: TObject; ACnt, ATotCnt: Integer; APackgaName: String; AInstallMessage: TInstallMessage) of object;
TOnPackageInstallError = procedure(Sender: TObject; APackageName, AErrMsg: String) of object; TOnPackageInstallError = procedure(Sender: TObject; APackageName, AErrMsg: String) of object;
TOnPackageInstallCompleted = procedure(Sender: TObject; ANeedToRebuild: Boolean; AInstallStatus: TInstallStatus) of object; TOnPackageInstallCompleted = procedure(Sender: TObject; ANeedToRebuild: Boolean; AInstallStatus: TInstallStatus) of object;
TPackageInstaller = class TPackageInstaller = class
private private
FNeedToBreak: Boolean; FNeedToBreak: Boolean;
@ -59,18 +60,18 @@ type
FStarted: Boolean; FStarted: Boolean;
FInstallStatus: TInstallStatus; FInstallStatus: TInstallStatus;
FToInstall: TStringList; FToInstall: TStringList;
FPackageFileName: String; FFileName: String;
FUnresolvedPackageFileName: String; FUnresolvedFileName: String;
FOnPackageInstallProgress: TOnPackageInstallProgress; FOnPackageInstallProgress: TOnPackageInstallProgress;
FOnPackageInstallError: TOnPackageInstallError; FOnPackageInstallError: TOnPackageInstallError;
FOnPackageInstallCompleted: TOnPackageInstallCompleted; FOnPackageInstallCompleted: TOnPackageInstallCompleted;
function OpenPackage(const APackageFileName: String): TIDEPackage; function OpenPackage(const AFileName: String): TIDEPackage;
function IsPackageInTheList(const APackageFileName: String): Boolean; function IsPackageInTheList(const AFileName: String): Boolean;
function HasUnresolvedDependency(AName: String): Boolean; function HasUnresolvedDependency(AName: String): Boolean;
function CompilePackage(const AIDEPackage: TIDEPackage; APackageFile: TPackageFile): Integer; function CompilePackage(const AIDEPackage: TIDEPackage; ALazarusPkg: TLazarusPackage): Integer;
function InstallPackage: Boolean; function InstallPackage: Boolean;
procedure DoOnPackageInstallProgress(const AInstallMessage: TInstallMessage; APackageFile: TPackageFile); procedure DoOnPackageInstallProgress(const AInstallMessage: TInstallMessage; ALazarusPkg: TLazarusPackage);
procedure DoOnPackageInstallError(const AInstallMessage: TInstallMessage; APackageFile: TPackageFile); procedure DoOnPackageInstallError(const AInstallMessage: TInstallMessage; ALazarusPkg: TLazarusPackage);
procedure Execute; procedure Execute;
public public
constructor Create; constructor Create;
@ -102,16 +103,16 @@ begin
inherited Destroy; inherited Destroy;
end; end;
function TPackageInstaller.OpenPackage(const APackageFileName: String): TIDEPackage; function TPackageInstaller.OpenPackage(const AFileName: String): TIDEPackage;
var var
I: Integer; I: Integer;
begin begin
Result := nil; Result := nil;
if PackageEditingInterface.DoOpenPackageFile(APackageFileName, [pofRevert, pofDoNotOpenEditor], True) = mrOk then if PackageEditingInterface.DoOpenPackageFile(AFileName, [pofRevert, pofDoNotOpenEditor], True) = mrOk then
begin begin
for I := 0 to PackageEditingInterface.GetPackageCount - 1 do for I := 0 to PackageEditingInterface.GetPackageCount - 1 do
begin begin
if UpperCase(PackageEditingInterface.GetPackages(I).Filename) = UpperCase(APackageFileName) then if UpperCase(PackageEditingInterface.GetPackages(I).Filename) = UpperCase(AFileName) then
begin begin
Result := PackageEditingInterface.GetPackages(I); Result := PackageEditingInterface.GetPackages(I);
Break; Break;
@ -120,20 +121,20 @@ begin
end; end;
end; end;
function TPackageInstaller.IsPackageInTheList(const APackageFileName: String): Boolean; function TPackageInstaller.IsPackageInTheList(const AFileName: String): Boolean;
var var
P, I: Integer; P, I: Integer;
PackageFileName: String; PkgFileName: String;
begin begin
Result := False; Result := False;
for I := 0 to FToInstall.Count - 1 do for I := 0 to FToInstall.Count - 1 do
begin begin
P := Pos(' ', FToInstall.Strings[I]); P := Pos(' ', FToInstall.Strings[I]);
if P <> 0 then if P <> 0 then
PackageFileName := Copy(FToInstall.Strings[I], 1, P - 1) PkgFileName := Copy(FToInstall.Strings[I], 1, P - 1)
else else
PackageFileName := FToInstall.Strings[I]; PkgFileName := FToInstall.Strings[I];
if UpperCase(PackageFileName) = UpperCase(APackageFileName) then if UpperCase(PkgFileName) = UpperCase(AFileName) then
begin begin
Result := True; Result := True;
Break; Break;
@ -149,23 +150,23 @@ begin
P := Pos(' ', AName); P := Pos(' ', AName);
if P > 0 then if P > 0 then
begin begin
FPackageFileName := Copy(AName, 1, P - 1); FFileName := Copy(AName, 1, P - 1);
Delete(AName, 1, P); Delete(AName, 1, P);
FUnresolvedPackageFileName := Trim(AName); FUnresolvedFileName := Trim(AName);
Result := True; Result := True;
end end
else else
FPackageFileName := AName; FFileName := AName;
end; end;
function TPackageInstaller.CompilePackage(const AIDEPackage: TIDEPackage; function TPackageInstaller.CompilePackage(const AIDEPackage: TIDEPackage;
APackageFile: TPackageFile): Integer; ALazarusPkg: TLazarusPackage): Integer;
begin begin
Result := -1; Result := -1;
{$if declared(lcl_version)} {$if declared(lcl_version)}
{$if (lcl_major > 0) and (lcl_minor > 6)} {$if (lcl_major > 0) and (lcl_minor > 6)}
//DoCompilePackage function is only available with Laz 1.7 + //DoCompilePackage function is only available with Laz 1.7 +
DoOnPackageInstallProgress(imCompilePackage, APackageFile); DoOnPackageInstallProgress(imCompilePackage, ALazarusPkg);
Result := PackageEditingInterface.DoCompilePackage(AIDEPackage, [pcfCleanCompile, pcfDoNotSaveEditorFiles], False); Result := PackageEditingInterface.DoCompilePackage(AIDEPackage, [pcfCleanCompile, pcfDoNotSaveEditorFiles], False);
{$endif} {$endif}
{$endif} {$endif}
@ -178,10 +179,10 @@ var
NewPackageID: TLazPackageID; NewPackageID: TLazPackageID;
begin begin
Result := False; Result := False;
P := Pos('.lpk', FPackageFileName); P := Pos('.lpk', FFileName);
if P <> 0 then if P <> 0 then
begin begin
PackageName := Copy(FPackageFileName, 1, P - 1); PackageName := Copy(FFileName, 1, P - 1);
NewPackageID := TLazPackageID.Create; NewPackageID := TLazPackageID.Create;
if NewPackageID.StringToID(PackageName) then if NewPackageID.StringToID(PackageName) then
begin begin
@ -192,18 +193,18 @@ begin
end; end;
procedure TPackageInstaller.DoOnPackageInstallProgress(const AInstallMessage: TInstallMessage; procedure TPackageInstaller.DoOnPackageInstallProgress(const AInstallMessage: TInstallMessage;
APackageFile: TPackageFile); ALazarusPkg: TLazarusPackage);
begin begin
if AInstallMessage = imPackageCompleted then if AInstallMessage = imPackageCompleted then
APackageFile.PackageStates := APackageFile.PackageStates + [psInstalled]; ALazarusPkg.PackageStates := ALazarusPkg.PackageStates + [psInstalled];
if Assigned(FOnPackageInstallProgress) then if Assigned(FOnPackageInstallProgress) then
FOnPackageInstallProgress(Self, FCnt, FTotCnt, FPackageFileName, AInstallMessage); FOnPackageInstallProgress(Self, FCnt, FTotCnt, FFileName, AInstallMessage);
if AInstallMessage <> imPackageCompleted then if AInstallMessage <> imPackageCompleted then
Sleep(1000); Sleep(1000);
end; end;
procedure TPackageInstaller.DoOnPackageInstallError(const AInstallMessage: TInstallMessage; procedure TPackageInstaller.DoOnPackageInstallError(const AInstallMessage: TInstallMessage;
APackageFile: TPackageFile); ALazarusPkg: TLazarusPackage);
var var
ErrMsg: String; ErrMsg: String;
begin begin
@ -215,12 +216,12 @@ begin
imInstallPackageError: imInstallPackageError:
ErrMsg := rsProgressFrm_Error9; ErrMsg := rsProgressFrm_Error9;
imDependencyError: imDependencyError:
ErrMsg := Format(rsProgressFrm_Error4, [FUnresolvedPackageFileName]); ErrMsg := Format(rsProgressFrm_Error4, [FUnresolvedFileName]);
end; end;
APackageFile.PackageStates := APackageFile.PackageStates - [psInstalled]; ALazarusPkg.PackageStates := ALazarusPkg.PackageStates - [psInstalled];
APackageFile.PackageStates := APackageFile.PackageStates + [psError]; ALazarusPkg.PackageStates := ALazarusPkg.PackageStates + [psError];
if Assigned(FOnPackageInstallError) then if Assigned(FOnPackageInstallError) then
FOnPackageInstallError(Self, FPackageFileName, ErrMsg); FOnPackageInstallError(Self, FFileName, ErrMsg);
Sleep(1000); Sleep(1000);
end; end;
@ -230,7 +231,7 @@ var
IDEPackage: TIDEPackage; IDEPackage: TIDEPackage;
PkgInstallInIDEFlags: TPkgInstallInIDEFlags; PkgInstallInIDEFlags: TPkgInstallInIDEFlags;
ErrCnt: Integer; ErrCnt: Integer;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
CanGo: Boolean; CanGo: Boolean;
CompRes: Integer; CompRes: Integer;
begin begin
@ -242,63 +243,63 @@ begin
if NeedToBreak then if NeedToBreak then
Break; Break;
CanGo := not HasUnresolvedDependency(FToInstall.Strings[I]); CanGo := not HasUnresolvedDependency(FToInstall.Strings[I]);
PackageFile := SerializablePackages.FindPackageFile(FPackageFileName); LazarusPkg := SerializablePackages.FindLazarusPackage(FFileName);
if CanGo then if CanGo then
begin begin
Inc(FCnt); Inc(FCnt);
if not FNeedToRebuild then if not FNeedToRebuild then
FNeedToRebuild := PackageFile.PackageType in [ptRunAndDesignTime, ptDesigntime]; FNeedToRebuild := LazarusPkg.PackageType in [ptRunAndDesignTime, ptDesigntime];
DoOnPackageInstallProgress(imOpenPackage, PackageFile); DoOnPackageInstallProgress(imOpenPackage, LazarusPkg);
IDEPackage := OpenPackage(PackageFile.PackageAbsolutePath); IDEPackage := OpenPackage(LazarusPkg.PackageAbsolutePath);
if IDEPackage <> nil then if IDEPackage <> nil then
begin begin
DoOnPackageInstallProgress(imOpenPackageSuccess, PackageFile); DoOnPackageInstallProgress(imOpenPackageSuccess, LazarusPkg);
CompRes := CompilePackage(IDEPAckage, PackageFile); CompRes := CompilePackage(IDEPAckage, LazarusPkg);
case CompRes of case CompRes of
-1, 1: -1, 1:
begin begin
if CompRes = 1 then if CompRes = 1 then
begin begin
DoOnPackageInstallProgress(imCompilePackageSuccess, PackageFile); DoOnPackageInstallProgress(imCompilePackageSuccess, LazarusPkg);
if PackageAction = paUpdate then if PackageAction = paUpdate then
if PackageFile.ForceNotify then if LazarusPkg.ForceNotify then
if PackageFile.InternalVersion > PackageFile.InternalVersionOld then if LazarusPkg.InternalVersion > LazarusPkg.InternalVersionOld then
PackageFile.InternalVersionOld := PackageFile.InternalVersion; LazarusPkg.InternalVersionOld := LazarusPkg.InternalVersion;
end; end;
if PackageFile.PackageType in [ptRunAndDesignTime, ptDesigntime] then if LazarusPkg.PackageType in [ptRunAndDesignTime, ptDesigntime] then
begin begin
DoOnPackageInstallProgress(imInstallPackage, PackageFile); DoOnPackageInstallProgress(imInstallPackage, LazarusPkg);
if InstallPackage then if InstallPackage then
DoOnPackageInstallProgress(imInstallpackageSuccess, PackageFile) DoOnPackageInstallProgress(imInstallpackageSuccess, LazarusPkg)
else else
begin begin
Inc(ErrCnt); Inc(ErrCnt);
DoOnPackageInstallError(imInstallPackageError, PackageFile); DoOnPackageInstallError(imInstallPackageError, LazarusPkg);
end; end;
end; end;
end; end;
else else
begin begin
Inc(ErrCnt); Inc(ErrCnt);
DoOnPackageInstallError(imCompilePackageError, PackageFile); DoOnPackageInstallError(imCompilePackageError, LazarusPkg);
end; end;
end; end;
end end
else else
begin begin
Inc(ErrCnt); Inc(ErrCnt);
DoOnPackageInstallError(imOpenPackageError, PackageFile); DoOnPackageInstallError(imOpenPackageError, LazarusPkg);
end; end;
DoOnPackageInstallProgress(imPackageCompleted, PackageFile); DoOnPackageInstallProgress(imPackageCompleted, LazarusPkg);
end end
else else
begin begin
Inc(FCnt); Inc(FCnt);
DoOnPackageInstallProgress(imOpenPackage, PackageFile); DoOnPackageInstallProgress(imOpenPackage, LazarusPkg);
DoOnPackageInstallProgress(imOpenPackageSuccess, PackageFile); DoOnPackageInstallProgress(imOpenPackageSuccess, LazarusPkg);
Inc(ErrCnt); Inc(ErrCnt);
DoOnPackageInstallError(imDependencyError, PackageFile); DoOnPackageInstallError(imDependencyError, LazarusPkg);
DoOnPackageInstallProgress(imPackageCompleted, PackageFile); DoOnPackageInstallProgress(imPackageCompleted, LazarusPkg);
end; end;
end; end;
if InstallPackageList.Count > 0 then if InstallPackageList.Count > 0 then
@ -323,7 +324,7 @@ procedure TPackageInstaller.StartInstall;
var var
I, J, K: Integer; I, J, K: Integer;
PackageList: TObjectList; PackageList: TObjectList;
PackageFile, DependecyPackage: TPackageFile; LazarusPkg, DependecyPackage: TLazarusPackage;
PackageDependency: TPackageDependency; PackageDependency: TPackageDependency;
DependencyFound: Boolean; DependencyFound: Boolean;
begin begin
@ -335,24 +336,26 @@ begin
try try
for I := 0 to SerializablePackages.Count - 1 do for I := 0 to SerializablePackages.Count - 1 do
begin begin
for J := 0 to SerializablePackages.Items[I].PackageFiles.Count - 1 do for J := 0 to SerializablePackages.Items[I].LazarusPackages.Count - 1 do
begin begin
PackageFile := TPackageFile(SerializablePackages.Items[I].PackageFiles.Items[J]); LazarusPkg := TLazarusPackage(SerializablePackages.Items[I].LazarusPackages.Items[J]);
if PackageFile.IsInstallable then if LazarusPkg.IsInstallable then
begin begin
SerializablePackages.GetPackageDependencies(PackageFile.Name, PackageList, True, True); SerializablePackages.GetPackageDependencies(LazarusPkg.Name, PackageList, True, True);
if PackageList.Count > 0 then if PackageList.Count > 0 then
begin begin
DependencyFound := True; DependencyFound := True;
for K := 0 to PackageList.Count - 1 do for K := 0 to PackageList.Count - 1 do
begin begin
PackageDependency := TPackageDependency(PackageList.Items[K]); PackageDependency := TPackageDependency(PackageList.Items[K]);
DependecyPackage := SerializablePackages.FindPackageFile(TPackageDependency(PackageList.Items[k]).PackageFileName + '.lpk'); DependecyPackage := SerializablePackages.FindLazarusPackage(PackageDependency.PkgFileName + '.lpk');
if DependecyPackage <> nil then if DependecyPackage <> nil then
begin begin
if not ((DependecyPackage.PackageState = psInstalled) and (SerializablePackages.IsInstalledVersionOk(PackageDependency, DependecyPackage.VersionAsString))) then if not ((DependecyPackage.PackageState = psInstalled)
and (SerializablePackages.IsInstalledVersionOk(PackageDependency, DependecyPackage.VersionAsString))) then
begin begin
if ((DependecyPackage.IsInstallable) and (SerializablePackages.IsDependencyOk(PackageDependency, DependecyPackage))) then if ((DependecyPackage.IsInstallable)
and (SerializablePackages.IsDependencyOk(PackageDependency, DependecyPackage))) then
begin begin
if not IsPackageInTheList(DependecyPackage.Name) then if not IsPackageInTheList(DependecyPackage.Name) then
FToInstall.Add(DependecyPackage.Name); FToInstall.Add(DependecyPackage.Name);
@ -367,12 +370,12 @@ begin
end; end;
if (not DependencyFound) then if (not DependencyFound) then
begin begin
if (not IsPackageInTheList(PackageFile.Name)) then if (not IsPackageInTheList(LazarusPkg.Name)) then
FToInstall.Add(PackageFile.Name + ' ' + DependecyPackage.Name) FToInstall.Add(LazarusPkg.Name + ' ' + DependecyPackage.Name)
end end
end; end;
if (not IsPackageInTheList(PackageFile.Name)) then if (not IsPackageInTheList(LazarusPkg.Name)) then
FToInstall.Add(PackageFile.Name); FToInstall.Add(LazarusPkg.Name);
end; end;
end; end;
end; end;

View File

@ -394,19 +394,19 @@ procedure TMainFrm.DoOnUpdate(Sender: TObject);
var var
I, J: Integer; I, J: Integer;
Package: TPackage; Package: TPackage;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
begin begin
VisualTree.UpdatePackageUStatus; VisualTree.UpdatePackageUStatus;
// Pass the online package info as package links to IDE. // Pass the online package info as package links to IDE.
for I := 0 to SerializablePackages.Count - 1 do for I := 0 to SerializablePackages.Count - 1 do
begin begin
Package := SerializablePackages.Items[I]; Package := SerializablePackages.Items[I];
for J := 0 to Package.PackageFiles.Count - 1 do for J := 0 to Package.LazarusPackages.Count - 1 do
begin begin
PackageFile := TPackageFile(Package.PackageFiles.Items[J]); LazarusPkg := TLazarusPackage(Package.LazarusPackages.Items[J]);
//DebugLn(['OPM DoOnUpdate: Package.Name=', Package.Name, //DebugLn(['OPM DoOnUpdate: Package.Name=', Package.Name,
// ', Package.DisplayName=', Package.DisplayName]); // ', Package.DisplayName=', Package.DisplayName]);
PkgLinks.AddOnlineLink(Package.DownloadZipURL, Package.Name, PackageFile.Version); PkgLinks.AddOnlineLink(Package.DownloadZipURL, Package.Name, LazarusPkg.Version);
end; end;
end; end;
end; end;
@ -954,7 +954,7 @@ begin
begin begin
Data := VisualTree.VST.GetNodeData(Node); Data := VisualTree.VST.GetNodeData(Node);
if (Data^.DataType = 2) then if (Data^.DataType = 2) then
SL.Add(Data^.PackageFileName); SL.Add(Data^.LazarusPackageName);
end; end;
Node := VisualTree.VST.GetNext(Node); Node := VisualTree.VST.GetNext(Node);
end; end;
@ -991,7 +991,7 @@ begin
while Node <> nil do while Node <> nil do
begin begin
Data := VisualTree.VST.GetNodeData(Node); Data := VisualTree.VST.GetNodeData(Node);
if UpperCase(Trim(Data^.PackageFileName)) = UpperCase(Trim(SL.Strings[I])) then if UpperCase(Trim(Data^.LazarusPackageName)) = UpperCase(Trim(SL.Strings[I])) then
begin begin
VisualTree.VST.CheckState[Node] := csCheckedNormal; VisualTree.VST.CheckState[Node] := csCheckedNormal;
Inc(CheckCount); Inc(CheckCount);
@ -1084,7 +1084,7 @@ begin
cbFilterBy.Clear; cbFilterBy.Clear;
cbFilterBy.Items.Add(rsMainFrm_VSTHeaderColumn_PackageName); cbFilterBy.Items.Add(rsMainFrm_VSTHeaderColumn_PackageName);
cbFilterBy.Items.Add(rsMainFrm_VSTHeaderColumn_PackageFile); cbFilterBy.Items.Add(rsMainFrm_VSTHeaderColumn_LazarusPackage);
cbFilterBy.Items.Add(rsMainFrm_VSTText_PackageCategory); cbFilterBy.Items.Add(rsMainFrm_VSTText_PackageCategory);
cbFilterBy.Items.Add(rsMainFrm_VSTText_PackageStatus); cbFilterBy.Items.Add(rsMainFrm_VSTText_PackageStatus);
cbFilterBy.Items.Add(rsMainFrm_VSTText_Version); cbFilterBy.Items.Add(rsMainFrm_VSTText_Version);

View File

@ -130,7 +130,7 @@ var
I, J: Integer; I, J: Integer;
Node: PVirtualNode; Node: PVirtualNode;
Data: PData; Data: PData;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
ChkCnt, InvCnt: Integer; ChkCnt, InvCnt: Integer;
begin begin
SetupControls(ATyp); SetupControls(ATyp);
@ -140,14 +140,14 @@ begin
begin begin
if ATyp = 0 then if ATyp = 0 then
begin begin
for J := 0 to SerializablePackages.Items[I].PackageFiles.Count - 1 do for J := 0 to SerializablePackages.Items[I].LazarusPackages.Count - 1 do
begin begin
PackageFile := TPackageFile(SerializablePackages.Items[I].PackageFiles.Items[J]); LazarusPkg := TLazarusPackage(SerializablePackages.Items[I].LazarusPackages.Items[J]);
if (PackageFile.Checked) and (psInstalled in PackageFile.PackageStates) then if (LazarusPkg.Checked) and (psInstalled in LazarusPkg.PackageStates) then
begin begin
Node := FVST.AddChild(nil); Node := FVST.AddChild(nil);
Data := FVST.GetNodeData(Node); Data := FVST.GetNodeData(Node);
Data^.FName := PackageFile.Name + '(' + PackageFile.InstalledFileVersion + ')'; Data^.FName := LazarusPkg.Name + '(' + LazarusPkg.InstalledFileVersion + ')';
Data^.FImageIndex := 1; Data^.FImageIndex := 1;
end; end;
end; end;

View File

@ -84,7 +84,7 @@ type
private private
FMaxVersion: TPackageVersion; FMaxVersion: TPackageVersion;
FMinVersion: TPackageVersion; FMinVersion: TPackageVersion;
FPackageFileName: String; FPkgFileName: String;
procedure SetMinVersion(const AValue: TPackageVersion); procedure SetMinVersion(const AValue: TPackageVersion);
procedure SetMaxVersion(const AValue: TPackageVersion); procedure SetMaxVersion(const AValue: TPackageVersion);
public public
@ -92,7 +92,7 @@ type
constructor Create(ACollection: TCollection); override; constructor Create(ACollection: TCollection); override;
destructor Destroy; override; destructor Destroy; override;
published published
property PackageFileName: String read FPackageFileName write FPackageFileName; property PkgFileName: String read FPkgFileName write FPkgFileName;
property MinVersion: TPackageVersion read FMinVersion write SetMinVersion; property MinVersion: TPackageVersion read FMinVersion write SetMinVersion;
property MaxVersion: TPackageVersion read FMaxVersion write SetMaxVersion; property MaxVersion: TPackageVersion read FMaxVersion write SetMaxVersion;
end; end;
@ -109,8 +109,9 @@ type
property Dependencies[AIndex: Integer]: TPackageDependency read GetDependency write SetDependency; default; property Dependencies[AIndex: Integer]: TPackageDependency read GetDependency write SetDependency; default;
end; end;
{ TPackageFile } { TLazarusPackage }
TPackageFile = class(TCollectionItem)
TLazarusPackage = class(TCollectionItem)
private private
FName: String; FName: String;
FDescription: String; FDescription: String;
@ -202,14 +203,14 @@ type
FIsDirZipped: Boolean; FIsDirZipped: Boolean;
FZippedBaseDir: String; FZippedBaseDir: String;
FRating: Integer; FRating: Integer;
FPackageFiles: TCollection; FLazarusPackages: TCollection;
function GetDownloadable: Boolean; function GetDownloadable: Boolean;
function GetExtractable: Boolean; function GetExtractable: Boolean;
public public
constructor Create; reintroduce; constructor Create; reintroduce;
destructor Destroy; override; destructor Destroy; override;
procedure ChangePackageStates(const AChangeType: TChangeType; APackageState: TPackageState); procedure ChangePackageStates(const AChangeType: TChangeType; APackageState: TPackageState);
function FindPackageFile(const APackageFileName: String): TPackageFile; function FindLazarusPackage(const APackageName: String): TLazarusPackage;
public public
property PackageStates: TPackageStates read FPackageStates; property PackageStates: TPackageStates read FPackageStates;
property PackageState: TPackageState read FPackageState; property PackageState: TPackageState read FPackageState;
@ -232,7 +233,7 @@ type
property RepositoryFileHash: String read FRepositoryFileHash write FRepositoryFileHash; property RepositoryFileHash: String read FRepositoryFileHash write FRepositoryFileHash;
property RepositoryDate: TDate read FRepositoryDate write FRepositoryDate; property RepositoryDate: TDate read FRepositoryDate write FRepositoryDate;
property PackageBaseDir: String read FPackageBaseDir write FPackageBaseDir; property PackageBaseDir: String read FPackageBaseDir write FPackageBaseDir;
property PackageFiles: TCollection read FPackageFiles write FPackageFiles; property LazarusPackages: TCollection read FLazarusPackages write FLazarusPackages;
property HomePageURL: String read FHomePageURL write FHomePageURL; property HomePageURL: String read FHomePageURL write FHomePageURL;
property DownloadURL: String read FDownloadURL write FDownloadURL; property DownloadURL: String read FDownloadURL write FDownloadURL;
property SVNURL: String read FSVNURL write FSVNURL; property SVNURL: String read FSVNURL write FSVNURL;
@ -252,15 +253,15 @@ type
function GetInstallCount: Integer; function GetInstallCount: Integer;
function GetItem(const AIndex: Integer): TPackage; function GetItem(const AIndex: Integer): TPackage;
procedure SetItem(const AIndex: Integer; const APackage: TPackage); procedure SetItem(const AIndex: Integer; const APackage: TPackage);
procedure DoGetPackageDependencies(const APackageFileName: String; ASL: TStringList; ALevel: Integer); procedure DoGetPackageDependencies(const APkgFileName: String; ASL: TStringList; ALevel: Integer);
function JSONToPackageData(const APackageData: TJSONData; var APackage: TPackage): Boolean; function JSONToPackageData(const APackageData: TJSONData; var APackage: TPackage): Boolean;
function JSONToPackageFiles(const APackageData: TJSONData; var APackage: TPackage): Boolean; function JSONToLazarusPackages(const APackageData: TJSONData; var APackage: TPackage): Boolean;
function PackageDataToJSON(APackage: TPackage; var APackageData: TJSONObject): Boolean; function PackageDataToJSON(APackage: TPackage; var APackageData: TJSONObject): Boolean;
function PackageFilesToJSON(APackage: TPackage; var APackageFiles: TJSONArray): Boolean; function LazarusPackagesToJSON(APackage: TPackage; var ALazarusPkgsArr: TJSONArray): Boolean;
function IsPackageDownloaded(const APackage: TPackage): Boolean; function IsPackageDownloaded(const APackage: TPackage): Boolean;
function IsPackageExtracted(const APackage: TPackage): Boolean; function IsPackageExtracted(const APackage: TPackage): Boolean;
function IsPackageInstalled(const APackageFile: TPackageFile; const APackageBaseDir: String): Boolean; function IsPackageInstalled(const ALazarusPkg: TLazarusPackage; const APackageBaseDir: String): Boolean;
function IsAtLeastOnePackageFileInstalled(const APackage: TPackage): Boolean; function AtLeastOneLazPkgInstalled(const APackage: TPackage): Boolean;
function GetPackageVersion(const APath: String): String; function GetPackageVersion(const APath: String): String;
function GetPackageDescription(const APath: String): String; function GetPackageDescription(const APath: String): String;
function GetPackageLicense(const APath: String): String; function GetPackageLicense(const APath: String): String;
@ -273,15 +274,15 @@ type
procedure DeletePackage(const AIndex: Integer); procedure DeletePackage(const AIndex: Integer);
function FindPackage(const AValue: String; const AFindPackageBy: TFindPackageBy): TPackage; function FindPackage(const AValue: String; const AFindPackageBy: TFindPackageBy): TPackage;
function FindPackageIndex(const AValue: String; const AFindPackageBy: TFindPackageBy): Integer; function FindPackageIndex(const AValue: String; const AFindPackageBy: TFindPackageBy): Integer;
function FindPackageFile(const APackageFileName: String): TPackageFile; function FindLazarusPackage(const APackageName: String): TLazarusPackage;
function JSONToPackages(JSON: TJSONStringType): Boolean; function JSONToPackages(JSON: TJSONStringType): Boolean;
function PackagesToJSON(var JSON: TJSONStringType): Boolean; function PackagesToJSON(var JSON: TJSONStringType): Boolean;
procedure GetPackageDependencies(const APackageFileName: String; List: TObjectList; Recurse, OnlyUnresolved: Boolean); procedure GetPackageDependencies(const APkgFileName: String; List: TObjectList; Recurse, OnlyUnresolved: Boolean);
procedure GetPackageStates; procedure GetPackageStates;
procedure RemoveErrorState; procedure RemoveErrorState;
procedure MarkRuntimePackages; procedure MarkRuntimePackages;
function Cleanup: Integer; function Cleanup: Integer;
function IsDependencyOk(PackageDependency: TPackageDependency; DependencyPackage: TPackageFile): Boolean; function IsDependencyOk(PackageDependency: TPackageDependency; DependencyPackage: TLazarusPackage): Boolean;
function IsInstalledVersionOk(PackageDependency: TPackageDependency; InstalledVersion: String): Boolean; function IsInstalledVersionOk(PackageDependency: TPackageDependency; InstalledVersion: String): Boolean;
function GetPackageInstallState(const APackage: TPackage): Integer; overload; function GetPackageInstallState(const APackage: TPackage): Integer; overload;
procedure DeleteDownloadedZipFiles; procedure DeleteDownloadedZipFiles;
@ -321,7 +322,7 @@ begin
if ASource is TPackageDependency then if ASource is TPackageDependency then
begin begin
Source := ASource as TPackageDependency; Source := ASource as TPackageDependency;
FPackageFileName := Source.PackageFileName; FPkgFileName := Source.PkgFileName;
if Assigned(Source.MinVersion) then if Assigned(Source.MinVersion) then
FMinVersion.Assign(Source.MinVersion); FMinVersion.Assign(Source.MinVersion);
if Assigned(Source.MaxVersion) then if Assigned(Source.MaxVersion) then
@ -385,9 +386,9 @@ begin
MaxVer := '(' + Dependencies[I].FMaxVersion.AsString + ')' MaxVer := '(' + Dependencies[I].FMaxVersion.AsString + ')'
end; end;
if Result = '' then if Result = '' then
Result := Dependencies[I].PackageFileName + MinVer + MaxVer Result := Dependencies[I].PkgFileName + MinVer + MaxVer
else else
Result := Result + ', ' + Dependencies[I].PackageFileName + MinVer + MaxVer; Result := Result + ', ' + Dependencies[I].PkgFileName + MinVer + MaxVer;
end; end;
end; end;
@ -415,28 +416,28 @@ begin
P2 := Pos(')', Str); P2 := Pos(')', Str);
if (P1 <> 0) and (P2 <> 0) then if (P1 <> 0) and (P2 <> 0) then
begin begin
PackageDependency.PackageFileName := Trim(Copy(Str, 1, P1 - 1)); PackageDependency.PkgFileName := Trim(Copy(Str, 1, P1 - 1));
PackageDependency.FMinVersion.AsString := Trim(Copy(Str, P1 + 1, P2 - P1 - 1)); PackageDependency.FMinVersion.AsString := Trim(Copy(Str, P1 + 1, P2 - P1 - 1));
System.Delete(Str, 1, P2); System.Delete(Str, 1, P2);
if Length(Trim(Str)) > 0 then if Length(Trim(Str)) > 0 then
PackageDependency.FMaxVersion.AsString := Trim(Copy(Str, 2, Length(Str) - 2)); PackageDependency.FMaxVersion.AsString := Trim(Copy(Str, 2, Length(Str) - 2));
end end
else else
PackageDependency.PackageFileName := Trim(Str); PackageDependency.PkgFileName := Trim(Str);
end; end;
finally finally
SL.Free; SL.Free;
end; end;
end; end;
{ TPackageFile } { TLazarusPackage }
function TPackageFile.GetVersionAsString: String; function TLazarusPackage.GetVersionAsString: String;
begin begin
Result := FVersion.AsString; Result := FVersion.AsString;
end; end;
procedure TPackageFile.SetVersionAsString(const AValue: String); procedure TLazarusPackage.SetVersionAsString(const AValue: String);
begin begin
if not Assigned(FVersion) then if not Assigned(FVersion) then
begin begin
@ -447,12 +448,12 @@ begin
FVersionAsString := AValue; FVersionAsString := AValue;
end; end;
function TPackageFile.GetDependenciesAsString: String; function TLazarusPackage.GetDependenciesAsString: String;
begin begin
Result := FDependencies.GetDependenciesAsString(False); Result := FDependencies.GetDependenciesAsString(False);
end; end;
procedure TPackageFile.SetDependenciesAsString(const AValue: String); procedure TLazarusPackage.SetDependenciesAsString(const AValue: String);
begin begin
if not Assigned(FDependencies) then if not Assigned(FDependencies) then
begin begin
@ -462,7 +463,7 @@ begin
FDependenciesAsString := AValue; FDependenciesAsString := AValue;
end; end;
function TPackageFile.GetInstallable: Boolean; function TLazarusPackage.GetInstallable: Boolean;
begin begin
case PackageAction of case PackageAction of
paDownloadTo: paDownloadTo:
@ -474,7 +475,7 @@ begin
end; end;
end; end;
constructor TPackageFile.Create; constructor TLazarusPackage.Create;
begin begin
FVersion := TPackageVersion.Create; FVersion := TPackageVersion.Create;
FVersion.Clear; FVersion.Clear;
@ -482,7 +483,7 @@ begin
FDependencies := TPackageDependencies.Create(TPackageDependency); FDependencies := TPackageDependencies.Create(TPackageDependency);
end; end;
destructor TPackageFile.Destroy; destructor TLazarusPackage.Destroy;
begin begin
if Assigned(FVersion) then if Assigned(FVersion) then
FreeAndNil(FVersion); FreeAndNil(FVersion);
@ -520,17 +521,17 @@ end;
constructor TPackage.Create; constructor TPackage.Create;
begin begin
FPackageFiles := TCollection.Create(TPackageFile); FLazarusPackages := TCollection.Create(TLazarusPackage);
end; end;
destructor TPackage.Destroy; destructor TPackage.Destroy;
var var
I: Integer; I: Integer;
begin begin
FPackageFiles.Clear; FLazarusPackages.Clear;
for I := FPackageFiles.Count - 1 downto 0 do for I := FLazarusPackages.Count - 1 downto 0 do
FPackageFiles.Items[I].Free; FLazarusPackages.Items[I].Free;
FPackageFiles.Free; FLazarusPackages.Free;
inherited Destroy; inherited Destroy;
end; end;
@ -538,7 +539,7 @@ procedure TPackage.ChangePackageStates(const AChangeType: TChangeType;
APackageState: TPackageState); APackageState: TPackageState);
var var
I: Integer; I: Integer;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
begin begin
if APackageState = psInstalled then if APackageState = psInstalled then
Exit; Exit;
@ -547,38 +548,36 @@ begin
ctAdd: ctAdd:
begin begin
FPackageStates := FPackageStates + [APackageState]; FPackageStates := FPackageStates + [APackageState];
for I := 0 to PackageFiles.Count - 1 do for I := 0 to LazarusPackages.Count - 1 do
begin begin
PackageFile := TPackageFile(PackageFiles.Items[I]); LazarusPkg := TLazarusPackage(LazarusPackages.Items[I]);
PackageFile.PackageStates := PackageFile.PackageStates + [APackageState]; LazarusPkg.PackageStates := LazarusPkg.PackageStates + [APackageState];
PackageFile.PackageState := APackageState; LazarusPkg.PackageState := APackageState;
end; end;
end; end;
ctRemove: ctRemove:
begin begin
FPackageStates := FPackageStates - [APackageState]; FPackageStates := FPackageStates - [APackageState];
for I := 0 to PackageFiles.Count - 1 do for I := 0 to LazarusPackages.Count - 1 do
begin begin
PackageFile := TPackageFile(PackageFiles.Items[I]); LazarusPkg := TLazarusPackage(LazarusPackages.Items[I]);
PackageFile.PackageStates := PackageFile.PackageStates - [APackageState]; LazarusPkg.PackageStates := LazarusPkg.PackageStates - [APackageState];
end; end;
end; end;
end; end;
end; end;
function TPackage.FindPackageFile(const APackageFileName: String): TPackageFile; function TPackage.FindLazarusPackage(const APackageName: String): TLazarusPackage;
var var
I: Integer; I: Integer;
begin begin
Result := nil; for I := 0 to FLazarusPackages.Count - 1 do
for I := 0 to FPackageFiles.Count - 1 do
begin begin
if UpperCase(TPackageFile(FPackageFiles.Items[I]).Name) = UpperCase(APackageFileName) then Result := TLazarusPackage(FLazarusPackages.Items[I]);
begin if UpperCase(Result.Name) = UpperCase(APackageName) then
Result := TPackageFile(FPackageFiles.Items[I]); Exit;
Break;
end;
end; end;
Result := nil;
end; end;
{ TSerializablePackages } { TSerializablePackages }
@ -635,8 +634,8 @@ var
begin begin
Result := 0; Result := 0;
for I := 0 to Count - 1 do for I := 0 to Count - 1 do
for J := 0 to Items[I].FPackageFiles.Count - 1 do for J := 0 to Items[I].FLazarusPackages.Count - 1 do
if TPackageFile(Items[I].FPackageFiles.Items[J]).IsInstallable then if TLazarusPackage(Items[I].FLazarusPackages.Items[J]).IsInstallable then
Inc(Result); Inc(Result);
end; end;
@ -656,27 +655,27 @@ begin
FPackages.Items[AIndex] := TPackage(APackage); FPackages.Items[AIndex] := TPackage(APackage);
end; end;
procedure TSerializablePackages.DoGetPackageDependencies( procedure TSerializablePackages.DoGetPackageDependencies(const APkgFileName: String;
const APackageFileName: String; ASL: TStringList; ALevel: Integer); ASL: TStringList; ALevel: Integer);
var var
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
D2, D1: TPackageDependency; D2, D1: TPackageDependency;
I, J: Integer; I, J: Integer;
begin begin
if (ALevel > 10) then if (ALevel > 10) then
Exit; Exit;
PackageFile := FindPackageFile(APackageFileName); LazarusPkg := FindLazarusPackage(APkgFileName);
if PackageFile = nil then if LazarusPkg = nil then
Exit; Exit;
for I := 0 to PackageFile.Dependencies.Count - 1 do for I := 0 to LazarusPkg.Dependencies.Count - 1 do
begin begin
D1 := PackageFile.Dependencies[I]; D1 := LazarusPkg.Dependencies[I];
J := ASL.IndexOf(APackageFileName); J := ASL.IndexOf(APkgFileName);
If J = -1 then If J = -1 then
begin begin
D2 := TPackageDependency.Create(nil); D2 := TPackageDependency.Create(nil);
D2.Assign(D1); D2.Assign(D1);
ASL.AddObject(D2.PackageFileName, D2); ASL.AddObject(D2.PkgFileName, D2);
end end
else else
begin begin
@ -685,7 +684,7 @@ begin
D2.MinVersion.Assign(D1.MinVersion); D2.MinVersion.Assign(D1.MinVersion);
end; end;
if (ALevel >= 0) and (J = -1) Then if (ALevel >= 0) and (J = -1) Then
DoGetPackageDependencies(D2.PackageFileName, ASL, ALevel + 1); DoGetPackageDependencies(D2.PkgFileName, ASL, ALevel + 1);
end; end;
end; end;
@ -701,7 +700,7 @@ begin
Exit; Exit;
end; end;
Result := TPackage(FPackages.Add); Result := TPackage(FPackages.Add);
Result.FPackageFiles := TCollection.Create(TPackageFile); Result.FLazarusPackages := TCollection.Create(TLazarusPackage);
Result.Name := AName; Result.Name := AName;
end; end;
@ -755,18 +754,18 @@ begin
end; end;
function TSerializablePackages.FindPackageFile(const APackageFileName: String): TPackageFile; function TSerializablePackages.FindLazarusPackage(const APackageName: String): TLazarusPackage;
var var
I, J: Integer; I, J: Integer;
begin begin
Result := nil; Result := nil;
for I := 0 to Count - 1 do for I := 0 to Count - 1 do
begin begin
for J := 0 to Items[I].FPackageFiles.Count - 1 do for J := 0 to Items[I].FLazarusPackages.Count - 1 do
begin begin
if UpperCase(TPackageFile(Items[I].FPackageFiles.Items[J]).Name) = UpperCase(APackageFileName) then if UpperCase(TLazarusPackage(Items[I].FLazarusPackages.Items[J]).Name) = UpperCase(APackageName) then
begin begin
Result := TPackageFile(Items[I].FPackageFiles.Items[J]); Result := TLazarusPackage(Items[I].FLazarusPackages.Items[J]);
Break; Break;
end; end;
end; end;
@ -805,45 +804,45 @@ begin
end; end;
end; end;
function TSerializablePackages.JSONToPackageFiles(const APackageData: TJSONData; function TSerializablePackages.JSONToLazarusPackages(const APackageData: TJSONData;
var APackage: TPackage): Boolean; var APackage: TPackage): Boolean;
var var
PackageFiles: TJSONArray; LazarusPkgsArr: TJSONArray;
PackageFilesObject: TJSONObject; LazarusPkgsObj: TJSONObject;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
I: Integer; I: Integer;
begin begin
Result := True; Result := True;
try try
PackageFiles := TJSONArray(APackageData); LazarusPkgsArr := TJSONArray(APackageData);
APackage.PackageFiles := TCollection.Create(TPackageFile); APackage.LazarusPackages := TCollection.Create(TLazarusPackage);
for I := 0 to PackageFiles.Count - 1 do for I := 0 to LazarusPkgsArr.Count - 1 do
begin begin
if PackageFiles.Items[I].JSONType = jtObject then if LazarusPkgsArr.Items[I].JSONType = jtObject then
begin begin
PackageFilesObject := TJSONObject(PackageFiles.Items[I]); LazarusPkgsObj := TJSONObject(LazarusPkgsArr.Items[I]);
PackageFile := TPackageFile(APackage.PackageFiles.Add); LazarusPkg := TLazarusPackage(APackage.LazarusPackages.Add);
//need to change //need to change
PackageFile.Name := PackageFilesObject.Get('Name'); LazarusPkg.Name := LazarusPkgsObj.Get('Name');
PackageFile.Description := PackageFilesObject.Get('Description'); LazarusPkg.Description := LazarusPkgsObj.Get('Description');
PackageFile.Author := PackageFilesObject.Get('Author'); LazarusPkg.Author := LazarusPkgsObj.Get('Author');
PackageFile.License := PackageFilesObject.Get('License'); LazarusPkg.License := LazarusPkgsObj.Get('License');
PackageFile.PackageRelativePath := PackageFilesObject.Get('RelativeFilePath'); LazarusPkg.PackageRelativePath := LazarusPkgsObj.Get('RelativeFilePath');
if PackageFile.PackageRelativePath <> '' then if LazarusPkg.PackageRelativePath <> '' then
PackageFile.PackageRelativePath := StringReplace(PackageFile.PackageRelativePath, '\/', PathDelim, [rfReplaceAll]); LazarusPkg.PackageRelativePath := StringReplace(LazarusPkg.PackageRelativePath, '\/', PathDelim, [rfReplaceAll]);
PackageFile.VersionAsString := PackageFilesObject.Get('VersionAsString'); LazarusPkg.VersionAsString := LazarusPkgsObj.Get('VersionAsString');
PackageFile.LazCompatibility := PackageFilesObject.Get('LazCompatibility'); LazarusPkg.LazCompatibility := LazarusPkgsObj.Get('LazCompatibility');
PackageFile.FPCCompatibility := PackageFilesObject.Get('FPCCompatibility'); LazarusPkg.FPCCompatibility := LazarusPkgsObj.Get('FPCCompatibility');
PackageFile.SupportedWidgetSet := PackageFilesObject.Get('SupportedWidgetSet'); LazarusPkg.SupportedWidgetSet := LazarusPkgsObj.Get('SupportedWidgetSet');
PackageFile.PackageType := TPackageType(PackageFilesObject.Get('PackageType')); LazarusPkg.PackageType := TPackageType(LazarusPkgsObj.Get('PackageType'));
PackageFile.DependenciesAsString := PackageFilesObject.Get('DependenciesAsString'); LazarusPkg.DependenciesAsString := LazarusPkgsObj.Get('DependenciesAsString');
end; end;
end; end;
except except
on E: Exception do on E: Exception do
begin begin
Result := False; Result := False;
FlastError := '"' + PackageFile.Name + '": ' + E.Message; FlastError := '"' + LazarusPkg.Name + '": ' + E.Message;
end; end;
end; end;
end; end;
@ -882,7 +881,7 @@ begin
end end
else if Data.Items[I].JSONType = jtArray then else if Data.Items[I].JSONType = jtArray then
begin begin
if not JSONToPackageFiles(Data.Items[I], Package) then if not JSONToLazarusPackages(Data.Items[I], Package) then
Result := False; Result := False;
end; end;
end; end;
@ -900,46 +899,46 @@ begin
end; end;
end; end;
function TSerializablePackages.PackageFilesToJSON(APackage: TPackage; function TSerializablePackages.LazarusPackagesToJSON(APackage: TPackage;
var APackageFiles: TJSONArray): Boolean; var ALazarusPkgsArr: TJSONArray): Boolean;
var var
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
PackageFileObject: TJSONObject; LazarusPkgObj: TJSONObject;
I: Integer; I: Integer;
PackageRelativePath: String; RelPath: String;
begin begin
Result := True; Result := True;
try try
APackageFiles := TJSONArray.Create; ALazarusPkgsArr := TJSONArray.Create;
for I := 0 to APackage.FPackageFiles.Count - 1 do for I := 0 to APackage.FLazarusPackages.Count - 1 do
begin begin
PackageFile := TPackageFile(APackage.FPackageFiles.Items[I]); LazarusPkg := TLazarusPackage(APackage.FLazarusPackages.Items[I]);
PackageFileObject := TJSONObject.Create; LazarusPkgObj := TJSONObject.Create;
//need to change //need to change
PackageFileObject.Add('Name', PackageFile.Name); LazarusPkgObj.Add('Name', LazarusPkg.Name);
PackageFileObject.Add('Description', PackageFile.Description); LazarusPkgObj.Add('Description', LazarusPkg.Description);
PackageFileObject.Add('Author', PackageFile.Author); LazarusPkgObj.Add('Author', LazarusPkg.Author);
PackageFileObject.Add('License', PackageFile.License); LazarusPkgObj.Add('License', LazarusPkg.License);
PackageRelativePath := PackageFile.PackageRelativePath; RelPath := LazarusPkg.PackageRelativePath;
if Trim(PackageRelativePath) <> '' then if Trim(RelPath) <> '' then
begin begin
PackageRelativePath := AppendPathDelim(PackageRelativePath); RelPath := AppendPathDelim(RelPath);
PackageRelativePath := StringReplace(PackageRelativePath, PathDelim, '\/', [rfReplaceAll]); RelPath := StringReplace(RelPath, PathDelim, '\/', [rfReplaceAll]);
end; end;
PackageFileObject.Add('RelativeFilePath', PackageRelativePath); LazarusPkgObj.Add('RelativeFilePath', RelPath);
PackageFileObject.Add('VersionAsString', PackageFile.VersionAsString); LazarusPkgObj.Add('VersionAsString', LazarusPkg.VersionAsString);
PackageFileObject.Add('LazCompatibility', PackageFile.LazCompatibility); LazarusPkgObj.Add('LazCompatibility', LazarusPkg.LazCompatibility);
PackageFileObject.Add('FPCCompatibility', PackageFile.FPCCompatibility); LazarusPkgObj.Add('FPCCompatibility', LazarusPkg.FPCCompatibility);
PackageFileObject.Add('SupportedWidgetSet', PackageFile.SupportedWidgetSet); LazarusPkgObj.Add('SupportedWidgetSet', LazarusPkg.SupportedWidgetSet);
PackageFileObject.Add('PackageType', Ord(PackageFile.PackageType)); LazarusPkgObj.Add('PackageType', Ord(LazarusPkg.PackageType));
PackageFileObject.Add('DependenciesAsString', PackageFile.DependenciesAsString); LazarusPkgObj.Add('DependenciesAsString', LazarusPkg.DependenciesAsString);
APackageFiles.Add(PackageFileObject); ALazarusPkgsArr.Add(LazarusPkgObj);
end; end;
except except
on E: Exception do on E: Exception do
begin begin
Result := False; Result := False;
FlastError := '"' + PackageFile.Name + '": ' + E.Message; FlastError := '"' + LazarusPkg.Name + '": ' + E.Message;
end; end;
end; end;
end; end;
@ -957,15 +956,15 @@ end;
function TSerializablePackages.IsPackageExtracted(const APackage: TPackage): Boolean; function TSerializablePackages.IsPackageExtracted(const APackage: TPackage): Boolean;
var var
I: Integer; I: Integer;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
begin begin
Result := True; Result := True;
for I := 0 to APackage.FPackageFiles.Count - 1 do for I := 0 to APackage.FLazarusPackages.Count - 1 do
begin begin
PackageFile := TPackageFile(APackage.FPackageFiles.Items[I]); LazarusPkg := TLazarusPackage(APackage.FLazarusPackages.Items[I]);
PackageFile.FPackageAbsolutePath := Options.LocalRepositoryPackages + APackage.PackageBaseDir LazarusPkg.FPackageAbsolutePath := Options.LocalRepositoryPackages + APackage.PackageBaseDir
+ PackageFile.FPackageRelativePath + PackageFile.Name; + LazarusPkg.FPackageRelativePath + LazarusPkg.Name;
if not FileExists(PackageFile.FPackageAbsolutePath) then if not FileExists(LazarusPkg.FPackageAbsolutePath) then
begin begin
Result := False; Result := False;
Break; Break;
@ -1035,7 +1034,7 @@ begin
end; end;
function TSerializablePackages.IsPackageInstalled(const APackageFile: TPackageFile; function TSerializablePackages.IsPackageInstalled(const ALazarusPkg: TLazarusPackage;
const APackageBaseDir: String): Boolean; const APackageBaseDir: String): Boolean;
function CheckIDEPackages: Boolean; function CheckIDEPackages: Boolean;
@ -1049,17 +1048,17 @@ function TSerializablePackages.IsPackageInstalled(const APackageFile: TPackageFi
for I := 0 to PackageCnt - 1 do for I := 0 to PackageCnt - 1 do
begin begin
Package := PackageEditingInterface.GetPackages(I); Package := PackageEditingInterface.GetPackages(I);
if ExtractFileName(Package.FileName) = APackageFile.Name then if ExtractFileName(Package.FileName) = ALazarusPkg.Name then
begin begin
APackageFile.InstalledFileName := Package.Filename; ALazarusPkg.InstalledFileName := Package.Filename;
APackageFile.InstalledFileVersion := IntToStr(Package.Version.Major) + '.' + ALazarusPkg.InstalledFileVersion := IntToStr(Package.Version.Major) + '.' +
IntToStr(Package.Version.Minor) + '.' + IntToStr(Package.Version.Minor) + '.' +
IntToStr(Package.Version.Release) + '.' + IntToStr(Package.Version.Release) + '.' +
IntToStr(Package.Version.Build); IntToStr(Package.Version.Build);
if FileExists(APackageFile.InstalledFileName) then if FileExists(ALazarusPkg.InstalledFileName) then
begin begin
APackageFile.InstalledFileDescription := GetPackageDescription(Package.Filename); ALazarusPkg.InstalledFileDescription := GetPackageDescription(Package.Filename);
APackageFile.InstalledFileLincese := GetPackageLicense(Package.Filename); ALazarusPkg.InstalledFileLincese := GetPackageLicense(Package.Filename);
end; end;
Result := True; Result := True;
Break; Break;
@ -1071,20 +1070,20 @@ var
FileName, RepoPath: String; FileName, RepoPath: String;
begin begin
Result := False; Result := False;
case APackageFile.PackageType of case ALazarusPkg.PackageType of
ptRunTime, ptRunTimeOnly: ptRunTime, ptRunTimeOnly:
begin begin
FileName := StringReplace(APackageFile.Name, '.lpk', '.opkman', [rfIgnoreCase]); FileName := StringReplace(ALazarusPkg.Name, '.lpk', '.opkman', [rfIgnoreCase]);
RepoPath := Options.LocalRepositoryPackages + APackageBaseDir + APackageFile.PackageRelativePath; RepoPath := Options.LocalRepositoryPackages + APackageBaseDir + ALazarusPkg.PackageRelativePath;
Result := (psExtracted in APackageFile.PackageStates) and FileExists(RepoPath + FileName); Result := (psExtracted in ALazarusPkg.PackageStates) and FileExists(RepoPath + FileName);
if Result then if Result then
begin begin
APackageFile.InstalledFileName := RepoPath + APackageFile.Name; ALazarusPkg.InstalledFileName := RepoPath + ALazarusPkg.Name;
if FileExists(APackageFile.InstalledFileName) then if FileExists(ALazarusPkg.InstalledFileName) then
begin begin
APackageFile.InstalledFileVersion := GetPackageVersion(APackageFile.InstalledFileName); ALazarusPkg.InstalledFileVersion := GetPackageVersion(ALazarusPkg.InstalledFileName);
APackageFile.InstalledFileDescription := GetPackageDescription(APackageFile.InstalledFileName); ALazarusPkg.InstalledFileDescription := GetPackageDescription(ALazarusPkg.InstalledFileName);
APackageFile.InstalledFileLincese := GetPackageLicense(APackageFile.InstalledFileName); ALazarusPkg.InstalledFileLincese := GetPackageLicense(ALazarusPkg.InstalledFileName);
end; end;
end end
else else
@ -1100,20 +1099,20 @@ end;
function TSerializablePackages.GetPackageInstallState(const APackage: TPackage): Integer; function TSerializablePackages.GetPackageInstallState(const APackage: TPackage): Integer;
var var
I: Integer; I: Integer;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
InstCnt: Integer; InstCnt: Integer;
begin begin
InstCnt := 0; InstCnt := 0;
for I := 0 to APackage.PackageFiles.Count - 1 do for I := 0 to APackage.LazarusPackages.Count - 1 do
begin begin
PackageFile := TPackageFile(APackage.PackageFiles.Items[I]); LazarusPkg := TLazarusPackage(APackage.LazarusPackages.Items[I]);
if IsPackageInstalled(PackageFile, APackage.PackageBaseDir) then if IsPackageInstalled(LazarusPkg, APackage.PackageBaseDir) then
Inc(InstCnt); Inc(InstCnt);
end; end;
case InstCnt of case InstCnt of
0: Result := 0; 0: Result := 0;
1..High(Integer): 1..High(Integer):
if InstCnt < APackage.PackageFiles.Count then if InstCnt < APackage.LazarusPackages.Count then
Result := 2 Result := 2
else else
Result := 1; Result := 1;
@ -1159,25 +1158,25 @@ function TSerializablePackages.PackagesToJSON(var JSON: TJSONStringType): Boolea
var var
PackageObject: TJSONObject; PackageObject: TJSONObject;
PackageData: TJSONObject; PackageData: TJSONObject;
PackageFiles: TJSONArray; LazarusPkgsArr: TJSONArray;
I: Integer; I: Integer;
Package: TPackage; Package: TPackage;
begin begin
Result := True; Result := True;
PackageObject := TJSONObject.Create; PackageObject := TJSONObject.Create;
try try
PackageFiles := nil; LazarusPkgsArr := nil;
PackageData := nil; PackageData := nil;
try try
for I := 0 to FPackages.Count - 1 do for I := 0 to FPackages.Count - 1 do
begin begin
Package := TPackage(FPackages.Items[I]); Package := TPackage(FPackages.Items[I]);
if not PackageFilesToJSON(Package, PackageFiles) then if not LazarusPackagesToJSON(Package, LazarusPkgsArr) then
Result := False; Result := False;
if not PackageDataToJSON(Package, PackageData) then if not PackageDataToJSON(Package, PackageData) then
Result := False; Result := False;
PackageObject.Add('PackageData' + IntToStr(I), PackageData); PackageObject.Add('PackageData' + IntToStr(I), PackageData);
PackageObject.Add('PackageFiles' + IntToStr(I), PackageFiles); PackageObject.Add('PackageFiles' + IntToStr(I), LazarusPkgsArr);
end; end;
if Result then if Result then
JSON := PackageObject.FormatJSON(DefaultFormat, DefaultIndentSize); JSON := PackageObject.FormatJSON(DefaultFormat, DefaultIndentSize);
@ -1189,34 +1188,34 @@ begin
end; end;
end; end;
procedure TSerializablePackages.GetPackageDependencies(const APackageFileName: String; procedure TSerializablePackages.GetPackageDependencies(const APkgFileName: String;
List: TObjectList; Recurse, OnlyUnresolved: Boolean); List: TObjectList; Recurse, OnlyUnresolved: Boolean);
var var
SL: TStringList; SL: TStringList;
I, J: Integer; I, J: Integer;
PackageFileName: String; PackageName: String;
Installed: Boolean; Installed: Boolean;
Package: TIDEPackage; IDEPackage: TIDEPackage;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
begin begin
SL := TStringList.Create; SL := TStringList.Create;
try try
SL.Sorted := True; SL.Sorted := True;
DoGetPackageDependencies(APackageFileName, SL, Ord(Recurse) - 1); DoGetPackageDependencies(APkgFileName, SL, Ord(Recurse) - 1);
if OnlyUnresolved then if OnlyUnresolved then
begin begin
for I := SL.Count - 1 downto 0 do for I := SL.Count - 1 downto 0 do
begin begin
PackageFileName := TPackageDependency(SL.Objects[I]).PackageFileName + '.lpk'; PackageName := TPackageDependency(SL.Objects[I]).PkgFileName + '.lpk';
Installed := False; Installed := False;
for J := 0 to PackageEditingInterface.GetPackageCount - 1 do for J := 0 to PackageEditingInterface.GetPackageCount - 1 do
begin begin
Package := PackageEditingInterface.GetPackages(J); IDEPackage := PackageEditingInterface.GetPackages(J);
if UpperCase(ExtractFileName(Package.Filename)) = UpperCase(PackageFileName) then if UpperCase(ExtractFileName(IDEPackage.Filename)) = UpperCase(PackageName) then
begin begin
PackageFile := FindPackageFile(PackageFileName); LazarusPkg := FindLazarusPackage(PackageName);
if PackageFile <> nil then if LazarusPkg <> nil then
Installed := IsInstalledVersionOk(TPackageDependency(SL.Objects[I]), PackageFile.InstalledFileVersion) Installed := IsInstalledVersionOk(TPackageDependency(SL.Objects[I]), LazarusPkg.InstalledFileVersion)
else else
Installed := True; Installed := True;
Break; Break;
@ -1239,7 +1238,7 @@ end;
procedure TSerializablePackages.GetPackageStates; procedure TSerializablePackages.GetPackageStates;
var var
I, J: Integer; I, J: Integer;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
begin begin
for I := 0 to Count - 1 do for I := 0 to Count - 1 do
begin begin
@ -1257,16 +1256,16 @@ begin
else else
Items[I].ChangePackageStates(ctRemove, psExtracted); Items[I].ChangePackageStates(ctRemove, psExtracted);
for J := 0 to Items[I].FPackageFiles.Count - 1 do for J := 0 to Items[I].FLazarusPackages.Count - 1 do
begin begin
PackageFile := TPackageFile(Items[I].FPackageFiles.Items[J]); LazarusPkg := TLazarusPackage(Items[I].FLazarusPackages.Items[J]);
if IsPackageInstalled(PackageFile, Items[I].PackageBaseDir) then if IsPackageInstalled(LazarusPkg, Items[I].PackageBaseDir) then
begin begin
PackageFile.PackageStates := PackageFile.PackageStates + [psInstalled]; LazarusPkg.PackageStates := LazarusPkg.PackageStates + [psInstalled];
PackageFile.PackageState := psInstalled; LazarusPkg.PackageState := psInstalled;
end end
else else
PackageFile.PackageStates := PackageFile.PackageStates - [psInstalled]; LazarusPkg.PackageStates := LazarusPkg.PackageStates - [psInstalled];
end; end;
end; end;
end; end;
@ -1274,14 +1273,18 @@ end;
procedure TSerializablePackages.RemoveErrorState; procedure TSerializablePackages.RemoveErrorState;
var var
I, J: Integer; I, J: Integer;
LazarusPkg: TLazarusPackage;
begin begin
for I := 0 to Count - 1 do for I := 0 to Count - 1 do
begin begin
if psError in Items[I].PackageStates then if psError in Items[I].PackageStates then
Items[I].ChangePackageStates(ctRemove, psError); Items[I].ChangePackageStates(ctRemove, psError);
for J := 0 to Items[I].FPackageFiles.Count - 1 do for J := 0 to Items[I].FLazarusPackages.Count - 1 do
if psError in TPackageFile(Items[I].FPackageFiles.Items[J]).PackageStates then begin
TPackageFile(Items[I].FPackageFiles.Items[J]).PackageStates := TPackageFile(Items[I].FPackageFiles.Items[J]).PackageStates - [psError]; LazarusPkg := TLazarusPackage(Items[I].FLazarusPackages.Items[J]);
//if psError in LazarusPkg.PackageStates then
LazarusPkg.PackageStates := LazarusPkg.PackageStates - [psError];
end;
end; end;
end; end;
@ -1289,34 +1292,33 @@ procedure TSerializablePackages.MarkRuntimePackages;
var var
I, J: Integer; I, J: Integer;
FileName: String; FileName: String;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
begin begin
for I := 0 to Count - 1 do for I := 0 to Count - 1 do
begin begin
for J := 0 to Items[I].FPackageFiles.Count - 1 do for J := 0 to Items[I].FLazarusPackages.Count - 1 do
begin begin
PackageFile := TPackageFile(Items[I].FPackageFiles.Items[J]); LazarusPkg := TLazarusPackage(Items[I].FLazarusPackages.Items[J]);
if (PackageFile.Checked) and if (LazarusPkg.Checked) and
(psInstalled in PackageFile.PackageStates) and (psInstalled in LazarusPkg.PackageStates) and
(not (psError in PackageFile.PackageStates)) and (not (psError in LazarusPkg.PackageStates)) and
(PackageFile.PackageType in [ptRunTime, ptRunTimeOnly]) then (LazarusPkg.PackageType in [ptRunTime, ptRunTimeOnly]) then
begin begin
FileName := StringReplace(PackageFile.Name, '.lpk', '.opkman', [rfIgnoreCase]); FileName := StringReplace(LazarusPkg.Name, '.lpk', '.opkman', [rfIgnoreCase]);
FileCreate(Options.LocalRepositoryPackages + Items[I].PackageBaseDir + PackageFile.PackageRelativePath + FileName); FileCreate(Options.LocalRepositoryPackages + Items[I].PackageBaseDir + LazarusPkg.PackageRelativePath + FileName);
end; end;
end; end;
end; end;
end; end;
function TSerializablePackages.IsAtLeastOnePackageFileInstalled( function TSerializablePackages.AtLeastOneLazPkgInstalled(const APackage: TPackage): Boolean;
const APackage: TPackage): Boolean;
var var
I: Integer; I: Integer;
begin begin
Result := False; Result := False;
for I := 0 to APackage.PackageFiles.Count - 1 do for I := 0 to APackage.LazarusPackages.Count - 1 do
begin begin
if IsPackageInstalled(TPackageFile(APackage.FPackageFiles.Items[I]), APackage.PackageBaseDir) then if IsPackageInstalled(TLazarusPackage(APackage.FLazarusPackages.Items[I]), APackage.PackageBaseDir) then
begin begin
Result := True; Result := True;
Break; Break;
@ -1331,7 +1333,7 @@ begin
Result := 0; Result := 0;
for I := 0 to Count - 1 do for I := 0 to Count - 1 do
begin begin
if not IsAtLeastOnePackageFileInstalled(Items[I]) then if not AtLeastOneLazPkgInstalled(Items[I]) then
begin begin
if IsPackageDownloaded(Items[I]) then if IsPackageDownloaded(Items[I]) then
begin begin
@ -1420,7 +1422,7 @@ begin
end; end;
function TSerializablePackages.IsDependencyOk(PackageDependency: TPackageDependency; function TSerializablePackages.IsDependencyOk(PackageDependency: TPackageDependency;
DependencyPackage: TPackageFile): Boolean; DependencyPackage: TLazarusPackage): Boolean;
var var
MinVerOk: Boolean; MinVerOk: Boolean;
MaxVerOk: Boolean; MaxVerOk: Boolean;

View File

@ -44,9 +44,9 @@ const
type type
{ TUpdatePackageFiles } { TUpdateLazPackages }
TUpdatePackageFiles = class(TCollectionItem) TUpdateLazPackages = class(TCollectionItem)
private private
FName: String; FName: String;
FVersion: String; FVersion: String;
@ -81,7 +81,7 @@ type
TUpdatePackage = class(TPersistent) TUpdatePackage = class(TPersistent)
private private
FUpdatePackageData: TUpdatePackageData; FUpdatePackageData: TUpdatePackageData;
FUpdatePackageFiles: TCollection; FUpdateLazPackages: TCollection;
FLastError: String; FLastError: String;
procedure Clear; procedure Clear;
public public
@ -92,7 +92,7 @@ type
property LastError: String read FLastError; property LastError: String read FLastError;
published published
property UpdatePackageData: TUpdatePackageData read FUpdatePackageData write FUpdatePackageData; property UpdatePackageData: TUpdatePackageData read FUpdatePackageData write FUpdatePackageData;
property UpdatePackageFiles: TCollection read FUpdatePackageFiles write FUpdatePackageFiles; property UpdateLazPackages: TCollection read FUpdateLazPackages write FUpdateLazPackages;
end; end;
{ TUpdates } { TUpdates }
@ -143,15 +143,15 @@ var
I: Integer; I: Integer;
begin begin
FUpdatePackageData.Clear; FUpdatePackageData.Clear;
for I := FUpdatePackageFiles.Count - 1 downto 0 do for I := FUpdateLazPackages.Count - 1 downto 0 do
FUpdatePackageFiles.Items[I].Free; FUpdateLazPackages.Items[I].Free;
FUpdatePackageFiles.Clear; FUpdateLazPackages.Clear;
end; end;
constructor TUpdatePackage.Create; constructor TUpdatePackage.Create;
begin begin
FUpdatePackageData := TUpdatePackageData.Create; FUpdatePackageData := TUpdatePackageData.Create;
FUpdatePackageFiles := TCollection.Create(TUpdatePackageFiles); FUpdateLazPackages := TCollection.Create(TUpdateLazPackages);
end; end;
destructor TUpdatePackage.Destroy; destructor TUpdatePackage.Destroy;
@ -159,9 +159,9 @@ var
I: Integer; I: Integer;
begin begin
FUpdatePackageData.Free; FUpdatePackageData.Free;
for I := FUpdatePackageFiles.Count - 1 downto 0 do for I := FUpdateLazPackages.Count - 1 downto 0 do
FUpdatePackageFiles.Items[I].Free; FUpdateLazPackages.Items[I].Free;
FUpdatePackageFiles.Free; FUpdateLazPackages.Free;
inherited Destroy; inherited Destroy;
end; end;
@ -266,13 +266,13 @@ end;
procedure TUpdates.Load; procedure TUpdates.Load;
var var
PackageCount: Integer; PackageCount: Integer;
PackageFileCount: Integer; LazarusPkgCount: Integer;
I, J: Integer; I, J: Integer;
Path, SubPath: String; Path, SubPath: String;
PackageName: String; PackageName: String;
PackageFileName: String; LazarusPkgName: String;
Package: TPackage; Package: TPackage;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
HasUpdate: Boolean; HasUpdate: Boolean;
begin begin
if (not Assigned(SerializablePackages)) or (SerializablePackages.Count = 0) then if (not Assigned(SerializablePackages)) or (SerializablePackages.Count = 0) then
@ -291,25 +291,25 @@ begin
Package.DownloadZipURL := FXML.GetValue(Path + 'DownloadZipURL', ''); Package.DownloadZipURL := FXML.GetValue(Path + 'DownloadZipURL', '');
Package.DisableInOPM := FXML.GetValue(Path + 'DisableInOPM', False); Package.DisableInOPM := FXML.GetValue(Path + 'DisableInOPM', False);
Package.Rating := FXML.GetValue(Path + 'Rating', 0); Package.Rating := FXML.GetValue(Path + 'Rating', 0);
PackageFileCount := FXML.GetValue(Path + 'Count', 0); LazarusPkgCount := FXML.GetValue(Path + 'Count', 0);
for J := 0 to PackageFileCount - 1 do for J := 0 to LazarusPkgCount - 1 do
begin begin
SubPath := Path + 'PackageFile' + IntToStr(J) + '/'; SubPath := Path + 'PackageFile' + IntToStr(J) + '/';
PackageFileName := FXML.GetValue(SubPath + 'Name', ''); LazarusPkgName := FXML.GetValue(SubPath + 'Name', '');
PackageFile := Package.FindPackageFile(PackageFileName); LazarusPkg := Package.FindLazarusPackage(LazarusPkgName);
if PackageFile <> nil then if LazarusPkg <> nil then
begin begin
PackageFile.UpdateVersion := FXML.GetValue(SubPath + 'UpdateVersion', ''); LazarusPkg.UpdateVersion := FXML.GetValue(SubPath + 'UpdateVersion', '');
PackageFile.ForceNotify := FXML.GetValue(SubPath + 'ForceNotify', False); LazarusPkg.ForceNotify := FXML.GetValue(SubPath + 'ForceNotify', False);
PackageFile.InternalVersion := FXML.GetValue(SubPath + 'InternalVersion', 0);; LazarusPkg.InternalVersion := FXML.GetValue(SubPath + 'InternalVersion', 0);;
PackageFile.InternalVersionOld := FXML.GetValue(SubPath + 'InternalVersionOld', 0); LazarusPkg.InternalVersionOld := FXML.GetValue(SubPath + 'InternalVersionOld', 0);
PackageFile.HasUpdate := (PackageFile.UpdateVersion <> '') and (PackageFile.InstalledFileVersion <> '') and LazarusPkg.HasUpdate := (LazarusPkg.UpdateVersion <> '') and (LazarusPkg.InstalledFileVersion <> '') and
( (
((not PackageFile.ForceNotify) and (PackageFile.UpdateVersion > PackageFile.InstalledFileVersion)) or ((not LazarusPkg.ForceNotify) and (LazarusPkg.UpdateVersion > LazarusPkg.InstalledFileVersion)) or
((PackageFile.ForceNotify) and (PackageFile.InternalVersion > PackageFile.InternalVersionOld)) ((LazarusPkg.ForceNotify) and (LazarusPkg.InternalVersion > LazarusPkg.InternalVersionOld))
); );
if not HasUpdate then if not HasUpdate then
HasUpdate := PackageFile.HasUpdate; HasUpdate := LazarusPkg.HasUpdate;
end; end;
end; end;
Package.HasUpdate := HasUpdate; Package.HasUpdate := HasUpdate;
@ -323,7 +323,7 @@ var
I, J: Integer; I, J: Integer;
Path, SubPath: String; Path, SubPath: String;
Package: TPackage; Package: TPackage;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
begin begin
if (not Assigned(SerializablePackages)) or (SerializablePackages.Count = 0) then if (not Assigned(SerializablePackages)) or (SerializablePackages.Count = 0) then
Exit; Exit;
@ -338,16 +338,16 @@ begin
FXML.SetDeleteValue(Path + 'DownloadZipURL', Package.DownloadZipURL, ''); FXML.SetDeleteValue(Path + 'DownloadZipURL', Package.DownloadZipURL, '');
FXML.SetDeleteValue(Path + 'DisableInOPM', Package.DisableInOPM, False); FXML.SetDeleteValue(Path + 'DisableInOPM', Package.DisableInOPM, False);
FXML.SetDeleteValue(Path + 'Rating', Package.Rating, 0); FXML.SetDeleteValue(Path + 'Rating', Package.Rating, 0);
FXML.SetDeleteValue(Path + 'Count', SerializablePackages.Items[I].PackageFiles.Count, 0); FXML.SetDeleteValue(Path + 'Count', SerializablePackages.Items[I].LazarusPackages.Count, 0);
for J := 0 to SerializablePackages.Items[I].PackageFiles.Count - 1 do for J := 0 to SerializablePackages.Items[I].LazarusPackages.Count - 1 do
begin begin
SubPath := Path + 'PackageFile' + IntToStr(J) + '/'; SubPath := Path + 'PackageFile' + IntToStr(J) + '/';
PackageFile := TPackageFile(SerializablePackages.Items[I].PackageFiles.Items[J]); LazarusPkg := TLazarusPackage(SerializablePackages.Items[I].LazarusPackages.Items[J]);
FXML.SetDeleteValue(SubPath + 'Name', PackageFile.Name, ''); FXML.SetDeleteValue(SubPath + 'Name', LazarusPkg.Name, '');
FXML.SetDeleteValue(SubPath + 'UpdateVersion', PackageFile.UpdateVersion, ''); FXML.SetDeleteValue(SubPath + 'UpdateVersion', LazarusPkg.UpdateVersion, '');
FXML.SetDeleteValue(SubPath + 'ForceNotify', PackageFile.ForceNotify, False); FXML.SetDeleteValue(SubPath + 'ForceNotify', LazarusPkg.ForceNotify, False);
FXML.SetDeleteValue(SubPath + 'InternalVersion', PackageFile.InternalVersion, 0); FXML.SetDeleteValue(SubPath + 'InternalVersion', LazarusPkg.InternalVersion, 0);
FXML.SetDeleteValue(SubPath + 'InternalVersionOld', PackageFile.InternalVersionOld, 0); FXML.SetDeleteValue(SubPath + 'InternalVersionOld', LazarusPkg.InternalVersionOld, 0);
end; end;
end; end;
FXML.Flush; FXML.Flush;
@ -357,26 +357,26 @@ procedure TUpdates.AssignPackageData(APackage: TPackage);
var var
I: Integer; I: Integer;
HasUpdate: Boolean; HasUpdate: Boolean;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
begin begin
HasUpdate := False; HasUpdate := False;
APackage.DownloadZipURL := FUpdatePackage.FUpdatePackageData.DownloadZipURL; APackage.DownloadZipURL := FUpdatePackage.FUpdatePackageData.DownloadZipURL;
APackage.DisableInOPM := FUpdatePackage.FUpdatePackageData.DisableInOPM; APackage.DisableInOPM := FUpdatePackage.FUpdatePackageData.DisableInOPM;
for I := 0 to FUpdatePackage.FUpdatePackageFiles.Count - 1 do for I := 0 to FUpdatePackage.FUpdateLazPackages.Count - 1 do
begin begin
PackageFile := APackage.FindPackageFile(TUpdatePackageFiles(FUpdatePackage.FUpdatePackageFiles.Items[I]).Name); LazarusPkg := APackage.FindLazarusPackage(TUpdateLazPackages(FUpdatePackage.FUpdateLazPackages.Items[I]).Name);
if PackageFile <> nil then if LazarusPkg <> nil then
begin begin
PackageFile.UpdateVersion := TUpdatePackageFiles(FUpdatePackage.FUpdatePackageFiles.Items[I]).Version; LazarusPkg.UpdateVersion := TUpdateLazPackages(FUpdatePackage.FUpdateLazPackages.Items[I]).Version;
PackageFile.ForceNotify := TUpdatePackageFiles(FUpdatePackage.FUpdatePackageFiles.Items[I]).ForceNotify; LazarusPkg.ForceNotify := TUpdateLazPackages(FUpdatePackage.FUpdateLazPackages.Items[I]).ForceNotify;
PackageFile.InternalVersion := TUpdatePackageFiles(FUpdatePackage.FUpdatePackageFiles.Items[I]).InternalVersion; LazarusPkg.InternalVersion := TUpdateLazPackages(FUpdatePackage.FUpdateLazPackages.Items[I]).InternalVersion;
PackageFile.HasUpdate := (PackageFile.UpdateVersion <> '') and (PackageFile.InstalledFileVersion <> '') and LazarusPkg.HasUpdate := (LazarusPkg.UpdateVersion <> '') and (LazarusPkg.InstalledFileVersion <> '') and
( (
((not PackageFile.ForceNotify) and (PackageFile.UpdateVersion > PackageFile.InstalledFileVersion)) or ((not LazarusPkg.ForceNotify) and (LazarusPkg.UpdateVersion > LazarusPkg.InstalledFileVersion)) or
((PackageFile.ForceNotify) and (PackageFile.InternalVersion > PackageFile.InternalVersionOld)) ((LazarusPkg.ForceNotify) and (LazarusPkg.InternalVersion > LazarusPkg.InternalVersionOld))
); );
if not HasUpdate then if not HasUpdate then
HasUpdate := PackageFile.HasUpdate; HasUpdate := LazarusPkg.HasUpdate;
end; end;
end; end;
APackage.HasUpdate := HasUpdate; APackage.HasUpdate := HasUpdate;
@ -385,21 +385,21 @@ end;
procedure TUpdates.ResetPackageData(APackage: TPackage); procedure TUpdates.ResetPackageData(APackage: TPackage);
var var
I: Integer; I: Integer;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
begin begin
APackage.DownloadZipURL := ''; APackage.DownloadZipURL := '';
APackage.DisableInOPM := False; APackage.DisableInOPM := False;
APackage.HasUpdate := False; APackage.HasUpdate := False;
for I := 0 to APackage.PackageFiles.Count - 1 do for I := 0 to APackage.LazarusPackages.Count - 1 do
begin begin
PackageFile := APackage.FindPackageFile(TPackageFile(APackage.PackageFiles.Items[I]).Name); LazarusPkg := APackage.FindLazarusPackage(TLazarusPackage(APackage.LazarusPackages.Items[I]).Name);
if PackageFile <> nil then if LazarusPkg <> nil then
begin begin
PackageFile.HasUpdate := False; LazarusPkg.HasUpdate := False;
PackageFile.UpdateVersion := ''; LazarusPkg.UpdateVersion := '';
PackageFile.ForceNotify := False; LazarusPkg.ForceNotify := False;
PackageFile.InternalVersion := 0; LazarusPkg.InternalVersion := 0;
PackageFile.InternalVersionOld := 0; LazarusPkg.InternalVersionOld := 0;
end; end;
end; end;
end; end;

View File

@ -49,7 +49,7 @@ type
PackageName: String; PackageName: String;
PackageDisplayName: String; PackageDisplayName: String;
Category: String; Category: String;
PackageFileName: String; LazarusPackageName: String;
Version: String; Version: String;
InstalledVersion: String; InstalledVersion: String;
UpdateVersion: String; UpdateVersion: String;
@ -78,7 +78,7 @@ type
Rating: Integer; Rating: Integer;
end; end;
TFilterBy = (fbPackageName, fbPackageFileName, fbPackageCategory, fbPackageState, TFilterBy = (fbPackageName, fbLazarusPackageName, fbPackageCategory, fbPackageState,
fbVersion, fbDescription, fbAuthor, fbLazCompatibility, fbFPCCompatibility, fbVersion, fbDescription, fbAuthor, fbLazCompatibility, fbFPCCompatibility,
fbSupportedWidgetsets, fbPackageType, fbDependecies, fbLicense); fbSupportedWidgetsets, fbPackageType, fbDependecies, fbLicense);
@ -296,7 +296,7 @@ var
I, J: Integer; I, J: Integer;
RootNode, Node, ChildNode, GrandChildNode: PVirtualNode; RootNode, Node, ChildNode, GrandChildNode: PVirtualNode;
RootData, Data, ChildData, GrandChildData: PData; RootData, Data, ChildData, GrandChildData: PData;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
UniqueID: Integer; UniqueID: Integer;
begin begin
FVST.OnExpanding := nil; FVST.OnExpanding := nil;
@ -328,31 +328,31 @@ begin
Data^.RepositoryDate := SerializablePackages.Items[I].RepositoryDate; Data^.RepositoryDate := SerializablePackages.Items[I].RepositoryDate;
FVST.IsDisabled[Node] := Data^.DisableInOPM; FVST.IsDisabled[Node] := Data^.DisableInOPM;
Data^.DataType := 1; Data^.DataType := 1;
for J := 0 to SerializablePackages.Items[I].PackageFiles.Count - 1 do for J := 0 to SerializablePackages.Items[I].LazarusPackages.Count - 1 do
begin begin
//add packagefiles(DataType = 2) //add LazarusPackages(DataType = 2)
PackageFile := TPackageFile(SerializablePackages.Items[I].PackageFiles.Items[J]); LazarusPkg := TLazarusPackage(SerializablePackages.Items[I].LazarusPackages.Items[J]);
ChildNode := FVST.AddChild(Node); ChildNode := FVST.AddChild(Node);
ChildNode^.CheckType := ctTriStateCheckBox; ChildNode^.CheckType := ctTriStateCheckBox;
FVST.IsDisabled[ChildNode] := FVST.IsDisabled[ChildNode^.Parent]; FVST.IsDisabled[ChildNode] := FVST.IsDisabled[ChildNode^.Parent];
ChildData := FVST.GetNodeData(ChildNode); ChildData := FVST.GetNodeData(ChildNode);
ChildData^.PID := I; ChildData^.PID := I;
ChildData^.PFID := J; ChildData^.PFID := J;
ChildData^.PackageFileName := PackageFile.Name; ChildData^.LazarusPackageName := LazarusPkg.Name;
ChildData^.InstalledVersion := PackageFile.InstalledFileVersion; ChildData^.InstalledVersion := LazarusPkg.InstalledFileVersion;
ChildData^.UpdateVersion := PackageFile.UpdateVersion; ChildData^.UpdateVersion := LazarusPkg.UpdateVersion;
ChildData^.Version := PackageFile.VersionAsString; ChildData^.Version := LazarusPkg.VersionAsString;
ChildData^.PackageState := PackageFile.PackageState; ChildData^.PackageState := LazarusPkg.PackageState;
ChildData^.HasUpdate := PackageFile.HasUpdate; ChildData^.HasUpdate := LazarusPkg.HasUpdate;
ChildData^.DataType := 2; ChildData^.DataType := 2;
//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];
GrandChildData := FVST.GetNodeData(GrandChildNode); GrandChildData := FVST.GetNodeData(GrandChildNode);
if ChildData^.InstalledVersion <> '' then if ChildData^.InstalledVersion <> '' then
GrandChildData^.Description := PackageFile.InstalledFileDescription GrandChildData^.Description := LazarusPkg.InstalledFileDescription
else else
GrandChildData^.Description := PackageFile.Description; GrandChildData^.Description := LazarusPkg.Description;
GrandChildData^.DataType := 3; GrandChildData^.DataType := 3;
Inc(UniqueID); Inc(UniqueID);
CreateButton(UniqueID, GrandChildData); CreateButton(UniqueID, GrandChildData);
@ -361,40 +361,40 @@ begin
GrandChildNode := FVST.AddChild(ChildNode); GrandChildNode := FVST.AddChild(ChildNode);
FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent]; FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent];
GrandChildData := FVST.GetNodeData(GrandChildNode); GrandChildData := FVST.GetNodeData(GrandChildNode);
GrandChildData^.Author := PackageFile.Author; GrandChildData^.Author := LazarusPkg.Author;
GrandChildData^.DataType := 4; GrandChildData^.DataType := 4;
//add lazcompatibility(DataType = 5) //add lazcompatibility(DataType = 5)
GrandChildNode := FVST.AddChild(ChildNode); GrandChildNode := FVST.AddChild(ChildNode);
FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent]; FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent];
GrandChildData := FVST.GetNodeData(GrandChildNode); GrandChildData := FVST.GetNodeData(GrandChildNode);
GrandChildData^.LazCompatibility := PackageFile.LazCompatibility; GrandChildData^.LazCompatibility := LazarusPkg.LazCompatibility;
GrandChildData^.DataType := 5; GrandChildData^.DataType := 5;
//add fpccompatibility(DataType = 6) //add fpccompatibility(DataType = 6)
GrandChildNode := FVST.AddChild(ChildNode); GrandChildNode := FVST.AddChild(ChildNode);
FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent]; FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent];
GrandChildData := FVST.GetNodeData(GrandChildNode); GrandChildData := FVST.GetNodeData(GrandChildNode);
GrandChildData^.FPCCompatibility := PackageFile.FPCCompatibility; GrandChildData^.FPCCompatibility := LazarusPkg.FPCCompatibility;
GrandChildData^.DataType := 6; GrandChildData^.DataType := 6;
//add widgetset(DataType = 7) //add widgetset(DataType = 7)
GrandChildNode := FVST.AddChild(ChildNode); GrandChildNode := FVST.AddChild(ChildNode);
FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent]; FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent];
GrandChildData := FVST.GetNodeData(GrandChildNode); GrandChildData := FVST.GetNodeData(GrandChildNode);
GrandChildData^.SupportedWidgetSet := PackageFile.SupportedWidgetSet; GrandChildData^.SupportedWidgetSet := LazarusPkg.SupportedWidgetSet;
GrandChildData^.DataType := 7; GrandChildData^.DataType := 7;
//add packagetype(DataType = 8) //add packagetype(DataType = 8)
GrandChildNode := FVST.AddChild(ChildNode); GrandChildNode := FVST.AddChild(ChildNode);
FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent]; FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent];
GrandChildData := FVST.GetNodeData(GrandChildNode); GrandChildData := FVST.GetNodeData(GrandChildNode);
GrandChildData^.PackageType := PackageFile.PackageType; GrandChildData^.PackageType := LazarusPkg.PackageType;
GrandChildData^.DataType := 8; GrandChildData^.DataType := 8;
//add license(DataType = 9) //add license(DataType = 9)
GrandChildNode := FVST.AddChild(ChildNode); GrandChildNode := FVST.AddChild(ChildNode);
FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent]; FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent];
GrandChildData := FVST.GetNodeData(GrandChildNode); GrandChildData := FVST.GetNodeData(GrandChildNode);
if ChildData^.InstalledVersion <> '' then if ChildData^.InstalledVersion <> '' then
GrandChildData^.License := PackageFile.InstalledFileLincese GrandChildData^.License := LazarusPkg.InstalledFileLincese
else else
GrandChildData^.License := PackageFile.License; GrandChildData^.License := LazarusPkg.License;
GrandChildData^.DataType := 9; GrandChildData^.DataType := 9;
Inc(UniqueID); Inc(UniqueID);
CreateButton(UniqueID, GrandChildData); CreateButton(UniqueID, GrandChildData);
@ -403,7 +403,7 @@ begin
GrandChildNode := FVST.AddChild(ChildNode); GrandChildNode := FVST.AddChild(ChildNode);
FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent]; FVST.IsDisabled[GrandChildNode] := FVST.IsDisabled[GrandChildNode^.Parent];
GrandChildData := FVST.GetNodeData(GrandChildNode); GrandChildData := FVST.GetNodeData(GrandChildNode);
GrandChildData^.Dependencies := PackageFile.DependenciesAsString; GrandChildData^.Dependencies := LazarusPkg.DependenciesAsString;
GrandChildData^.DataType := 10; GrandChildData^.DataType := 10;
end; end;
//add miscellaneous(DataType = 11) //add miscellaneous(DataType = 11)
@ -509,11 +509,11 @@ begin
case Data^.DataType of case Data^.DataType of
3: begin 3: begin
Text := Data^.Description; Text := Data^.Description;
FrmCaption := rsMainFrm_VSTText_Desc + ' "' + ParentData^.PackageFileName + '"'; FrmCaption := rsMainFrm_VSTText_Desc + ' "' + ParentData^.LazarusPackageName + '"';
end; end;
9: begin 9: begin
Text := Data^.License; Text := Data^.License;
FrmCaption := rsMainFrm_VSTText_Lic + ' "' + ParentData^.PackageFileName + '"'; FrmCaption := rsMainFrm_VSTText_Lic + ' "' + ParentData^.LazarusPackageName + '"';
end; end;
end; end;
Break; Break;
@ -802,11 +802,11 @@ procedure TVisualTree.FilterTree(const AFilterBy: TFilterBy; const AText:
procedure HideShowParentNodes(const ANode: PVirtualNode; AShow: Boolean); procedure HideShowParentNodes(const ANode: PVirtualNode; AShow: Boolean);
var var
Level: Integer; Level: Integer;
RepositoryNode, PackageNode, PackageFileNode: PVirtualNode; RepositoryNode, PackageNode, LazarusPkgNode: PVirtualNode;
begin begin
RepositoryNode := nil; RepositoryNode := nil;
PackageNode := nil; PackageNode := nil;
PackageFileNode := nil; LazarusPkgNode := nil;
Level := FVST.GetNodeLevel(ANode); Level := FVST.GetNodeLevel(ANode);
case Level of case Level of
1: begin 1: begin
@ -816,12 +816,12 @@ procedure TVisualTree.FilterTree(const AFilterBy: TFilterBy; const AText:
2: begin 2: begin
RepositoryNode := ANode^.Parent^.Parent; RepositoryNode := ANode^.Parent^.Parent;
PackageNode := ANode^.Parent; PackageNode := ANode^.Parent;
PackageFileNode := ANode; LazarusPkgNode := ANode;
end; end;
3: begin 3: begin
RepositoryNode := ANode^.Parent^.Parent^.Parent; RepositoryNode := ANode^.Parent^.Parent^.Parent;
PackageNode := ANode^.Parent^.Parent; PackageNode := ANode^.Parent^.Parent;
PackageFileNode := ANode^.Parent; LazarusPkgNode := ANode^.Parent;
end; end;
end; end;
if Level = 1 then if Level = 1 then
@ -852,14 +852,14 @@ procedure TVisualTree.FilterTree(const AFilterBy: TFilterBy; const AText:
begin begin
if AShow then if AShow then
begin begin
FVST.IsVisible[PackageFileNode] := True; FVST.IsVisible[LazarusPkgNode] := True;
FVST.IsVisible[PackageNode] := True; FVST.IsVisible[PackageNode] := True;
FVST.IsVisible[RepositoryNode] := True; FVST.IsVisible[RepositoryNode] := True;
end end
else else
begin begin
FVST.IsVisible[PackageFileNode] := False; FVST.IsVisible[LazarusPkgNode] := False;
HideShowParentNodes(PackageFileNode, AShow); HideShowParentNodes(LazarusPkgNode, AShow);
end; end;
end; end;
end; end;
@ -905,10 +905,10 @@ begin
if (Data^.DataType = 1) then if (Data^.DataType = 1) then
FilterNode(Node, Data^.PackageName); FilterNode(Node, Data^.PackageName);
end; end;
fbPackageFileName: fbLazarusPackageName:
begin begin
if (Data^.DataType = 2) then if (Data^.DataType = 2) then
FilterNode(Node, Data^.PackageFileName); FilterNode(Node, Data^.LazarusPackageName);
end; end;
fbPackageCategory: fbPackageCategory:
begin begin
@ -1045,7 +1045,7 @@ var
Node: PVirtualNode; Node: PVirtualNode;
Data: PData; Data: PData;
Package: TPackage; Package: TPackage;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
begin begin
Node := FVST.GetFirst; Node := FVST.GetFirst;
while Assigned(Node) do while Assigned(Node) do
@ -1064,13 +1064,13 @@ begin
end; end;
if Data^.DataType = 2 then if Data^.DataType = 2 then
begin begin
PackageFile := TPackageFile(SerializablePackages.Items[Data^.PID].PackageFiles.Items[Data^.PFID]); LazarusPkg := TLazarusPackage(SerializablePackages.Items[Data^.PID].LazarusPackages.Items[Data^.PFID]);
if PackageFile <> nil then if LazarusPkg <> nil then
begin begin
if FVST.CheckState[Node] = csCheckedNormal then if FVST.CheckState[Node] = csCheckedNormal then
PackageFile.Checked := True LazarusPkg.Checked := True
else if FVST.CheckState[Node] = csUncheckedNormal then else if FVST.CheckState[Node] = csUncheckedNormal then
PackageFile.Checked := False LazarusPkg.Checked := False
end; end;
end; end;
Node := FVST.GetNext(Node); Node := FVST.GetNext(Node);
@ -1082,7 +1082,7 @@ var
Node: PVirtualNode; Node: PVirtualNode;
Data: PData; Data: PData;
Package: TPackage; Package: TPackage;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
begin begin
SerializablePackages.GetPackageStates; SerializablePackages.GetPackageStates;
Node := FVST.GetFirst; Node := FVST.GetFirst;
@ -1102,11 +1102,11 @@ begin
end; end;
if Data^.DataType = 2 then if Data^.DataType = 2 then
begin begin
PackageFile := TPackageFile(SerializablePackages.Items[Data^.PID].PackageFiles.Items[Data^.PFID]); LazarusPkg := TLazarusPackage(SerializablePackages.Items[Data^.PID].LazarusPackages.Items[Data^.PFID]);
if PackageFile <> nil then if LazarusPkg <> nil then
begin begin
Data^.InstalledVersion := PackageFile.InstalledFileVersion; Data^.InstalledVersion := LazarusPkg.InstalledFileVersion;
Data^.PackageState := PackageFile.PackageState; Data^.PackageState := LazarusPkg.PackageState;
FVST.ReinitNode(Node, False); FVST.ReinitNode(Node, False);
FVST.RepaintNode(Node); FVST.RepaintNode(Node);
end; end;
@ -1120,7 +1120,7 @@ var
Node: PVirtualNode; Node: PVirtualNode;
Data, ParentData: PData; Data, ParentData: PData;
Package: TPackage; Package: TPackage;
PackageFile: TPackageFile; LazarusPkg: TLazarusPackage;
begin begin
Node := FVST.GetFirst; Node := FVST.GetFirst;
while Assigned(Node) do while Assigned(Node) do
@ -1142,11 +1142,11 @@ begin
end; end;
if Data^.DataType = 2 then if Data^.DataType = 2 then
begin begin
PackageFile := TPackageFile(SerializablePackages.Items[Data^.PID].PackageFiles.Items[Data^.PFID]); LazarusPkg := TLazarusPackage(SerializablePackages.Items[Data^.PID].LazarusPackages.Items[Data^.PFID]);
if PackageFile <> nil then if LazarusPkg <> nil then
begin begin
Data^.UpdateVersion := PackageFile.UpdateVersion; Data^.UpdateVersion := LazarusPkg.UpdateVersion;
Data^.HasUpdate := PackageFile.HasUpdate; Data^.HasUpdate := LazarusPkg.HasUpdate;
FVST.IsDisabled[Node] := FVST.IsDisabled[Node^.Parent]; FVST.IsDisabled[Node] := FVST.IsDisabled[Node^.Parent];
FVST.ReinitNode(Node, False); FVST.ReinitNode(Node, False);
FVST.RepaintNode(Node); FVST.RepaintNode(Node);
@ -1160,13 +1160,13 @@ begin
begin begin
case Data^.DataType of case Data^.DataType of
3: if ParentData^.InstalledVersion <> '' then 3: if ParentData^.InstalledVersion <> '' then
Data^.Description := PackageFile.InstalledFileDescription Data^.Description := LazarusPkg.InstalledFileDescription
else else
Data^.Description := PackageFile.Description; Data^.Description := LazarusPkg.Description;
9: if ParentData^.InstalledVersion <> '' then 9: if ParentData^.InstalledVersion <> '' then
Data^.License := PackageFile.InstalledFileLincese Data^.License := LazarusPkg.InstalledFileLincese
else else
Data^.License := PackageFile.License; Data^.License := LazarusPkg.License;
end; end;
if Assigned(Data^.Button) then if Assigned(Data^.Button) then
Data^.Button.Enabled := not FVST.IsDisabled[Node]; Data^.Button.Enabled := not FVST.IsDisabled[Node];
@ -1235,8 +1235,8 @@ var
Data, DataSearch: PData; Data, DataSearch: PData;
Msg: String; Msg: String;
PackageList: TObjectList; PackageList: TObjectList;
PackageFileName: String; PkgFileName: String;
DependencyPackage: TPackageFile; DependencyPkg: TLazarusPackage;
I: Integer; I: Integer;
begin begin
Result := mrNone; Result := mrNone;
@ -1250,10 +1250,10 @@ begin
begin begin
PackageList := TObjectList.Create(True); PackageList := TObjectList.Create(True);
try try
SerializablePackages.GetPackageDependencies(Data^.PackageFileName, PackageList, True, True); SerializablePackages.GetPackageDependencies(Data^.LazarusPackageName, PackageList, True, True);
for I := 0 to PackageList.Count - 1 do for I := 0 to PackageList.Count - 1 do
begin begin
PackageFileName := TPackageDependency(PackageList.Items[I]).PackageFileName + '.lpk'; PkgFileName := TPackageDependency(PackageList.Items[I]).PkgFileName + '.lpk';
NodeSearch := VST.GetFirst; NodeSearch := VST.GetFirst;
while Assigned(NodeSearch) do while Assigned(NodeSearch) do
begin begin
@ -1262,15 +1262,15 @@ begin
DataSearch := FVST.GetNodeData(NodeSearch); DataSearch := FVST.GetNodeData(NodeSearch);
if DataSearch^.DataType = 2 then if DataSearch^.DataType = 2 then
begin begin
DependencyPackage := TPackageFile(SerializablePackages.Items[DataSearch^.PID].PackageFiles.Items[DataSearch^.PFID]); DependencyPkg := TLazarusPackage(SerializablePackages.Items[DataSearch^.PID].LazarusPackages.Items[DataSearch^.PFID]);
if (FVST.CheckState[NodeSearch] <> csCheckedNormal) and if (FVST.CheckState[NodeSearch] <> csCheckedNormal) and
(UpperCase(DataSearch^.PackageFileName) = UpperCase(PackageFileName)) and (UpperCase(DataSearch^.LazarusPackageName) = UpperCase(PkgFileName)) and
((SerializablePackages.IsDependencyOk(TPackageDependency(PackageList.Items[I]), DependencyPackage)) and ((SerializablePackages.IsDependencyOk(TPackageDependency(PackageList.Items[I]), DependencyPkg)) and
((not (DependencyPackage.PackageState = psInstalled)) or ((DependencyPackage.PackageState = psInstalled) and (not (SerializablePackages.IsInstalledVersionOk(TPackageDependency(PackageList.Items[I]), DataSearch^.InstalledVersion)))))) then ((not (DependencyPkg.PackageState = psInstalled)) or ((DependencyPkg.PackageState = psInstalled) and (not (SerializablePackages.IsInstalledVersionOk(TPackageDependency(PackageList.Items[I]), DataSearch^.InstalledVersion)))))) then
begin begin
if (Result = mrNone) or (Result = mrYes) then if (Result = mrNone) or (Result = mrYes) then
begin begin
Msg := Format(rsMainFrm_rsPackageDependency0, [Data^.PackageFileName, DataSearch^.PackageFileName]); Msg := Format(rsMainFrm_rsPackageDependency0, [Data^.LazarusPackageName, DataSearch^.LazarusPackageName]);
Result := MessageDlgEx(Msg, mtConfirmation, [mbYes, mbYesToAll, mbNo, mbNoToAll, mbCancel], TForm(FVST.Parent.Parent)); Result := MessageDlgEx(Msg, mtConfirmation, [mbYes, mbYesToAll, mbNo, mbNoToAll, mbCancel], TForm(FVST.Parent.Parent));
if Result in [mrNo, mrNoToAll] then if Result in [mrNo, mrNoToAll] then
MessageDlgEx(rsMainFrm_rsPackageDependency1, mtInformation, [mbOk], TForm(FVST.Parent.Parent)); MessageDlgEx(rsMainFrm_rsPackageDependency1, mtInformation, [mbOk], TForm(FVST.Parent.Parent));
@ -1333,7 +1333,7 @@ begin
else if (Data1^.DataType > Data2^.DataType) then else if (Data1^.DataType > Data2^.DataType) then
Result := 1 Result := 1
else if (Data1^.DataType = 2) and (Data1^.DataType = 2) then else if (Data1^.DataType = 2) and (Data1^.DataType = 2) then
Result := CompareText(Data1^.PackageFileName, Data2^.PackageFileName); Result := CompareText(Data1^.LazarusPackageName, Data2^.LazarusPackageName);
end; end;
1: if (Data1^.DataType = 1) and (Data1^.DataType = 1) then 1: if (Data1^.DataType = 1) and (Data1^.DataType = 1) then
Result := Data2^.InstallState - Data1^.InstallState; Result := Data2^.InstallState - Data1^.InstallState;
@ -1409,7 +1409,7 @@ begin
CellText := Data^.PackageName CellText := Data^.PackageName
else else
CellText := Data^.PackageDisplayName; CellText := Data^.PackageDisplayName;
2: CellText := Data^.PackageFileName; 2: CellText := Data^.LazarusPackageName;
3: CellText := rsMainFrm_VSTText_Description; 3: CellText := rsMainFrm_VSTText_Description;
4: CellText := rsMainFrm_VSTText_Author; 4: CellText := rsMainFrm_VSTText_Author;
5: CellText := rsMainFrm_VSTText_LazCompatibility; 5: CellText := rsMainFrm_VSTText_LazCompatibility;