IDE: change locations of some compiler option GUI elements.

git-svn-id: trunk@42210 -
This commit is contained in:
juha 2013-07-26 12:46:28 +00:00
parent 2cce09658b
commit d30c687245
9 changed files with 329 additions and 270 deletions

View File

@ -9,23 +9,21 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
DesignLeft = 290
DesignTop = 90
object grpUnitStyle: TGroupBox
AnchorSideLeft.Control = grpChecks
AnchorSideTop.Control = grpChecks
AnchorSideTop.Side = asrBottom
AnchorSideLeft.Control = grpOptimizationLevels
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = grpOptimizationLevels
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = grpHeapStackSize
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 87
Top = 171
Left = 161
Height = 79
Top = 0
Width = 160
Anchors = [akTop, akLeft, akBottom]
AutoSize = True
BorderSpacing.Top = 11
BorderSpacing.Left = 15
Caption = 'grpUnitStyle'
ClientHeight = 68
ClientHeight = 60
ClientWidth = 156
TabOrder = 1
TabOrder = 0
object chkSmartLinkUnit: TCheckBox
Left = 6
Height = 21
@ -47,89 +45,23 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
TabOrder = 1
end
end
object grpChecks: TGroupBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 160
Top = 0
Width = 184
AutoSize = True
Caption = 'grpChecks'
ChildSizing.TopBottomSpacing = 6
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 141
ClientWidth = 180
TabOrder = 0
object chkChecksIO: TCheckBox
Left = 6
Height = 21
Top = 6
Width = 168
BorderSpacing.Around = 6
Caption = 'chkChecksIO'
TabOrder = 0
end
object chkChecksRange: TCheckBox
Left = 6
Height = 21
Top = 33
Width = 168
BorderSpacing.Around = 6
Caption = 'chkChecksRange'
TabOrder = 1
end
object chkChecksOverflow: TCheckBox
Left = 6
Height = 21
Top = 60
Width = 168
BorderSpacing.Around = 6
Caption = 'chkChecksOverflow'
TabOrder = 2
end
object chkChecksStack: TCheckBox
Left = 6
Height = 21
Top = 87
Width = 168
BorderSpacing.Around = 6
Caption = 'chkChecksStack'
TabOrder = 3
end
object chkVerifyObjMethodCall: TCheckBox
Left = 6
Height = 21
Top = 114
Width = 168
Caption = 'chkVerifyObjMethodCall'
TabOrder = 4
end
end
object grpHeapStackSize: TGroupBox
AnchorSideLeft.Control = grpUnitStyle
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = grpChecks
AnchorSideTop.Control = grpUnitStyle
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Side = asrBottom
Left = 167
Left = 161
Height = 87
Top = 171
Width = 434
Anchors = [akTop, akLeft, akRight]
Top = 84
Width = 178
AutoSize = True
BorderSpacing.Left = 7
BorderSpacing.Top = 11
BorderSpacing.Top = 5
Caption = 'grpHeapStackSize'
ChildSizing.TopBottomSpacing = 6
ClientHeight = 68
ClientWidth = 430
TabOrder = 2
ClientWidth = 174
TabOrder = 1
object edtHeapSize: TEdit
AnchorSideLeft.Control = lbHeapSize
AnchorSideLeft.Side = asrBottom
@ -139,7 +71,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
Left = 86
Height = 25
Top = 6
Width = 338
Width = 82
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
BorderSpacing.Around = 6
@ -168,7 +100,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
Left = 88
Height = 25
Top = 37
Width = 336
Width = 80
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
BorderSpacing.Around = 6
@ -188,28 +120,21 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
ParentColor = False
end
end
object grpOptimizations: TGroupBox
AnchorSideLeft.Control = grpChecks
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = grpChecks
AnchorSideRight.Control = Owner
object grpOptimizationLevels: TGroupBox
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = grpChecks
AnchorSideBottom.Side = asrBottom
Left = 191
Height = 160
Left = 0
Height = 133
Top = 0
Width = 410
Anchors = [akTop, akLeft, akRight, akBottom]
Width = 146
AutoSize = True
BorderSpacing.Left = 7
Caption = 'grpOptimizations'
ClientHeight = 141
ClientWidth = 406
TabOrder = 3
Caption = 'grpOptimizationLevels'
ClientHeight = 114
ClientWidth = 142
TabOrder = 2
object radOptLevelNone: TRadioButton
AnchorSideLeft.Control = grpOptimizations
AnchorSideTop.Control = grpOptimizations
AnchorSideLeft.Control = grpOptimizationLevels
AnchorSideTop.Control = grpOptimizationLevels
Left = 6
Height = 21
Top = 6
@ -221,7 +146,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
TabStop = True
end
object radOptLevel1: TRadioButton
AnchorSideLeft.Control = grpOptimizations
AnchorSideLeft.Control = grpOptimizationLevels
AnchorSideTop.Control = radOptLevelNone
AnchorSideTop.Side = asrBottom
Left = 6
@ -233,7 +158,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
TabOrder = 1
end
object radOptLevel2: TRadioButton
AnchorSideLeft.Control = grpOptimizations
AnchorSideLeft.Control = grpOptimizationLevels
AnchorSideTop.Control = radOptLevel1
AnchorSideTop.Side = asrBottom
Left = 6
@ -245,7 +170,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
TabOrder = 2
end
object radOptLevel3: TRadioButton
AnchorSideLeft.Control = grpOptimizations
AnchorSideLeft.Control = grpOptimizationLevels
AnchorSideTop.Control = radOptLevel2
AnchorSideTop.Side = asrBottom
Left = 6
@ -258,27 +183,24 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
end
end
object grpLinking: TGroupBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = grpUnitStyle
AnchorSideTop.Control = grpOptimizations
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 137
Top = 269
Width = 601
Anchors = [akTop, akLeft, akRight]
Top = 221
Width = 172
AutoSize = True
BorderSpacing.Top = 11
BorderSpacing.Top = 5
Caption = 'grpLinking'
ClientHeight = 118
ClientWidth = 597
TabOrder = 4
ClientWidth = 168
TabOrder = 3
object chkLinkSmart: TCheckBox
Left = 6
Height = 21
Top = 6
Width = 585
Width = 156
Align = alTop
BorderSpacing.Around = 6
Caption = 'chkLinkSmart'
@ -288,7 +210,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
Left = 6
Height = 21
Top = 33
Width = 585
Width = 156
Align = alTop
BorderSpacing.Around = 6
Caption = 'chkWin32GraphicApp'
@ -298,7 +220,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
Left = 6
Height = 21
Top = 60
Width = 585
Width = 156
Align = alTop
BorderSpacing.Around = 6
Caption = 'chkOptionsLinkOpt'
@ -313,7 +235,7 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
Left = 25
Height = 25
Top = 87
Width = 566
Width = 137
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 19
BorderSpacing.Right = 6
@ -322,4 +244,36 @@ object CompilerCodegenOptionsFrame: TCompilerCodegenOptionsFrame
Text = 'edtOptionsLinkOpt'
end
end
object grpOptimizations: TGroupBox
AnchorSideTop.Control = grpOptimizationLevels
AnchorSideTop.Side = asrBottom
Left = 0
Height = 78
Top = 138
Width = 165
AutoSize = True
BorderSpacing.Top = 5
Caption = 'grpOptimizations'
ClientHeight = 59
ClientWidth = 161
TabOrder = 4
object Label1: TLabel
Left = 6
Height = 15
Top = 38
Width = 149
BorderSpacing.Around = 6
Caption = 'ToDo: more optimization'
ParentColor = False
end
object chkOptSmaller: TCheckBox
Left = 6
Height = 21
Top = 6
Width = 114
BorderSpacing.Around = 6
Caption = 'chkOptSmaller'
TabOrder = 0
end
end
end

View File

@ -13,24 +13,21 @@ type
{ TCompilerCodegenOptionsFrame }
TCompilerCodegenOptionsFrame = class(TAbstractIDEOptionsEditor)
chkChecksIO: TCheckBox;
chkChecksOverflow: TCheckBox;
chkChecksRange: TCheckBox;
chkChecksStack: TCheckBox;
chkOptSmaller: TCheckBox;
chkLinkSmart: TCheckBox;
chkOptionsLinkOpt: TCheckBox;
chkSmartLinkUnit: TCheckBox;
chkRelocatableUnit: TCheckBox;
chkVerifyObjMethodCall: TCheckBox;
chkWin32GraphicApp: TCheckBox;
edtHeapSize: TEdit;
edtOptionsLinkOpt: TEdit;
edtStackSize: TEdit;
grpLinking: TGroupBox;
grpChecks: TGroupBox;
grpHeapStackSize: TGroupBox;
grpOptimizations: TGroupBox;
grpLinking: TGroupBox;
grpHeapStackSize: TGroupBox;
grpOptimizationLevels: TGroupBox;
grpUnitStyle: TGroupBox;
Label1: TLabel;
lbHeapSize: TLabel;
lbStackSize: TLabel;
radOptLevel1: TRadioButton;
@ -62,25 +59,21 @@ begin
chkSmartLinkUnit.Caption := dlgCOSmartLinkable + ' (-CX)';
chkRelocatableUnit.Caption := dlgCORelocatable + ' (-WR)';
grpChecks.Caption := dlgCOChecks;
chkChecksIO.Caption := 'I/O (-Ci)';
chkChecksRange.Caption := dlgCORange + ' (-Cr)';
chkChecksOverflow.Caption := dlgCOOverflow + ' (-Co)';
chkChecksStack.Caption := dlgCOStack + ' (-Ct)';
chkVerifyObjMethodCall.Caption := lisVerifyMethodCalls + ' (-CR)';
grpHeapStackSize.Caption := dlgHeapAndStackSize;
lbHeapSize.Caption := dlgHeapSize + ' (-Ch)';
lbStackSize.Caption := dlgStackSize + ' (-Cs)';
edtHeapSize.Text := '';
edtStackSize.Text := '';
grpOptimizations.Caption := dlgOptimizationLevels;
grpOptimizationLevels.Caption := dlgOptimizationLevels;
radOptLevelNone.Caption := dlgLevelNoneOpt;
radOptLevel1.Caption := dlgLevel1Opt + ' (-O1)';
radOptLevel2.Caption := dlgLevel2Opt + ' (-O2)';
radOptLevel3.Caption := dlgLevel3Opt + ' (-O3)';
grpOptimizations.Caption := dlgOtherOptimizations;
chkOptSmaller.Caption := lisSmallerRatherThanFaster + ' (-Os)';
grpLinking.Caption := dlgCOLinking;
chkLinkSmart.Caption := dlgLinkSmart + ' (-XX)';
chkWin32GraphicApp.Caption := dlgWin32GUIApp + ' (-WG)';
@ -95,19 +88,13 @@ begin
chkSmartLinkUnit.Checked := SmartLinkUnit;
chkRelocatableUnit.Checked := RelocatableUnit;
chkChecksIO.Checked := IOChecks;
chkChecksRange.Checked := RangeChecks;
chkChecksOverflow.Checked := OverflowChecks;
chkChecksStack.Checked := StackChecks;
chkVerifyObjMethodCall.Checked := VerifyObjMethodCall;
grpHeapStackSize.Visible := NeedsLinkerOpts;
edtHeapSize.Text := IntToStr(HeapSize);
edtStackSize.Text := IntToStr(StackSize);
//chkOptVarsInReg.Checked := VariablesInRegisters;
//chkOptUncertain.Checked := UncertainOptimizations;
//chkOptSmaller.Checked := SmallerCode;
chkOptSmaller.Checked := SmallerCode;
case OptimizationLevel of
1: radOptLevel1.Checked := True;
@ -136,12 +123,6 @@ begin
SmartLinkUnit := chkSmartLinkUnit.Checked;
RelocatableUnit := chkRelocatableUnit.Checked;
IOChecks := chkChecksIO.Checked;
RangeChecks := chkChecksRange.Checked;
OverflowChecks := chkChecksOverflow.Checked;
StackChecks := chkChecksStack.Checked;
VerifyObjMethodCall := chkVerifyObjMethodCall.Checked;
Val(edtHeapSize.Text, hs, code);
if (code <> 0) then
HeapSize := 0
@ -156,7 +137,7 @@ begin
//VariablesInRegisters := chkOptVarsInReg.Checked;
//UncertainOptimizations := chkOptUncertain.Checked;
//SmallerCode := chkOptSmaller.Checked;
SmallerCode := chkOptSmaller.Checked;
if (radOptLevel1.Checked) then
OptimizationLevel := 1

View File

@ -154,32 +154,4 @@ object CompilerConfigTargetFrame: TCompilerConfigTargetFrame
TabOrder = 2
end
end
object grpSyntaxMode: TGroupBox
Left = 0
Height = 56
Top = 250
Width = 594
Align = alTop
Anchors = [akTop]
AutoSize = True
BorderSpacing.Top = 11
Caption = 'grpSyntaxMode'
ClientHeight = 37
ClientWidth = 590
TabOrder = 2
object cmbSyntaxMode: TComboBox
AnchorSideRight.Control = grpSyntaxMode
AnchorSideRight.Side = asrBottom
Left = 6
Height = 25
Top = 6
Width = 578
Align = alLeft
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Around = 6
ItemHeight = 0
Style = csDropDownList
TabOrder = 0
end
end
end

View File

@ -29,7 +29,7 @@ interface
uses
Classes, SysUtils, FileUtil, Controls, Dialogs, StdCtrls, LCLProc, IDEOptionsIntf,
IDEDialogs, CompilerOptions, LazarusIDEStrConsts, PackageDefs, LinkScanner;
IDEDialogs, CompilerOptions, LazarusIDEStrConsts, PackageDefs;
type
@ -38,10 +38,8 @@ type
TCompilerConfigTargetFrame = class(TAbstractIDEOptionsEditor)
chkConfigFile: TCheckBox;
chkCustomConfigFile: TCheckBox;
cmbSyntaxMode: TComboBox;
edtConfigPath: TEdit;
grpConfigFile: TGroupBox;
grpSyntaxMode: TGroupBox;
grpTargetPlatform: TGroupBox;
lblTargetCPU: TLabel;
lblTargetOS: TLabel;
@ -80,17 +78,17 @@ end;
function ProcessorToCaption(const Processor: string): string;
begin
if SysUtils.CompareText(Processor, '80386') = 0 then
if CompareText(Processor, '80386') = 0 then
Result := '386/486 (-Op80386)'
else if SysUtils.CompareText(Processor, 'pentium') = 0 then
else if CompareText(Processor, 'pentium') = 0 then
Result := 'Pentium/Pentium MMX (-OpPENTIUM)'
else if SysUtils.CompareText(Processor, 'pentium2') = 0 then
else if CompareText(Processor, 'pentium2') = 0 then
Result := 'Pentium Pro/Pentium II/C6x86/K6 (-OpPENTIUM2)'
else if SysUtils.CompareText(Processor, 'pentium3') = 0 then
else if CompareText(Processor, 'pentium3') = 0 then
Result := 'Pentium III (-OpPENTIUM3)'
else if SysUtils.CompareText(Processor, 'pentium4') = 0 then
else if CompareText(Processor, 'pentium4') = 0 then
Result := 'Pentium IV (-OpPENTIUM4)'
else if SysUtils.CompareText(Processor, 'pentiumm') = 0 then
else if CompareText(Processor, 'pentiumm') = 0 then
Result := 'Pentium M (-OpPENTIUMM)'
else
Result := '(' + lisDefault + ')';
@ -98,52 +96,22 @@ end;
function CaptionToProcessor(const Caption: string): string;
begin
if System.Pos('-Op80386', Caption) > 0 then
if Pos('-Op80386', Caption) > 0 then
Result := '80386'
else if System.Pos('-OpPENTIUMM', Caption) > 0 then
else if Pos('-OpPENTIUMM', Caption) > 0 then
Result := 'pentiumm'
else if System.Pos('-OpPENTIUM4', Caption) > 0 then
else if Pos('-OpPENTIUM4', Caption) > 0 then
Result := 'pentium4'
else if System.Pos('-OpPENTIUM3', Caption) > 0 then
else if Pos('-OpPENTIUM3', Caption) > 0 then
Result := 'pentium3'
else if System.Pos('-OpPENTIUM2', Caption) > 0 then
else if Pos('-OpPENTIUM2', Caption) > 0 then
Result := 'pentium2'
else if System.Pos('-OpPENTIUM', Caption) > 0 then
else if Pos('-OpPENTIUM', Caption) > 0 then
Result := 'pentium'
else
Result := '';
end;
function SyntaxModeToCaption(const Mode: string): string;
begin
if SysUtils.CompareText(Mode, 'ObjFPC') = 0 then
Result := lisObjectPascalDefault + ' (-Mobjfpc)'
else if SysUtils.CompareText(Mode, 'Delphi') = 0 then
Result := lisDelphi + ' (-Mdelphi)'
else if SysUtils.CompareText(Mode, 'tp') = 0 then
Result := lisTurboPascal + ' (-Mtp)'
else if SysUtils.CompareText(Mode, 'fpc') = 0 then
Result := lisFreePascal + ' (-Mfpc)'
else if SysUtils.CompareText(Mode, 'macpas') = 0 then
Result := lisMacPascal + ' (-Mmacpas)'
else
Result := '';
end;
function CaptionToSyntaxMode(const Caption: string): string;
begin
if System.Pos('-Mdelphi', Caption) > 0 then
Result := 'Delphi'
else if System.Pos('-Mtp', Caption) > 0 then
Result := 'tp'
else if System.Pos('-Mmacpas', Caption) > 0 then
Result := 'macpas'
else if System.Pos('-Mfpc', Caption) > 0 then
Result := 'fpc'
else
Result := 'ObjFPC';
end;
{ TCompilerConfigTargetFrame }
@ -206,9 +174,6 @@ begin
end;
procedure TCompilerConfigTargetFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
var
m: TCompilerMode;
s: string;
begin
// Config
grpConfigFile.Caption := dlgConfigFiles;
@ -297,17 +262,6 @@ begin
end;
ItemIndex := 0;
end;
grpSyntaxMode.Caption := lisSyntaxMode + ' (-M, {$MODE})';
cmbSyntaxMode.Items.BeginUpdate;
cmbSyntaxMode.Items.Clear;
for m := Low(TCompilerMode) to High(TCompilerMode) do
begin
s := SyntaxModeToCaption(CompilerModeNames[m]);
if s <> '' then
cmbSyntaxMode.Items.Add(s);
end;
cmbSyntaxMode.Items.EndUpdate;
end;
procedure TCompilerConfigTargetFrame.ReadSettings(AOptions: TAbstractIDEOptions);
@ -346,8 +300,6 @@ begin
TargetCPUComboBox.ItemIndex := i;
// Target Processor
TargetProcessorProcComboBox.Text := ProcessorToCaption(TargetProcessor);
cmbSyntaxMode.Text := SyntaxModeToCaption(SyntaxMode);
end;
end;
end;
@ -378,8 +330,6 @@ begin
NewTargetCPU := '';
TargetCPU := CaptionToCPU(NewTargetCPU);
TargetProcessor := CaptionToProcessor(TargetProcessorProcComboBox.Text);
SyntaxMode := CaptionToSyntaxMode(cmbSyntaxMode.Text);
end;
end;
end;

View File

@ -6,14 +6,17 @@ object CompilerDebuggingOptionsFrame: TCompilerDebuggingOptionsFrame
ClientHeight = 552
ClientWidth = 701
TabOrder = 0
DesignLeft = 394
DesignTop = 135
DesignLeft = 225
DesignTop = 316
object chkDebugGDB: TCheckBox
AnchorSideTop.Control = grpChecks
AnchorSideTop.Side = asrBottom
Left = 6
Height = 21
Top = 6
Top = 122
Width = 689
Align = alTop
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 10
BorderSpacing.Around = 6
Caption = 'chkDebugGDB'
OnChange = chkDebugGDBChange
@ -27,7 +30,7 @@ object CompilerDebuggingOptionsFrame: TCompilerDebuggingOptionsFrame
AnchorSideRight.Side = asrBottom
Left = 0
Height = 137
Top = 33
Top = 149
Width = 701
Anchors = [akTop, akLeft, akRight]
AutoSize = True
@ -125,7 +128,7 @@ object CompilerDebuggingOptionsFrame: TCompilerDebuggingOptionsFrame
AnchorSideRight.Side = asrBottom
Left = 0
Height = 106
Top = 175
Top = 291
Width = 701
Anchors = [akTop, akLeft, akRight]
AutoSize = True
@ -173,4 +176,90 @@ object CompilerDebuggingOptionsFrame: TCompilerDebuggingOptionsFrame
TabOrder = 2
end
end
object grpChecks: TGroupBox
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 106
Top = 0
Width = 701
Align = alTop
Anchors = []
AutoSize = True
Caption = 'grpChecks'
ChildSizing.TopBottomSpacing = 6
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 87
ClientWidth = 697
TabOrder = 3
object chkChecksIO: TCheckBox
Left = 6
Height = 21
Top = 6
Width = 103
BorderSpacing.Left = 6
Caption = 'chkChecksIO'
TabOrder = 0
end
object chkChecksRange: TCheckBox
AnchorSideLeft.Control = chkChecksIO
AnchorSideTop.Control = chkChecksIO
AnchorSideTop.Side = asrBottom
Left = 6
Height = 21
Top = 33
Width = 131
BorderSpacing.Top = 6
Caption = 'chkChecksRange'
TabOrder = 1
end
object chkChecksOverflow: TCheckBox
AnchorSideLeft.Control = chkChecksRange
AnchorSideTop.Control = chkChecksRange
AnchorSideTop.Side = asrBottom
Left = 6
Height = 21
Top = 60
Width = 143
BorderSpacing.Top = 6
Caption = 'chkChecksOverflow'
TabOrder = 2
end
object chkChecksStack: TCheckBox
AnchorSideLeft.Control = chkChecksIO
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = chkChecksIO
Left = 179
Height = 21
Top = 6
Width = 126
BorderSpacing.Left = 70
Caption = 'chkChecksStack'
TabOrder = 3
end
object chkVerifyObjMethodCall: TCheckBox
AnchorSideLeft.Control = chkChecksStack
AnchorSideTop.Control = chkChecksStack
AnchorSideTop.Side = asrBottom
Left = 179
Height = 21
Top = 33
Width = 168
BorderSpacing.Top = 6
Caption = 'chkVerifyObjMethodCall'
TabOrder = 4
end
object chkAssertion: TCheckBox
AnchorSideLeft.Control = chkVerifyObjMethodCall
AnchorSideTop.Control = chkVerifyObjMethodCall
AnchorSideTop.Side = asrBottom
Left = 179
Height = 21
Top = 60
Width = 105
BorderSpacing.Top = 6
Caption = 'chkAssertion'
TabOrder = 5
end
end
end

View File

@ -12,6 +12,10 @@ type
{ TCompilerDebuggingOptionsFrame }
TCompilerDebuggingOptionsFrame = class(TAbstractIDEOptionsEditor)
chkChecksIO: TCheckBox;
chkChecksOverflow: TCheckBox;
chkChecksRange: TCheckBox;
chkChecksStack: TCheckBox;
chkDebugGDB: TCheckBox;
chkGenGProfCode: TCheckBox;
chkSymbolsStrip: TCheckBox;
@ -19,7 +23,10 @@ type
chkUseHeaptrc: TCheckBox;
chkUseLineInfoUnit: TCheckBox;
chkUseValgrind: TCheckBox;
chkVerifyObjMethodCall: TCheckBox;
chkAssertion: TCheckBox;
dropDbgSymbolType: TComboBox;
grpChecks: TGroupBox;
grpOtherDebuggingInfo: TGroupBox;
grpInfoForGDB: TGroupBox;
lblEmpty: TLabel;
@ -80,6 +87,14 @@ end;
procedure TCompilerDebuggingOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
begin
grpChecks.Caption := dlgCOChecksAndAssertion;
chkChecksIO.Caption := 'I/O (-Ci)';
chkChecksRange.Caption := dlgCORange + ' (-Cr)';
chkChecksOverflow.Caption := dlgCOOverflow + ' (-Co)';
chkChecksStack.Caption := dlgCOStack + ' (-Ct)';
chkVerifyObjMethodCall.Caption := lisVerifyMethodCalls + ' (-CR)';
chkAssertion.Caption := dlgAssertCode + ' (-Sa)';
grpInfoForGDB.Caption := dlgCOInfoForGDB;
grpOtherDebuggingInfo.Caption := dlgCOOtherDebuggingInfo;
@ -104,6 +119,13 @@ procedure TCompilerDebuggingOptionsFrame.ReadSettings(AOptions: TAbstractIDEOpti
begin
with AOptions as TBaseCompilerOptions do
begin
chkChecksIO.Checked := IOChecks;
chkChecksRange.Checked := RangeChecks;
chkChecksOverflow.Checked := OverflowChecks;
chkChecksStack.Checked := StackChecks;
chkVerifyObjMethodCall.Checked := VerifyObjMethodCall;
chkAssertion.Checked := IncludeAssertionCode;
chkDebugGDB.Checked := GenerateDebugInfo;
dropDbgSymbolType.ItemIndex := SymbolToIndex(DebugInfoType);
chkUseLineInfoUnit.Checked := UseLineInfoUnit;
@ -121,6 +143,13 @@ procedure TCompilerDebuggingOptionsFrame.WriteSettings(AOptions: TAbstractIDEOpt
begin
with AOptions as TBaseCompilerOptions do
begin
IOChecks := chkChecksIO.Checked;
RangeChecks := chkChecksRange.Checked;
OverflowChecks := chkChecksOverflow.Checked;
StackChecks := chkChecksStack.Checked;
VerifyObjMethodCall := chkVerifyObjMethodCall.Checked;
IncludeAssertionCode := chkAssertion.Checked;
GenerateDebugInfo := chkDebugGDB.Checked;
DebugInfoType := IndexToSymbol(dropDbgSymbolType.ItemIndex);
UseLineInfoUnit := chkUseLineInfoUnit.Checked;

View File

@ -14,7 +14,7 @@ object CompilerParsingOptionsFrame: TCompilerParsingOptionsFrame
AnchorSideRight.Side = asrBottom
Left = 0
Height = 57
Top = 269
Top = 326
Width = 584
Anchors = [akTop, akLeft, akRight]
AutoFill = True
@ -33,15 +33,16 @@ object CompilerParsingOptionsFrame: TCompilerParsingOptionsFrame
TabOrder = 1
end
object grpSyntaxOptions: TCheckGroup
AnchorSideTop.Control = Owner
AnchorSideTop.Control = grpSyntaxMode
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 0
Height = 258
Top = 5
Top = 62
Width = 584
Anchors = [akTop, akLeft, akRight]
AutoFill = True
BorderSpacing.Top = 5
BorderSpacing.Top = 6
Caption = 'grpSyntaxOptions'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
@ -53,4 +54,31 @@ object CompilerParsingOptionsFrame: TCompilerParsingOptionsFrame
ChildSizing.ControlsPerLine = 1
TabOrder = 0
end
object grpSyntaxMode: TGroupBox
Left = 0
Height = 56
Top = 0
Width = 584
Align = alTop
Anchors = []
AutoSize = True
Caption = 'grpSyntaxMode'
ClientHeight = 37
ClientWidth = 580
TabOrder = 2
object cmbSyntaxMode: TComboBox
AnchorSideRight.Control = grpSyntaxMode
AnchorSideRight.Side = asrBottom
Left = 6
Height = 25
Top = 6
Width = 568
Align = alLeft
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Around = 6
ItemHeight = 0
Style = csDropDownList
TabOrder = 0
end
end
end

View File

@ -5,15 +5,20 @@ unit compiler_parsing_options;
interface
uses
ExtCtrls, IDEOptionsIntf, CompilerOptions, LazarusIDEStrConsts;
ExtCtrls, StdCtrls, SysUtils, IDEOptionsIntf, CompilerOptions, LinkScanner,
PackageDefs, LazarusIDEStrConsts;
type
{ TCompilerParsingOptionsFrame }
TCompilerParsingOptionsFrame = class(TAbstractIDEOptionsEditor)
cmbSyntaxMode: TComboBox;
grpAsmStyle: TRadioGroup;
grpSyntaxMode: TGroupBox;
grpSyntaxOptions: TCheckGroup;
private
FIsPackage: boolean;
public
function GetTitle: string; override;
procedure Setup(ADialog: TAbstractOptionsEditorDialog); override;
@ -26,6 +31,37 @@ implementation
{$R *.lfm}
function SyntaxModeToCaption(const Mode: string): string;
begin
if CompareText(Mode, 'ObjFPC') = 0 then
Result := lisObjectPascalDefault + ' (-Mobjfpc)'
else if CompareText(Mode, 'Delphi') = 0 then
Result := lisDelphi + ' (-Mdelphi)'
else if CompareText(Mode, 'tp') = 0 then
Result := lisTurboPascal + ' (-Mtp)'
else if CompareText(Mode, 'fpc') = 0 then
Result := lisFreePascal + ' (-Mfpc)'
else if CompareText(Mode, 'macpas') = 0 then
Result := lisMacPascal + ' (-Mmacpas)'
else
Result := '';
end;
function CaptionToSyntaxMode(const Caption: string): string;
begin
if Pos('-Mdelphi', Caption) > 0 then
Result := 'Delphi'
else if Pos('-Mtp', Caption) > 0 then
Result := 'tp'
else if Pos('-Mmacpas', Caption) > 0 then
Result := 'macpas'
else if Pos('-Mfpc', Caption) > 0 then
Result := 'fpc'
else
Result := 'ObjFPC';
end;
{ TCompilerParsingOptionsFrame }
function TCompilerParsingOptionsFrame.GetTitle: string;
@ -34,7 +70,21 @@ begin
end;
procedure TCompilerParsingOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
var
m: TCompilerMode;
s: string;
begin
grpSyntaxMode.Caption := lisSyntaxMode + ' (-M, {$MODE})';
cmbSyntaxMode.Items.BeginUpdate;
cmbSyntaxMode.Items.Clear;
for m := Low(TCompilerMode) to High(TCompilerMode) do
begin
s := SyntaxModeToCaption(CompilerModeNames[m]);
if s <> '' then
cmbSyntaxMode.Items.Add(s);
end;
cmbSyntaxMode.Items.EndUpdate;
with grpAsmStyle do
begin
Caption := dlgCOAsmStyle + ' (-R)';
@ -55,7 +105,6 @@ begin
Caption := dlgSyntaxOptions;
Items.Add(dlgCOCOps + ' (-Sc, {$COPERATORS ON})');
Items.Add(dlgAssertCode + ' (-Sa, {$ASSERTIONS ON})');
Items.Add(dlgLabelGoto + ' (-Sg, {$GOTO ON})');
Items.Add(dlgCppInline + ' (-Si, {$INLINE ON})');
Items.Add(dlgCMacro + ' (-Sm, {$MACRO ON})');
@ -66,9 +115,15 @@ begin
end;
procedure TCompilerParsingOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
var
CurOptions: TBaseCompilerOptions;
begin
with AOptions as TBaseCompilerOptions do
CurOptions := AOptions as TBaseCompilerOptions;
FIsPackage := CurOptions is TPkgCompilerOptions;
with CurOptions do
begin
cmbSyntaxMode.Text := SyntaxModeToCaption(SyntaxMode);
if (AssemblerStyle in [1,2,3]) then
grpAsmStyle.ItemIndex := AssemblerStyle
else
@ -77,13 +132,12 @@ begin
with grpSyntaxOptions do
begin
Checked[0] := CStyleOperators;
Checked[1] := IncludeAssertionCode;
Checked[2] := AllowLabel;
Checked[3] := CPPInline;
Checked[4] := CStyleMacros;
Checked[5] := InitConstructor;
Checked[6] := StaticKeyword;
Checked[7] := UseAnsiStrings;
Checked[1] := AllowLabel;
Checked[2] := CPPInline;
Checked[3] := CStyleMacros;
Checked[4] := InitConstructor;
Checked[5] := StaticKeyword;
Checked[6] := UseAnsiStrings;
end;
end;
end;
@ -92,18 +146,20 @@ procedure TCompilerParsingOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptio
begin
with AOptions as TBaseCompilerOptions do
begin
if not fIsPackage then
SyntaxMode := CaptionToSyntaxMode(cmbSyntaxMode.Text);
AssemblerStyle := grpAsmStyle.ItemIndex;
with grpSyntaxOptions do
begin
CStyleOperators := Checked[0];
IncludeAssertionCode := Checked[1];
AllowLabel := Checked[2];
CPPInline := Checked[3];
CStyleMacros := Checked[4];
InitConstructor := Checked[5];
StaticKeyword := Checked[6];
UseAnsiStrings := Checked[7];
AllowLabel := Checked[1];
CPPInline := Checked[2];
CStyleMacros := Checked[3];
InitConstructor := Checked[4];
StaticKeyword := Checked[5];
UseAnsiStrings := Checked[6];
end;
end;
end;

View File

@ -2031,7 +2031,7 @@ resourcestring
dlgCOUnitStyle = 'Unit style';
dlgCOSmartLinkable = 'Smart linkable';
dlgCORelocatable = 'Relocatable';
dlgCOChecks = 'Checks';
dlgCOChecksAndAssertion = 'Checks and assertion';
dlgCORange = 'Range';
dlgCOOverflow = 'Overflow';
dlgCOStack = 'Stack';
@ -2045,8 +2045,8 @@ resourcestring
dlgTargetPlatform = 'Target platform';
dlgOptimizationLevels = 'Optimization levels';
//dlgCOKeepVarsReg = 'Keep certain variables in registers';
//dlgUncertOpt = 'Uncertain optimizations';
//lisSmallerRatherThanFaster = 'smaller rather than faster';
dlgOtherOptimizations = 'Other optimizations';
lisSmallerRatherThanFaster = 'Smaller rather than faster';
dlgLevelNoneOpt = '0 (no optimization)';
dlgLevel1Opt = '1 (quick, debugger friendly)';
dlgLevel2Opt = '2 (quick optimizations)';