1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
unit package_description_options;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,
// LCL
Forms, Controls, StdCtrls, Spin, LCLProc,
// 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.
|