lazarus/ide/frames/project_misc_options.pas

183 lines
7.2 KiB
ObjectPascal

unit project_misc_options;
{$mode objfpc}{$H+}
interface
uses
SysUtils,
// LCL
Forms, Dialogs, ExtCtrls, StdCtrls,
// LazUtils
FileUtil, LazFileUtils,
// IdeIntf
ProjectIntf, IDEOptionsIntf, IDEOptEditorIntf,
// IDE
Project, LazarusIDEStrConsts;
type
{ TProjectMiscOptionsFrame }
TProjectMiscOptionsFrame = class(TAbstractIDEOptionsEditor)
AlwaysBuildCheckBox: TCheckBox;
Bevel1: TBevel;
Bevel2: TBevel;
LRSInOutputDirCheckBox: TCheckBox;
MainUnitHasCreateFormStatementsCheckBox: TCheckBox;
CompatibilityModeCheckBox: TCheckBox;
MainUnitHasTitleStatementCheckBox: TCheckBox;
MainUnitHasScaledStatementCheckBox: TCheckBox;
MainUnitHasUsesSectionForAllUnitsCheckBox: TCheckBox;
MainUnitIsPascalSourceCheckBox: TCheckBox;
PathDelimComboBox: TComboBox;
PathDelimLabel: TLabel;
ResourceGroupBox: TGroupBox;
RunnableCheckBox: TCheckBox;
UseDesignTimePkgsCheckBox: TCheckBox;
UseFPCResourcesRadioButton: TRadioButton;
UseLRSFilesRadioButton: TRadioButton;
private
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}
{ TProjectMiscOptionsFrame }
function TProjectMiscOptionsFrame.GetTitle: string;
begin
Result := dlgPOMisc;
end;
procedure TProjectMiscOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
begin
MainUnitIsPascalSourceCheckBox.Caption := lisMainUnitIsPascalSource;
MainUnitIsPascalSourceCheckBox.Hint := lisMainUnitIsPascalSourceHint;
MainUnitHasUsesSectionForAllUnitsCheckBox.Caption := lisMainUnitHasUsesSectionContainingAllUnitsOfProject;
MainUnitHasUsesSectionForAllUnitsCheckBox.Hint := lisNewUnitsAreAddedToUsesSections;
MainUnitHasCreateFormStatementsCheckBox.Caption := lisUpdateApplicationCreateForm;
MainUnitHasCreateFormStatementsCheckBox.Hint := lisUsedForAutoCreatedForms;
MainUnitHasTitleStatementCheckBox.Caption := lisUpdateApplicationTitleStatement;
MainUnitHasTitleStatementCheckBox.Hint := lisIdeMaintainsTheTitleInMainUnit;
MainUnitHasScaledStatementCheckBox.Caption := lisUpdateApplicationScaledStatement;
MainUnitHasScaledStatementCheckBox.Hint := lisIdeMaintainsScaledInMainUnit;
CompatibilityModeCheckBox.Caption := lisLPICompatibilityModeCheckBox;
CompatibilityModeCheckBox.Hint := lisLPICompatibilityModeCheckBoxHint;
RunnableCheckBox.Caption := lisProjectIsRunnable;
RunnableCheckBox.Hint := lisProjectIsRunnableHint;
UseDesignTimePkgsCheckBox.Caption := lisUseDesignTimePackages;
UseDesignTimePkgsCheckBox.Hint := lisThisIsTestProjectForDesignTimePackage;
AlwaysBuildCheckBox.Caption := lisProjOptsAlwaysBuildEvenIfNothingChanged;
AlwaysBuildCheckBox.Hint := lisProjOptsAlwaysBuildHint;
LRSInOutputDirCheckBox.Caption := lisPutLrsFilesInOutputDirectory;
LRSInOutputDirCheckBox.Hint := lisPutLrsFilesInOutputDirectoryHint;
ResourceGroupBox.Caption := lisResourceTypeOfNewFiles;
UseLRSFilesRadioButton.Caption := lisLrsIncludeFiles;
UseLRSFilesRadioButton.Hint := lisAutomaticallyConvertLfmToLrs;
UseFPCResourcesRadioButton.Caption := lisFPCResources;
UseFPCResourcesRadioButton.Hint := lisDelphiCompatibleResources;
PathDelimLabel.Caption:=lisStorePathDelimitersAndAs;
PathDelimComboBox.Items.Text:=lisDoNotChange+LineEnding
+lisChangeToUnix+LineEnding
+lisChangeToWindows;
end;
procedure TProjectMiscOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
begin
with (AOptions as TProjectIDEOptions).Project do
begin
MainUnitIsPascalSourceCheckBox.Checked := (pfMainUnitIsPascalSource in Flags);
MainUnitHasUsesSectionForAllUnitsCheckBox.Checked := (pfMainUnitHasUsesSectionForAllUnits in Flags);
if TProjectIDEOptions(AOptions).LclApp then begin
MainUnitHasCreateFormStatementsCheckBox.Checked := (pfMainUnitHasCreateFormStatements in Flags);
MainUnitHasTitleStatementCheckBox.Checked := (pfMainUnitHasTitleStatement in Flags);
MainUnitHasScaledStatementCheckBox.Checked := (pfMainUnitHasScaledStatement in Flags);
end
else begin // Disable these for a console program.
MainUnitHasCreateFormStatementsCheckBox.Enabled := False;
MainUnitHasTitleStatementCheckBox.Enabled := False;
MainUnitHasScaledStatementCheckBox.Enabled := False;
end;
CompatibilityModeCheckBox.Checked := (pfCompatibilityMode in Flags);
RunnableCheckBox.Checked := (pfRunnable in Flags);
UseDesignTimePkgsCheckBox.Checked := (pfUseDesignTimePackages in Flags);
AlwaysBuildCheckBox.Checked := (pfAlwaysBuild in Flags);
LRSInOutputDirCheckBox.Checked := (pfLRSFilesInOutputDirectory in Flags);
case ProjResources.ResourceType of
rtLRS: UseLRSFilesRadioButton.Checked := True;
rtRes: UseFPCResourcesRadioButton.Checked := True;
end;
case StorePathDelim of
pdsNone: PathDelimComboBox.ItemIndex:=0;
pdsSystem: if PathDelim='/' then {%H-}PathDelimComboBox.ItemIndex:=1
else {%H-}PathDelimComboBox.ItemIndex:=2;
pdsUnix: PathDelimComboBox.ItemIndex:=1;
pdsWindows: PathDelimComboBox.ItemIndex:=2;
end;
end;
end;
procedure TProjectMiscOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
var
Project: TProject;
NewFlags: TProjectFlags;
procedure SetProjectFlag(AFlag: TProjectFlag; AValue: Boolean);
begin
if AValue then
Include(NewFlags, AFlag)
else
Exclude(NewFlags, AFlag);
end;
begin
Project := (AOptions as TProjectIDEOptions).Project;
NewFlags := Project.Flags;
SetProjectFlag(pfMainUnitIsPascalSource,
MainUnitIsPascalSourceCheckBox.Checked);
SetProjectFlag(pfMainUnitHasUsesSectionForAllUnits,
MainUnitHasUsesSectionForAllUnitsCheckBox.Checked);
SetProjectFlag(pfMainUnitHasCreateFormStatements,
MainUnitHasCreateFormStatementsCheckBox.Checked);
SetProjectFlag(pfMainUnitHasTitleStatement,
MainUnitHasTitleStatementCheckBox.Checked);
SetProjectFlag(pfMainUnitHasScaledStatement,
MainUnitHasScaledStatementCheckBox.Checked);
SetProjectFlag(pfCompatibilityMode,
CompatibilityModeCheckBox.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.ProjResources.ResourceType := rtLRS
else
Project.ProjResources.ResourceType := rtRes;
case PathDelimComboBox.ItemIndex of
0: Project.StorePathDelim:=pdsNone;
1: Project.StorePathDelim:=pdsUnix;
2: Project.StorePathDelim:=pdsWindows;
end;
end;
class function TProjectMiscOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
begin
Result := TProjectIDEOptions;
end;
initialization
RegisterIDEOptionsEditor(GroupProject, TProjectMiscOptionsFrame, ProjectOptionsMisc);
end.