IDE: compiler options: execute before/after: allow custom parsers

git-svn-id: trunk@56576 -
This commit is contained in:
mattias 2017-12-01 18:13:05 +00:00
parent 15f8cbed6c
commit f2c571147a
26 changed files with 352 additions and 200 deletions

View File

@ -33,7 +33,7 @@ const
SubToolMake = 'make';
SubToolMakePriority = 1000; // higher than FPC
SubToolDefault = 'External Tool'; // this parser simply writes all output to Messages window
SubToolDefault = 'Show all'; // this parser simply writes all output to Messages window
SubToolDefaultPriority = 0;
AbortedExitCode = 12321;
@ -361,6 +361,7 @@ type
procedure ReadLine(Line: string; OutputIndex: integer; var Handled: boolean
); override;
class function DefaultSubTool: string; override;
class function GetLocalizedParserName: string; override;
class function Priority: integer; override;
end;
@ -1008,6 +1009,11 @@ begin
Result:=SubToolDefault;
end;
class function TDefaultParser.GetLocalizedParserName: string;
begin
Result:=oisShowAllOutputLines;
end;
class function TDefaultParser.Priority: integer;
begin
Result:=SubToolDefaultPriority;

View File

@ -872,6 +872,10 @@ msgstr "Fica a predeterminat: %s"
msgid "Set property value to Default"
msgstr ""
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr ""

View File

@ -851,6 +851,10 @@ msgstr "Nastavit na výchozí: %s"
msgid "Set property value to Default"
msgstr "Natavit hodnotu vlastnosti jako Výchozí"
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr ""

View File

@ -842,6 +842,10 @@ msgstr "Auf Voreinstellung %s setzen"
msgid "Set property value to Default"
msgstr "Eigenschaftswert auf Vorgabe setzen"
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr "Zeige Klassen"

View File

@ -843,6 +843,10 @@ msgstr "Establecer por defecto: %s"
msgid "Set property value to Default"
msgstr "Establecer valor de la propiedad como predeterminado"
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr ""

View File

@ -836,6 +836,10 @@ msgstr "Aseta oletusarvo: %s"
msgid "Set property value to Default"
msgstr "Aseta ominaisuuden arvoksi oletus"
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr "Näytä luokat"

View File

@ -842,6 +842,10 @@ msgstr "Définir par défaut : %s"
msgid "Set property value to Default"
msgstr "Définir la valeur de la propriété à celle par défaut"
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr "Montrer les classes"

View File

@ -876,6 +876,10 @@ msgstr "קבע כברירת מחדל: s%"
msgid "Set property value to Default"
msgstr ""
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr ""

View File

@ -841,6 +841,10 @@ msgstr "Beállítás alapértelmezettre: %s"
msgid "Set property value to Default"
msgstr "A tulajdonság értéke legyen Alapértelmezett"
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr "Osztályok megjelenítése"

View File

@ -874,6 +874,10 @@ msgstr "Set ke default: %s"
msgid "Set property value to Default"
msgstr ""
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr ""

View File

@ -844,6 +844,10 @@ msgstr "Imposta al valore predefinito: %s"
msgid "Set property value to Default"
msgstr "Imposta come Default il valore della proprietà"
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr ""

View File

@ -849,6 +849,10 @@ msgstr "デフォルトに設定: %s"
msgid "Set property value to Default"
msgstr "プロパティ値を既定値に設定"
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr ""

View File

@ -842,6 +842,10 @@ msgstr "Keisti į numatytą: %s"
msgid "Set property value to Default"
msgstr "Savybės vertę atstatyti į numatytą"
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr "Rodyti klases"

View File

@ -862,6 +862,10 @@ msgstr "Zet naar standaardinstelling: %s"
msgid "Set property value to Default"
msgstr "Zet eigenschapwaarde naar standardistelling"
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr ""

View File

@ -873,6 +873,10 @@ msgstr "Ustaw domyślną wartość: %s"
msgid "Set property value to Default"
msgstr ""
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr ""

View File

@ -834,6 +834,10 @@ msgstr ""
msgid "Set property value to Default"
msgstr ""
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr ""

View File

@ -841,6 +841,10 @@ msgstr "Definir para padrão: %s"
msgid "Set property value to Default"
msgstr "Definir valor da propriedade para o padrão"
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr "Exibir classes"

View File

@ -841,6 +841,10 @@ msgstr "Установить по умолчанию: %s"
msgid "Set property value to Default"
msgstr "Установить значение свойства по умолчанию"
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr "Показывать классы"

View File

@ -880,6 +880,10 @@ msgstr "Nastaviť na predvolené: %s"
msgid "Set property value to Default"
msgstr ""
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr ""

View File

@ -844,6 +844,10 @@ msgstr "Встановити за замовчуванням: %s"
msgid "Set property value to Default"
msgstr "Встановити типове значення властивості"
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr "Показати класи"

View File

@ -850,6 +850,10 @@ msgstr "设为默认: %s"
msgid "Set property value to Default"
msgstr ""
#: objinspstrconsts.oisshowalloutputlines
msgid "Show all output lines"
msgstr ""
#: objinspstrconsts.oisshowclasses
msgid "Show classes"
msgstr ""

View File

@ -438,6 +438,7 @@ resourcestring
oisChangeClass = 'Change Class ...';
oisChangeParent = 'Change Parent';
lisUnableToFindParserForTool = 'Unable to find parser for tool "%s"';
oisShowAllOutputLines = 'Show all output lines';
lisUnableToFindParserWithName = 'Unable to find parser with name "%s"';
// TChangeParentDlg

View File

@ -340,9 +340,9 @@ type
FParsers: TStrings;
FParsedCommandStamp: integer;
FParsedCommand: string;
function GetHasParser(aName: string): boolean;
function GetHasParser(aParserName: string): boolean;
procedure SetCommand(const AValue: string);
procedure SetHasParser(aName: string; const AValue: boolean);
procedure SetHasParser(aParserName: string; const AValue: boolean);
procedure SetParsers(const AValue: TStrings);
protected
procedure SubstituteMacros(var s: string); virtual;
@ -368,7 +368,7 @@ type
property Owner: TObject read FOwner;
property Command: string read FCommand write SetCommand;
property Parsers: TStrings read FParsers write SetParsers;
property HasParser[aName: string]: boolean read GetHasParser write SetHasParser;
property HasParser[aParserName: string]: boolean read GetHasParser write SetHasParser;
end;
TCompilationToolClass = class of TCompilationToolOptions;
@ -4208,23 +4208,23 @@ begin
IncreaseChangeStamp;
end;
function TCompilationToolOptions.GetHasParser(aName: string): boolean;
function TCompilationToolOptions.GetHasParser(aParserName: string): boolean;
begin
Result:=FParsers.IndexOf(aName)>=0;
Result:=FParsers.IndexOf(aParserName)>=0;
end;
procedure TCompilationToolOptions.SetHasParser(aName: string;
procedure TCompilationToolOptions.SetHasParser(aParserName: string;
const AValue: boolean);
var
i: Integer;
begin
i:=FParsers.IndexOf(aName);
i:=FParsers.IndexOf(aParserName);
if i>=0 then begin
if AValue then exit;
FParsers.Delete(i);
end else begin
if not AValue then exit;
FParsers.Add(aName);
FParsers.Add(aParserName);
end;
IncreaseChangeStamp;
end;

View File

@ -6,15 +6,15 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
ClientHeight = 539
ClientWidth = 741
TabOrder = 0
DesignLeft = 481
DesignTop = 150
DesignLeft = 537
DesignTop = 171
object chkCreateMakefile: TCheckBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
Left = 0
Height = 24
Top = 0
Width = 152
Width = 129
Caption = 'chkCreateMakefile'
ParentShowHint = False
ShowHint = True
@ -27,23 +27,23 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 120
Top = 252
Height = 117
Top = 243
Width = 741
Anchors = [akTop, akLeft, akRight]
AutoSize = True
BorderSpacing.Top = 6
Caption = 'ExecuteAfterGroupBox'
ClientHeight = 101
ClientHeight = 102
ClientWidth = 737
TabOrder = 3
object lblRunIfExecAfter: TLabel
AnchorSideLeft.Control = ExecuteAfterGroupBox
AnchorSideTop.Control = ExecuteAfterGroupBox
Left = 6
Height = 17
Height = 13
Top = 6
Width = 119
Width = 99
BorderSpacing.Around = 6
Caption = 'lblRunIfExecAfter'
ParentColor = False
@ -53,9 +53,9 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideTop.Control = ExecuteAfterCommandComboBox
AnchorSideTop.Side = asrCenter
Left = 6
Height = 17
Top = 42
Width = 195
Height = 13
Top = 43
Width = 158
BorderSpacing.Around = 6
Caption = 'ExecuteAfterCommandLabel'
ParentColor = False
@ -64,10 +64,10 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideLeft.Control = lblRunIfExecAfter
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecuteAfterGroupBox
Left = 155
Left = 135
Height = 24
Top = 6
Width = 172
Width = 145
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'chkExecAfterCompile'
@ -77,10 +77,10 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideLeft.Control = chkExecAfterCompile
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecuteAfterGroupBox
Left = 357
Left = 310
Height = 24
Top = 6
Width = 150
Width = 129
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'chkExecAfterBuild'
@ -90,78 +90,25 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideLeft.Control = chkExecAfterBuild
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecuteAfterGroupBox
Left = 537
Left = 469
Height = 24
Top = 6
Width = 141
Width = 123
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'chkExecAfterRun'
TabOrder = 2
end
object ExecuteAfterScanFPCCheckBox: TCheckBox
AnchorSideLeft.Control = ExecuteAfterScanMakeCheckBox
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecuteAfterScanMakeCheckBox
AnchorSideTop.Side = asrCenter
Left = 448
Height = 24
Top = 71
Width = 238
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'ExecuteAfterScanFPCCheckBox'
TabOrder = 6
end
object ExecuteAfterScanMakeCheckBox: TCheckBox
AnchorSideLeft.Control = ExecuteAfterScanLabel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecuteAfterCommandComboBox
AnchorSideTop.Side = asrBottom
Left = 169
Height = 24
Top = 71
Width = 249
BorderSpacing.Around = 6
Caption = 'ExecuteAfterScanMakeCheckBox'
TabOrder = 5
end
object ExecuteAfterShowAllCheckBox: TCheckBox
AnchorSideLeft.Control = ExecuteAfterScanFPCCheckBox
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecuteAfterScanMakeCheckBox
AnchorSideTop.Side = asrCenter
Left = 716
Height = 24
Top = 71
Width = 235
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'ExecuteAfterShowAllCheckBox'
TabOrder = 7
end
object ExecuteAfterScanLabel: TLabel
AnchorSideLeft.Control = ExecuteAfterGroupBox
AnchorSideTop.Control = ExecuteAfterScanMakeCheckBox
AnchorSideTop.Side = asrCenter
Left = 6
Height = 17
Top = 75
Width = 157
BorderSpacing.Left = 6
Caption = 'ExecuteAfterScanLabel'
ParentColor = False
end
object ExecuteAfterCommandComboBox: TComboBox
AnchorSideLeft.Control = ExecuteAfterCommandLabel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = chkExecAfterCompile
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = ExecAfterBrowseButton
Left = 213
Height = 29
Left = 176
Height = 27
Top = 36
Width = 468
Width = 505
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 12
BorderSpacing.Top = 6
@ -177,7 +124,7 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideBottom.Control = ExecuteAfterCommandComboBox
AnchorSideBottom.Side = asrBottom
Left = 681
Height = 29
Height = 27
Top = 36
Width = 50
Anchors = [akTop, akRight, akBottom]
@ -186,6 +133,44 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
OnClick = CompCmdBrowseButtonClick
TabOrder = 4
end
object ExecAfterParsersLabel: TLabel
AnchorSideLeft.Control = ExecuteAfterGroupBox
AnchorSideTop.Control = ExecAfterParsersCheckComboBox
AnchorSideTop.Side = asrCenter
Left = 6
Height = 13
Top = 76
Width = 125
BorderSpacing.Left = 6
Caption = 'ExecAfterParsersLabel'
ParentColor = False
end
object ExecAfterParsersSumLabel: TLabel
AnchorSideLeft.Control = ExecAfterParsersCheckComboBox
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecAfterParsersCheckComboBox
AnchorSideTop.Side = asrCenter
Left = 318
Height = 13
Top = 76
Width = 148
Caption = 'ExecAfterParsersSumLabel'
ParentColor = False
end
object ExecAfterParsersCheckComboBox: TCheckComboBox
AnchorSideLeft.Control = ExecAfterParsersLabel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecuteAfterCommandComboBox
AnchorSideTop.Side = asrBottom
Left = 137
Height = 27
Top = 69
Width = 175
BorderSpacing.Around = 6
ItemHeight = 0
OnItemChange = ExecAfterParsersCheckComboBoxItemChange
TabOrder = 5
end
end
object grpCompiler: TGroupBox
AnchorSideLeft.Control = Owner
@ -194,23 +179,23 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 90
Top = 156
Height = 84
Top = 153
Width = 741
Anchors = [akTop, akLeft, akRight]
AutoSize = True
BorderSpacing.Top = 6
Caption = 'grpCompiler'
ClientHeight = 71
ClientHeight = 69
ClientWidth = 737
TabOrder = 2
object lblRunIfCompiler: TLabel
AnchorSideLeft.Control = grpCompiler
AnchorSideTop.Control = grpCompiler
Left = 6
Height = 17
Height = 13
Top = 6
Width = 114
Width = 92
BorderSpacing.Around = 6
Caption = 'lblRunIfCompiler'
ParentColor = False
@ -220,9 +205,9 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideTop.Control = cobCompiler
AnchorSideTop.Side = asrCenter
Left = 6
Height = 17
Top = 42
Width = 79
Height = 13
Top = 43
Width = 62
BorderSpacing.Around = 6
Caption = 'lblCompiler'
ParentColor = False
@ -231,10 +216,10 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideLeft.Control = lblRunIfCompiler
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = grpCompiler
Left = 150
Left = 128
Height = 24
Top = 6
Width = 167
Width = 138
BorderSpacing.Left = 30
BorderSpacing.Top = 6
Caption = 'chkCompilerCompile'
@ -244,10 +229,10 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideLeft.Control = chkCompilerCompile
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = grpCompiler
Left = 347
Left = 296
Height = 24
Top = 6
Width = 145
Width = 122
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'chkCompilerBuild'
@ -257,10 +242,10 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideLeft.Control = chkCompilerBuild
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = grpCompiler
Left = 522
Left = 448
Height = 24
Top = 6
Width = 136
Width = 116
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'chkCompilerRun'
@ -272,10 +257,10 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideTop.Control = chkCompilerCompile
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = BrowseCompilerButton
Left = 97
Height = 29
Left = 80
Height = 27
Top = 36
Width = 584
Width = 601
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 12
BorderSpacing.Top = 6
@ -291,7 +276,7 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideBottom.Control = cobCompiler
AnchorSideBottom.Side = asrBottom
Left = 681
Height = 29
Height = 27
Top = 36
Width = 50
Anchors = [akTop, akRight, akBottom]
@ -310,23 +295,23 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 120
Height = 117
Top = 30
Width = 741
Anchors = [akTop, akLeft, akRight]
AutoSize = True
BorderSpacing.Top = 6
Caption = 'ExecuteBeforeGroupBox'
ClientHeight = 101
ClientHeight = 102
ClientWidth = 737
TabOrder = 1
object lblRunIfExecBefore: TLabel
AnchorSideLeft.Control = ExecuteBeforeGroupBox
AnchorSideTop.Control = ExecuteBeforeGroupBox
Left = 6
Height = 17
Height = 13
Top = 6
Width = 129
Width = 108
BorderSpacing.Around = 6
Caption = 'lblRunIfExecBefore'
ParentColor = False
@ -336,9 +321,9 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideTop.Control = ExecuteBeforeCommandComboBox
AnchorSideTop.Side = asrCenter
Left = 6
Height = 17
Top = 42
Width = 205
Height = 13
Top = 43
Width = 167
BorderSpacing.Around = 6
Caption = 'ExecuteBeforeCommandLabel'
ParentColor = False
@ -347,10 +332,10 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideLeft.Control = lblRunIfExecBefore
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecuteBeforeGroupBox
Left = 165
Left = 144
Height = 24
Top = 6
Width = 182
Width = 154
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'chkExecBeforeCompile'
@ -360,10 +345,10 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideLeft.Control = chkExecBeforeCompile
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecuteBeforeGroupBox
Left = 377
Left = 328
Height = 24
Top = 6
Width = 160
Width = 138
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'chkExecBeforeBuild'
@ -373,78 +358,25 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideLeft.Control = chkExecBeforeBuild
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecuteBeforeGroupBox
Left = 567
Left = 496
Height = 24
Top = 6
Width = 151
Width = 132
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'chkExecBeforeRun'
TabOrder = 2
end
object ExecuteBeforeScanFPCCheckBox: TCheckBox
AnchorSideLeft.Control = ExecuteBeforeScanMakeCheckBox
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecuteBeforeScanMakeCheckBox
AnchorSideTop.Side = asrCenter
Left = 468
Height = 24
Top = 71
Width = 248
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'ExecuteBeforeScanFPCCheckBox'
TabOrder = 6
end
object ExecuteBeforeScanMakeCheckBox: TCheckBox
AnchorSideLeft.Control = ExecuteBeforeScanLabel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecuteBeforeCommandComboBox
AnchorSideTop.Side = asrBottom
Left = 179
Height = 24
Top = 71
Width = 259
BorderSpacing.Around = 6
Caption = 'ExecuteBeforeScanMakeCheckBox'
TabOrder = 5
end
object ExecuteBeforeShowAllCheckBox: TCheckBox
AnchorSideLeft.Control = ExecuteBeforeScanFPCCheckBox
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecuteBeforeScanMakeCheckBox
AnchorSideTop.Side = asrCenter
Left = 746
Height = 24
Top = 71
Width = 245
BorderSpacing.Left = 24
BorderSpacing.Around = 6
Caption = 'ExecuteBeforeShowAllCheckBox'
TabOrder = 7
end
object ExecuteBeforeScanLabel: TLabel
AnchorSideLeft.Control = ExecuteBeforeGroupBox
AnchorSideTop.Control = ExecuteBeforeScanMakeCheckBox
AnchorSideTop.Side = asrCenter
Left = 6
Height = 17
Top = 75
Width = 167
BorderSpacing.Left = 6
Caption = 'ExecuteBeforeScanLabel'
ParentColor = False
end
object ExecuteBeforeCommandComboBox: TComboBox
AnchorSideLeft.Control = ExecuteBeforeCommandLabel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = chkExecBeforeCompile
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = ExecBeforeBrowseButton
Left = 223
Height = 29
Left = 185
Height = 27
Top = 36
Width = 458
Width = 496
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 12
BorderSpacing.Top = 6
@ -461,7 +393,7 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
AnchorSideBottom.Control = ExecuteBeforeCommandComboBox
AnchorSideBottom.Side = asrBottom
Left = 681
Height = 29
Height = 27
Top = 36
Width = 50
Anchors = [akTop, akRight, akBottom]
@ -470,5 +402,43 @@ object CompilerCompilationOptionsFrame: TCompilerCompilationOptionsFrame
OnClick = CompCmdBrowseButtonClick
TabOrder = 4
end
object ExecBeforeParsersCheckComboBox: TCheckComboBox
AnchorSideLeft.Control = ExecBeforeParsersLabel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecuteBeforeCommandComboBox
AnchorSideTop.Side = asrBottom
Left = 146
Height = 27
Top = 69
Width = 182
BorderSpacing.Around = 6
ItemHeight = 0
OnItemChange = ExecBeforeParsersCheckComboBoxItemChange
TabOrder = 5
end
object ExecBeforeParsersLabel: TLabel
AnchorSideTop.Control = ExecBeforeParsersCheckComboBox
AnchorSideTop.Side = asrCenter
Left = 6
Height = 13
Top = 76
Width = 134
BorderSpacing.Left = 6
Caption = 'ExecBeforeParsersLabel'
ParentColor = False
end
object ExecBeforeParsersSumLabel: TLabel
AnchorSideLeft.Control = ExecBeforeParsersCheckComboBox
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ExecBeforeParsersCheckComboBox
AnchorSideTop.Side = asrCenter
Left = 334
Height = 13
Top = 76
Width = 157
BorderSpacing.Left = 6
Caption = 'ExecBeforeParsersSumLabel'
ParentColor = False
end
end
end

View File

@ -7,7 +7,7 @@ interface
uses
// RTL + FCL + LCL
Classes, sysutils,
Controls, StdCtrls, Dialogs,
Controls, StdCtrls, Dialogs, ComboEx,
// CodeTools
FileProcs, DefineTemplates, CodeToolManager,
// LazUtils
@ -24,6 +24,9 @@ type
TCompilerCompilationOptionsFrame = class(TAbstractIDEOptionsEditor)
BrowseCompilerButton: TButton;
ExecAfterParsersCheckComboBox: TCheckComboBox;
ExecAfterParsersLabel: TLabel;
ExecAfterParsersSumLabel: TLabel;
ExecBeforeBrowseButton: TButton;
chkCompilerBuild: TCheckBox;
chkCompilerCompile: TCheckBox;
@ -37,27 +40,31 @@ type
chkExecBeforeRun: TCheckBox;
cobCompiler: TComboBox;
ExecAfterBrowseButton: TButton;
ExecBeforeParsersSumLabel: TLabel;
ExecuteAfterCommandComboBox: TComboBox;
ExecuteAfterCommandLabel: TLabel;
ExecuteAfterGroupBox: TGroupBox;
ExecuteAfterScanFPCCheckBox: TCheckBox;
ExecuteAfterScanLabel: TLabel;
ExecuteAfterScanMakeCheckBox: TCheckBox;
ExecuteAfterShowAllCheckBox: TCheckBox;
ExecuteBeforeCommandComboBox: TComboBox;
ExecuteBeforeCommandLabel: TLabel;
ExecuteBeforeGroupBox: TGroupBox;
ExecuteBeforeScanFPCCheckBox: TCheckBox;
ExecuteBeforeScanLabel: TLabel;
ExecuteBeforeScanMakeCheckBox: TCheckBox;
ExecuteBeforeShowAllCheckBox: TCheckBox;
ExecBeforeParsersCheckComboBox: TCheckComboBox;
ExecBeforeParsersLabel: TLabel;
grpCompiler: TGroupBox;
lblCompiler: TLabel;
lblRunIfCompiler: TLabel;
lblRunIfExecAfter: TLabel;
lblRunIfExecBefore: TLabel;
procedure CompCmdBrowseButtonClick(Sender: TObject);
procedure ExecAfterParsersCheckComboBoxItemChange(Sender: TObject;
{%H-}AIndex: Integer);
procedure ExecBeforeParsersCheckComboBoxItemChange(Sender: TObject;
{%H-}AIndex: Integer);
private
procedure ReadSettingsParsers(ToolOpts: TCompilationToolOptions;
Cmb: TCheckComboBox; Lbl: TLabel);
procedure WriteSettingsParsers(ToolOpts: TCompilationToolOptions;
Cmb: TCheckComboBox);
procedure UpdateParsersLabel(Lbl: TLabel; Cmb: TCheckComboBox);
public
function GetTitle: string; override;
procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override;
@ -141,6 +148,104 @@ begin
end;
end;
procedure TCompilerCompilationOptionsFrame.
ExecAfterParsersCheckComboBoxItemChange(Sender: TObject; AIndex: Integer);
begin
UpdateParsersLabel(ExecAfterParsersSumLabel,ExecAfterParsersCheckComboBox);
end;
procedure TCompilerCompilationOptionsFrame.
ExecBeforeParsersCheckComboBoxItemChange(Sender: TObject; AIndex: Integer);
begin
UpdateParsersLabel(ExecBeforeParsersSumLabel,ExecBeforeParsersCheckComboBox);
end;
procedure TCompilerCompilationOptionsFrame.ReadSettingsParsers(
ToolOpts: TCompilationToolOptions; Cmb: TCheckComboBox; Lbl: TLabel);
const
BoolToChecked: array[boolean] of TCheckBoxState = (cbUnchecked,cbChecked);
var
l: TFPList;
i, j: Integer;
ParserClass: TExtToolParserClass;
s: String;
begin
l:=TFPList.Create;
try
// add registered parsers
for i:=0 to ExternalToolList.ParserCount-1 do
begin
ParserClass:=ExternalToolList.Parsers[i];
j:=0;
while (j<l.Count)
and (TExtToolParserClass(l[j]).Priority>=ParserClass.Priority) do
inc(j);
l.Insert(j,ParserClass);
end;
Cmb.Clear;
for i:=0 to l.Count-1 do
begin
ParserClass:=TExtToolParserClass(l[i]);
s:=ParserClass.GetLocalizedParserName;
Cmb.AddItem(s,BoolToChecked[ToolOpts.HasParser[ParserClass.GetParserName]]);
end;
// add not registered parsers
// Note: this happens when opening a project, which needs a designtime-package
for i:=0 to ToolOpts.Parsers.Count-1 do
begin
s:=ToolOpts.Parsers[i];
if ExternalToolList.FindParserWithName(s)=nil then
Cmb.AddItem(s,cbChecked);
end;
UpdateParsersLabel(Lbl,Cmb);
finally
l.Free;
end;
end;
procedure TCompilerCompilationOptionsFrame.WriteSettingsParsers(
ToolOpts: TCompilationToolOptions; Cmb: TCheckComboBox);
var
sl: TStringList;
i, j: Integer;
begin
sl:=TStringList.Create;
try
for i:=0 to Cmb.Items.Count-1 do
if Cmb.Checked[i] then begin
j:=ExternalToolList.ParserCount-1;
while (j>=0)
and (Cmb.Items[i]<>ExternalToolList.Parsers[i].GetLocalizedParserName) do
dec(j);
if j>=0 then
sl.Add(ExternalToolList.Parsers[i].GetParserName)
else
sl.Add(Cmb.Items[i]); // not registered parser
end;
ToolOpts.Parsers:=sl;
finally
sl.Free;
end;
end;
procedure TCompilerCompilationOptionsFrame.UpdateParsersLabel(Lbl: TLabel;
Cmb: TCheckComboBox);
var
s: String;
i: Integer;
begin
s:='';
for i:=0 to Cmb.Items.Count-1 do
begin
if Cmb.Checked[i] then
begin
if s<>'' then s:=s+', ';
s:=s+Cmb.Items[i];
end;
end;
Lbl.Caption:=s;
end;
function TCompilerCompilationOptionsFrame.GetTitle: string;
begin
Result := dlgCOCompilerCommands;
@ -158,10 +263,7 @@ begin
chkExecBeforeRun.Caption := lisRunStage;
ExecuteBeforeCommandComboBox.Text := '';
ExecuteBeforeCommandLabel.Caption := lisCOCommand;
ExecuteBeforeScanLabel.Caption := lisCOScanForMessages;
ExecuteBeforeScanFPCCheckBox.Caption := SubToolFPC; // do not translate name
ExecuteBeforeScanMakeCheckBox.Caption := SubToolMake; // do not translate name
ExecuteBeforeShowAllCheckBox.Caption := lisA2PShowAll;
ExecBeforeParsersLabel.Caption:=lisParsers;
grpCompiler.Caption := lisCompiler;
lblRunIfCompiler.Caption := lisCOCallOn;
@ -181,10 +283,7 @@ begin
chkExecAfterRun.Caption := lisRunStage;
ExecuteAfterCommandComboBox.Text := '';
ExecuteAfterCommandLabel.Caption := lisCOCommand;
ExecuteAfterScanLabel.Caption := lisCOScanForMessages;
ExecuteAfterScanFPCCheckBox.Caption := SubToolFPC; // do not translate name
ExecuteAfterScanMakeCheckBox.Caption := SubToolMake; // do not translate name
ExecuteAfterShowAllCheckBox.Caption := lisA2PShowAll;
ExecAfterParsersLabel.Caption:=lisParsers;
lblRunIfExecAfter.Caption := lisCOCallOn;
end;
@ -195,9 +294,6 @@ begin
chkCreateMakefile.Checked := Options.CreateMakefileOnBuild;
ExecuteBeforeCommandComboBox.Text := Options.ExecuteBefore.Command;
ExecuteBeforeScanFPCCheckBox.Checked := Options.ExecuteBefore.HasParser[SubToolFPC];
ExecuteBeforeScanMakeCheckBox.Checked := Options.ExecuteBefore.HasParser[SubToolMake];
ExecuteBeforeShowAllCheckBox.Checked := Options.ExecuteBefore.HasParser[SubToolDefault];
if Options.ExecuteBefore is TProjectCompilationToolOptions then
with TProjectCompilationToolOptions(Options.ExecuteBefore) do
@ -225,6 +321,8 @@ begin
SetComboBoxText(cobCompiler,Options.CompilerPath,cstFilename);
Items.EndUpdate;
end;
ReadSettingsParsers(Options.ExecuteBefore,ExecBeforeParsersCheckComboBox,
ExecBeforeParsersSumLabel);
ExecuteBeforeCommandComboBox.Items.Assign(
InputHistories.HistoryLists.GetList('BuildExecBefore',true,rltFile));
@ -269,9 +367,6 @@ begin
end;
ExecuteAfterCommandComboBox.Text := Options.ExecuteAfter.Command;
ExecuteAfterScanFPCCheckBox.Checked := Options.ExecuteAfter.HasParser[SubToolFPC];
ExecuteAfterScanMakeCheckBox.Checked := Options.ExecuteAfter.HasParser[SubToolMake];
ExecuteAfterShowAllCheckBox.Checked := Options.ExecuteAfter.HasParser[SubToolDefault];
if Options.ExecuteAfter is TProjectCompilationToolOptions then
with TProjectCompilationToolOptions(Options.ExecuteAfter) do
begin
@ -290,6 +385,8 @@ begin
chkExecAfterBuild.Visible := False;
chkExecAfterRun.Visible := False;
end;
ReadSettingsParsers(Options.ExecuteAfter,ExecAfterParsersCheckComboBox,
ExecAfterParsersSumLabel);
end;
procedure TCompilerCompilationOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
@ -308,9 +405,8 @@ begin
Options.CreateMakefileOnBuild := chkCreateMakefile.Checked;
Options.ExecuteBefore.Command := ExecuteBeforeCommandComboBox.Text;
Options.ExecuteBefore.HasParser[SubToolFPC] := ExecuteBeforeScanFPCCheckBox.Checked;
Options.ExecuteBefore.HasParser[SubToolMake] :=ExecuteBeforeScanMakeCheckBox.Checked;
Options.ExecuteBefore.HasParser[SubToolDefault] := ExecuteBeforeShowAllCheckBox.Checked;
WriteSettingsParsers(Options.ExecuteBefore,ExecBeforeParsersCheckComboBox);
if Options.ExecuteBefore is TProjectCompilationToolOptions then
begin
@ -335,9 +431,7 @@ begin
TPkgCompilerOptions(Options).SkipCompiler := chkCompilerCompile.Checked;
Options.ExecuteAfter.Command := ExecuteAfterCommandComboBox.Text;
Options.ExecuteAfter.HasParser[SubToolFPC] := ExecuteAfterScanFPCCheckBox.Checked;
Options.ExecuteAfter.HasParser[SubToolMake] :=ExecuteAfterScanMakeCheckBox.Checked;
Options.ExecuteAfter.HasParser[SubToolDefault] := ExecuteAfterShowAllCheckBox.Checked;
WriteSettingsParsers(Options.ExecuteAfter,ExecAfterParsersCheckComboBox);
if Options.ExecuteAfter is TProjectCompilationToolOptions then
begin
TProjectCompilationToolOptions(Options.ExecuteAfter).CompileReasons :=

View File

@ -2377,6 +2377,7 @@ resourcestring
// Initial setup dialog
lisScanning = 'Scanning';
lisCompiler = 'Compiler';
lisParsers = 'Parsers:';
lisDebugger = 'Debugger';
lisToFPCPath = 'Path:';