lazarus/ide/frames/project_misc_options.pas
2011-02-10 18:56:04 +00:00

129 lines
4.7 KiB
ObjectPascal

unit project_misc_options;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
ExtCtrls, StdCtrls, ProjectIntf, Project, IDEOptionsIntf, LazarusIDEStrConsts;
type
{ TProjectMiscOptionsFrame }
TProjectMiscOptionsFrame = class(TAbstractIDEOptionsEditor)
AlwaysBuildCheckBox: TCheckBox;
Bevel1: TBevel;
LRSInOutputDirCheckBox: TCheckBox;
MainUnitHasCreateFormStatementsCheckBox: TCheckBox;
MainUnitHasTitleStatementCheckBox: TCheckBox;
MainUnitHasUsesSectionForAllUnitsCheckBox: TCheckBox;
MainUnitIsPascalSourceCheckBox: TCheckBox;
ResourceGroupBox: TGroupBox;
RunnableCheckBox: TCheckBox;
UseDesignTimePkgsCheckBox: TCheckBox;
UseFPCResourcesRadioButton: TRadioButton;
UseLRSFilesRadioButton: TRadioButton;
private
{ private declarations }
public
function GetTitle: string; override;
procedure Setup(ADialog: TAbstractOptionsEditorDialog); override;
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
end;
implementation
{$R *.lfm}
{ TProjectMiscOptionsFrame }
function TProjectMiscOptionsFrame.GetTitle: string;
begin
Result := dlgPOMisc;
end;
procedure TProjectMiscOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
begin
MainUnitIsPascalSourceCheckBox.Caption := lisMainUnitIsPascalSource;
MainUnitHasUsesSectionForAllUnitsCheckBox.Caption := lisMainUnitHasUsesSectionContainingAllUnitsOfProject;
MainUnitHasCreateFormStatementsCheckBox.Caption := lisMainUnitHasApplicationCreateFormStatements;
MainUnitHasTitleStatementCheckBox.Caption := lisMainUnitHasApplicationTitleStatements;
RunnableCheckBox.Caption := lisProjectIsRunnable;
UseDesignTimePkgsCheckBox.Caption := lisUseDesignTimePackages;
AlwaysBuildCheckBox.Caption := lisProjOptsAlwaysBuildEvenIfNothingChanged;
LRSInOutputDirCheckBox.Caption := lisPutLrsFilesInOutputDirectory;
ResourceGroupBox.Caption := lisResourceTypeOfNewFiles;
UseLRSFilesRadioButton.Caption := lisLrsIncludeFiles;
UseLRSFilesRadioButton.Hint := lisAutomaticallyConvertLfmFilesToLrsIncludeFiles;
UseFPCResourcesRadioButton.Caption := lisFPCResources;
UseFPCResourcesRadioButton.Hint := lisRequiresFPC24OrAboveLikeDelphiResources;
end;
procedure TProjectMiscOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions as TProject do
begin
MainUnitIsPascalSourceCheckBox.Checked := (pfMainUnitIsPascalSource in Flags);
MainUnitHasUsesSectionForAllUnitsCheckBox.Checked := (pfMainUnitHasUsesSectionForAllUnits in Flags);
MainUnitHasCreateFormStatementsCheckBox.Checked := (pfMainUnitHasCreateFormStatements in Flags);
MainUnitHasTitleStatementCheckBox.Checked := (pfMainUnitHasTitleStatement in Flags);
RunnableCheckBox.Checked := (pfRunnable in Flags);
UseDesignTimePkgsCheckBox.Checked := (pfUseDesignTimePackages in Flags);
AlwaysBuildCheckBox.Checked := (pfAlwaysBuild in Flags);
LRSInOutputDirCheckBox.Checked := (pfLRSFilesInOutputDirectory in Flags);
case Resources.ResourceType of
rtLRS: UseLRSFilesRadioButton.Checked := True;
rtRes: UseFPCResourcesRadioButton.Checked := True;
end;
end;
end;
procedure TProjectMiscOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
var
Project: TProject absolute AOptions;
NewFlags: TProjectFlags;
procedure SetProjectFlag(AFlag: TProjectFlag; AValue: Boolean);
begin
if AValue then
Include(NewFlags, AFlag)
else
Exclude(NewFlags, AFlag);
end;
begin
NewFlags := Project.Flags;
SetProjectFlag(pfMainUnitIsPascalSource,
MainUnitIsPascalSourceCheckBox.Checked);
SetProjectFlag(pfMainUnitHasUsesSectionForAllUnits,
MainUnitHasUsesSectionForAllUnitsCheckBox.Checked);
SetProjectFlag(pfMainUnitHasCreateFormStatements,
MainUnitHasCreateFormStatementsCheckBox.Checked);
SetProjectFlag(pfMainUnitHasTitleStatement,
MainUnitHasTitleStatementCheckBox.Checked);
SetProjectFlag(pfRunnable, RunnableCheckBox.Checked);
SetProjectFlag(pfUseDesignTimePackages, UseDesignTimePkgsCheckBox.Checked);
SetProjectFlag(pfAlwaysBuild, AlwaysBuildCheckBox.Checked);
SetProjectFlag(pfLRSFilesInOutputDirectory, LRSInOutputDirCheckBox.Checked);
Project.Flags := NewFlags;
if UseLRSFilesRadioButton.Checked then
Project.Resources.ResourceType := rtLRS
else
Project.Resources.ResourceType := rtRes;
end;
class function TProjectMiscOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
begin
Result := TProject;
end;
initialization
RegisterIDEOptionsEditor(GroupProject, TProjectMiscOptionsFrame, ProjectOptionsMisc);
end.