ide: project options: replace monolith project options dialog with project options frames, register them in IDE options

git-svn-id: trunk@23318 -
This commit is contained in:
paul 2009-12-30 09:24:39 +00:00
parent cda8e1ba09
commit bad42d79bc
33 changed files with 2828 additions and 2502 deletions

24
.gitattributes vendored
View File

@ -3447,6 +3447,27 @@ ide/frames/naming_options.pas svneol=native#text/pascal
ide/frames/oi_options.lfm svneol=native#text/plain
ide/frames/oi_options.lrs svneol=native#text/pascal
ide/frames/oi_options.pas svneol=native#text/pascal
ide/frames/project_application_options.lfm svneol=native#text/plain
ide/frames/project_application_options.lrs svneol=native#text/plain
ide/frames/project_application_options.pas svneol=native#text/plain
ide/frames/project_forms_options.lfm svneol=native#text/plain
ide/frames/project_forms_options.lrs svneol=native#text/plain
ide/frames/project_forms_options.pas svneol=native#text/plain
ide/frames/project_i18n_options.lfm svneol=native#text/plain
ide/frames/project_i18n_options.lrs svneol=native#text/plain
ide/frames/project_i18n_options.pas svneol=native#text/plain
ide/frames/project_lazdoc_options.lfm svneol=native#text/plain
ide/frames/project_lazdoc_options.lrs svneol=native#text/plain
ide/frames/project_lazdoc_options.pas svneol=native#text/plain
ide/frames/project_misc_options.lfm svneol=native#text/plain
ide/frames/project_misc_options.lrs svneol=native#text/plain
ide/frames/project_misc_options.pas svneol=native#text/plain
ide/frames/project_save_options.lfm svneol=native#text/plain
ide/frames/project_save_options.lrs svneol=native#text/plain
ide/frames/project_save_options.pas svneol=native#text/plain
ide/frames/project_versioninfo_options.lfm svneol=native#text/plain
ide/frames/project_versioninfo_options.lrs svneol=native#text/plain
ide/frames/project_versioninfo_options.pas svneol=native#text/plain
ide/frames/window_options.lfm svneol=native#text/plain
ide/frames/window_options.lrs svneol=native#text/pascal
ide/frames/window_options.pas svneol=native#text/pascal
@ -3563,9 +3584,6 @@ ide/projecticon.pas svneol=native#text/pascal
ide/projectinspector.lfm svneol=native#text/plain
ide/projectinspector.lrs svneol=native#text/pascal
ide/projectinspector.pas svneol=native#text/pascal
ide/projectopts.lfm svneol=native#text/plain
ide/projectopts.lrs svneol=native#text/pascal
ide/projectopts.pp svneol=native#text/pascal
ide/projectresources.pas svneol=native#text/pascal
ide/projectwizarddlg.lfm svneol=native#text/plain
ide/projectwizarddlg.lrs svneol=native#text/pascal

View File

@ -66,6 +66,7 @@ type
function CheckUnitPathForAmbiguousPascalFiles(const BaseDir, TheUnitPath,
CompiledExt, ContextDescription: string
): TModalResult; virtual; abstract;
function CreateProjectApplicationBundle: Boolean; virtual; abstract;
function BackupFile(const Filename: string): TModalResult; virtual; abstract;

View File

@ -44,7 +44,8 @@ uses
// IDE
LazarusIDEStrConsts, DialogProcs, IDEProcs, CodeToolsOptions, InputHistory,
ProjectResources, MiscOptions, LazConf, EnvironmentOpts, TransferMacros,
CompilerOptions, OutputFilter, Compiler, Project, BaseBuildManager;
CompilerOptions, OutputFilter, Compiler, Project, BaseBuildManager,
ApplicationBundle;
type
@ -145,6 +146,7 @@ type
function CheckUnitPathForAmbiguousPascalFiles(const BaseDir, TheUnitPath,
CompiledExt, ContextDescription: string
): TModalResult; override;
function CreateProjectApplicationBundle: Boolean; override;
function BackupFile(const Filename: string): TModalResult; override;
function GetResourceType(AnUnitInfo: TUnitInfo): TResourceType;
@ -895,6 +897,28 @@ begin
Result:=mrOk;
end;
function TBuildManager.CreateProjectApplicationBundle: Boolean;
var
TargetExeName: string;
begin
Result := False;
if Project1.MainUnitInfo = nil then
Exit;
if Project1.IsVirtual then
TargetExeName := GetTestBuildDirectory +
ExtractFilename(Project1.MainUnitInfo.Filename)
else
TargetExeName := Project1.CompilerOptions.CreateTargetFilename(
Project1.MainFilename);
if not (CreateApplicationBundle(TargetExeName, Project1.Title, True) in
[mrOk, mrIgnore]) then
Exit;
if not (CreateAppBundleSymbolicLink(TargetExeName, True) in [mrOk, mrIgnore]) then
Exit;
Result := True;
end;
function TBuildManager.BackupFile(const Filename: string): TModalResult;
var BackupFilename, CounterFilename: string;
AText,ACaption:string;

View File

@ -47,7 +47,7 @@ uses
SynEdit, CodeCache, CodeToolManager,
SrcEditorIntf, MenuIntf, IDECommands, LazIDEIntf, ProjectIntf, IDEDialogs,
LazConf,
CompilerOptions, EditorOptions, EnvironmentOpts, ProjectOpts, KeyMapping, SourceEditor,
CompilerOptions, EditorOptions, EnvironmentOpts, KeyMapping, SourceEditor,
ProjectDefs, Project, IDEProcs, InputHistory, Debugger, CmdLineDebugger,
IDEOptionDefs, LazarusIDEStrConsts,
MainBar, MainIntf, MainBase, BaseBuildManager,
@ -2171,7 +2171,7 @@ begin
[LaunchingCmdLine, #13, #13, #13, #13]),
mtError, [mbYes, mbNo, mbCancel], 0) = mrYes then
begin
if not CreateProjectApplicationBundle(Project1) then Exit;
if not BuildBoss.CreateProjectApplicationBundle then Exit;
end
else
Exit;

View File

@ -0,0 +1,248 @@
inherited ProjectApplicationOptionsFrame: TProjectApplicationOptionsFrame
Height = 425
Width = 522
ClientHeight = 425
ClientWidth = 522
TabOrder = 0
DesignLeft = 411
DesignTop = 290
object AppSettingsGroupBox: TGroupBox[0]
Left = 0
Height = 271
Top = 0
Width = 522
Align = alTop
AutoSize = True
Caption = 'AppSettingsGroupBox'
ClientHeight = 253
ClientWidth = 518
TabOrder = 0
object TitleLabel: TLabel
AnchorSideLeft.Control = AppSettingsGroupBox
AnchorSideTop.Control = TitleEdit
AnchorSideTop.Side = asrCenter
Left = 6
Height = 14
Top = 9
Width = 46
BorderSpacing.Left = 6
Caption = 'TitleLabel'
ParentColor = False
end
object IconLabel: TLabel
AnchorSideLeft.Control = AppSettingsGroupBox
AnchorSideTop.Control = IconPanel
Left = 6
Height = 14
Top = 33
Width = 47
BorderSpacing.Left = 6
Caption = 'IconLabel'
ParentColor = False
end
object IconTrackLabel: TLabel
AnchorSideLeft.Control = IconTrack
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = IconTrack
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = IconTrack
Left = 240
Height = 14
Top = 174
Width = 73
BorderSpacing.Left = 6
BorderSpacing.Right = 6
Caption = 'IconTrackLabel'
ParentColor = False
end
object TitleEdit: TEdit
AnchorSideLeft.Side = asrBottom
Left = 106
Height = 21
Top = 6
Width = 406
Align = alTop
BorderSpacing.Left = 100
BorderSpacing.Around = 6
TabOrder = 0
Text = 'TitleEdit'
end
object UseAppBundleCheckBox: TCheckBox
AnchorSideLeft.Control = AppSettingsGroupBox
AnchorSideTop.Control = IconTrack
AnchorSideTop.Side = asrBottom
Left = 6
Height = 17
Top = 207
Width = 134
BorderSpacing.Around = 6
Caption = 'UseAppBundleCheckBox'
TabOrder = 1
end
object UseXPManifestCheckBox: TCheckBox
AnchorSideLeft.Control = AppSettingsGroupBox
AnchorSideTop.Control = UseAppBundleCheckBox
AnchorSideTop.Side = asrBottom
Left = 6
Height = 17
Top = 230
Width = 136
BorderSpacing.Around = 6
Caption = 'UseXPManifestCheckBox'
TabOrder = 2
end
object IconPanel: TPanel
AnchorSideLeft.Control = AppSettingsGroupBox
AnchorSideTop.Control = TitleEdit
AnchorSideTop.Side = asrBottom
Left = 106
Height = 128
Top = 33
Width = 128
BorderSpacing.Left = 106
BorderSpacing.Top = 6
BorderSpacing.Right = 6
BevelOuter = bvNone
BorderWidth = 1
BorderStyle = bsSingle
ClientHeight = 124
ClientWidth = 124
TabOrder = 3
object IconImage: TImage
Left = 1
Height = 122
Top = 1
Width = 122
Align = alClient
Center = True
OnPictureChanged = IconImagePictureChanged
end
end
object LoadIconButton: TBitBtn
AnchorSideLeft.Control = IconPanel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = IconPanel
AnchorSideBottom.Control = IconPanel
AnchorSideBottom.Side = asrBottom
Left = 240
Height = 23
Top = 33
Width = 102
AutoSize = True
BorderSpacing.Left = 6
Caption = 'LoadIconButton'
NumGlyphs = 0
OnClick = LoadIconButtonClick
TabOrder = 4
end
object SaveIconButton: TBitBtn
AnchorSideLeft.Control = LoadIconButton
AnchorSideTop.Control = LoadIconButton
AnchorSideTop.Side = asrBottom
Left = 240
Height = 23
Top = 62
Width = 103
AutoSize = True
BorderSpacing.Top = 6
Caption = 'SaveIconButton'
NumGlyphs = 0
OnClick = SaveIconButtonClick
TabOrder = 5
end
object ClearIconButton: TBitBtn
AnchorSideLeft.Control = SaveIconButton
AnchorSideTop.Control = SaveIconButton
AnchorSideTop.Side = asrBottom
Left = 240
Height = 23
Top = 91
Width = 104
AutoSize = True
BorderSpacing.Top = 6
Caption = 'ClearIconButton'
NumGlyphs = 0
OnClick = ClearIconButtonClick
TabOrder = 6
end
object IconTrack: TTrackBar
AnchorSideLeft.Control = IconPanel
AnchorSideTop.Control = IconPanel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = IconPanel
AnchorSideRight.Side = asrBottom
Left = 106
Height = 40
Top = 161
Width = 128
Max = 0
OnChange = IconTrackChange
Position = 0
Anchors = [akTop, akLeft, akRight]
TabOrder = 7
end
end
object OutputSettingsGroupBox: TGroupBox[1]
Left = 0
Height = 71
Top = 277
Width = 522
Align = alTop
AutoSize = True
BorderSpacing.Top = 6
Caption = 'OutputSettingsGroupBox'
ClientHeight = 53
ClientWidth = 518
TabOrder = 1
object TargetFileLabel: TLabel
AnchorSideLeft.Control = OutputSettingsGroupBox
AnchorSideTop.Control = OutputSettingsGroupBox
Left = 6
Height = 14
Top = 6
Width = 74
BorderSpacing.Around = 6
Caption = 'TargetFileLabel'
ParentColor = False
end
object TargetFileEdit: TEdit
AnchorSideLeft.Control = OutputSettingsGroupBox
AnchorSideTop.Control = TargetFileLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = OutputSettingsGroupBox
AnchorSideRight.Side = asrBottom
Left = 6
Height = 21
Top = 26
Width = 506
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 6
TabOrder = 0
Text = 'TargetFileEdit'
end
end
object CreateAppBundleButton: TBitBtn[2]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = OutputSettingsGroupBox
AnchorSideTop.Side = asrBottom
Left = 0
Height = 23
Top = 354
Width = 142
AutoSize = True
BorderSpacing.Top = 6
Caption = 'CreateAppBundleButton'
NumGlyphs = 0
OnClick = CreateAppBundleButtonClick
TabOrder = 2
end
object OpenPictureDialog1: TOpenPictureDialog[3]
left = 8
top = 392
end
object SavePictureDialog1: TSavePictureDialog[4]
Title = 'Save file as'
left = 37
top = 392
end
end

View File

@ -0,0 +1,85 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TProjectApplicationOptionsFrame','FORMDATA',[
'TPF0'#241#31'TProjectApplicationOptionsFrame'#30'ProjectApplicationOptionsFr'
+'ame'#6'Height'#3#169#1#5'Width'#3#10#2#12'ClientHeight'#3#169#1#11'ClientWi'
+'dth'#3#10#2#8'TabOrder'#2#0#10'DesignLeft'#3#155#1#9'DesignTop'#3'"'#1#0#242
+#2#0#9'TGroupBox'#19'AppSettingsGroupBox'#4'Left'#2#0#6'Height'#3#15#1#3'Top'
+#2#0#5'Width'#3#10#2#5'Align'#7#5'alTop'#8'AutoSize'#9#7'Caption'#6#19'AppSe'
+'ttingsGroupBox'#12'ClientHeight'#3#253#0#11'ClientWidth'#3#6#2#8'TabOrder'#2
+#0#0#6'TLabel'#10'TitleLabel'#22'AnchorSideLeft.Control'#7#19'AppSettingsGro'
+'upBox'#21'AnchorSideTop.Control'#7#9'TitleEdit'#18'AnchorSideTop.Side'#7#9
+'asrCenter'#4'Left'#2#6#6'Height'#2#14#3'Top'#2#9#5'Width'#2'.'#18'BorderSpa'
+'cing.Left'#2#6#7'Caption'#6#10'TitleLabel'#11'ParentColor'#8#0#0#6'TLabel'#9
+'IconLabel'#22'AnchorSideLeft.Control'#7#19'AppSettingsGroupBox'#21'AnchorSi'
+'deTop.Control'#7#9'IconPanel'#4'Left'#2#6#6'Height'#2#14#3'Top'#2'!'#5'Widt'
+'h'#2'/'#18'BorderSpacing.Left'#2#6#7'Caption'#6#9'IconLabel'#11'ParentColor'
+#8#0#0#6'TLabel'#14'IconTrackLabel'#22'AnchorSideLeft.Control'#7#9'IconTrack'
+#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#9'IconTr'
+'ack'#18'AnchorSideTop.Side'#7#9'asrCenter'#23'AnchorSideRight.Control'#7#9
+'IconTrack'#4'Left'#3#240#0#6'Height'#2#14#3'Top'#3#174#0#5'Width'#2'I'#18'B'
+'orderSpacing.Left'#2#6#19'BorderSpacing.Right'#2#6#7'Caption'#6#14'IconTrac'
+'kLabel'#11'ParentColor'#8#0#0#5'TEdit'#9'TitleEdit'#19'AnchorSideLeft.Side'
+#7#9'asrBottom'#4'Left'#2'j'#6'Height'#2#21#3'Top'#2#6#5'Width'#3#150#1#5'Al'
+'ign'#7#5'alTop'#18'BorderSpacing.Left'#2'd'#20'BorderSpacing.Around'#2#6#8
+'TabOrder'#2#0#4'Text'#6#9'TitleEdit'#0#0#9'TCheckBox'#20'UseAppBundleCheckB'
+'ox'#22'AnchorSideLeft.Control'#7#19'AppSettingsGroupBox'#21'AnchorSideTop.C'
+'ontrol'#7#9'IconTrack'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6
+'Height'#2#17#3'Top'#3#207#0#5'Width'#3#134#0#20'BorderSpacing.Around'#2#6#7
+'Caption'#6#20'UseAppBundleCheckBox'#8'TabOrder'#2#1#0#0#9'TCheckBox'#21'Use'
+'XPManifestCheckBox'#22'AnchorSideLeft.Control'#7#19'AppSettingsGroupBox'#21
+'AnchorSideTop.Control'#7#20'UseAppBundleCheckBox'#18'AnchorSideTop.Side'#7#9
+'asrBottom'#4'Left'#2#6#6'Height'#2#17#3'Top'#3#230#0#5'Width'#3#136#0#20'Bo'
+'rderSpacing.Around'#2#6#7'Caption'#6#21'UseXPManifestCheckBox'#8'TabOrder'#2
+#2#0#0#6'TPanel'#9'IconPanel'#22'AnchorSideLeft.Control'#7#19'AppSettingsGro'
+'upBox'#21'AnchorSideTop.Control'#7#9'TitleEdit'#18'AnchorSideTop.Side'#7#9
+'asrBottom'#4'Left'#2'j'#6'Height'#3#128#0#3'Top'#2'!'#5'Width'#3#128#0#18'B'
+'orderSpacing.Left'#2'j'#17'BorderSpacing.Top'#2#6#19'BorderSpacing.Right'#2
+#6#10'BevelOuter'#7#6'bvNone'#11'BorderWidth'#2#1#11'BorderStyle'#7#8'bsSing'
+'le'#12'ClientHeight'#2'|'#11'ClientWidth'#2'|'#8'TabOrder'#2#3#0#6'TImage'#9
+'IconImage'#4'Left'#2#1#6'Height'#2'z'#3'Top'#2#1#5'Width'#2'z'#5'Align'#7#8
+'alClient'#6'Center'#9#16'OnPictureChanged'#7#23'IconImagePictureChanged'#0#0
+#0#7'TBitBtn'#14'LoadIconButton'#22'AnchorSideLeft.Control'#7#9'IconPanel'#19
+'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#9'IconPanel'
+#24'AnchorSideBottom.Control'#7#9'IconPanel'#21'AnchorSideBottom.Side'#7#9'a'
+'srBottom'#4'Left'#3#240#0#6'Height'#2#23#3'Top'#2'!'#5'Width'#2'f'#8'AutoSi'
+'ze'#9#18'BorderSpacing.Left'#2#6#7'Caption'#6#14'LoadIconButton'#9'NumGlyph'
+'s'#2#0#7'OnClick'#7#19'LoadIconButtonClick'#8'TabOrder'#2#4#0#0#7'TBitBtn'
+#14'SaveIconButton'#22'AnchorSideLeft.Control'#7#14'LoadIconButton'#21'Ancho'
+'rSideTop.Control'#7#14'LoadIconButton'#18'AnchorSideTop.Side'#7#9'asrBottom'
+#4'Left'#3#240#0#6'Height'#2#23#3'Top'#2'>'#5'Width'#2'g'#8'AutoSize'#9#17'B'
+'orderSpacing.Top'#2#6#7'Caption'#6#14'SaveIconButton'#9'NumGlyphs'#2#0#7'On'
+'Click'#7#19'SaveIconButtonClick'#8'TabOrder'#2#5#0#0#7'TBitBtn'#15'ClearIco'
+'nButton'#22'AnchorSideLeft.Control'#7#14'SaveIconButton'#21'AnchorSideTop.C'
+'ontrol'#7#14'SaveIconButton'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3
+#240#0#6'Height'#2#23#3'Top'#2'['#5'Width'#2'h'#8'AutoSize'#9#17'BorderSpaci'
+'ng.Top'#2#6#7'Caption'#6#15'ClearIconButton'#9'NumGlyphs'#2#0#7'OnClick'#7
+#20'ClearIconButtonClick'#8'TabOrder'#2#6#0#0#9'TTrackBar'#9'IconTrack'#22'A'
+'nchorSideLeft.Control'#7#9'IconPanel'#21'AnchorSideTop.Control'#7#9'IconPan'
+'el'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'I'
+'conPanel'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2'j'#6'Height'#2
+'('#3'Top'#3#161#0#5'Width'#3#128#0#3'Max'#2#0#8'OnChange'#7#15'IconTrackCha'
+'nge'#8'Position'#2#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabOrd'
+'er'#2#7#0#0#0#242#2#1#9'TGroupBox'#22'OutputSettingsGroupBox'#4'Left'#2#0#6
+'Height'#2'G'#3'Top'#3#21#1#5'Width'#3#10#2#5'Align'#7#5'alTop'#8'AutoSize'#9
+#17'BorderSpacing.Top'#2#6#7'Caption'#6#22'OutputSettingsGroupBox'#12'Client'
+'Height'#2'5'#11'ClientWidth'#3#6#2#8'TabOrder'#2#1#0#6'TLabel'#15'TargetFil'
+'eLabel'#22'AnchorSideLeft.Control'#7#22'OutputSettingsGroupBox'#21'AnchorSi'
,'deTop.Control'#7#22'OutputSettingsGroupBox'#4'Left'#2#6#6'Height'#2#14#3'To'
+'p'#2#6#5'Width'#2'J'#20'BorderSpacing.Around'#2#6#7'Caption'#6#15'TargetFil'
+'eLabel'#11'ParentColor'#8#0#0#5'TEdit'#14'TargetFileEdit'#22'AnchorSideLeft'
+'.Control'#7#22'OutputSettingsGroupBox'#21'AnchorSideTop.Control'#7#15'Targe'
+'tFileLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Contro'
+'l'#7#22'OutputSettingsGroupBox'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'L'
+'eft'#2#6#6'Height'#2#21#3'Top'#2#26#5'Width'#3#250#1#7'Anchors'#11#5'akTop'
+#6'akLeft'#7'akRight'#0#20'BorderSpacing.Around'#2#6#8'TabOrder'#2#0#4'Text'
+#6#14'TargetFileEdit'#0#0#0#242#2#2#7'TBitBtn'#21'CreateAppBundleButton'#22
+'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#22'OutputSet'
+'tingsGroupBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2
+#23#3'Top'#3'b'#1#5'Width'#3#142#0#8'AutoSize'#9#17'BorderSpacing.Top'#2#6#7
+'Caption'#6#21'CreateAppBundleButton'#9'NumGlyphs'#2#0#7'OnClick'#7#26'Creat'
+'eAppBundleButtonClick'#8'TabOrder'#2#2#0#0#242#2#3#18'TOpenPictureDialog'#18
+'OpenPictureDialog1'#4'left'#2#8#3'top'#3#136#1#0#0#242#2#4#18'TSavePictureD'
+'ialog'#18'SavePictureDialog1'#5'Title'#6#12'Save file as'#4'left'#2'%'#3'to'
+'p'#3#136#1#0#0#0
]);

View File

@ -0,0 +1,237 @@
unit project_application_options;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, StdCtrls, Buttons, ComCtrls, ExtDlgs, Math, LCLType, IDEOptionsIntf,
Project, LazarusIDEStrConsts, EnvironmentOpts, ApplicationBundle;
type
{ TProjectApplicationOptionsFrame }
TProjectApplicationOptionsFrame = class(TAbstractIDEOptionsEditor)
AppSettingsGroupBox: TGroupBox;
ClearIconButton: TBitBtn;
CreateAppBundleButton: TBitBtn;
IconImage: TImage;
IconLabel: TLabel;
IconPanel: TPanel;
IconTrack: TTrackBar;
IconTrackLabel: TLabel;
LoadIconButton: TBitBtn;
OpenPictureDialog1: TOpenPictureDialog;
OutputSettingsGroupBox: TGroupBox;
SaveIconButton: TBitBtn;
SavePictureDialog1: TSavePictureDialog;
TargetFileEdit: TEdit;
TargetFileLabel: TLabel;
TitleEdit: TEdit;
TitleLabel: TLabel;
UseAppBundleCheckBox: TCheckBox;
UseXPManifestCheckBox: TCheckBox;
procedure ClearIconButtonClick(Sender: TObject);
procedure CreateAppBundleButtonClick(Sender: TObject);
procedure IconImagePictureChanged(Sender: TObject);
procedure IconTrackChange(Sender: TObject);
procedure LoadIconButtonClick(Sender: TObject);
procedure SaveIconButtonClick(Sender: TObject);
private
FProject: TProject;
procedure SetIconFromStream(Value: TStream);
function GetIconAsStream: TStream;
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
function CreateProjectApplicationBundle(AProject: TProject): boolean;
var
TargetExeName: string;
begin
Result := False;
if AProject.MainUnitInfo = nil then
Exit;
if AProject.IsVirtual then
TargetExeName := EnvironmentOptions.GetTestBuildDirectory +
ExtractFilename(AProject.MainUnitInfo.Filename)
else
TargetExeName := AProject.CompilerOptions.CreateTargetFilename(
AProject.MainFilename);
if not (CreateApplicationBundle(TargetExeName, AProject.Title, True) in
[mrOk, mrIgnore]) then
Exit;
if not (CreateAppBundleSymbolicLink(TargetExeName, True) in [mrOk, mrIgnore]) then
Exit;
Result := True;
end;
{ TProjectApplicationOptionsFrame }
procedure TProjectApplicationOptionsFrame.IconImagePictureChanged(Sender: TObject);
var
HasIcon: boolean;
cx, cy: integer;
begin
HasIcon := (IconImage.Picture.Graphic <> nil) and
(not IconImage.Picture.Graphic.Empty);
IconTrack.Enabled := HasIcon;
if HasIcon then
begin
IconTrack.Min := 0;
IconTrack.Max := IconImage.Picture.Icon.Count - 1;
IconTrack.Position := IconImage.Picture.Icon.Current;
IconImage.Picture.Icon.GetSize(cx, cy);
IconTrackLabel.Caption :=
Format(dlgPOIconDesc, [cx, cy, PIXELFORMAT_BPP[IconImage.Picture.Icon.PixelFormat]]);
end
else
IconTrackLabel.Caption := dlgPOIconDescNone;
end;
procedure TProjectApplicationOptionsFrame.IconTrackChange(Sender: TObject);
begin
IconImage.Picture.Icon.Current :=
Max(0, Min(IconImage.Picture.Icon.Count - 1, IconTrack.Position));
end;
procedure TProjectApplicationOptionsFrame.ClearIconButtonClick(Sender: TObject);
begin
IconImage.Picture.Clear;
end;
procedure TProjectApplicationOptionsFrame.CreateAppBundleButtonClick(Sender: TObject);
begin
CreateProjectApplicationBundle(FProject);
end;
procedure TProjectApplicationOptionsFrame.LoadIconButtonClick(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
IconImage.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
procedure TProjectApplicationOptionsFrame.SaveIconButtonClick(Sender: TObject);
begin
if SavePictureDialog1.Execute then
IconImage.Picture.SaveToFile(SavePictureDialog1.FileName);
end;
procedure TProjectApplicationOptionsFrame.SetIconFromStream(Value: TStream);
begin
IconImage.Picture.Clear;
if Value <> nil then
try
IconImage.Picture.Icon.LoadFromStream(Value);
except
on E: Exception do
MessageDlg(E.Message, mtError, [mbOK], 0);
end;
end;
function TProjectApplicationOptionsFrame.GetIconAsStream: TStream;
begin
Result := nil;
if not ((IconImage.Picture.Graphic = nil) or IconImage.Picture.Graphic.Empty) then
begin
Result := TMemoryStream.Create;
IconImage.Picture.Icon.SaveToStream(Result);
Result.Position := 0;
end;
end;
function TProjectApplicationOptionsFrame.GetTitle: string;
begin
Result := dlgPOApplication;
end;
procedure TProjectApplicationOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
begin
AppSettingsGroupBox.Caption := dlgApplicationSettings;
TitleLabel.Caption := dlgPOTitle;
TitleEdit.Text := '';
OutputSettingsGroupBox.Caption := dlgPOOutputSettings;
TargetFileLabel.Caption := dlgPOTargetFileName;
TargetFileEdit.Text := '';
UseAppBundleCheckBox.Caption := dlgPOUseAppBundle;
UseAppBundleCheckBox.Checked := False;
UseXPManifestCheckBox.Caption := dlgPOUseManifest;
UseXPManifestCheckBox.Checked := False;
CreateAppBundleButton.Caption := dlgPOCreateAppBundle;
CreateAppBundleButton.LoadGlyphFromLazarusResource('pkg_compile');
// icon
IconLabel.Caption := dlgPOIcon;
LoadIconButton.Caption := dlgPOLoadIcon;
SaveIconButton.Caption := dlgPOSaveIcon;
ClearIconButton.Caption := dlgPOClearIcon;
LoadIconButton.LoadGlyphFromStock(idButtonOpen);
if LoadIconButton.Glyph.Empty then
LoadIconButton.LoadGlyphFromLazarusResource('laz_open');
SaveIconButton.LoadGlyphFromStock(idButtonSave);
if SaveIconButton.Glyph.Empty then
SaveIconButton.LoadGlyphFromLazarusResource('laz_save');
ClearIconButton.LoadGlyphFromLazarusResource('menu_clean');
IconImagePictureChanged(nil);
end;
procedure TProjectApplicationOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
var
AStream: TStream;
begin
FProject := AOptions as TProject;
with FProject do
begin
TitleEdit.Text := Title;
TargetFileEdit.Text := TargetFilename;
UseAppBundleCheckBox.Checked := UseAppBundle;
UseXPManifestCheckBox.Checked := Resources.XPManifest.UseManifest;
AStream := Resources.ProjectIcon.GetStream;
try
SetIconFromStream(AStream);
finally
AStream.Free;
end;
end;
end;
procedure TProjectApplicationOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
var
AStream: TStream;
begin
with AOptions as TProject do
begin
Title := TitleEdit.Text;
AStream := GetIconAsStream;
try
Resources.ProjectIcon.SetStream(AStream);
finally
AStream.Free;
end;
TargetFilename := TargetFileEdit.Text;
UseAppBundle := UseAppBundleCheckBox.Checked;
Resources.XPManifest.UseManifest := UseXPManifestCheckBox.Checked;
end;
end;
class function TProjectApplicationOptionsFrame.SupportedOptionsClass:
TAbstractIDEOptionsClass;
begin
Result := TProject;
end;
initialization
{$I project_application_options.lrs}
RegisterIDEOptionsEditor(GroupProject, TProjectApplicationOptionsFrame, ProjectOptionsApplication);
end.

View File

@ -0,0 +1,143 @@
inherited ProjectFormsOptionsFrame: TProjectFormsOptionsFrame
Height = 463
Width = 501
ClientHeight = 463
ClientWidth = 501
TabOrder = 0
DesignLeft = 356
DesignTop = 178
object FormsAutoCreatedLabel: TLabel[0]
AnchorSideLeft.Control = FormsAutoCreatedListBox
AnchorSideTop.Control = Owner
Left = 30
Height = 14
Top = 0
Width = 117
Caption = 'FormsAutoCreatedLabel'
ParentColor = False
end
object FormsAvailFormsLabel: TLabel[1]
AnchorSideLeft.Control = FormsAvailFormsListBox
AnchorSideTop.Control = Owner
Left = 284
Height = 14
Top = 0
Width = 107
Caption = 'FormsAvailFormsLabel'
ParentColor = False
end
object FormsMoveAutoCreatedFormUpBtn: TSpeedButton[2]
AnchorSideLeft.Control = Owner
Left = 0
Height = 24
Top = 36
Width = 24
Color = clBtnFace
NumGlyphs = 0
OnClick = FormsMoveAutoCreatedFormUpBtnClick
end
object FormsMoveAutoCreatedFormsDownBtn: TSpeedButton[3]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = FormsMoveAutoCreatedFormUpBtn
AnchorSideTop.Side = asrBottom
Left = 0
Height = 24
Top = 66
Width = 24
BorderSpacing.Top = 6
Color = clBtnFace
NumGlyphs = 0
OnClick = FormsMoveAutoCreatedFormsDownBtnClick
end
object FormsRemoveFromAutoCreatedFormsBtn: TSpeedButton[4]
AnchorSideLeft.Side = asrCenter
AnchorSideRight.Control = FormsAvailFormsLabel
Left = 254
Height = 24
Top = 36
Width = 24
Anchors = [akTop, akRight]
BorderSpacing.Right = 6
Color = clBtnFace
NumGlyphs = 0
OnClick = FormsRemoveFromAutoCreatedFormsBtnClick
end
object FormsAddToAutoCreatedFormsBtn: TSpeedButton[5]
AnchorSideLeft.Control = FormsRemoveFromAutoCreatedFormsBtn
AnchorSideTop.Control = FormsRemoveFromAutoCreatedFormsBtn
AnchorSideTop.Side = asrBottom
Left = 254
Height = 24
Top = 66
Width = 24
BorderSpacing.Top = 6
Color = clBtnFace
NumGlyphs = 0
OnClick = FormsAddToAutoCreatedFormsBtnClick
end
object FormsAutoCreatedListBox: TListBox[6]
AnchorSideLeft.Control = FormsMoveAutoCreatedFormsDownBtn
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = FormsAutoCreatedLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = lblMiddle
AnchorSideBottom.Control = FormsAutoCreateNewFormsCheckBox
Left = 30
Height = 420
Top = 20
Width = 217
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Left = 6
BorderSpacing.Top = 6
BorderSpacing.Right = 3
BorderSpacing.Bottom = 6
ItemHeight = 0
MultiSelect = True
OnDblClick = FormsRemoveFromAutoCreatedFormsBtnClick
TabOrder = 0
end
object FormsAvailFormsListBox: TListBox[7]
AnchorSideLeft.Control = lblMiddle
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = FormsAvailFormsLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = FormsAutoCreateNewFormsCheckBox
Left = 284
Height = 420
Top = 20
Width = 217
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Left = 33
BorderSpacing.Top = 6
BorderSpacing.Bottom = 6
ItemHeight = 0
MultiSelect = True
OnDblClick = FormsAddToAutoCreatedFormsBtnClick
TabOrder = 1
end
object FormsAutoCreateNewFormsCheckBox: TCheckBox[8]
AnchorSideLeft.Control = FormsAddToAutoCreatedFormsBtn
AnchorSideTop.Control = FormsAutoCreatedListBox
Left = 0
Height = 17
Top = 446
Width = 501
Align = alBottom
Caption = 'FormsAutoCreateNewFormsCheckBox'
TabOrder = 2
end
object lblMiddle: TLabel[9]
AnchorSideLeft.Control = Owner
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = Owner
AnchorSideTop.Side = asrCenter
Left = 250
Height = 1
Top = 231
Width = 1
AutoSize = False
ParentColor = False
end
end

View File

@ -0,0 +1,59 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TProjectFormsOptionsFrame','FORMDATA',[
'TPF0'#241#25'TProjectFormsOptionsFrame'#24'ProjectFormsOptionsFrame'#6'Heigh'
+'t'#3#207#1#5'Width'#3#245#1#12'ClientHeight'#3#207#1#11'ClientWidth'#3#245#1
+#8'TabOrder'#2#0#10'DesignLeft'#3'd'#1#9'DesignTop'#3#178#0#0#242#2#0#6'TLab'
+'el'#21'FormsAutoCreatedLabel'#22'AnchorSideLeft.Control'#7#23'FormsAutoCrea'
+'tedListBox'#21'AnchorSideTop.Control'#7#5'Owner'#4'Left'#2#30#6'Height'#2#14
+#3'Top'#2#0#5'Width'#2'u'#7'Caption'#6#21'FormsAutoCreatedLabel'#11'ParentCo'
+'lor'#8#0#0#242#2#1#6'TLabel'#20'FormsAvailFormsLabel'#22'AnchorSideLeft.Con'
+'trol'#7#22'FormsAvailFormsListBox'#21'AnchorSideTop.Control'#7#5'Owner'#4'L'
+'eft'#3#28#1#6'Height'#2#14#3'Top'#2#0#5'Width'#2'k'#7'Caption'#6#20'FormsAv'
+'ailFormsLabel'#11'ParentColor'#8#0#0#242#2#2#12'TSpeedButton'#29'FormsMoveA'
+'utoCreatedFormUpBtn'#22'AnchorSideLeft.Control'#7#5'Owner'#4'Left'#2#0#6'He'
+'ight'#2#24#3'Top'#2'$'#5'Width'#2#24#5'Color'#7#9'clBtnFace'#9'NumGlyphs'#2
+#0#7'OnClick'#7'"FormsMoveAutoCreatedFormUpBtnClick'#0#0#242#2#3#12'TSpeedBu'
+'tton FormsMoveAutoCreatedFormsDownBtn'#22'AnchorSideLeft.Control'#7#5'Owner'
+#21'AnchorSideTop.Control'#7#29'FormsMoveAutoCreatedFormUpBtn'#18'AnchorSide'
+'Top.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#24#3'Top'#2'B'#5'Width'#2
+#24#17'BorderSpacing.Top'#2#6#5'Color'#7#9'clBtnFace'#9'NumGlyphs'#2#0#7'OnC'
+'lick'#7'%FormsMoveAutoCreatedFormsDownBtnClick'#0#0#242#2#4#12'TSpeedButton'
+'"FormsRemoveFromAutoCreatedFormsBtn'#19'AnchorSideLeft.Side'#7#9'asrCenter'
+#23'AnchorSideRight.Control'#7#20'FormsAvailFormsLabel'#4'Left'#3#254#0#6'He'
+'ight'#2#24#3'Top'#2'$'#5'Width'#2#24#7'Anchors'#11#5'akTop'#7'akRight'#0#19
+'BorderSpacing.Right'#2#6#5'Color'#7#9'clBtnFace'#9'NumGlyphs'#2#0#7'OnClick'
+#7'''FormsRemoveFromAutoCreatedFormsBtnClick'#0#0#242#2#5#12'TSpeedButton'#29
+'FormsAddToAutoCreatedFormsBtn'#22'AnchorSideLeft.Control'#7'"FormsRemoveFro'
+'mAutoCreatedFormsBtn'#21'AnchorSideTop.Control'#7'"FormsRemoveFromAutoCreat'
+'edFormsBtn'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#254#0#6'Height'
+#2#24#3'Top'#2'B'#5'Width'#2#24#17'BorderSpacing.Top'#2#6#5'Color'#7#9'clBtn'
+'Face'#9'NumGlyphs'#2#0#7'OnClick'#7'"FormsAddToAutoCreatedFormsBtnClick'#0#0
+#242#2#6#8'TListBox'#23'FormsAutoCreatedListBox'#22'AnchorSideLeft.Control'#7
+' FormsMoveAutoCreatedFormsDownBtn'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21
+'AnchorSideTop.Control'#7#21'FormsAutoCreatedLabel'#18'AnchorSideTop.Side'#7
+#9'asrBottom'#23'AnchorSideRight.Control'#7#9'lblMiddle'#24'AnchorSideBottom'
+'.Control'#7#31'FormsAutoCreateNewFormsCheckBox'#4'Left'#2#30#6'Height'#3#164
+#1#3'Top'#2#20#5'Width'#3#217#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8
+'akBottom'#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#19'BorderS'
+'pacing.Right'#2#3#20'BorderSpacing.Bottom'#2#6#10'ItemHeight'#2#0#11'MultiS'
+'elect'#9#10'OnDblClick'#7'''FormsRemoveFromAutoCreatedFormsBtnClick'#8'TabO'
+'rder'#2#0#0#0#242#2#7#8'TListBox'#22'FormsAvailFormsListBox'#22'AnchorSideL'
+'eft.Control'#7#9'lblMiddle'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'Ancho'
+'rSideTop.Control'#7#20'FormsAvailFormsLabel'#18'AnchorSideTop.Side'#7#9'asr'
+'Bottom'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9
+'asrBottom'#24'AnchorSideBottom.Control'#7#31'FormsAutoCreateNewFormsCheckBo'
+'x'#4'Left'#3#28#1#6'Height'#3#164#1#3'Top'#2#20#5'Width'#3#217#0#7'Anchors'
+#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#18'BorderSpacing.Left'#2'!'
+#17'BorderSpacing.Top'#2#6#20'BorderSpacing.Bottom'#2#6#10'ItemHeight'#2#0#11
+'MultiSelect'#9#10'OnDblClick'#7'"FormsAddToAutoCreatedFormsBtnClick'#8'TabO'
+'rder'#2#1#0#0#242#2#8#9'TCheckBox'#31'FormsAutoCreateNewFormsCheckBox'#22'A'
+'nchorSideLeft.Control'#7#29'FormsAddToAutoCreatedFormsBtn'#21'AnchorSideTop'
+'.Control'#7#23'FormsAutoCreatedListBox'#4'Left'#2#0#6'Height'#2#17#3'Top'#3
+#190#1#5'Width'#3#245#1#5'Align'#7#8'alBottom'#7'Caption'#6#31'FormsAutoCrea'
+'teNewFormsCheckBox'#8'TabOrder'#2#2#0#0#242#2#9#6'TLabel'#9'lblMiddle'#22'A'
+'nchorSideLeft.Control'#7#5'Owner'#19'AnchorSideLeft.Side'#7#9'asrCenter'#21
+'AnchorSideTop.Control'#7#5'Owner'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'L'
+'eft'#3#250#0#6'Height'#2#1#3'Top'#3#231#0#5'Width'#2#1#8'AutoSize'#8#11'Par'
+'entColor'#8#0#0#0
]);

View File

@ -0,0 +1,282 @@
unit project_forms_options;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, IDEOptionsIntf, PackageDefs, ProjectIntf, Project,
LazarusIDEStrConsts, CodeToolManager;
type
{ TProjectFormsOptionsFrame }
TProjectFormsOptionsFrame = class(TAbstractIDEOptionsEditor)
FormsAddToAutoCreatedFormsBtn: TSpeedButton;
FormsAutoCreatedLabel: TLabel;
FormsAutoCreatedListBox: TListBox;
FormsAutoCreateNewFormsCheckBox: TCheckBox;
FormsAvailFormsLabel: TLabel;
FormsAvailFormsListBox: TListBox;
FormsMoveAutoCreatedFormsDownBtn: TSpeedButton;
FormsMoveAutoCreatedFormUpBtn: TSpeedButton;
FormsRemoveFromAutoCreatedFormsBtn: TSpeedButton;
lblMiddle: TLabel;
procedure FormsAddToAutoCreatedFormsBtnClick(Sender: TObject);
procedure FormsMoveAutoCreatedFormsDownBtnClick(Sender: TObject);
procedure FormsMoveAutoCreatedFormUpBtnClick(Sender: TObject);
procedure FormsRemoveFromAutoCreatedFormsBtnClick(Sender: TObject);
private
function FirstAutoCreateFormSelected: Integer;
function FirstAvailFormSelected: Integer;
procedure SelectOnlyThisAutoCreateForm(Index: integer);
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
{ TProjectFormsOptionsFrame }
procedure TProjectFormsOptionsFrame.SelectOnlyThisAutoCreateForm(Index: integer);
var
i: integer;
begin
with FormsAutoCreatedListBox do
for i := 0 to Items.Count - 1 do
Selected[i] := (i = Index);
end;
procedure TProjectFormsOptionsFrame.FormsMoveAutoCreatedFormUpBtnClick(
Sender: TObject);
var
i: integer;
h: string;
begin
i := FirstAutoCreateFormSelected;
if i < 1 then
Exit;
with FormsAutoCreatedListBox do
begin
Items.BeginUpdate;
h := Items[i];
Items[i] := Items[i - 1];
Items[i - 1] := h;
Items.EndUpdate;
end;
SelectOnlyThisAutoCreateForm(i - 1);
end;
procedure TProjectFormsOptionsFrame.FormsRemoveFromAutoCreatedFormsBtnClick(
Sender: TObject);
var
i, NewPos, cmp: integer;
OldFormName: string;
begin
FormsAutoCreatedListBox.Items.BeginUpdate;
FormsAvailFormsListBox.Items.BeginUpdate;
i := 0;
while i < FormsAutoCreatedListBox.Items.Count do
if FormsAutoCreatedListBox.Selected[i] then
begin
OldFormName := FormsAutoCreatedListBox.Items[i];
FormsAutoCreatedListBox.Items.Delete(i);
NewPos := 0;
cmp := 1;
while (NewPos < FormsAvailFormsListBox.Items.Count) do
begin
cmp := AnsiCompareText(FormsAvailFormsListBox.Items[NewPos], OldFormName);
if cmp < 0 then
Inc(NewPos)
else
break;
end;
if cmp = 0 then
continue;
FormsAvailFormsListBox.Items.Insert(NewPos, OldFormName);
end
else
Inc(i);
FormsAvailFormsListBox.Items.EndUpdate;
FormsAutoCreatedListBox.Items.EndUpdate;
end;
function TProjectFormsOptionsFrame.FirstAutoCreateFormSelected: Integer;
begin
Result := 0;
while (Result < FormsAutoCreatedListBox.Items.Count) and
(not FormsAutoCreatedListBox.Selected[Result]) do
inc(Result);
if Result = FormsAutoCreatedListBox.Items.Count then
Result := -1;
end;
function TProjectFormsOptionsFrame.FirstAvailFormSelected: Integer;
begin
Result := 0;
while (Result < FormsAvailFormsListBox.Items.Count) and
(not FormsAvailFormsListBox.Selected[Result]) do
inc(Result);
if Result = FormsAvailFormsListBox.Items.Count then
Result := -1;
end;
procedure TProjectFormsOptionsFrame.FormsMoveAutoCreatedFormsDownBtnClick(
Sender: TObject);
var
i: integer;
h: string;
begin
i := FirstAutoCreateFormSelected;
if (i < 0) or (i >= FormsAutoCreatedListBox.Items.Count - 1) then
exit;
with FormsAutoCreatedListBox do
begin
Items.BeginUpdate;
h := Items[i];
Items[i] := Items[i + 1];
Items[i + 1] := h;
Items.EndUpdate;
end;
SelectOnlyThisAutoCreateForm(i + 1);
end;
procedure TProjectFormsOptionsFrame.FormsAddToAutoCreatedFormsBtnClick(
Sender: TObject);
var
i: integer;
NewFormName: string;
begin
FormsAutoCreatedListBox.Items.BeginUpdate;
with FormsAvailFormsListBox do
begin
Items.BeginUpdate;
i := 0;
while i < Items.Count do
if Selected[i] then
begin
NewFormName := Items[i];
Items.Delete(i);
FormsAutoCreatedListBox.Items.Add(NewFormName);
end
else
Inc(i);
Items.EndUpdate;
end;
FormsAutoCreatedListBox.Items.EndUpdate;
end;
function TProjectFormsOptionsFrame.GetTitle: string;
begin
Result := dlgPOFroms;
end;
procedure TProjectFormsOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
begin
FormsAutoCreatedLabel.Caption := dlgAutoCreateForms;
FormsAvailFormsLabel.Caption := dlgAvailableForms;
FormsAutoCreateNewFormsCheckBox.Caption := dlgAutoCreateNewForms;
FormsMoveAutoCreatedFormUpBtn.LoadGlyphFromLazarusResource('arrow_up');
FormsMoveAutoCreatedFormsDownBtn.LoadGlyphFromLazarusResource('arrow_down');
FormsAddToAutoCreatedFormsBtn.LoadGlyphFromLazarusResource('arrow_left');
FormsRemoveFromAutoCreatedFormsBtn.LoadGlyphFromLazarusResource('arrow_right');
end;
procedure TProjectFormsOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
var
Project: TProject absolute AOptions;
procedure FillAutoCreateFormsListbox;
var
sl: TStrings;
begin
sl := Project.GetAutoCreatedFormsList;
FormsAutoCreatedListBox.Items.BeginUpdate;
FormsAutoCreatedListBox.Items.Clear;
if sl <> nil then
begin
FormsAutoCreatedListBox.Items.Assign(sl);
sl.Free;
end;
FormsAutoCreatedListBox.Items.EndUpdate;
end;
function IndexOfAutoCreateForm(FormName: string): integer;
var
p: integer;
begin
p := Pos(':', FormName);
if p > 0 then
FormName := Copy(FormName, 1, p - 1);
Result := FormsAutoCreatedListBox.Items.Count - 1;
while (Result >= 0) do
begin
p := Pos(':', FormsAutoCreatedListBox.Items[Result]);
if p < 1 then
p := Length(FormsAutoCreatedListBox.Items[Result]) + 1;
if AnsiCompareText(copy(FormsAutoCreatedListBox.Items[Result], 1, p - 1),
FormName) = 0 then
Exit;
Dec(Result);
end;
end;
procedure FillAvailFormsListBox;
var
sl: TStringList;
i: integer;
begin
FormsAvailFormsListBox.Items.BeginUpdate;
FormsAvailFormsListBox.Items.Clear;
if (Project <> nil) then
begin
sl := TStringList.Create;
try
for i := 0 to Project.UnitCount - 1 do
if (Project.Units[i].IsPartOfProject) and
(Project.Units[i].ComponentName <> '') and
(Project.Units[i].ResourceBaseClass in [pfcbcForm, pfcbcDataModule]) and
(IndexOfAutoCreateForm(Project.Units[i].ComponentName) < 0) then
sl.Add(Project.Units[i].ComponentName);
sl.Sort;
FormsAvailFormsListBox.Items.Assign(sl);
finally
sl.Free;
end;
end;
FormsAvailFormsListBox.Items.EndUpdate;
end;
begin
FillAutoCreateFormsListbox;
FillAvailFormsListBox;
FormsAutoCreateNewFormsCheckBox.Checked := Project.AutoCreateForms;
end;
procedure TProjectFormsOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
var
Project: TProject absolute AOptions;
begin
Project.AutoCreateForms := FormsAutoCreateNewFormsCheckBox.Checked;
Project.TmpAutoCreatedForms := FormsAutoCreatedListBox.Items;
end;
class function TProjectFormsOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
begin
Result := TProject;
end;
initialization
{$I project_forms_options.lrs}
RegisterIDEOptionsEditor(GroupProject, TProjectFormsOptionsFrame, ProjectOptionsForms);
end.

View File

@ -0,0 +1,75 @@
inherited ProjectI18NOptionsFrame: TProjectI18NOptionsFrame
Height = 177
Width = 438
ClientHeight = 177
ClientWidth = 438
TabOrder = 0
DesignLeft = 467
DesignTop = 355
object EnableI18NCheckBox: TCheckBox[0]
Left = 0
Height = 17
Top = 0
Width = 438
Align = alTop
Caption = 'Enable i18n'
OnChange = EnableI18NCheckBoxChange
TabOrder = 0
end
object I18NGroupBox: TGroupBox[1]
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 0
Height = 73
Top = 23
Width = 438
Align = alTop
AutoSize = True
BorderSpacing.Top = 6
Caption = 'i18n Options'
ClientHeight = 55
ClientWidth = 434
TabOrder = 1
object PoOutDirLabel: TLabel
Left = 6
Height = 14
Top = 6
Width = 103
BorderSpacing.Around = 6
Caption = 'PO Output Directory:'
ParentColor = False
end
object POOutDirEdit: TEdit
AnchorSideLeft.Control = I18NGroupBox
AnchorSideTop.Control = PoOutDirLabel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = POOutDirButton
Left = 6
Height = 21
Top = 26
Width = 398
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
BorderSpacing.Top = 6
BorderSpacing.Bottom = 6
TabOrder = 0
Text = 'POOutDirEdit'
end
object POOutDirButton: TButton
AnchorSideTop.Control = POOutDirEdit
AnchorSideRight.Control = I18NGroupBox
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = POOutDirEdit
AnchorSideBottom.Side = asrBottom
Left = 404
Height = 21
Top = 26
Width = 24
Anchors = [akTop, akRight, akBottom]
BorderSpacing.Right = 6
Caption = '...'
OnClick = POOutDirButtonClick
TabOrder = 1
end
end
end

View File

@ -0,0 +1,29 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TProjectI18NOptionsFrame','FORMDATA',[
'TPF0'#241#24'TProjectI18NOptionsFrame'#23'ProjectI18NOptionsFrame'#6'Height'
+#3#177#0#5'Width'#3#182#1#12'ClientHeight'#3#177#0#11'ClientWidth'#3#182#1#8
+'TabOrder'#2#0#10'DesignLeft'#3#211#1#9'DesignTop'#3'c'#1#0#242#2#0#9'TCheck'
+'Box'#18'EnableI18NCheckBox'#4'Left'#2#0#6'Height'#2#17#3'Top'#2#0#5'Width'#3
+#182#1#5'Align'#7#5'alTop'#7'Caption'#6#11'Enable i18n'#8'OnChange'#7#24'Ena'
+'bleI18NCheckBoxChange'#8'TabOrder'#2#0#0#0#242#2#1#9'TGroupBox'#12'I18NGrou'
+'pBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#20'AnchorSideRight.Side'#7#9'as'
+'rBottom'#4'Left'#2#0#6'Height'#2'I'#3'Top'#2#23#5'Width'#3#182#1#5'Align'#7
+#5'alTop'#8'AutoSize'#9#17'BorderSpacing.Top'#2#6#7'Caption'#6#12'i18n Optio'
+'ns'#12'ClientHeight'#2'7'#11'ClientWidth'#3#178#1#8'TabOrder'#2#1#0#6'TLabe'
+'l'#13'PoOutDirLabel'#4'Left'#2#6#6'Height'#2#14#3'Top'#2#6#5'Width'#2'g'#20
+'BorderSpacing.Around'#2#6#7'Caption'#6#20'PO Output Directory:'#11'ParentCo'
+'lor'#8#0#0#5'TEdit'#12'POOutDirEdit'#22'AnchorSideLeft.Control'#7#12'I18NGr'
+'oupBox'#21'AnchorSideTop.Control'#7#13'PoOutDirLabel'#18'AnchorSideTop.Side'
+#7#9'asrBottom'#23'AnchorSideRight.Control'#7#14'POOutDirButton'#4'Left'#2#6
+#6'Height'#2#21#3'Top'#2#26#5'Width'#3#142#1#7'Anchors'#11#5'akTop'#6'akLeft'
+#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#20'Border'
+'Spacing.Bottom'#2#6#8'TabOrder'#2#0#4'Text'#6#12'POOutDirEdit'#0#0#7'TButto'
+'n'#14'POOutDirButton'#21'AnchorSideTop.Control'#7#12'POOutDirEdit'#23'Ancho'
+'rSideRight.Control'#7#12'I18NGroupBox'#20'AnchorSideRight.Side'#7#9'asrBott'
+'om'#24'AnchorSideBottom.Control'#7#12'POOutDirEdit'#21'AnchorSideBottom.Sid'
+'e'#7#9'asrBottom'#4'Left'#3#148#1#6'Height'#2#21#3'Top'#2#26#5'Width'#2#24#7
+'Anchors'#11#5'akTop'#7'akRight'#8'akBottom'#0#19'BorderSpacing.Right'#2#6#7
+'Caption'#6#3'...'#7'OnClick'#7#19'POOutDirButtonClick'#8'TabOrder'#2#1#0#0#0
+#0
]);

View File

@ -0,0 +1,109 @@
unit project_i18n_options;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Project, IDEOptionsIntf, LazarusIDEStrConsts, IDEDialogs;
type
{ TProjectI18NOptionsFrame }
TProjectI18NOptionsFrame = class(TAbstractIDEOptionsEditor)
EnableI18NCheckBox: TCheckBox;
I18NGroupBox: TGroupBox;
POOutDirButton: TButton;
POOutDirEdit: TEdit;
PoOutDirLabel: TLabel;
procedure EnableI18NCheckBoxChange(Sender: TObject);
procedure POOutDirButtonClick(Sender: TObject);
private
FProject: TProject;
procedure Enablei18nInfo(Usei18n: boolean);
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
{ TProjectI18NOptionsFrame }
procedure TProjectI18NOptionsFrame.EnableI18NCheckBoxChange(Sender: TObject);
begin
Enablei18nInfo(EnableI18NCheckBox.Checked);
end;
procedure TProjectI18NOptionsFrame.POOutDirButtonClick(Sender: TObject);
var
NewDirectory: string;
begin
NewDirectory := LazSelectDirectory(lisPOChoosePoFileDirectory,
FProject.ProjectDirectory);
if NewDirectory = '' then Exit;
FProject.ShortenFilename(NewDirectory);
POOutDirEdit.Text := NewDirectory;
end;
procedure TProjectI18NOptionsFrame.Enablei18nInfo(Usei18n: boolean);
begin
I18NGroupBox.Enabled := Usei18n;
end;
function TProjectI18NOptionsFrame.GetTitle: string;
begin
Result := dlgPOI18n;
end;
procedure TProjectI18NOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
begin
EnableI18NCheckBox.Caption := rsEnableI18n;
I18NGroupBox.Caption := rsI18nOptions;
PoOutDirLabel.Caption := rsPOOutputDirectory;
end;
procedure TProjectI18NOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
var
AFilename: String;
begin
FProject := AOptions as TProject;
with FProject do
begin
AFilename := POOutputDirectory;
ShortenFilename(AFilename);
POOutDirEdit.Text := AFilename;
EnableI18NCheckBox.Checked := Enablei18n;
Enablei18nInfo(Enablei18n);
end;
end;
procedure TProjectI18NOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
var
AFilename: String;
begin
with AOptions as TProject do
begin
AFilename := TrimFilename(POOutDirEdit.Text);
LongenFilename(AFilename);
POOutputDirectory := AFilename;
EnableI18N := EnableI18NCheckBox.Checked;
end;
end;
class function TProjectI18NOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
begin
Result := TProject;
end;
initialization
{$I project_i18n_options.lrs}
RegisterIDEOptionsEditor(GroupProject, TProjectI18NOptionsFrame, ProjectOptionsI18N);
end.

View File

@ -0,0 +1,90 @@
inherited ProjectLazDocOptionsFrame: TProjectLazDocOptionsFrame
Height = 269
Width = 478
ClientHeight = 269
ClientWidth = 478
TabOrder = 0
DesignLeft = 422
DesignTop = 407
object LazDocListBox: TListBox[0]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 108
Top = 0
Width = 478
Anchors = [akTop, akLeft, akRight]
ItemHeight = 0
TabOrder = 0
end
object LazDocPathEdit: TEdit[1]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = LazDocListBox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = LazDocBrowseButton
Left = 0
Height = 21
Top = 114
Width = 454
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6
BorderSpacing.Bottom = 6
TabOrder = 1
Text = 'LazDocPathEdit'
end
object LazDocBrowseButton: TButton[2]
AnchorSideLeft.Control = LazDocPathEdit
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = LazDocPathEdit
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = LazDocPathEdit
AnchorSideBottom.Side = asrBottom
Left = 454
Height = 21
Top = 114
Width = 24
Anchors = [akTop, akRight, akBottom]
Caption = '...'
OnClick = LazDocBrowseButtonClick
TabOrder = 2
end
object LazDocAddPathButton: TBitBtn[3]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = LazDocPathEdit
AnchorSideTop.Side = asrBottom
Left = 0
Height = 23
Top = 141
Width = 133
AutoSize = True
BorderSpacing.Top = 6
Caption = 'LazDocAddPathButton'
NumGlyphs = 0
OnClick = LazDocAddPathButtonClick
TabOrder = 3
end
object LazDocDeletePathButton: TBitBtn[4]
AnchorSideLeft.Control = LazDocAddPathButton
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = LazDocPathEdit
AnchorSideTop.Side = asrBottom
Left = 139
Height = 23
Top = 141
Width = 145
AutoSize = True
BorderSpacing.Around = 6
Caption = 'LazDocDeletePathButton'
NumGlyphs = 0
OnClick = LazDocDeletePathButtonClick
TabOrder = 4
end
object SelectDirectoryDialog: TSelectDirectoryDialog[5]
FilterIndex = 0
left = 116
top = 241
end
end

View File

@ -0,0 +1,37 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TProjectLazDocOptionsFrame','FORMDATA',[
'TPF0'#241#26'TProjectLazDocOptionsFrame'#25'ProjectLazDocOptionsFrame'#6'Hei'
+'ght'#3#13#1#5'Width'#3#222#1#12'ClientHeight'#3#13#1#11'ClientWidth'#3#222#1
+#8'TabOrder'#2#0#10'DesignLeft'#3#166#1#9'DesignTop'#3#151#1#0#242#2#0#8'TLi'
+'stBox'#13'LazDocListBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSid'
+'eTop.Control'#7#5'Owner'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSi'
+'deRight.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2'l'#3'Top'#2#0#5'Width'
+#3#222#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#10'ItemHeight'#2#0#8
+'TabOrder'#2#0#0#0#242#2#1#5'TEdit'#14'LazDocPathEdit'#22'AnchorSideLeft.Con'
+'trol'#7#5'Owner'#21'AnchorSideTop.Control'#7#13'LazDocListBox'#18'AnchorSid'
+'eTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#18'LazDocBrowseButt'
+'on'#4'Left'#2#0#6'Height'#2#21#3'Top'#2'r'#5'Width'#3#198#1#7'Anchors'#11#5
+'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6#20'BorderSpacing.Bo'
+'ttom'#2#6#8'TabOrder'#2#1#4'Text'#6#14'LazDocPathEdit'#0#0#242#2#2#7'TButto'
+'n'#18'LazDocBrowseButton'#22'AnchorSideLeft.Control'#7#14'LazDocPathEdit'#19
+'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#14'LazDocPa'
+'thEdit'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9
+'asrBottom'#24'AnchorSideBottom.Control'#7#14'LazDocPathEdit'#21'AnchorSideB'
+'ottom.Side'#7#9'asrBottom'#4'Left'#3#198#1#6'Height'#2#21#3'Top'#2'r'#5'Wid'
+'th'#2#24#7'Anchors'#11#5'akTop'#7'akRight'#8'akBottom'#0#7'Caption'#6#3'...'
+#7'OnClick'#7#23'LazDocBrowseButtonClick'#8'TabOrder'#2#2#0#0#242#2#3#7'TBit'
+'Btn'#19'LazDocAddPathButton'#22'AnchorSideLeft.Control'#7#5'Owner'#21'Ancho'
+'rSideTop.Control'#7#14'LazDocPathEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'
+#4'Left'#2#0#6'Height'#2#23#3'Top'#3#141#0#5'Width'#3#133#0#8'AutoSize'#9#17
+'BorderSpacing.Top'#2#6#7'Caption'#6#19'LazDocAddPathButton'#9'NumGlyphs'#2#0
+#7'OnClick'#7#24'LazDocAddPathButtonClick'#8'TabOrder'#2#3#0#0#242#2#4#7'TBi'
+'tBtn'#22'LazDocDeletePathButton'#22'AnchorSideLeft.Control'#7#19'LazDocAddP'
+'athButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'
+#7#14'LazDocPathEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#139#0#6
+'Height'#2#23#3'Top'#3#141#0#5'Width'#3#145#0#8'AutoSize'#9#20'BorderSpacing'
+'.Around'#2#6#7'Caption'#6#22'LazDocDeletePathButton'#9'NumGlyphs'#2#0#7'OnC'
+'lick'#7#27'LazDocDeletePathButtonClick'#8'TabOrder'#2#4#0#0#242#2#5#22'TSel'
+'ectDirectoryDialog'#21'SelectDirectoryDialog'#11'FilterIndex'#2#0#4'left'#2
+'t'#3'top'#3#241#0#0#0#0
]);

View File

@ -0,0 +1,94 @@
unit project_lazdoc_options;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, Project, IDEOptionsIntf, LazarusIDEStrConsts, IDEProcs;
type
{ TProjectLazDocOptionsFrame }
TProjectLazDocOptionsFrame = class(TAbstractIDEOptionsEditor)
LazDocAddPathButton: TBitBtn;
LazDocBrowseButton: TButton;
LazDocDeletePathButton: TBitBtn;
LazDocListBox: TListBox;
LazDocPathEdit: TEdit;
SelectDirectoryDialog: TSelectDirectoryDialog;
procedure LazDocAddPathButtonClick(Sender: TObject);
procedure LazDocBrowseButtonClick(Sender: TObject);
procedure LazDocDeletePathButtonClick(Sender: TObject);
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
{ TProjectLazDocOptionsFrame }
procedure TProjectLazDocOptionsFrame.LazDocBrowseButtonClick(Sender: TObject);
begin
if SelectDirectoryDialog.Execute then
LazDocPathEdit.Text := SelectDirectoryDialog.FileName;
end;
procedure TProjectLazDocOptionsFrame.LazDocDeletePathButtonClick(Sender: TObject);
begin
if (LazDocListBox.ItemIndex >= 0) then
LazDocListBox.Items.Delete(LazDocListBox.ItemIndex);
end;
procedure TProjectLazDocOptionsFrame.LazDocAddPathButtonClick(Sender: TObject);
begin
if LazDocPathEdit.Text <> '' then
LazDocListBox.Items.Add(LazDocPathEdit.Text);
end;
function TProjectLazDocOptionsFrame.GetTitle: string;
begin
Result := lisFPDocEditor;
end;
procedure TProjectLazDocOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
begin
LazDocAddPathButton.Caption := lisCodeHelpAddPathButton;
LazDocDeletePathButton.Caption := lisCodeHelpDeletePathButton;
LazDocDeletePathButton.LoadGlyphFromLazarusResource('laz_delete');
LazDocAddPathButton.LoadGlyphFromLazarusResource('laz_add');
LazDocPathEdit.Clear;
end;
procedure TProjectLazDocOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions as TProject do
SplitString(LazDocPaths, ';', LazDocListBox.Items, True);
end;
procedure TProjectLazDocOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions as TProject do
LazDocPaths := StringListToText(LazDocListBox.Items, ';', True);
end;
class function TProjectLazDocOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
begin
Result := TProject;
end;
initialization
{$I project_lazdoc_options.lrs}
RegisterIDEOptionsEditor(GroupProject, TProjectLazDocOptionsFrame, ProjectOptionsLazDoc);
end.

View File

@ -0,0 +1,151 @@
inherited ProjectMiscOptionsFrame: TProjectMiscOptionsFrame
Height = 460
Width = 536
ClientHeight = 460
ClientWidth = 536
TabOrder = 0
DesignLeft = 306
DesignTop = 188
object Bevel1: TBevel[0]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = MainUnitHasTitleStatementCheckBox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 3
Top = 92
Width = 536
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6
end
object MainUnitHasUsesSectionForAllUnitsCheckBox: TCheckBox[1]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = MainUnitIsPascalSourceCheckBox
AnchorSideTop.Side = asrBottom
Left = 0
Height = 17
Top = 23
Width = 233
BorderSpacing.Top = 6
Caption = 'MainUnitHasUsesSectionForAllUnitsCheckBox'
TabOrder = 0
end
object MainUnitHasCreateFormStatementsCheckBox: TCheckBox[2]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = MainUnitHasUsesSectionForAllUnitsCheckBox
AnchorSideTop.Side = asrBottom
Left = 0
Height = 17
Top = 46
Width = 236
BorderSpacing.Top = 6
Caption = 'MainUnitHasCreateFormStatementsCheckBox'
TabOrder = 1
end
object MainUnitIsPascalSourceCheckBox: TCheckBox[3]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
Left = 0
Height = 17
Top = 0
Width = 178
Caption = 'MainUnitIsPascalSourceCheckBox'
TabOrder = 2
end
object MainUnitHasTitleStatementCheckBox: TCheckBox[4]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = MainUnitHasCreateFormStatementsCheckBox
AnchorSideTop.Side = asrBottom
Left = 0
Height = 17
Top = 69
Width = 194
BorderSpacing.Top = 6
Caption = 'MainUnitHasTitleStatementCheckBox'
TabOrder = 3
end
object RunnableCheckBox: TCheckBox[5]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Bevel1
Left = 0
Height = 17
Top = 98
Width = 110
BorderSpacing.Top = 6
Caption = 'RunnableCheckBox'
TabOrder = 4
end
object AlwaysBuildCheckBox: TCheckBox[6]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = RunnableCheckBox
AnchorSideTop.Side = asrBottom
Left = 0
Height = 17
Top = 121
Width = 121
BorderSpacing.Top = 6
Caption = 'AlwaysBuildCheckBox'
TabOrder = 5
end
object LRSInOutputDirCheckBox: TCheckBox[7]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = AlwaysBuildCheckBox
AnchorSideTop.Side = asrBottom
Left = 0
Height = 17
Top = 144
Width = 140
BorderSpacing.Top = 6
Caption = 'LRSInOutputDirCheckBox'
TabOrder = 6
end
object ResourceGroupBox: TGroupBox[8]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = LRSInOutputDirCheckBox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 81
Top = 167
Width = 536
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6
Caption = 'ResourceGroupBox'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 63
ClientWidth = 532
TabOrder = 7
object UseLRSFilesRadioButton: TRadioButton
Left = 6
Height = 26
Top = 6
Width = 520
Caption = 'UseLRSFilesRadioButton'
Checked = True
ParentShowHint = False
ShowHint = True
State = cbChecked
TabOrder = 0
end
object UseFPCResourcesRadioButton: TRadioButton
Left = 6
Height = 25
Top = 32
Width = 520
Caption = 'UseFPCResourcesRadioButton'
ParentShowHint = False
ShowHint = True
TabOrder = 1
TabStop = False
end
end
end

View File

@ -0,0 +1,59 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TProjectMiscOptionsFrame','FORMDATA',[
'TPF0'#241#24'TProjectMiscOptionsFrame'#23'ProjectMiscOptionsFrame'#6'Height'
+#3#204#1#5'Width'#3#24#2#12'ClientHeight'#3#204#1#11'ClientWidth'#3#24#2#8'T'
+'abOrder'#2#0#10'DesignLeft'#3'2'#1#9'DesignTop'#3#188#0#0#242#2#0#6'TBevel'
+#6'Bevel1'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7
+'!MainUnitHasTitleStatementCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#23
+'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'
+#4'Left'#2#0#6'Height'#2#3#3'Top'#2'\'#5'Width'#3#24#2#7'Anchors'#11#5'akTop'
+#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6#0#0#242#2#1#9'TCheckBox)Ma'
+'inUnitHasUsesSectionForAllUnitsCheckBox'#22'AnchorSideLeft.Control'#7#5'Own'
+'er'#21'AnchorSideTop.Control'#7#30'MainUnitIsPascalSourceCheckBox'#18'Ancho'
+'rSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#17#3'Top'#2#23#5'Widt'
+'h'#3#233#0#17'BorderSpacing.Top'#2#6#7'Caption'#6')MainUnitHasUsesSectionFo'
+'rAllUnitsCheckBox'#8'TabOrder'#2#0#0#0#242#2#2#9'TCheckBox''MainUnitHasCrea'
+'teFormStatementsCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSi'
+'deTop.Control'#7')MainUnitHasUsesSectionForAllUnitsCheckBox'#18'AnchorSideT'
+'op.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#17#3'Top'#2'.'#5'Width'#3
+#236#0#17'BorderSpacing.Top'#2#6#7'Caption'#6'''MainUnitHasCreateFormStateme'
+'ntsCheckBox'#8'TabOrder'#2#1#0#0#242#2#3#9'TCheckBox'#30'MainUnitIsPascalSo'
+'urceCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Contro'
+'l'#7#5'Owner'#4'Left'#2#0#6'Height'#2#17#3'Top'#2#0#5'Width'#3#178#0#7'Capt'
+'ion'#6#30'MainUnitIsPascalSourceCheckBox'#8'TabOrder'#2#2#0#0#242#2#4#9'TCh'
+'eckBox!MainUnitHasTitleStatementCheckBox'#22'AnchorSideLeft.Control'#7#5'Ow'
+'ner'#21'AnchorSideTop.Control'#7'''MainUnitHasCreateFormStatementsCheckBox'
+#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#17#3'Top'#2'E'
+#5'Width'#3#194#0#17'BorderSpacing.Top'#2#6#7'Caption'#6'!MainUnitHasTitleSt'
+'atementCheckBox'#8'TabOrder'#2#3#0#0#242#2#5#9'TCheckBox'#16'RunnableCheckB'
+'ox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#6'Bev'
+'el1'#4'Left'#2#0#6'Height'#2#17#3'Top'#2'b'#5'Width'#2'n'#17'BorderSpacing.'
+'Top'#2#6#7'Caption'#6#16'RunnableCheckBox'#8'TabOrder'#2#4#0#0#242#2#6#9'TC'
+'heckBox'#19'AlwaysBuildCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'A'
+'nchorSideTop.Control'#7#16'RunnableCheckBox'#18'AnchorSideTop.Side'#7#9'asr'
+'Bottom'#4'Left'#2#0#6'Height'#2#17#3'Top'#2'y'#5'Width'#2'y'#17'BorderSpaci'
+'ng.Top'#2#6#7'Caption'#6#19'AlwaysBuildCheckBox'#8'TabOrder'#2#5#0#0#242#2#7
+#9'TCheckBox'#22'LRSInOutputDirCheckBox'#22'AnchorSideLeft.Control'#7#5'Owne'
+'r'#21'AnchorSideTop.Control'#7#19'AlwaysBuildCheckBox'#18'AnchorSideTop.Sid'
+'e'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#17#3'Top'#3#144#0#5'Width'#3#140#0
+#17'BorderSpacing.Top'#2#6#7'Caption'#6#22'LRSInOutputDirCheckBox'#8'TabOrde'
+'r'#2#6#0#0#242#2#8#9'TGroupBox'#16'ResourceGroupBox'#22'AnchorSideLeft.Cont'
+'rol'#7#5'Owner'#21'AnchorSideTop.Control'#7#22'LRSInOutputDirCheckBox'#18'A'
+'nchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'#20
+'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2'Q'#3'Top'#3#167
+#0#5'Width'#3#24#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSp'
+'acing.Top'#2#6#7'Caption'#6#16'ResourceGroupBox'#28'ChildSizing.LeftRightSp'
+'acing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHoriz'
+'ontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24
+'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChi'
+'lds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Lay'
+'out'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1
+#12'ClientHeight'#2'?'#11'ClientWidth'#3#20#2#8'TabOrder'#2#7#0#12'TRadioBut'
+'ton'#22'UseLRSFilesRadioButton'#4'Left'#2#6#6'Height'#2#26#3'Top'#2#6#5'Wid'
+'th'#3#8#2#7'Caption'#6#22'UseLRSFilesRadioButton'#7'Checked'#9#14'ParentSho'
+'wHint'#8#8'ShowHint'#9#5'State'#7#9'cbChecked'#8'TabOrder'#2#0#0#0#12'TRadi'
+'oButton'#26'UseFPCResourcesRadioButton'#4'Left'#2#6#6'Height'#2#25#3'Top'#2
+' '#5'Width'#3#8#2#7'Caption'#6#26'UseFPCResourcesRadioButton'#14'ParentShow'
+'Hint'#8#8'ShowHint'#9#8'TabOrder'#2#1#7'TabStop'#8#0#0#0#0
]);

View File

@ -0,0 +1,123 @@
unit project_misc_options;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, 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;
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
{ 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;
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);
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(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
{$I project_misc_options.lrs}
RegisterIDEOptionsEditor(GroupProject, TProjectMiscOptionsFrame, ProjectOptionsMisc);
end.

View File

@ -0,0 +1,58 @@
inherited ProjectSaveOptionsFrame: TProjectSaveOptionsFrame
TabOrder = 0
DesignLeft = 617
DesignTop = 390
object SaveClosedUnitInfoCheckBox: TCheckBox[0]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 17
Top = 0
Width = 320
Align = alTop
Caption = 'SaveClosedUnitInfoCheckBox'
TabOrder = 0
end
object SaveOnlyProjectUnitInfoCheckBox: TCheckBox[1]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = SaveClosedUnitInfoCheckBox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 17
Top = 23
Width = 320
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6
Caption = 'SaveOnlyProjectUnitInfoCheckBox'
TabOrder = 1
end
object SaveSessionLocationRadioGroup: TRadioGroup[2]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = SaveOnlyProjectUnitInfoCheckBox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 4
Top = 46
Width = 320
Anchors = [akTop, akLeft, akRight]
AutoFill = True
AutoSize = True
BorderSpacing.Top = 6
Caption = 'SaveSessionLocationRadioGroup'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
TabOrder = 2
end
end

View File

@ -0,0 +1,29 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TProjectSaveOptionsFrame','FORMDATA',[
'TPF0'#241#24'TProjectSaveOptionsFrame'#23'ProjectSaveOptionsFrame'#8'TabOrde'
+'r'#2#0#10'DesignLeft'#3'i'#2#9'DesignTop'#3#134#1#0#242#2#0#9'TCheckBox'#26
+'SaveClosedUnitInfoCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'Anchor'
+'SideTop.Control'#7#5'Owner'#23'AnchorSideRight.Control'#7#5'Owner'#20'Ancho'
+'rSideRight.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#17#3'Top'#2#0#5'Wid'
+'th'#3'@'#1#5'Align'#7#5'alTop'#7'Caption'#6#26'SaveClosedUnitInfoCheckBox'#8
+'TabOrder'#2#0#0#0#242#2#1#9'TCheckBox'#31'SaveOnlyProjectUnitInfoCheckBox'
+#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#26'SaveCl'
+'osedUnitInfoCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRi'
+'ght.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#0
+#6'Height'#2#17#3'Top'#2#23#5'Width'#3'@'#1#7'Anchors'#11#5'akTop'#6'akLeft'
+#7'akRight'#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#31'SaveOnlyProjectUnitI'
+'nfoCheckBox'#8'TabOrder'#2#1#0#0#242#2#2#11'TRadioGroup'#29'SaveSessionLoca'
+'tionRadioGroup'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Cont'
+'rol'#7#31'SaveOnlyProjectUnitInfoCheckBox'#18'AnchorSideTop.Side'#7#9'asrBo'
+'ttom'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'a'
+'srBottom'#4'Left'#2#0#6'Height'#2#4#3'Top'#2'.'#5'Width'#3'@'#1#7'Anchors'
+#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoFill'#9#8'AutoSize'#9#17'BorderSpa'
+'cing.Top'#2#6#7'Caption'#6#29'SaveSessionLocationRadioGroup'#28'ChildSizing'
+'.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.'
+'EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVer'
+'tical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14
+'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'Chil'
+'dSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.Controls'
+'PerLine'#2#1#8'TabOrder'#2#2#0#0#0
]);

View File

@ -0,0 +1,112 @@
unit project_save_options;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, Project, IDEOptionsIntf, ProjectIntf, LCLProc,
LazarusIDEStrConsts, IDEProcs;
type
{ TProjectSaveOptionsFrame }
TProjectSaveOptionsFrame = class(TAbstractIDEOptionsEditor)
SaveClosedUnitInfoCheckBox: TCheckBox;
SaveOnlyProjectUnitInfoCheckBox: TCheckBox;
SaveSessionLocationRadioGroup: TRadioGroup;
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
function ProjectSessionStorageToLocalizedName(s: TProjectSessionStorage): string;
begin
case s of
pssInProjectInfo: Result := lisPOSaveInLpiFil;
pssInProjectDir: Result := lisPOSaveInLpsFileInProjectDirectory;
pssInIDEConfig: Result := lisPOSaveInIDEConfigDirectory;
pssNone: Result := lisPODoNotSaveAnySessionInfo;
else
RaiseGDBException('');
end;
end;
function LocalizedNameToProjectSessionStorage(const s: string): TProjectSessionStorage;
begin
for Result := Low(TProjectSessionStorage) to High(TProjectSessionStorage) do
if ProjectSessionStorageToLocalizedName(Result) = s then exit;
Result := pssInProjectInfo;
end;
{ TProjectSaveOptionsFrame }
function TProjectSaveOptionsFrame.GetTitle: string;
begin
Result := dlgPOSaveSession;
end;
procedure TProjectSaveOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
var
s: TProjectSessionStorage;
begin
SaveClosedUnitInfoCheckBox.Caption := dlgSaveEditorInfo;
SaveOnlyProjectUnitInfoCheckBox.Caption := dlgSaveEditorInfoProject;
SaveSessionLocationRadioGroup.Caption := lisPOSaveSessionInformationIn;
for s := Low(TProjectSessionStorage) to High(TProjectSessionStorage) do
SaveSessionLocationRadioGroup.Items.Add(ProjectSessionStorageToLocalizedName(s));
end;
procedure TProjectSaveOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions as TProject do
begin
SaveClosedUnitInfoCheckBox.Checked := (pfSaveClosedUnits in Flags);
SaveOnlyProjectUnitInfoCheckBox.Checked := (pfSaveOnlyProjectUnits in Flags);
SaveSessionLocationRadioGroup.ItemIndex := ord(SessionStorage);
end;
end;
procedure TProjectSaveOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
var
AFlags: TProjectFlags;
begin
with AOptions as TProject do
begin
AFlags := Flags;
if SaveClosedUnitInfoCheckBox.Checked then
include(AFlags, pfSaveClosedUnits)
else
exclude(AFlags, pfSaveClosedUnits);
if SaveOnlyProjectUnitInfoCheckBox.Checked then
include(AFlags, pfSaveOnlyProjectUnits)
else
exclude(AFlags, pfSaveOnlyProjectUnits);
if SaveSessionLocationRadioGroup.ItemIndex >= 0 then
SessionStorage := LocalizedNameToProjectSessionStorage(
SaveSessionLocationRadioGroup.Items[
SaveSessionLocationRadioGroup.ItemIndex]);
Flags := AFlags;
end;
end;
class function TProjectSaveOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
begin
Result := TProject;
end;
initialization
{$I project_save_options.lrs}
RegisterIDEOptionsEditor(GroupProject, TProjectSaveOptionsFrame, ProjectOptionsSave);
end.

View File

@ -0,0 +1,295 @@
inherited ProjectVersionInfoOptionsFrame: TProjectVersionInfoOptionsFrame
Height = 364
Width = 594
ClientHeight = 364
ClientWidth = 594
TabOrder = 0
DesignLeft = 273
DesignTop = 145
object VersionInfoGroupBox: TGroupBox[0]
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 0
Height = 100
Top = 23
Width = 594
Align = alTop
AutoSize = True
BorderSpacing.Top = 6
Caption = 'Version Numbering'
ClientHeight = 82
ClientWidth = 590
TabOrder = 0
object VersionLabel: TLabel
AnchorSideLeft.Control = VersionInfoGroupBox
AnchorSideTop.Control = VersionInfoGroupBox
Left = 6
Height = 14
Top = 6
Width = 40
BorderSpacing.Around = 6
Caption = 'Version:'
ParentColor = False
end
object MajorRevisionLabel: TLabel
AnchorSideLeft.Control = VersionSpinEdit
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = VersionInfoGroupBox
Left = 106
Height = 14
Top = 6
Width = 75
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'Major Revision:'
ParentColor = False
end
object MinorRevisionLabel: TLabel
AnchorSideLeft.Control = MajorRevisionSpinEdit
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = VersionInfoGroupBox
Left = 206
Height = 14
Top = 6
Width = 74
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'Minor Revision:'
ParentColor = False
end
object BuildLabel: TLabel
AnchorSideLeft.Control = MinorRevisionSpinEdit
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = VersionInfoGroupBox
Left = 306
Height = 14
Top = 6
Width = 27
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'Build:'
ParentColor = False
end
object VersionSpinEdit: TSpinEdit
AnchorSideLeft.Control = VersionLabel
AnchorSideTop.Control = VersionLabel
AnchorSideTop.Side = asrBottom
Left = 6
Height = 21
Top = 26
Width = 70
MaxValue = 65535
TabOrder = 0
end
object MajorRevisionSpinEdit: TSpinEdit
AnchorSideLeft.Control = MajorRevisionLabel
AnchorSideTop.Control = MajorRevisionLabel
AnchorSideTop.Side = asrBottom
Left = 106
Height = 21
Top = 26
Width = 70
MaxValue = 65535
TabOrder = 1
end
object MinorRevisionSpinEdit: TSpinEdit
AnchorSideLeft.Control = MinorRevisionLabel
AnchorSideTop.Control = MinorRevisionLabel
AnchorSideTop.Side = asrBottom
Left = 206
Height = 21
Top = 26
Width = 70
MaxValue = 65535
TabOrder = 2
end
object AutomaticallyIncreaseBuildCheckBox: TCheckBox
AnchorSideLeft.Control = VersionInfoGroupBox
AnchorSideTop.Control = VersionSpinEdit
AnchorSideTop.Side = asrBottom
Left = 6
Height = 17
Top = 59
Width = 150
BorderSpacing.Top = 6
BorderSpacing.Around = 6
Caption = 'Automatically increase Build'
TabOrder = 4
end
object BuildSpinEdit: TSpinEdit
AnchorSideLeft.Control = BuildLabel
AnchorSideTop.Control = BuildLabel
AnchorSideTop.Side = asrBottom
Left = 306
Height = 21
Top = 26
Width = 70
MaxValue = 65535
TabOrder = 3
end
end
object UseVersionInfoCheckBox: TCheckBox[1]
Left = 0
Height = 17
Top = 0
Width = 594
Align = alTop
Caption = 'Include Version Info in executable'
OnChange = UseVersionInfoCheckBoxChange
TabOrder = 1
end
object LanguageSettingsGroupBox: TGroupBox[2]
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 0
Height = 71
Top = 129
Width = 594
Align = alTop
AutoSize = True
BorderSpacing.Top = 6
Caption = 'Language Options'
ClientHeight = 53
ClientWidth = 590
TabOrder = 2
object LanguageSelectionLabel: TLabel
AnchorSideLeft.Control = LanguageSettingsGroupBox
AnchorSideTop.Control = LanguageSettingsGroupBox
Left = 6
Height = 14
Top = 6
Width = 98
BorderSpacing.Around = 6
Caption = 'Language Selection:'
ParentColor = False
end
object CharacterSetLabel: TLabel
AnchorSideLeft.Control = LanguageSelectionComboBox
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = LanguageSettingsGroupBox
Left = 260
Height = 14
Top = 6
Width = 72
BorderSpacing.Around = 6
Caption = 'Character Set:'
ParentColor = False
end
object LanguageSelectionComboBox: TComboBox
AnchorSideLeft.Control = LanguageSelectionLabel
AnchorSideTop.Control = LanguageSelectionLabel
AnchorSideTop.Side = asrBottom
Left = 6
Height = 21
Top = 26
Width = 248
BorderSpacing.Top = 2
BorderSpacing.Bottom = 6
ItemHeight = 13
TabOrder = 0
Text = 'U.S. English'
end
object CharacterSetComboBox: TComboBox
AnchorSideLeft.Control = CharacterSetLabel
AnchorSideTop.Control = LanguageSelectionComboBox
AnchorSideRight.Control = LanguageSettingsGroupBox
AnchorSideRight.Side = asrBottom
Left = 260
Height = 21
Top = 26
Width = 324
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
ItemHeight = 13
TabOrder = 1
Text = 'Multilingual'
end
end
object OtherInfoGroupBox: TGroupBox[3]
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 0
Height = 107
Top = 206
Width = 594
Align = alTop
AutoSize = True
BorderSpacing.Top = 6
Caption = 'Other Info'
ClientHeight = 89
ClientWidth = 590
TabOrder = 3
object DescriptionLabel: TLabel
AnchorSideTop.Control = DescriptionEdit
AnchorSideTop.Side = asrCenter
Left = 6
Height = 14
Top = 9
Width = 58
BorderSpacing.Left = 6
Caption = 'Description:'
ParentColor = False
end
object CopyrightLabel: TLabel
AnchorSideLeft.Control = DescriptionLabel
AnchorSideTop.Control = CopyrightEdit
AnchorSideTop.Side = asrCenter
Left = 6
Height = 14
Top = 36
Width = 52
Caption = 'Copyright:'
ParentColor = False
end
object DescriptionEdit: TEdit
AnchorSideLeft.Control = DescriptionLabel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = OtherInfoGroupBox
AnchorSideRight.Control = OtherInfoGroupBox
AnchorSideRight.Side = asrBottom
Left = 74
Height = 21
Top = 6
Width = 510
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 10
BorderSpacing.Top = 6
BorderSpacing.Right = 6
TabOrder = 0
end
object CopyrightEdit: TEdit
AnchorSideLeft.Control = DescriptionEdit
AnchorSideTop.Control = DescriptionEdit
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = OtherInfoGroupBox
AnchorSideRight.Side = asrBottom
Left = 74
Height = 21
Top = 33
Width = 510
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6
BorderSpacing.Right = 6
TabOrder = 1
end
object AdditionalInfoButton: TBitBtn
AnchorSideTop.Control = CopyrightEdit
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = OtherInfoGroupBox
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Side = asrBottom
Left = 488
Height = 23
Top = 60
Width = 96
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Around = 6
Caption = 'Additional Info'
NumGlyphs = 0
OnClick = AdditionalInfoButtonClick
TabOrder = 2
end
end
end

View File

@ -0,0 +1,105 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TProjectVersionInfoOptionsFrame','FORMDATA',[
'TPF0'#241#31'TProjectVersionInfoOptionsFrame'#30'ProjectVersionInfoOptionsFr'
+'ame'#6'Height'#3'l'#1#5'Width'#3'R'#2#12'ClientHeight'#3'l'#1#11'ClientWidt'
+'h'#3'R'#2#8'TabOrder'#2#0#10'DesignLeft'#3#17#1#9'DesignTop'#3#145#0#0#242#2
+#0#9'TGroupBox'#19'VersionInfoGroupBox'#18'AnchorSideTop.Side'#7#9'asrBottom'
+#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2'd'#3'Top'#2
+#23#5'Width'#3'R'#2#5'Align'#7#5'alTop'#8'AutoSize'#9#17'BorderSpacing.Top'#2
+#6#7'Caption'#6#17'Version Numbering'#12'ClientHeight'#2'R'#11'ClientWidth'#3
+'N'#2#8'TabOrder'#2#0#0#6'TLabel'#12'VersionLabel'#22'AnchorSideLeft.Control'
+#7#19'VersionInfoGroupBox'#21'AnchorSideTop.Control'#7#19'VersionInfoGroupBo'
+'x'#4'Left'#2#6#6'Height'#2#14#3'Top'#2#6#5'Width'#2'('#20'BorderSpacing.Aro'
+'und'#2#6#7'Caption'#6#8'Version:'#11'ParentColor'#8#0#0#6'TLabel'#18'MajorR'
+'evisionLabel'#22'AnchorSideLeft.Control'#7#15'VersionSpinEdit'#19'AnchorSid'
+'eLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#19'VersionInfoGroupB'
+'ox'#4'Left'#2'j'#6'Height'#2#14#3'Top'#2#6#5'Width'#2'K'#18'BorderSpacing.L'
+'eft'#2#24#20'BorderSpacing.Around'#2#6#7'Caption'#6#15'Major Revision:'#11
+'ParentColor'#8#0#0#6'TLabel'#18'MinorRevisionLabel'#22'AnchorSideLeft.Contr'
+'ol'#7#21'MajorRevisionSpinEdit'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'A'
+'nchorSideTop.Control'#7#19'VersionInfoGroupBox'#4'Left'#3#206#0#6'Height'#2
+#14#3'Top'#2#6#5'Width'#2'J'#18'BorderSpacing.Left'#2#24#20'BorderSpacing.Ar'
+'ound'#2#6#7'Caption'#6#15'Minor Revision:'#11'ParentColor'#8#0#0#6'TLabel'
+#10'BuildLabel'#22'AnchorSideLeft.Control'#7#21'MinorRevisionSpinEdit'#19'An'
+'chorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#19'VersionInf'
+'oGroupBox'#4'Left'#3'2'#1#6'Height'#2#14#3'Top'#2#6#5'Width'#2#27#18'Border'
+'Spacing.Left'#2#24#20'BorderSpacing.Around'#2#6#7'Caption'#6#6'Build:'#11'P'
+'arentColor'#8#0#0#9'TSpinEdit'#15'VersionSpinEdit'#22'AnchorSideLeft.Contro'
+'l'#7#12'VersionLabel'#21'AnchorSideTop.Control'#7#12'VersionLabel'#18'Ancho'
+'rSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#21#3'Top'#2#26#5'Widt'
+'h'#2'F'#8'MaxValue'#4#255#255#0#0#8'TabOrder'#2#0#0#0#9'TSpinEdit'#21'Major'
+'RevisionSpinEdit'#22'AnchorSideLeft.Control'#7#18'MajorRevisionLabel'#21'An'
+'chorSideTop.Control'#7#18'MajorRevisionLabel'#18'AnchorSideTop.Side'#7#9'as'
+'rBottom'#4'Left'#2'j'#6'Height'#2#21#3'Top'#2#26#5'Width'#2'F'#8'MaxValue'#4
+#255#255#0#0#8'TabOrder'#2#1#0#0#9'TSpinEdit'#21'MinorRevisionSpinEdit'#22'A'
+'nchorSideLeft.Control'#7#18'MinorRevisionLabel'#21'AnchorSideTop.Control'#7
+#18'MinorRevisionLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#206#0
+#6'Height'#2#21#3'Top'#2#26#5'Width'#2'F'#8'MaxValue'#4#255#255#0#0#8'TabOrd'
+'er'#2#2#0#0#9'TCheckBox"AutomaticallyIncreaseBuildCheckBox'#22'AnchorSideLe'
+'ft.Control'#7#19'VersionInfoGroupBox'#21'AnchorSideTop.Control'#7#15'Versio'
+'nSpinEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#17
+#3'Top'#2';'#5'Width'#3#150#0#17'BorderSpacing.Top'#2#6#20'BorderSpacing.Aro'
+'und'#2#6#7'Caption'#6#28'Automatically increase Build'#8'TabOrder'#2#4#0#0#9
+'TSpinEdit'#13'BuildSpinEdit'#22'AnchorSideLeft.Control'#7#10'BuildLabel'#21
+'AnchorSideTop.Control'#7#10'BuildLabel'#18'AnchorSideTop.Side'#7#9'asrBotto'
+'m'#4'Left'#3'2'#1#6'Height'#2#21#3'Top'#2#26#5'Width'#2'F'#8'MaxValue'#4#255
+#255#0#0#8'TabOrder'#2#3#0#0#0#242#2#1#9'TCheckBox'#22'UseVersionInfoCheckBo'
+'x'#4'Left'#2#0#6'Height'#2#17#3'Top'#2#0#5'Width'#3'R'#2#5'Align'#7#5'alTop'
+#7'Caption'#6'"Include Version Info in executable'#8'OnChange'#7#28'UseVersi'
+'onInfoCheckBoxChange'#8'TabOrder'#2#1#0#0#242#2#2#9'TGroupBox'#24'LanguageS'
+'ettingsGroupBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#20'AnchorSideRight.S'
+'ide'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2'G'#3'Top'#3#129#0#5'Width'#3'R'
+#2#5'Align'#7#5'alTop'#8'AutoSize'#9#17'BorderSpacing.Top'#2#6#7'Caption'#6
+#16'Language Options'#12'ClientHeight'#2'5'#11'ClientWidth'#3'N'#2#8'TabOrde'
+'r'#2#2#0#6'TLabel'#22'LanguageSelectionLabel'#22'AnchorSideLeft.Control'#7
+#24'LanguageSettingsGroupBox'#21'AnchorSideTop.Control'#7#24'LanguageSetting'
+'sGroupBox'#4'Left'#2#6#6'Height'#2#14#3'Top'#2#6#5'Width'#2'b'#20'BorderSpa'
+'cing.Around'#2#6#7'Caption'#6#19'Language Selection:'#11'ParentColor'#8#0#0
+#6'TLabel'#17'CharacterSetLabel'#22'AnchorSideLeft.Control'#7#25'LanguageSel'
+'ectionComboBox'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Con'
+'trol'#7#24'LanguageSettingsGroupBox'#4'Left'#3#4#1#6'Height'#2#14#3'Top'#2#6
+#5'Width'#2'H'#20'BorderSpacing.Around'#2#6#7'Caption'#6#14'Character Set:'
+#11'ParentColor'#8#0#0#9'TComboBox'#25'LanguageSelectionComboBox'#22'AnchorS'
+'ideLeft.Control'#7#22'LanguageSelectionLabel'#21'AnchorSideTop.Control'#7#22
+'LanguageSelectionLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6
+'Height'#2#21#3'Top'#2#26#5'Width'#3#248#0#17'BorderSpacing.Top'#2#2#20'Bord'
+'erSpacing.Bottom'#2#6#10'ItemHeight'#2#13#8'TabOrder'#2#0#4'Text'#6#12'U.S.'
,' English'#0#0#9'TComboBox'#20'CharacterSetComboBox'#22'AnchorSideLeft.Contr'
+'ol'#7#17'CharacterSetLabel'#21'AnchorSideTop.Control'#7#25'LanguageSelectio'
+'nComboBox'#23'AnchorSideRight.Control'#7#24'LanguageSettingsGroupBox'#20'An'
+'chorSideRight.Side'#7#9'asrBottom'#4'Left'#3#4#1#6'Height'#2#21#3'Top'#2#26
+#5'Width'#3'D'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#19'BorderSpac'
+'ing.Right'#2#6#20'BorderSpacing.Bottom'#2#6#10'ItemHeight'#2#13#8'TabOrder'
+#2#1#4'Text'#6#12'Multilingual'#0#0#0#242#2#3#9'TGroupBox'#17'OtherInfoGroup'
+'Box'#18'AnchorSideTop.Side'#7#9'asrBottom'#20'AnchorSideRight.Side'#7#9'asr'
+'Bottom'#4'Left'#2#0#6'Height'#2'k'#3'Top'#3#206#0#5'Width'#3'R'#2#5'Align'#7
+#5'alTop'#8'AutoSize'#9#17'BorderSpacing.Top'#2#6#7'Caption'#6#10'Other Info'
+#12'ClientHeight'#2'Y'#11'ClientWidth'#3'N'#2#8'TabOrder'#2#3#0#6'TLabel'#16
+'DescriptionLabel'#21'AnchorSideTop.Control'#7#15'DescriptionEdit'#18'Anchor'
+'SideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#14#3'Top'#2#9#5'Width'
+#2':'#18'BorderSpacing.Left'#2#6#7'Caption'#6#12'Description:'#11'ParentColo'
+'r'#8#0#0#6'TLabel'#14'CopyrightLabel'#22'AnchorSideLeft.Control'#7#16'Descr'
+'iptionLabel'#21'AnchorSideTop.Control'#7#13'CopyrightEdit'#18'AnchorSideTop'
+'.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#14#3'Top'#2'$'#5'Width'#2'4'#7
+'Caption'#6#10'Copyright:'#11'ParentColor'#8#0#0#5'TEdit'#15'DescriptionEdit'
+#22'AnchorSideLeft.Control'#7#16'DescriptionLabel'#19'AnchorSideLeft.Side'#7
+#9'asrBottom'#21'AnchorSideTop.Control'#7#17'OtherInfoGroupBox'#23'AnchorSid'
+'eRight.Control'#7#17'OtherInfoGroupBox'#20'AnchorSideRight.Side'#7#9'asrBot'
+'tom'#4'Left'#2'J'#6'Height'#2#21#3'Top'#2#6#5'Width'#3#254#1#7'Anchors'#11#5
+'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#10#17'BorderSpacing.'
+'Top'#2#6#19'BorderSpacing.Right'#2#6#8'TabOrder'#2#0#0#0#5'TEdit'#13'Copyri'
+'ghtEdit'#22'AnchorSideLeft.Control'#7#15'DescriptionEdit'#21'AnchorSideTop.'
+'Control'#7#15'DescriptionEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'Anc'
+'horSideRight.Control'#7#17'OtherInfoGroupBox'#20'AnchorSideRight.Side'#7#9
+'asrBottom'#4'Left'#2'J'#6'Height'#2#21#3'Top'#2'!'#5'Width'#3#254#1#7'Ancho'
+'rs'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6#19'BorderS'
+'pacing.Right'#2#6#8'TabOrder'#2#1#0#0#7'TBitBtn'#20'AdditionalInfoButton'#21
+'AnchorSideTop.Control'#7#13'CopyrightEdit'#18'AnchorSideTop.Side'#7#9'asrBo'
+'ttom'#23'AnchorSideRight.Control'#7#17'OtherInfoGroupBox'#20'AnchorSideRigh'
+'t.Side'#7#9'asrBottom'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3
+#232#1#6'Height'#2#23#3'Top'#2'<'#5'Width'#2'`'#7'Anchors'#11#5'akTop'#7'akR'
+'ight'#0#8'AutoSize'#9#20'BorderSpacing.Around'#2#6#7'Caption'#6#15'Addition'
+'al Info'#9'NumGlyphs'#2#0#7'OnClick'#7#25'AdditionalInfoButtonClick'#8'TabO'
+'rder'#2#2#0#0#0#0
]);

View File

@ -0,0 +1,153 @@
unit project_versioninfo_options;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Spin, Buttons, Project, IDEOptionsIntf, LazarusIDEStrConsts,
W32VersionInfo, VersionInfoAdditionalInfo;
type
{ TProjectVersionInfoOptionsFrame }
TProjectVersionInfoOptionsFrame = class(TAbstractIDEOptionsEditor)
AdditionalInfoButton: TBitBtn;
AutomaticallyIncreaseBuildCheckBox: TCheckBox;
BuildLabel: TLabel;
BuildSpinEdit: TSpinEdit;
CharacterSetComboBox: TComboBox;
CharacterSetLabel: TLabel;
CopyrightEdit: TEdit;
CopyrightLabel: TLabel;
DescriptionEdit: TEdit;
DescriptionLabel: TLabel;
LanguageSelectionComboBox: TComboBox;
LanguageSelectionLabel: TLabel;
LanguageSettingsGroupBox: TGroupBox;
MajorRevisionLabel: TLabel;
MajorRevisionSpinEdit: TSpinEdit;
MinorRevisionLabel: TLabel;
MinorRevisionSpinEdit: TSpinEdit;
OtherInfoGroupBox: TGroupBox;
UseVersionInfoCheckBox: TCheckBox;
VersionInfoGroupBox: TGroupBox;
VersionLabel: TLabel;
VersionSpinEdit: TSpinEdit;
procedure AdditionalInfoButtonClick(Sender: TObject);
procedure UseVersionInfoCheckBoxChange(Sender: TObject);
private
FProject: TProject;
procedure EnableVersionInfo(UseVersionInfo: boolean);
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
{ TProjectVersionInfoOptionsFrame }
procedure TProjectVersionInfoOptionsFrame.UseVersionInfoCheckBoxChange(Sender: TObject);
begin
EnableVersionInfo(UseVersionInfoCheckBox.Checked);
end;
procedure TProjectVersionInfoOptionsFrame.AdditionalInfoButtonClick(Sender: TObject);
begin
ShowVersionInfoAdditionailInfoForm(FProject.Resources.VersionInfo);
end;
procedure TProjectVersionInfoOptionsFrame.EnableVersionInfo(UseVersionInfo: boolean);
begin
VersionInfoGroupBox.Enabled := UseVersionInfo;
LanguageSettingsGroupBox.Enabled := UseVersionInfo;
OtherInfoGroupBox.Enabled := UseVersionInfo;
end;
function TProjectVersionInfoOptionsFrame.GetTitle: string;
begin
Result := VersionInfoTitle;
end;
procedure TProjectVersionInfoOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
begin
UseVersionInfoCheckBox.Caption := rsIncludeVersionInfoInExecutable;
VersionInfoGroupBox.Caption := rsVersionNumbering;
VersionLabel.Caption := rsVersion;
MajorRevisionLabel.Caption := rsMajorRevision;
MinorRevisionLabel.Caption := rsMinorRevision;
BuildLabel.Caption := rsBuild;
AutomaticallyIncreaseBuildCheckBox.Caption := rsAutomaticallyIncreaseBuildNumber;
LanguageSettingsGroupBox.Caption := rsLanguageOptions;
LanguageSelectionLabel.Caption := rsLanguageSelection;
CharacterSetLabel.Caption := rsCharacterSet;
OtherInfoGroupBox.Caption := rsOtherInfo;
DescriptionLabel.Caption := lisCodeToolsDefsDescription;
CopyrightLabel.Caption := rsCopyright;
AdditionalInfoButton.Caption := rsAdditionalInfo;
AdditionalInfoButton.LoadGlyphFromLazarusResource('laz_add');
end;
procedure TProjectVersionInfoOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
begin
FProject := AOptions as TProject;
with FProject do
begin
UseVersionInfoCheckBox.Checked := Resources.VersionInfo.UseVersionInfo;
VersionSpinEdit.Value := Resources.VersionInfo.VersionNr;
MajorRevisionSpinEdit.Value := Resources.VersionInfo.MajorRevNr;
MinorRevisionSpinEdit.Value := Resources.VersionInfo.MinorRevNr;
BuildSpinEdit.Value := Resources.VersionInfo.BuildNr;
EnableVersionInfo(Resources.VersionInfo.UseVersionInfo);
if Resources.VersionInfo.AutoIncrementBuild then
AutomaticallyIncreaseBuildCheckBox.Checked := True;
LanguageSelectionComboBox.Items.Assign(MSLanguages);
LanguageSelectionComboBox.ItemIndex :=
MSHexLanguages.IndexOf(Resources.VersionInfo.HexLang);
LanguageSelectionComboBox.Sorted := True;
CharacterSetComboBox.Items.Assign(MSCharacterSets);
CharacterSetComboBox.ItemIndex :=
MSHexCharacterSets.IndexOf(Resources.VersionInfo.HexCharSet);
CharacterSetComboBox.Sorted := True;
DescriptionEdit.Text := Resources.VersionInfo.DescriptionString;
CopyrightEdit.Text := Resources.VersionInfo.CopyrightString;
end;
end;
procedure TProjectVersionInfoOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions as TProject do
begin
Resources.VersionInfo.UseVersionInfo := UseVersionInfoCheckBox.Checked;
Resources.VersionInfo.AutoIncrementBuild := AutomaticallyIncreaseBuildCheckBox.Checked;
Resources.VersionInfo.VersionNr := VersionSpinEdit.Value;
Resources.VersionInfo.MajorRevNr := MajorRevisionSpinEdit.Value;
Resources.VersionInfo.MinorRevNr := MinorRevisionSpinEdit.Value;
Resources.VersionInfo.BuildNr := BuildSpinEdit.Value;
Resources.VersionInfo.DescriptionString := DescriptionEdit.Text;
Resources.VersionInfo.CopyrightString := CopyrightEdit.Text;
Resources.VersionInfo.HexLang := MSLanguageToHex(LanguageSelectionComboBox.Text);
Resources.VersionInfo.HexCharSet := MSCharacterSetToHex(CharacterSetComboBox.Text);
end;
end;
class function TProjectVersionInfoOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
begin
Result := TProject;
end;
initialization
{$I project_versioninfo_options.lrs}
RegisterIDEOptionsEditor(GroupProject, TProjectVersionInfoOptionsFrame,
ProjectOptionsVersionInfo);
end.

View File

@ -43,7 +43,7 @@
<PackageName Value="SynEdit"/>
</Item4>
</RequiredPackages>
<Units Count="52">
<Units Count="59">
<Unit0>
<Filename Value="lazarus.pp"/>
<IsPartOfProject Value="True"/>
@ -400,6 +400,55 @@
<ResourceBaseClass Value="Form"/>
<UnitName Value="AskCompNameDlg"/>
</Unit51>
<Unit52>
<Filename Value="frames/project_application_options.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ProjectApplicationOptionsFrame"/>
<ResourceBaseClass Value="Frame"/>
<UnitName Value="project_application_options"/>
</Unit52>
<Unit53>
<Filename Value="frames/project_forms_options.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ProjectFormsOptionsFrame"/>
<ResourceBaseClass Value="Frame"/>
<UnitName Value="project_forms_options"/>
</Unit53>
<Unit54>
<Filename Value="frames/project_lazdoc_options.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ProjectLazDocOptionsFrame"/>
<ResourceBaseClass Value="Frame"/>
<UnitName Value="project_lazdoc_options"/>
</Unit54>
<Unit55>
<Filename Value="frames/project_save_options.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ProjectSaveOptionsFrame"/>
<ResourceBaseClass Value="Frame"/>
<UnitName Value="project_save_options"/>
</Unit55>
<Unit56>
<Filename Value="frames/project_versioninfo_options.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ProjectVersionInfoOptionsFrame"/>
<ResourceBaseClass Value="Frame"/>
<UnitName Value="project_versioninfo_options"/>
</Unit56>
<Unit57>
<Filename Value="frames/project_i18n_options.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ProjectI18NOptionsFrame"/>
<ResourceBaseClass Value="Frame"/>
<UnitName Value="project_i18n_options"/>
</Unit57>
<Unit58>
<Filename Value="frames/project_misc_options.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="ProjectMiscOptionsFrame"/>
<ResourceBaseClass Value="Frame"/>
<UnitName Value="project_misc_options"/>
</Unit58>
</Units>
</ProjectOptions>
<CompilerOptions>

View File

@ -80,7 +80,7 @@ uses
Compiler, CompilerOptions, CompilerOptionsDlg, CheckCompilerOpts,
ApplicationBundle, ImExportCompilerOpts, InfoBuild,
// projects
ProjectResources, Project, ProjectDefs, NewProjectDlg, ProjectOpts,
ProjectResources, Project, ProjectDefs, NewProjectDlg,
PublishProjectDlg, ProjectInspector, PackageDefs,
// help manager
IDEContextHelpEdit, IDEHelpIntf, HelpManager, CodeHelp, HelpOptions,
@ -103,8 +103,9 @@ uses
ChgEncodingDlg, DelphiUnit2Laz, DelphiProject2Laz, LazXMLForms,
// rest of the ide
Splash, IDEDefs, LazarusIDEStrConsts, LazConf, MsgView, SearchResultView,
CodeTemplatesDlg, CodeBrowser, FindUnitDlg, OI_options, IdeOptionsDlg,
editor_general_options, formed_options,
CodeTemplatesDlg, CodeBrowser, FindUnitDlg, IdeOptionsDlg,
// environment options
editor_general_options, formed_options, OI_options,
files_options, desktop_options, window_options,
Backup_Options, naming_options, fpdoc_options,
editor_display_options, editor_keymapping_options, editor_mouseaction_options,
@ -120,6 +121,11 @@ uses
codeexplorer_update_options, codeexplorer_categories_options,
codeobserver_options,
help_general_options,
// project options
project_application_options, project_forms_options, project_lazdoc_options,
project_save_options, project_versioninfo_options, project_i18n_options,
project_misc_options,
PublishModule, EnvironmentOpts, TransferMacros, KeyMapping, IDETranslations,
IDEProcs, ExtToolDialog, ExtToolEditDlg, OutputFilter, JumpHistoryView,
BuildLazDialog, MiscOptions, InputHistory, UnitDependencies, ClipBoardHistory,
@ -357,6 +363,8 @@ type
procedure DoEditorOptionsAfterWrite(Sender: TObject);
procedure DoCodetoolsOptionsAfterWrite(Sender: TObject);
procedure DoCodeExplorerOptionsAfterWrite(Sender: TObject);
procedure DoProjectBeforeRead(Sender: TObject);
procedure DoProjectAfterWrite(Sender: TObject);
// SourceNotebook events
procedure OnSrcNoteBookActivated(Sender: TObject);
@ -3692,14 +3700,8 @@ begin
end;
procedure TMainIDE.mnuProjectOptionsClicked(Sender: TObject);
var
ActiveSrcEdit: TSourceEditor;
ActiveUnitInfo: TUnitInfo;
begin
BeginCodeTool(ActiveSrcEdit, ActiveUnitInfo, []);
if ShowProjectOptionsDialog(Project1)=mrOk then begin
UpdateCaption;
end;
DoOpenIDEOptions(nil, TAbstractIDEProjectOptions);
end;
function TMainIDE.UpdateProjectPOFile(AProject: TProject): TModalResult;
@ -4334,6 +4336,112 @@ begin
CodeExplorerView.Refresh(true);
end;
procedure TMainIDE.DoProjectBeforeRead(Sender: TObject);
var
ActiveSrcEdit: TSourceEditor;
ActiveUnitInfo: TUnitInfo;
begin
BeginCodeTool(ActiveSrcEdit, ActiveUnitInfo, []);
end;
procedure TMainIDE.DoProjectAfterWrite(Sender: TObject);
var
Project: TProject absolute Sender;
function GetTitle: String;
begin
Result := '';
if (Project = nil) or (Project.MainUnitID < 0) then
Exit;
CodeToolBoss.GetApplicationTitleStatement(Project.MainUnitInfo.Source, Result);
end;
function SetTitle: Boolean;
var
OldTitle: String;
begin
Result := True;
if (Project.MainUnitID < 0) or
(not (pfMainUnitHasTitleStatement in Project.Flags)) then
Exit;
OldTitle := GetTitle;
if (OldTitle = '') and Project.TitleIsDefault then
Exit;
if (OldTitle <> Project.Title) and (not Project.TitleIsDefault) then
if not CodeToolBoss.SetApplicationTitleStatement(Project.MainUnitInfo.Source, Project.Title) then
begin
MessageDlg(lisProjOptsError,
'Unable to change project title in source.'#13 +
CodeToolBoss.ErrorMessage,
mtWarning, [mbOk], 0);
Result := False;
Exit;
end;// set Application.Title:= statement
if (OldTitle <> '') and Project.TitleIsDefault then
if not CodeToolBoss.RemoveApplicationTitleStatement(Project.MainUnitInfo.Source) then
begin
MessageDlg(lisProjOptsError,
'Unable to remove project title from source.'#13 +
CodeToolBoss.ErrorMessage,
mtWarning, [mbOk], 0);
Result := False;
Exit;
end;// delete title
end;
function SetAutoCreateForms: boolean;
var
i: integer;
OldList: TStrings;
begin
Result := True;
if (Project.MainUnitID < 0) or
(not (pfMainUnitHasUsesSectionForAllUnits in Project.Flags)) then
Exit;
OldList := Project.GetAutoCreatedFormsList;
if (OldList = nil) then
Exit;
try
if OldList.Count = Project.TmpAutoCreatedForms.Count then
begin
{ Just exit if the form list is the same }
i := OldList.Count - 1;
while (i >= 0) and (CompareText(OldList[i], Project.TmpAutoCreatedForms[i]) = 0) do
Dec(i);
if i < 0 then
Exit;
end;
if not CodeToolBoss.SetAllCreateFromStatements(Project.MainUnitInfo.Source,
Project.TmpAutoCreatedForms) then
begin
MessageDlg(lisProjOptsError,
Format(lisProjOptsUnableToChangeTheAutoCreateFormList, [LineEnding]),
mtWarning, [mbOK], 0);
Result := False;
Exit;
end;
finally
OldList.Free;
end;
end;
begin
SetTitle;
SetAutoCreateForms;
// extend include path
Project.AutoAddOutputDirToIncPath;
if Project.Resources.Modified and (Project.MainUnitID >= 0) then
begin
if not Project.Resources.Regenerate(Project.MainFilename, True, False, '') then
MessageDlg(Project.Resources.Messages.Text, mtWarning, [mbOk], 0);
end;
UpdateCaption;
end;
procedure TMainIDE.mnuEnvEditorOptionsClicked(Sender: TObject);
begin
DoOpenIDEOptions(TEditorGeneralOptionsFrame);
@ -6892,6 +7000,8 @@ begin
Result.OnSaveUnitSessionInfo:=@OnSaveProjectUnitSessionInfo;
Result.OnGetTestDirectory:=@OnProjectGetTestDirectory;
Result.OnChangeProjectInfoFile:=@OnProjectChangeInfoFile;
Result.OnBeforeRead:=@DoProjectBeforeRead;
Result.OnAfterWrite:=@DoProjectAfterWrite;
end;
procedure TMainIDE.OnSaveProjectUnitSessionInfo(AUnitInfo: TUnitInfo);

View File

@ -579,6 +579,7 @@ type
private
fActiveEditorIndexAtStart: integer;
FAutoCreateForms: boolean;
FTmpAutoCreatedForms: TStrings; // temporary, used to apply auto create forms changes
FAutoOpenDesignerFormsDisabled: boolean;
FBookmarks: TProjectBookmarkList;
fChanged: boolean;
@ -839,6 +840,10 @@ type
// i18n
function GetPOOutDirectory: string;
//auto created forms
function GetAutoCreatedFormsList: TStrings;
property TmpAutoCreatedForms: TStrings read FTmpAutoCreatedForms write FTmpAutoCreatedForms;
public
property ActiveEditorIndexAtStart: integer read fActiveEditorIndexAtStart
write fActiveEditorIndexAtStart;
@ -4310,6 +4315,27 @@ begin
LongenFilename(Result);
end;
function TProject.GetAutoCreatedFormsList: TStrings;
var
i, j: integer;
begin
if (MainUnitID >= 0) then
begin
Result := CodeToolBoss.ListAllCreateFormStatements(MainUnitInfo.Source);
if Result <> nil then
for i := 0 to Result.Count - 1 do
begin
j := Pos(':', Result[i]);
if j > 0 then
if 't' + LowerCase(Copy(Result[i], 1, j - 1)) = LowerCase(
Copy(Result[i], j + 1, Length(Result[i]) - j)) then
Result[i] := Copy(Result[i], 1, j - 1);
end;// shorten lines of type 'FormName:TFormName' to simply 'FormName'
end
else
Result := nil;
end;
procedure TProject.OnUnitNameChange(AnUnitInfo: TUnitInfo;
const OldUnitName, NewUnitName: string; CheckIfAllowed: boolean;
var Allowed: boolean);

File diff suppressed because it is too large Load Diff

View File

@ -1,374 +0,0 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TProjectOptionsDialog','FORMDATA',[
'TPF0'#21'TProjectOptionsDialog'#20'ProjectOptionsDialog'#4'Left'#3#142#1#6'H'
+'eight'#3#245#1#3'Top'#3#177#0#5'Width'#3#5#2#13'ActiveControl'#7#8'Notebook'
+#11'BorderIcons'#11#12'biSystemMenu'#0#7'Caption'#6#20'ProjectOptionsDialog'
+#12'ClientHeight'#3#245#1#11'ClientWidth'#3#5#2#21'Constraints.MinHeight'#3
+#234#1#20'Constraints.MinWidth'#3#254#1#7'OnClose'#7#19'ProjectOptionsClose'
+#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.29'#0#9'TNotebook'#8
+'Notebook'#4'Left'#2#0#6'Height'#3#207#1#3'Top'#2#0#5'Width'#3#5#2#5'Align'#7
+#8'alClient'#20'BorderSpacing.Bottom'#2#6#9'PageIndex'#2#6#8'TabOrder'#2#0#0
+#5'TPage'#15'ApplicationPage'#7'Caption'#6#15'ApplicationPage'#11'ClientWidt'
+'h'#3#253#1#12'ClientHeight'#3#181#1#0#9'TGroupBox'#19'AppSettingsGroupBox'#4
+'Left'#2#6#6'Height'#3' '#1#3'Top'#2#6#5'Width'#3#241#1#5'Align'#7#5'alTop'#8
+'AutoSize'#9#20'BorderSpacing.Around'#2#6#7'Caption'#6#19'AppSettingsGroupBo'
+'x'#12'ClientHeight'#3#14#1#11'ClientWidth'#3#237#1#8'TabOrder'#2#0#0#6'TLab'
+'el'#10'TitleLabel'#22'AnchorSideLeft.Control'#7#19'AppSettingsGroupBox'#21
+'AnchorSideTop.Control'#7#9'TitleEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'
+#4'Left'#2#6#6'Height'#2#18#3'Top'#2#10#5'Width'#2'='#18'BorderSpacing.Left'
+#2#6#7'Caption'#6#10'TitleLabel'#11'ParentColor'#8#0#0#6'TLabel'#9'IconLabel'
+#22'AnchorSideLeft.Control'#7#19'AppSettingsGroupBox'#21'AnchorSideTop.Contr'
+'ol'#7#9'IconPanel'#4'Left'#2#6#6'Height'#2#18#3'Top'#2''''#5'Width'#2'='#18
+'BorderSpacing.Left'#2#6#7'Caption'#6#9'IconLabel'#11'ParentColor'#8#0#0#6'T'
+'Label'#14'IconTrackLabel'#22'AnchorSideLeft.Control'#7#9'IconTrack'#19'Anch'
+'orSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#9'IconTrack'#18
+'AnchorSideTop.Side'#7#9'asrCenter'#23'AnchorSideRight.Control'#7#9'IconTrac'
+'k'#4'Left'#3#240#0#6'Height'#2#18#3'Top'#3#178#0#5'Width'#2']'#18'BorderSpa'
+'cing.Left'#2#6#19'BorderSpacing.Right'#2#6#7'Caption'#6#14'IconTrackLabel'
+#11'ParentColor'#8#0#0#5'TEdit'#9'TitleEdit'#19'AnchorSideLeft.Side'#7#9'asr'
+'Bottom'#4'Left'#2'j'#6'Height'#2#27#3'Top'#2#6#5'Width'#3'}'#1#5'Align'#7#5
+'alTop'#18'BorderSpacing.Left'#2'd'#20'BorderSpacing.Around'#2#6#8'TabOrder'
+#2#0#4'Text'#6#9'TitleEdit'#0#0#9'TCheckBox'#20'UseAppBundleCheckBox'#22'Anc'
+'horSideLeft.Control'#7#19'AppSettingsGroupBox'#21'AnchorSideTop.Control'#7#9
+'IconTrack'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#22
+#3'Top'#3#213#0#5'Width'#3#181#0#20'BorderSpacing.Around'#2#6#7'Caption'#6#20
+'UseAppBundleCheckBox'#8'TabOrder'#2#1#0#0#9'TCheckBox'#21'UseXPManifestChec'
+'kBox'#22'AnchorSideLeft.Control'#7#19'AppSettingsGroupBox'#21'AnchorSideTop'
+'.Control'#7#20'UseAppBundleCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4
+'Left'#2#6#6'Height'#2#22#3'Top'#3#241#0#5'Width'#3#182#0#20'BorderSpacing.A'
+'round'#2#6#7'Caption'#6#21'UseXPManifestCheckBox'#8'TabOrder'#2#2#0#0#6'TPa'
+'nel'#9'IconPanel'#22'AnchorSideLeft.Control'#7#19'AppSettingsGroupBox'#21'A'
+'nchorSideTop.Control'#7#9'TitleEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'#4
+'Left'#2'j'#6'Height'#3#128#0#3'Top'#2''''#5'Width'#3#128#0#18'BorderSpacing'
+'.Left'#2'j'#17'BorderSpacing.Top'#2#6#19'BorderSpacing.Right'#2#6#10'BevelO'
+'uter'#7#6'bvNone'#11'BorderWidth'#2#1#11'BorderStyle'#7#8'bsSingle'#12'Clie'
+'ntHeight'#2'|'#11'ClientWidth'#2'|'#8'TabOrder'#2#3#0#6'TImage'#9'IconImage'
+#4'Left'#2#1#6'Height'#2'z'#3'Top'#2#1#5'Width'#2'z'#5'Align'#7#8'alClient'#6
+'Center'#9#16'OnPictureChanged'#7#23'IconImagePictureChanged'#0#0#0#7'TBitBt'
+'n'#14'LoadIconButton'#22'AnchorSideLeft.Control'#7#9'IconPanel'#19'AnchorSi'
+'deLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#9'IconPanel'#24'Anc'
+'horSideBottom.Control'#7#9'IconPanel'#21'AnchorSideBottom.Side'#7#9'asrBott'
+'om'#4'Left'#3#240#0#6'Height'#2#29#3'Top'#2''''#5'Width'#2's'#8'AutoSize'#9
+#18'BorderSpacing.Left'#2#6#7'Caption'#6#14'LoadIconButton'#9'NumGlyphs'#2#0
+#7'OnClick'#7#19'LoadIconButtonClick'#8'TabOrder'#2#4#0#0#7'TBitBtn'#14'Save'
+'IconButton'#22'AnchorSideLeft.Control'#7#14'LoadIconButton'#21'AnchorSideTo'
+'p.Control'#7#14'LoadIconButton'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Lef'
+'t'#3#240#0#6'Height'#2#29#3'Top'#2'J'#5'Width'#2't'#8'AutoSize'#9#17'Border'
+'Spacing.Top'#2#6#7'Caption'#6#14'SaveIconButton'#9'NumGlyphs'#2#0#7'OnClick'
+#7#19'SaveIconButtonClick'#8'TabOrder'#2#5#0#0#7'TBitBtn'#15'ClearIconButton'
+#22'AnchorSideLeft.Control'#7#14'SaveIconButton'#21'AnchorSideTop.Control'#7
+#14'SaveIconButton'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#240#0#6
+'Height'#2#29#3'Top'#2'm'#5'Width'#2'u'#8'AutoSize'#9#17'BorderSpacing.Top'#2
+#6#7'Caption'#6#15'ClearIconButton'#9'NumGlyphs'#2#0#7'OnClick'#7#20'ClearIc'
+'onButtonClick'#8'TabOrder'#2#6#0#0#9'TTrackBar'#9'IconTrack'#22'AnchorSideL'
+'eft.Control'#7#9'IconPanel'#21'AnchorSideTop.Control'#7#9'IconPanel'#18'Anc'
+'horSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#9'IconPanel'
+#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2'j'#6'Height'#2'('#3'Top'#3
,#167#0#5'Width'#3#128#0#3'Max'#2#0#8'OnChange'#7#15'IconTrackChange'#8'Posit'
+'ion'#2#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#7#0#0#0
+#9'TGroupBox'#22'OutputSettingsGroupBox'#4'Left'#2#6#6'Height'#2'R'#3'Top'#3
+','#1#5'Width'#3#241#1#5'Align'#7#5'alTop'#8'AutoSize'#9#20'BorderSpacing.Ar'
+'ound'#2#6#7'Caption'#6#22'OutputSettingsGroupBox'#12'ClientHeight'#2'@'#11
+'ClientWidth'#3#237#1#8'TabOrder'#2#1#0#6'TLabel'#15'TargetFileLabel'#22'Anc'
+'horSideLeft.Control'#7#22'OutputSettingsGroupBox'#21'AnchorSideTop.Control'
+#7#22'OutputSettingsGroupBox'#4'Left'#2#6#6'Height'#2#18#3'Top'#2#6#5'Width'
+#2'^'#20'BorderSpacing.Around'#2#6#7'Caption'#6#15'TargetFileLabel'#11'Paren'
+'tColor'#8#0#0#5'TEdit'#14'TargetFileEdit'#22'AnchorSideLeft.Control'#7#22'O'
+'utputSettingsGroupBox'#21'AnchorSideTop.Control'#7#15'TargetFileLabel'#18'A'
+'nchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#22'OutputSe'
+'ttingsGroupBox'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#6#6'Heigh'
+'t'#2#27#3'Top'#2#30#5'Width'#3#225#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akR'
+'ight'#0#20'BorderSpacing.Around'#2#6#8'TabOrder'#2#0#4'Text'#6#14'TargetFil'
+'eEdit'#0#0#0#7'TBitBtn'#21'CreateAppBundleButton'#22'AnchorSideLeft.Control'
+#7#15'ApplicationPage'#21'AnchorSideTop.Control'#7#22'OutputSettingsGroupBox'
+#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#29#3'Top'#3
+#132#1#5'Width'#3#170#0#8'AutoSize'#9#20'BorderSpacing.Around'#2#6#7'Caption'
+#6#21'CreateAppBundleButton'#9'NumGlyphs'#2#0#7'OnClick'#7#26'CreateAppBundl'
+'eButtonClick'#8'TabOrder'#2#2#0#0#0#5'TPage'#9'FormsPage'#7'Caption'#6#9'Fo'
+'rmsPage'#11'ClientWidth'#3#253#1#12'ClientHeight'#3#181#1#8'OnResize'#7#15
+'FormsPageResize'#0#6'TLabel'#21'FormsAutoCreatedLabel'#4'Left'#2'$'#6'Heigh'
+'t'#2#18#3'Top'#2#10#5'Width'#3#156#0#7'Caption'#6#21'FormsAutoCreatedLabel'
+#11'ParentColor'#8#0#0#6'TLabel'#20'FormsAvailFormsLabel'#22'AnchorSideLeft.'
+'Control'#7#22'FormsAvailFormsListBox'#4'Left'#3#10#1#6'Height'#2#18#3'Top'#2
+#10#5'Width'#3#144#0#7'Caption'#6#20'FormsAvailFormsLabel'#11'ParentColor'#8
+#0#0#12'TSpeedButton'#29'FormsMoveAutoCreatedFormUpBtn'#22'AnchorSideLeft.Co'
+'ntrol'#7#9'FormsPage'#21'AnchorSideTop.Control'#7#23'FormsAutoCreatedListBo'
+'x'#4'Left'#2#6#6'Height'#2#24#3'Top'#2'('#5'Width'#2#24#20'BorderSpacing.Ar'
+'ound'#2#6#5'Color'#7#9'clBtnFace'#9'NumGlyphs'#2#0#7'OnClick'#7'"FormsMoveA'
+'utoCreatedFormUpBtnClick'#0#0#12'TSpeedButton FormsMoveAutoCreatedFormsDown'
+'Btn'#22'AnchorSideLeft.Control'#7#29'FormsMoveAutoCreatedFormUpBtn'#21'Anch'
+'orSideTop.Control'#7#29'FormsMoveAutoCreatedFormUpBtn'#18'AnchorSideTop.Sid'
+'e'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#24#3'Top'#2'F'#5'Width'#2#24#5'Co'
+'lor'#7#9'clBtnFace'#9'NumGlyphs'#2#0#7'OnClick'#7'$FormsMoveAutoCreatedForm'
+'DownBtnClick'#0#0#12'TSpeedButton"FormsRemoveFromAutoCreatedFormsBtn'#22'An'
+'chorSideLeft.Control'#7#23'FormsAutoCreatedListBox'#19'AnchorSideLeft.Side'
+#7#9'asrBottom'#21'AnchorSideTop.Control'#7#23'FormsAutoCreatedListBox'#4'Le'
+'ft'#3#236#0#6'Height'#2#24#3'Top'#2'('#5'Width'#2#24#20'BorderSpacing.Aroun'
+'d'#2#6#5'Color'#7#9'clBtnFace'#9'NumGlyphs'#2#0#7'OnClick'#7'''FormsRemoveF'
+'romAutoCreatedFormsBtnClick'#0#0#12'TSpeedButton'#29'FormsAddToAutoCreatedF'
+'ormsBtn'#22'AnchorSideLeft.Control'#7#23'FormsAutoCreatedListBox'#19'Anchor'
+'SideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7'"FormsRemoveFromA'
+'utoCreatedFormsBtn'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#236#0#6
+'Height'#2#24#3'Top'#2'F'#5'Width'#2#24#5'Color'#7#9'clBtnFace'#9'NumGlyphs'
+#2#0#7'OnClick'#7'"FormsAddToAutoCreatedFormsBtnClick'#0#0#8'TListBox'#23'Fo'
+'rmsAutoCreatedListBox'#22'AnchorSideLeft.Control'#7' FormsMoveAutoCreatedFo'
+'rmsDownBtn'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'
+#7#21'FormsAutoCreatedLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#24'Anchor'
+'SideBottom.Control'#7#31'FormsAutoCreateNewFormsCheckBox'#4'Left'#2'$'#6'He'
+'ight'#3'q'#1#3'Top'#2'"'#5'Width'#3#194#0#7'Anchors'#11#5'akTop'#6'akLeft'#8
+'akBottom'#0#20'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#11'MultiSelect'
+#9#10'OnDblClick'#7'''FormsRemoveFromAutoCreatedFormsBtnClick'#8'TabOrder'#2
+#0#0#0#8'TListBox'#22'FormsAvailFormsListBox'#22'AnchorSideLeft.Control'#7#29
+'FormsAddToAutoCreatedFormsBtn'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'An'
+'chorSideTop.Control'#7#20'FormsAvailFormsLabel'#18'AnchorSideTop.Side'#7#9
+'asrBottom'#23'AnchorSideRight.Control'#7#9'FormsPage'#20'AnchorSideRight.Si'
+'de'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#31'FormsAutoCreateNewForm'
+'sCheckBox'#4'Left'#3#10#1#6'Height'#3'q'#1#3'Top'#2'"'#5'Width'#3#237#0#7'A'
+'nchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#20'BorderSpacing.Aro'
+'und'#2#6#10'ItemHeight'#2#0#11'MultiSelect'#9#10'OnDblClick'#7'"FormsAddToA'
+'utoCreatedFormsBtnClick'#8'TabOrder'#2#1#0#0#9'TCheckBox'#31'FormsAutoCreat'
+'eNewFormsCheckBox'#22'AnchorSideLeft.Control'#7#29'FormsAddToAutoCreatedFor'
,'msBtn'#21'AnchorSideTop.Control'#7#23'FormsAutoCreatedListBox'#4'Left'#2#6#6
+'Height'#2#22#3'Top'#3#153#1#5'Width'#3#241#1#5'Align'#7#8'alBottom'#20'Bord'
+'erSpacing.Around'#2#6#7'Caption'#6#31'FormsAutoCreateNewFormsCheckBox'#8'Ta'
+'bOrder'#2#2#0#0#0#5'TPage'#10'LazDocPage'#7'Caption'#6#10'LazDocPage'#11'Cl'
+'ientWidth'#3#253#1#12'ClientHeight'#3#181#1#0#9'TGroupBox'#19'LazDocPathsGr'
+'oupBox'#4'Left'#2#6#6'Height'#3#207#0#3'Top'#2#6#5'Width'#3#241#1#5'Align'#7
+#5'alTop'#8'AutoSize'#9#20'BorderSpacing.Around'#2#6#7'Caption'#6#19'LazDocP'
+'athsGroupBox'#12'ClientHeight'#3#189#0#11'ClientWidth'#3#237#1#8'TabOrder'#2
+#0#0#8'TListBox'#13'LazDocListBox'#22'AnchorSideLeft.Control'#7#19'LazDocPat'
+'hsGroupBox'#21'AnchorSideTop.Control'#7#19'LazDocPathsGroupBox'#23'AnchorSi'
+'deRight.Control'#7#19'LazDocPathsGroupBox'#20'AnchorSideRight.Side'#7#9'asr'
+'Bottom'#4'Left'#2#6#6'Height'#2'l'#3'Top'#2#6#5'Width'#3#225#1#7'Anchors'#11
+#5'akTop'#6'akLeft'#7'akRight'#0#20'BorderSpacing.Around'#2#6#10'ItemHeight'
+#2#0#8'TabOrder'#2#0#0#0#5'TEdit'#14'LazDocPathEdit'#22'AnchorSideLeft.Contr'
+'ol'#7#19'LazDocPathsGroupBox'#21'AnchorSideTop.Control'#7#13'LazDocListBox'
+#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#18'LazD'
+'ocBrowseButton'#4'Left'#2#6#6'Height'#2#27#3'Top'#2'x'#5'Width'#3#201#1#7'A'
+'nchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'Bo'
+'rderSpacing.Top'#2#6#20'BorderSpacing.Bottom'#2#6#8'TabOrder'#2#1#4'Text'#6
+#14'LazDocPathEdit'#0#0#7'TButton'#18'LazDocBrowseButton'#22'AnchorSideLeft.'
+'Control'#7#14'LazDocPathEdit'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'Anc'
+'horSideTop.Control'#7#14'LazDocPathEdit'#23'AnchorSideRight.Control'#7#19'L'
+'azDocPathsGroupBox'#20'AnchorSideRight.Side'#7#9'asrBottom'#24'AnchorSideBo'
+'ttom.Control'#7#14'LazDocPathEdit'#21'AnchorSideBottom.Side'#7#9'asrBottom'
+#4'Left'#3#207#1#6'Height'#2#27#3'Top'#2'x'#5'Width'#2#24#7'Anchors'#11#5'ak'
+'Top'#7'akRight'#8'akBottom'#0#19'BorderSpacing.Right'#2#6#7'Caption'#6#3'..'
+'.'#7'OnClick'#7#23'LazDocBrowseButtonClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'
+#19'LazDocAddPathButton'#22'AnchorSideLeft.Control'#7#19'LazDocPathsGroupBox'
+#21'AnchorSideTop.Control'#7#14'LazDocPathEdit'#18'AnchorSideTop.Side'#7#9'a'
+'srBottom'#4'Left'#2#6#6'Height'#2#29#3'Top'#3#153#0#5'Width'#3#158#0#8'Auto'
+'Size'#9#20'BorderSpacing.Around'#2#6#7'Caption'#6#19'LazDocAddPathButton'#9
+'NumGlyphs'#2#0#7'OnClick'#7#24'LazDocAddPathButtonClick'#8'TabOrder'#2#3#0#0
+#7'TBitBtn'#22'LazDocDeletePathButton'#22'AnchorSideLeft.Control'#7#19'LazDo'
+'cAddPathButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Con'
+'trol'#7#14'LazDocPathEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3
+#170#0#6'Height'#2#29#3'Top'#3#153#0#5'Width'#3#175#0#8'AutoSize'#9#20'Borde'
+'rSpacing.Around'#2#6#7'Caption'#6#22'LazDocDeletePathButton'#9'NumGlyphs'#2
+#0#7'OnClick'#7#27'LazDocDeletePathButtonClick'#8'TabOrder'#2#4#0#0#0#0#5'TP'
+'age'#8'SavePage'#7'Caption'#6#8'SavePage'#11'ClientWidth'#3#253#1#12'Client'
+'Height'#3#181#1#0#9'TCheckBox'#26'SaveClosedUnitInfoCheckBox'#4'Left'#2#6#6
+'Height'#2#22#3'Top'#2#6#5'Width'#3#241#1#5'Align'#7#5'alTop'#20'BorderSpaci'
+'ng.Around'#2#6#7'Caption'#6#26'SaveClosedUnitInfoCheckBox'#8'TabOrder'#2#0#0
+#0#9'TCheckBox'#31'SaveOnlyProjectUnitInfoCheckBox'#21'AnchorSideTop.Control'
+#7#26'SaveClosedUnitInfoCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Le'
+'ft'#2#6#6'Height'#2#22#3'Top'#2'"'#5'Width'#3#241#1#5'Align'#7#5'alTop'#20
+'BorderSpacing.Around'#2#6#7'Caption'#6#31'SaveOnlyProjectUnitInfoCheckBox'#8
+'TabOrder'#2#1#0#0#11'TRadioGroup'#29'SaveSessionLocationRadioGroup'#21'Anch'
+'orSideTop.Control'#7#31'SaveOnlyProjectUnitInfoCheckBox'#18'AnchorSideTop.S'
+'ide'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#8'SavePage'#20'AnchorSide'
+'Right.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#4#3'Top'#2'D'#5'Width'#3
+#241#1#5'Align'#7#5'alTop'#8'AutoFill'#9#8'AutoSize'#9#17'BorderSpacing.Top'
+#2#6#20'BorderSpacing.Around'#2#6#7'Caption'#6#29'SaveSessionLocationRadioGr'
+'oup'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2
+#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'Child'
+'Sizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.Shrin'
+'kHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsSc'
+'aleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'Ch'
+'ildSizing.ControlsPerLine'#2#1#8'TabOrder'#2#2#0#0#0#5'TPage'#15'VersionInf'
+'oPage'#7'Caption'#6#15'VersionInfoPage'#11'ClientWidth'#3#253#1#12'ClientHe'
+'ight'#3#181#1#0#9'TGroupBox'#19'VersionInfoGroupBox'#22'AnchorSideLeft.Cont'
+'rol'#7#24'LanguageSettingsGroupBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#20
+'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2'd'#3'Top'#2#29
+#5'Width'#3#241#1#5'Align'#7#5'alTop'#8'AutoSize'#9#20'BorderSpacing.Around'
+#2#6#7'Caption'#6#17'Version Numbering'#12'ClientHeight'#2'R'#11'ClientWidth'
,#3#237#1#8'TabOrder'#2#1#0#6'TLabel'#12'VersionLabel'#22'AnchorSideLeft.Cont'
+'rol'#7#19'VersionInfoGroupBox'#21'AnchorSideTop.Control'#7#19'VersionInfoGr'
+'oupBox'#4'Left'#2#6#6'Height'#2#14#3'Top'#2#6#5'Width'#2'('#20'BorderSpacin'
+'g.Around'#2#6#7'Caption'#6#8'Version:'#11'ParentColor'#8#0#0#6'TLabel'#18'M'
+'ajorRevisionLabel'#22'AnchorSideLeft.Control'#7#15'VersionSpinEdit'#19'Anch'
+'orSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#19'VersionInfoG'
+'roupBox'#4'Left'#2'j'#6'Height'#2#14#3'Top'#2#6#5'Width'#2'K'#18'BorderSpac'
+'ing.Left'#2#24#20'BorderSpacing.Around'#2#6#7'Caption'#6#15'Major Revision:'
+#11'ParentColor'#8#0#0#6'TLabel'#18'MinorRevisionLabel'#22'AnchorSideLeft.Co'
+'ntrol'#7#21'MajorRevisionSpinEdit'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21
+'AnchorSideTop.Control'#7#19'VersionInfoGroupBox'#4'Left'#3#206#0#6'Height'#2
+#14#3'Top'#2#6#5'Width'#2'J'#18'BorderSpacing.Left'#2#24#20'BorderSpacing.Ar'
+'ound'#2#6#7'Caption'#6#15'Minor Revision:'#11'ParentColor'#8#0#0#6'TLabel'
+#10'BuildLabel'#22'AnchorSideLeft.Control'#7#21'MinorRevisionSpinEdit'#19'An'
+'chorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#19'VersionInf'
+'oGroupBox'#4'Left'#3'2'#1#6'Height'#2#14#3'Top'#2#6#5'Width'#2#27#18'Border'
+'Spacing.Left'#2#24#20'BorderSpacing.Around'#2#6#7'Caption'#6#6'Build:'#11'P'
+'arentColor'#8#0#0#9'TSpinEdit'#15'VersionSpinEdit'#22'AnchorSideLeft.Contro'
+'l'#7#12'VersionLabel'#21'AnchorSideTop.Control'#7#12'VersionLabel'#18'Ancho'
+'rSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#21#3'Top'#2#26#5'Widt'
+'h'#2'F'#8'MaxValue'#4#255#255#0#0#8'TabOrder'#2#0#0#0#9'TSpinEdit'#21'Major'
+'RevisionSpinEdit'#22'AnchorSideLeft.Control'#7#18'MajorRevisionLabel'#21'An'
+'chorSideTop.Control'#7#18'MajorRevisionLabel'#18'AnchorSideTop.Side'#7#9'as'
+'rBottom'#4'Left'#2'j'#6'Height'#2#21#3'Top'#2#26#5'Width'#2'F'#8'MaxValue'#4
+#255#255#0#0#8'TabOrder'#2#1#0#0#9'TSpinEdit'#21'MinorRevisionSpinEdit'#22'A'
+'nchorSideLeft.Control'#7#18'MinorRevisionLabel'#21'AnchorSideTop.Control'#7
+#18'MinorRevisionLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#206#0
+#6'Height'#2#21#3'Top'#2#26#5'Width'#2'F'#8'MaxValue'#4#255#255#0#0#8'TabOrd'
+'er'#2#2#0#0#9'TCheckBox"AutomaticallyIncreaseBuildCheckBox'#22'AnchorSideLe'
+'ft.Control'#7#19'VersionInfoGroupBox'#21'AnchorSideTop.Control'#7#15'Versio'
+'nSpinEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#17
+#3'Top'#2';'#5'Width'#3#150#0#17'BorderSpacing.Top'#2#6#20'BorderSpacing.Aro'
+'und'#2#6#7'Caption'#6#28'Automatically increase Build'#8'TabOrder'#2#4#0#0#9
+'TSpinEdit'#13'BuildSpinEdit'#22'AnchorSideLeft.Control'#7#10'BuildLabel'#21
+'AnchorSideTop.Control'#7#10'BuildLabel'#18'AnchorSideTop.Side'#7#9'asrBotto'
+'m'#4'Left'#3'2'#1#6'Height'#2#21#3'Top'#2#26#5'Width'#2'F'#8'MaxValue'#4#255
+#255#0#0#8'TabOrder'#2#3#0#0#0#9'TCheckBox'#22'UseVersionInfoCheckBox'#4'Lef'
+'t'#2#6#6'Height'#2#17#3'Top'#2#6#5'Width'#3#241#1#5'Align'#7#5'alTop'#20'Bo'
+'rderSpacing.Around'#2#6#7'Caption'#6'"Include Version Info in executable'#8
+'OnChange'#7#28'UseVersionInfoCheckBoxChange'#8'TabOrder'#2#0#0#0#9'TGroupBo'
+'x'#24'LanguageSettingsGroupBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#20'An'
+'chorSideRight.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2'G'#3'Top'#3#135#0
+#5'Width'#3#241#1#5'Align'#7#5'alTop'#8'AutoSize'#9#20'BorderSpacing.Around'
+#2#6#7'Caption'#6#16'Language Options'#12'ClientHeight'#2'5'#11'ClientWidth'
+#3#237#1#8'TabOrder'#2#2#0#6'TLabel'#22'LanguageSelectionLabel'#22'AnchorSid'
+'eLeft.Control'#7#24'LanguageSettingsGroupBox'#21'AnchorSideTop.Control'#7#24
+'LanguageSettingsGroupBox'#4'Left'#2#6#6'Height'#2#14#3'Top'#2#6#5'Width'#2
+'b'#20'BorderSpacing.Around'#2#6#7'Caption'#6#19'Language Selection:'#11'Par'
+'entColor'#8#0#0#6'TLabel'#17'CharacterSetLabel'#22'AnchorSideLeft.Control'#7
+#25'LanguageSelectionComboBox'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'Anc'
+'horSideTop.Control'#7#24'LanguageSettingsGroupBox'#4'Left'#3#4#1#6'Height'#2
+#14#3'Top'#2#6#5'Width'#2'H'#20'BorderSpacing.Around'#2#6#7'Caption'#6#14'Ch'
+'aracter Set:'#11'ParentColor'#8#0#0#9'TComboBox'#25'LanguageSelectionComboB'
+'ox'#22'AnchorSideLeft.Control'#7#22'LanguageSelectionLabel'#21'AnchorSideTo'
+'p.Control'#7#22'LanguageSelectionLabel'#18'AnchorSideTop.Side'#7#9'asrBotto'
+'m'#4'Left'#2#6#6'Height'#2#21#3'Top'#2#26#5'Width'#3#248#0#17'BorderSpacing'
+'.Top'#2#2#20'BorderSpacing.Bottom'#2#6#10'ItemHeight'#2#13#8'TabOrder'#2#0#4
+'Text'#6#12'U.S. English'#0#0#9'TComboBox'#20'CharacterSetComboBox'#22'Ancho'
+'rSideLeft.Control'#7#17'CharacterSetLabel'#21'AnchorSideTop.Control'#7#25'L'
+'anguageSelectionComboBox'#23'AnchorSideRight.Control'#7#24'LanguageSettings'
+'GroupBox'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#4#1#6'Height'#2
+#21#3'Top'#2#26#5'Width'#3#227#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'
+#0#19'BorderSpacing.Right'#2#6#20'BorderSpacing.Bottom'#2#6#10'ItemHeight'#2
+#13#8'TabOrder'#2#1#4'Text'#6#12'Multilingual'#0#0#0#9'TGroupBox'#17'OtherIn'
,'foGroupBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#20'AnchorSideRight.Side'#7
+#9'asrBottom'#4'Left'#2#6#6'Height'#2'k'#3'Top'#3#212#0#5'Width'#3#241#1#5'A'
+'lign'#7#5'alTop'#8'AutoSize'#9#20'BorderSpacing.Around'#2#6#7'Caption'#6#10
+'Other Info'#12'ClientHeight'#2'Y'#11'ClientWidth'#3#237#1#8'TabOrder'#2#3#0
+#6'TLabel'#16'DescriptionLabel'#21'AnchorSideTop.Control'#7#15'DescriptionEd'
+'it'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#14#3'Top'
+#2#9#5'Width'#2':'#18'BorderSpacing.Left'#2#6#7'Caption'#6#12'Description:'
+#11'ParentColor'#8#0#0#6'TLabel'#14'CopyrightLabel'#22'AnchorSideLeft.Contro'
+'l'#7#16'DescriptionLabel'#21'AnchorSideTop.Control'#7#13'CopyrightEdit'#18
+'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#14#3'Top'#2'$'#5
+'Width'#2'4'#7'Caption'#6#10'Copyright:'#11'ParentColor'#8#0#0#5'TEdit'#15'D'
+'escriptionEdit'#22'AnchorSideLeft.Control'#7#16'DescriptionLabel'#19'Anchor'
+'SideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#17'OtherInfoGroup'
+'Box'#23'AnchorSideRight.Control'#7#17'OtherInfoGroupBox'#20'AnchorSideRight'
+'.Side'#7#9'asrBottom'#4'Left'#2'J'#6'Height'#2#21#3'Top'#2#6#5'Width'#3#157
+#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#10
+#17'BorderSpacing.Top'#2#6#19'BorderSpacing.Right'#2#6#8'TabOrder'#2#0#0#0#5
+'TEdit'#13'CopyrightEdit'#22'AnchorSideLeft.Control'#7#15'DescriptionEdit'#21
+'AnchorSideTop.Control'#7#15'DescriptionEdit'#18'AnchorSideTop.Side'#7#9'asr'
+'Bottom'#23'AnchorSideRight.Control'#7#17'OtherInfoGroupBox'#20'AnchorSideRi'
+'ght.Side'#7#9'asrBottom'#4'Left'#2'J'#6'Height'#2#21#3'Top'#2'!'#5'Width'#3
+#157#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2
+#6#19'BorderSpacing.Right'#2#6#8'TabOrder'#2#1#0#0#7'TBitBtn'#20'AdditionalI'
+'nfoButton'#21'AnchorSideTop.Control'#7#13'CopyrightEdit'#18'AnchorSideTop.S'
+'ide'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#17'OtherInfoGroupBox'#20
+'AnchorSideRight.Side'#7#9'asrBottom'#21'AnchorSideBottom.Side'#7#9'asrBotto'
+'m'#4'Left'#3#135#1#6'Height'#2#23#3'Top'#2'<'#5'Width'#2'`'#7'Anchors'#11#5
+'akTop'#7'akRight'#0#8'AutoSize'#9#20'BorderSpacing.Around'#2#6#7'Caption'#6
+#15'Additional Info'#9'NumGlyphs'#2#0#7'OnClick'#7#25'AdditionalInfoButtonCl'
+'ick'#8'TabOrder'#2#2#0#0#0#0#5'TPage'#8'i18nPage'#7'Caption'#6#4'i18n'#11'C'
+'lientWidth'#3#253#1#12'ClientHeight'#3#181#1#0#9'TGroupBox'#12'I18NGroupBox'
+#22'AnchorSideLeft.Control'#7#17'OtherInfoGroupBox'#21'AnchorSideTop.Control'
+#7#19'VersionInfoGroupBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSi'
+'deRight.Control'#7#17'OtherInfoGroupBox'#20'AnchorSideRight.Side'#7#9'asrBo'
+'ttom'#4'Left'#2#6#6'Height'#2'T'#3'Top'#2'"'#5'Width'#3#241#1#5'Align'#7#5
+'alTop'#8'AutoSize'#9#20'BorderSpacing.Around'#2#6#7'Caption'#6#12'i18n Opti'
+'ons'#12'ClientHeight'#2'B'#11'ClientWidth'#3#237#1#8'TabOrder'#2#0#0#6'TLab'
+'el'#13'PoOutDirLabel'#4'Left'#2#6#6'Height'#2#18#3'Top'#2#6#5'Width'#3#132#0
+#20'BorderSpacing.Around'#2#6#7'Caption'#6#20'PO Output Directory:'#11'Paren'
+'tColor'#8#0#0#5'TEdit'#12'POOutDirEdit'#22'AnchorSideLeft.Control'#7#12'I18'
+'NGroupBox'#21'AnchorSideTop.Control'#7#13'PoOutDirLabel'#18'AnchorSideTop.S'
+'ide'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#14'POOutDirButton'#4'Left'
+#2#6#6'Height'#2#27#3'Top'#2#30#5'Width'#3#201#1#7'Anchors'#11#5'akTop'#6'ak'
+'Left'#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#20
+'BorderSpacing.Bottom'#2#6#8'TabOrder'#2#0#4'Text'#6#12'POOutDirEdit'#0#0#7
+'TButton'#14'POOutDirButton'#21'AnchorSideTop.Control'#7#12'POOutDirEdit'#23
+'AnchorSideRight.Control'#7#12'I18NGroupBox'#20'AnchorSideRight.Side'#7#9'as'
+'rBottom'#24'AnchorSideBottom.Control'#7#12'POOutDirEdit'#21'AnchorSideBotto'
+'m.Side'#7#9'asrBottom'#4'Left'#3#207#1#6'Height'#2#27#3'Top'#2#30#5'Width'#2
+#24#7'Anchors'#11#5'akTop'#7'akRight'#8'akBottom'#0#19'BorderSpacing.Right'#2
+#6#7'Caption'#6#3'...'#7'OnClick'#7#19'POOutDirButtonClick'#8'TabOrder'#2#1#0
+#0#0#9'TCheckBox'#18'EnableI18NCheckBox'#4'Left'#2#6#6'Height'#2#22#3'Top'#2
+#6#5'Width'#3#241#1#5'Align'#7#5'alTop'#20'BorderSpacing.Around'#2#6#7'Capti'
+'on'#6#11'Enable i18n'#8'OnChange'#7#24'EnableI18NCheckBoxChange'#8'TabOrder'
+#2#1#0#0#0#5'TPage'#8'MiscPage'#7'Caption'#6#8'MiscPage'#11'ClientWidth'#3
+#253#1#12'ClientHeight'#3#181#1#0#6'TBevel'#6'Bevel1'#22'AnchorSideLeft.Cont'
+'rol'#7#8'MiscPage'#21'AnchorSideTop.Control'#7'!MainUnitHasTitleStatementCh'
+'eckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7
+#8'MiscPage'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2
+#3#3'Top'#2'b'#5'Width'#3#241#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0
+#20'BorderSpacing.Around'#2#6#0#0#9'TCheckBox)MainUnitHasUsesSectionForAllUn'
+'itsCheckBox'#22'AnchorSideLeft.Control'#7#8'MiscPage'#21'AnchorSideTop.Cont'
+'rol'#7#30'MainUnitIsPascalSourceCheckBox'#18'AnchorSideTop.Side'#7#9'asrBot'
+'tom'#4'Left'#2#6#6'Height'#2#17#3'Top'#2#29#5'Width'#3#233#0#20'BorderSpaci'
,'ng.Around'#2#6#7'Caption'#6')MainUnitHasUsesSectionForAllUnitsCheckBox'#8'T'
+'abOrder'#2#0#0#0#9'TCheckBox''MainUnitHasCreateFormStatementsCheckBox'#22'A'
+'nchorSideLeft.Control'#7#8'MiscPage'#21'AnchorSideTop.Control'#7')MainUnitH'
+'asUsesSectionForAllUnitsCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'L'
+'eft'#2#6#6'Height'#2#17#3'Top'#2'4'#5'Width'#3#236#0#20'BorderSpacing.Aroun'
+'d'#2#6#7'Caption'#6'''MainUnitHasCreateFormStatementsCheckBox'#8'TabOrder'#2
+#1#0#0#9'TCheckBox'#30'MainUnitIsPascalSourceCheckBox'#22'AnchorSideLeft.Con'
+'trol'#7#8'MiscPage'#21'AnchorSideTop.Control'#7#8'MiscPage'#4'Left'#2#6#6'H'
+'eight'#2#17#3'Top'#2#6#5'Width'#3#178#0#20'BorderSpacing.Around'#2#6#7'Capt'
+'ion'#6#30'MainUnitIsPascalSourceCheckBox'#8'TabOrder'#2#2#0#0#9'TCheckBox!M'
+'ainUnitHasTitleStatementCheckBox'#22'AnchorSideLeft.Control'#7#8'MiscPage'
+#21'AnchorSideTop.Control'#7'''MainUnitHasCreateFormStatementsCheckBox'#18'A'
+'nchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#17#3'Top'#2'K'#5
+'Width'#3#194#0#20'BorderSpacing.Around'#2#6#7'Caption'#6'!MainUnitHasTitleS'
+'tatementCheckBox'#8'TabOrder'#2#5#0#0#9'TCheckBox'#16'RunnableCheckBox'#22
+'AnchorSideLeft.Control'#7#8'MiscPage'#21'AnchorSideTop.Control'#7#6'Bevel1'
+#4'Left'#2#6#6'Height'#2#17#3'Top'#2'h'#5'Width'#2'n'#20'BorderSpacing.Aroun'
+'d'#2#6#7'Caption'#6#16'RunnableCheckBox'#8'TabOrder'#2#3#0#0#9'TCheckBox'#19
+'AlwaysBuildCheckBox'#22'AnchorSideLeft.Control'#7#8'MiscPage'#21'AnchorSide'
+'Top.Control'#7#16'RunnableCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4
+'Left'#2#6#6'Height'#2#17#3'Top'#2#127#5'Width'#2'y'#20'BorderSpacing.Around'
+#2#6#7'Caption'#6#19'AlwaysBuildCheckBox'#8'TabOrder'#2#4#0#0#9'TCheckBox'#22
+'LRSInOutputDirCheckBox'#22'AnchorSideLeft.Control'#7#8'MiscPage'#21'AnchorS'
+'ideTop.Control'#7#19'AlwaysBuildCheckBox'#18'AnchorSideTop.Side'#7#9'asrBot'
+'tom'#4'Left'#2#6#6'Height'#2#17#3'Top'#3#150#0#5'Width'#3#140#0#20'BorderSp'
+'acing.Around'#2#6#7'Caption'#6#22'LRSInOutputDirCheckBox'#8'TabOrder'#2#6#0
+#0#9'TGroupBox'#16'ResourceGroupBox'#22'AnchorSideLeft.Control'#7#8'MiscPage'
+#21'AnchorSideTop.Control'#7#22'LRSInOutputDirCheckBox'#18'AnchorSideTop.Sid'
+'e'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#8'MiscPage'#20'AnchorSideRi'
+'ght.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2'Q'#3'Top'#3#173#0#5'Width'
+#3#241#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#20'BorderSpacing.Arou'
+'nd'#2#6#7'Caption'#6#16'ResourceGroupBox'#28'ChildSizing.LeftRightSpacing'#2
+#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7
+#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomoge'
+'nousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'C'
+'hildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29
+'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'Clien'
+'tHeight'#2'?'#11'ClientWidth'#3#237#1#8'TabOrder'#2#7#0#12'TRadioButton'#22
+'UseLRSFilesRadioButton'#4'Left'#2#6#6'Height'#2#26#3'Top'#2#6#5'Width'#3#225
+#1#7'Caption'#6#22'UseLRSFilesRadioButton'#7'Checked'#9#14'ParentShowHint'#8
+#8'ShowHint'#9#5'State'#7#9'cbChecked'#8'TabOrder'#2#0#0#0#12'TRadioButton'
+#26'UseFPCResourcesRadioButton'#4'Left'#2#6#6'Height'#2#25#3'Top'#2' '#5'Wid'
+'th'#3#225#1#7'Caption'#6#26'UseFPCResourcesRadioButton'#14'ParentShowHint'#8
+#8'ShowHint'#9#8'TabOrder'#2#1#7'TabStop'#8#0#0#0#0#0#12'TButtonPanel'#11'Bu'
+'ttonPanel'#4'Left'#2#6#6'Height'#2#26#3'Top'#3#213#1#5'Width'#3#249#1#8'Tab'
+'Order'#2#1#11'ShowButtons'#11#4'pbOK'#8'pbCancel'#6'pbHelp'#0#9'ShowBevel'#8
+#0#0#22'TSelectDirectoryDialog'#21'SelectDirectoryDialog'#11'FilterIndex'#2#0
+#4'left'#2'X'#3'top'#3'p'#1#0#0#18'TOpenPictureDialog'#18'OpenPictureDialog1'
+#4'left'#2'u'#3'top'#3'p'#1#0#0#18'TSavePictureDialog'#18'SavePictureDialog1'
+#5'Title'#6#12'Save file as'#4'left'#3#146#0#3'top'#3'p'#1#0#0#0
]);

File diff suppressed because it is too large Load Diff

View File

@ -69,14 +69,12 @@ type
end;
function ShowVersionInfoAdditionailInfoForm(LocalVersionInfo: TProjectVersionInfo;
var ProjectModified: boolean) : TModalResult;
function ShowVersionInfoAdditionailInfoForm(LocalVersionInfo: TProjectVersionInfo) : TModalResult;
implementation
function ShowVersionInfoAdditionailInfoForm(LocalVersionInfo: TProjectVersionInfo;
var ProjectModified: boolean) : TModalResult;
function ShowVersionInfoAdditionailInfoForm(LocalVersionInfo: TProjectVersionInfo) : TModalResult;
var VersionInfoAdditionalInfoForm: TVersionInfoAdditinalInfoForm;
begin

View File

@ -203,6 +203,14 @@ const
// predefined project options groups
GroupProject = 100100;
ProjectOptionsApplication = 100;
ProjectOptionsForms = 200;
ProjectOptionsLazDoc = 300;
ProjectOptionsSave = 400;
ProjectOptionsVersionInfo = 500;
ProjectOptionsI18N = 600;
ProjectOptionsMisc = 700;
GroupCompiler = 100200;
implementation