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
|
unit package_description_options;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Dialogs, Controls, StdCtrls, Spin, LCLProc,
PackageIntf, IDEOptionsIntf, 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.
|