mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-29 06:03:49 +02:00
136 lines
4.2 KiB
ObjectPascal
136 lines
4.2 KiB
ObjectPascal
unit package_description_options;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils,
|
|
// LCL
|
|
Forms, Controls, StdCtrls, Spin,
|
|
// LazUtils
|
|
LazUtilities,
|
|
// IdeIntf
|
|
PackageDependencyIntf, IDEOptionsIntf, IDEOptEditorIntf,
|
|
// IDE
|
|
LazarusIDEStrConsts, PackageDefs, PackageSystem, BrokenDependenciesDlg;
|
|
|
|
type
|
|
|
|
{ TPackageDescriptionOptionsFrame }
|
|
|
|
TPackageDescriptionOptionsFrame = class(TAbstractIDEOptionsEditor)
|
|
AuthorEdit: TEdit;
|
|
AuthorGroupBox: TGroupBox;
|
|
DescriptionGroupBox: TGroupBox;
|
|
DescriptionMemo: TMemo;
|
|
dummyForSizing: TLabel;
|
|
LicenseGroupBox: TGroupBox;
|
|
LicenseMemo: TMemo;
|
|
VersionBuildLabel: TLabel;
|
|
VersionBuildSpinEdit: TSpinEdit;
|
|
VersionGroupBox: TGroupBox;
|
|
VersionMajorLabel: TLabel;
|
|
VersionMajorSpinEdit: TSpinEdit;
|
|
VersionMinorLabel: TLabel;
|
|
VersionMinorSpinEdit: TSpinEdit;
|
|
VersionReleaseLabel: TLabel;
|
|
VersionReleaseSpinEdit: TSpinEdit;
|
|
public
|
|
function GetTitle: string; override;
|
|
procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override;
|
|
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
|
|
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
|
|
class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TPackageDescriptionOptionsFrame }
|
|
|
|
function TPackageDescriptionOptionsFrame.GetTitle: string;
|
|
begin
|
|
Result := lisCodeHelpDescrTag;
|
|
end;
|
|
|
|
procedure TPackageDescriptionOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
|
|
begin
|
|
DescriptionGroupBox.Caption := lisPckOptsDescriptionAbstract;
|
|
AuthorGroupBox.Caption := lisPckOptsAuthor;
|
|
LicenseGroupBox.Caption := lisPckOptsLicense;
|
|
VersionGroupBox.Caption := lisVersion;
|
|
VersionMajorLabel.Caption := lisPckOptsMajor;
|
|
VersionMinorLabel.Caption := lisPckOptsMinor;
|
|
VersionReleaseLabel.Caption := lisPckOptsRelease;
|
|
VersionBuildLabel.Caption := lisBuildNumber;
|
|
end;
|
|
|
|
procedure TPackageDescriptionOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
|
|
var
|
|
LazPackage: TLazPackage;
|
|
begin
|
|
LazPackage := (AOptions as TPackageIDEOptions).Package;
|
|
DescriptionMemo.Text := LazPackage.Description;
|
|
AuthorEdit.Text := LazPackage.Author;
|
|
LicenseMemo.Text := LazPackage.License;
|
|
VersionMajorSpinEdit.Value := LazPackage.Version.Major;
|
|
VersionMinorSpinEdit.Value := LazPackage.Version.Minor;
|
|
VersionReleaseSpinEdit.Value := LazPackage.Version.Release;
|
|
VersionBuildSpinEdit.Value := LazPackage.Version.Build;
|
|
end;
|
|
|
|
procedure TPackageDescriptionOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
|
|
var
|
|
LazPackage: TLazPackage;
|
|
NewVersion: TPkgVersion;
|
|
BrokenDependencies: TFPList;
|
|
RenameDependencies: boolean;
|
|
MsgResult: TModalResult;
|
|
begin
|
|
LazPackage := (AOptions as TPackageIDEOptions).Package;
|
|
LazPackage.Description := DescriptionMemo.Text;
|
|
LazPackage.Author := AuthorEdit.Text;
|
|
LazPackage.License := LicenseMemo.Text;
|
|
NewVersion := TPkgVersion.Create;
|
|
try
|
|
NewVersion.Major := RoundToInt(VersionMajorSpinEdit.Value);
|
|
NewVersion.Minor := RoundToInt(VersionMinorSpinEdit.Value);
|
|
NewVersion.Release := RoundToInt(VersionReleaseSpinEdit.Value);
|
|
NewVersion.Build := RoundToInt(VersionBuildSpinEdit.Value);
|
|
|
|
// check for broken dependencies
|
|
BrokenDependencies := PackageGraph.GetBrokenDependenciesWhenChangingPkgID(LazPackage,
|
|
LazPackage.Name, NewVersion);
|
|
RenameDependencies := False;
|
|
try
|
|
if BrokenDependencies.Count > 0 then
|
|
begin
|
|
MsgResult := ShowBrokenDependencies(BrokenDependencies);
|
|
if MsgResult = mrOK then // = Yes
|
|
RenameDependencies := True
|
|
else if MsgResult <> mrClose then // <> Ignore
|
|
exit;
|
|
end;
|
|
finally
|
|
BrokenDependencies.Free;
|
|
end;
|
|
|
|
PackageGraph.ChangePackageID(LazPackage, LazPackage.Name, NewVersion, RenameDependencies, True);
|
|
finally
|
|
NewVersion.Free;
|
|
end;
|
|
end;
|
|
|
|
class function TPackageDescriptionOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
|
begin
|
|
Result := TPackageIDEOptions;
|
|
end;
|
|
|
|
initialization
|
|
RegisterIDEOptionsEditor(GroupPackage, TPackageDescriptionOptionsFrame,
|
|
PackageOptionsDescription);
|
|
end.
|
|
|