mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-08 02:38:03 +02:00
git-svn-id: trunk@42217 -
This commit is contained in:
parent
84ef01e07a
commit
9b06e79ee7
@ -24,15 +24,16 @@ object BuildModesForm: TBuildModesForm
|
||||
ClientWidth = 596
|
||||
TabOrder = 0
|
||||
object BuildModesStringGrid: TStringGrid
|
||||
AnchorSideTop.Control = BuildModeAddSpeedButton
|
||||
AnchorSideTop.Control = AddSpeedButton
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 264
|
||||
Top = 22
|
||||
Height = 263
|
||||
Top = 23
|
||||
Width = 596
|
||||
Align = alBottom
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
AutoFillColumns = True
|
||||
BorderSpacing.Top = 1
|
||||
ColCount = 3
|
||||
Columns = <
|
||||
item
|
||||
@ -66,55 +67,55 @@ object BuildModesForm: TBuildModesForm
|
||||
198
|
||||
)
|
||||
end
|
||||
object BuildModeAddSpeedButton: TSpeedButton
|
||||
object AddSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = BuildModesGroupBox
|
||||
AnchorSideTop.Control = BuildModesGroupBox
|
||||
Left = 0
|
||||
Height = 22
|
||||
Top = 0
|
||||
Width = 23
|
||||
OnClick = BuildModeAddSpeedButtonClick
|
||||
OnClick = AddSpeedButtonClick
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object BuildModeDeleteSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = BuildModeAddSpeedButton
|
||||
object DeleteSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = AddSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = BuildModesGroupBox
|
||||
Left = 23
|
||||
Height = 22
|
||||
Top = 0
|
||||
Width = 23
|
||||
OnClick = BuildModeDeleteSpeedButtonClick
|
||||
OnClick = DeleteSpeedButtonClick
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object BuildModeMoveUpSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = BuildModeDeleteSpeedButton
|
||||
object MoveUpSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = DeleteSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = BuildModesGroupBox
|
||||
Left = 46
|
||||
Height = 22
|
||||
Top = 0
|
||||
Width = 23
|
||||
OnClick = BuildModeMoveUpSpeedButtonClick
|
||||
OnClick = MoveUpSpeedButtonClick
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object BuildModeMoveDownSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = BuildModeMoveUpSpeedButton
|
||||
object MoveDownSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = MoveUpSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = BuildModesGroupBox
|
||||
Left = 69
|
||||
Height = 22
|
||||
Top = 0
|
||||
Width = 23
|
||||
OnClick = BuildModeMoveDownSpeedButtonClick
|
||||
OnClick = MoveDownSpeedButtonClick
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object BuildModeDiffSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = BuildModeMoveDownSpeedButton
|
||||
object DiffSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = MoveDownSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = BuildModesGroupBox
|
||||
Left = 102
|
||||
@ -122,18 +123,33 @@ object BuildModesForm: TBuildModesForm
|
||||
Top = 0
|
||||
Width = 23
|
||||
BorderSpacing.Left = 10
|
||||
OnClick = BuildModeDiffSpeedButtonClick
|
||||
OnClick = DiffSpeedButtonClick
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object NoteLabel: TLabel
|
||||
AnchorSideTop.Control = DiffSpeedButton
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 160
|
||||
Height = 15
|
||||
Top = 3
|
||||
Top = 4
|
||||
Width = 63
|
||||
Caption = 'NoteLabel'
|
||||
ParentColor = False
|
||||
end
|
||||
object btnCreateDefaultModes: TButton
|
||||
AnchorSideTop.Control = NoteLabel
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 362
|
||||
Height = 25
|
||||
Top = -1
|
||||
Width = 228
|
||||
Anchors = [akTop, akRight]
|
||||
AutoSize = True
|
||||
Caption = 'Create Debug and Release modes'
|
||||
OnClick = btnCreateDefaultModesClick
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
||||
object ButtonPanel1: TButtonPanel
|
||||
Left = 6
|
||||
|
@ -32,34 +32,36 @@ interface
|
||||
uses
|
||||
Classes, SysUtils, Forms, Controls, Dialogs, StdCtrls, Grids, Buttons, Menus,
|
||||
ButtonPanel, LCLProc, Graphics, IDEOptionsIntf, IDEDialogs, TransferMacros,
|
||||
Project, LazarusIDEStrConsts, CompilerOptions, Compiler_ModeMatrix,
|
||||
BuildModeDiffDlg;
|
||||
Project, CompOptsIntf, CompilerOptions, Compiler_ModeMatrix,
|
||||
BuildModeDiffDlg, LazarusIDEStrConsts;
|
||||
|
||||
type
|
||||
|
||||
{ TBuildModesForm }
|
||||
|
||||
TBuildModesForm = class(TForm)
|
||||
BuildModeAddSpeedButton: TSpeedButton;
|
||||
BuildModeDeleteSpeedButton: TSpeedButton;
|
||||
BuildModeDiffSpeedButton: TSpeedButton;
|
||||
BuildModeMoveDownSpeedButton: TSpeedButton;
|
||||
BuildModeMoveUpSpeedButton: TSpeedButton;
|
||||
AddSpeedButton: TSpeedButton;
|
||||
DeleteSpeedButton: TSpeedButton;
|
||||
DiffSpeedButton: TSpeedButton;
|
||||
MoveDownSpeedButton: TSpeedButton;
|
||||
MoveUpSpeedButton: TSpeedButton;
|
||||
BuildModesGroupBox: TGroupBox;
|
||||
BuildModesPopupMenu: TPopupMenu;
|
||||
BuildModesStringGrid: TStringGrid;
|
||||
btnCreateDefaultModes: TButton;
|
||||
ButtonPanel1: TButtonPanel;
|
||||
NoteLabel: TLabel;
|
||||
procedure btnCreateDefaultModesClick(Sender: TObject);
|
||||
procedure BuildModesStringGridDrawCell(Sender: TObject; aCol,
|
||||
aRow: Integer; aRect: TRect; aState: TGridDrawState);
|
||||
procedure CancelButtonClick(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
procedure BuildModeDiffSpeedButtonClick(Sender: TObject);
|
||||
procedure BuildModeAddSpeedButtonClick(Sender: TObject);
|
||||
procedure BuildModeDeleteSpeedButtonClick(Sender: TObject);
|
||||
procedure BuildModeMoveDownSpeedButtonClick(Sender: TObject);
|
||||
procedure BuildModeMoveUpSpeedButtonClick(Sender: TObject);
|
||||
procedure DiffSpeedButtonClick(Sender: TObject);
|
||||
procedure AddSpeedButtonClick(Sender: TObject);
|
||||
procedure DeleteSpeedButtonClick(Sender: TObject);
|
||||
procedure MoveDownSpeedButtonClick(Sender: TObject);
|
||||
procedure MoveUpSpeedButtonClick(Sender: TObject);
|
||||
procedure BuildModesCheckboxToggled(Sender: TObject;
|
||||
aCol, aRow: Integer; aState: TCheckboxState);
|
||||
procedure BuildModesStringGridSelection(Sender: TObject;
|
||||
@ -103,6 +105,10 @@ procedure UpdateBuildModeCombo(aCombo: TComboBox);
|
||||
|
||||
implementation
|
||||
|
||||
const
|
||||
DebugModeName = 'Debug';
|
||||
ReleaseModeName = 'Release';
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
function ShowBuildModesDlg(aShowSession: Boolean): TModalResult;
|
||||
@ -137,12 +143,11 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure SwitchBuildMode(aBuildModeID: string;
|
||||
LoadSaveProjectOptions: boolean);
|
||||
procedure SwitchBuildMode(aBuildModeID: string; LoadSaveProjectOptions: boolean);
|
||||
begin
|
||||
if LoadSaveProjectOptions then
|
||||
OnSaveIDEOptionsHook(Nil, Project1.CompilerOptions); // Save changes
|
||||
Project1.ActiveBuildModeID := aBuildModeID; // Switch
|
||||
Project1.ActiveBuildModeID := aBuildModeID; // Switch
|
||||
IncreaseBuildMacroChangeStamp;
|
||||
if LoadSaveProjectOptions then
|
||||
OnLoadIDEOptionsHook(Nil, Project1.CompilerOptions); // Load options
|
||||
@ -207,20 +212,74 @@ begin
|
||||
FillBuildModesGrid;
|
||||
UpdateBuildModeButtons;
|
||||
|
||||
BuildModeAddSpeedButton.LoadGlyphFromLazarusResource('laz_add');
|
||||
BuildModeDeleteSpeedButton.LoadGlyphFromLazarusResource('laz_delete');
|
||||
BuildModeMoveUpSpeedButton.LoadGlyphFromLazarusResource('arrow_up');
|
||||
BuildModeMoveDownSpeedButton.LoadGlyphFromLazarusResource('arrow_down');
|
||||
BuildModeDiffSpeedButton.LoadGlyphFromLazarusResource('menu_tool_diff');
|
||||
AddSpeedButton.LoadGlyphFromLazarusResource('laz_add');
|
||||
DeleteSpeedButton.LoadGlyphFromLazarusResource('laz_delete');
|
||||
MoveUpSpeedButton.LoadGlyphFromLazarusResource('arrow_up');
|
||||
MoveDownSpeedButton.LoadGlyphFromLazarusResource('arrow_down');
|
||||
DiffSpeedButton.LoadGlyphFromLazarusResource('menu_tool_diff');
|
||||
end;
|
||||
|
||||
procedure TBuildModesForm.BuildModeDiffSpeedButtonClick(Sender: TObject);
|
||||
procedure TBuildModesForm.DiffSpeedButtonClick(Sender: TObject);
|
||||
begin
|
||||
// show diff dialog
|
||||
ShowBuildModeDiffDialog(BuildModes,GetSelectedBuildMode);
|
||||
end;
|
||||
|
||||
procedure TBuildModesForm.BuildModeAddSpeedButtonClick(Sender: TObject);
|
||||
procedure TBuildModesForm.btnCreateDefaultModesClick(Sender: TObject);
|
||||
var
|
||||
CurMode: TProjectBuildMode;
|
||||
|
||||
procedure AssignAndSetBooleans(aMode: TProjectBuildMode; IsDebug: Boolean);
|
||||
begin
|
||||
if CurMode<>nil then
|
||||
aMode.Assign(CurMode); // clone from currently selected mode
|
||||
with aMode.CompilerOptions do
|
||||
begin
|
||||
// Smart linking
|
||||
SmartLinkUnit:=not IsDebug;
|
||||
LinkSmart:=not IsDebug;
|
||||
// Checks
|
||||
IOChecks:=IsDebug;
|
||||
RangeChecks:=IsDebug;
|
||||
OverflowChecks:=IsDebug;
|
||||
StackChecks:=IsDebug;
|
||||
IncludeAssertionCode:=IsDebug;
|
||||
// Debug flags
|
||||
GenerateDebugInfo:=IsDebug;
|
||||
UseHeaptrc:=IsDebug;
|
||||
// ToDo: TrashVariables:=IsDebug;
|
||||
end;
|
||||
end;
|
||||
|
||||
var
|
||||
DMode, RMode: TProjectBuildMode;
|
||||
i: Integer;
|
||||
begin
|
||||
i:=BuildModesStringGrid.Row-1;
|
||||
if (i>=0) then
|
||||
CurMode:=fBuildModes[i]
|
||||
else
|
||||
CurMode:=nil;
|
||||
// Create Debug DMode
|
||||
DMode:=fBuildModes.Add(DebugModeName);
|
||||
AssignAndSetBooleans(DMode, True);
|
||||
DMode.CompilerOptions.OptimizationLevel:=1; // Optimization
|
||||
DMode.CompilerOptions.DebugInfoType:=dsDwarf2Set; // Debug
|
||||
|
||||
// Create Release DMode
|
||||
RMode:=fBuildModes.Add(ReleaseModeName);
|
||||
AssignAndSetBooleans(RMode, False);
|
||||
RMode.CompilerOptions.OptimizationLevel:=3; // Optimization
|
||||
RMode.CompilerOptions.DebugInfoType:=dsAuto; // Debug
|
||||
|
||||
fActiveBuildMode:=DMode; // activate Debug mode
|
||||
FillBuildModesGrid; // show
|
||||
// select identifier
|
||||
BuildModesStringGrid.Col:=fModeNameCol;
|
||||
BuildModesStringGrid.Row:=BuildModesStringGrid.RowCount-1;
|
||||
end;
|
||||
|
||||
procedure TBuildModesForm.AddSpeedButtonClick(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
NewName, Identifier: String;
|
||||
@ -245,7 +304,7 @@ begin
|
||||
until fBuildModes.Find(NewName)=nil;
|
||||
// create new mode
|
||||
NewMode:=fBuildModes.Add(NewName);
|
||||
// clone
|
||||
// clone from currently selected mode
|
||||
if CurMode<>nil then
|
||||
NewMode.Assign(CurMode);
|
||||
fActiveBuildMode:=NewMode; // activate
|
||||
@ -256,7 +315,7 @@ begin
|
||||
BuildModesStringGrid.EditorMode:=true;
|
||||
end;
|
||||
|
||||
procedure TBuildModesForm.BuildModeDeleteSpeedButtonClick(Sender: TObject);
|
||||
procedure TBuildModesForm.DeleteSpeedButtonClick(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
CurMode: TProjectBuildMode;
|
||||
@ -294,7 +353,7 @@ begin
|
||||
Grid.Row:=i;
|
||||
end;
|
||||
|
||||
procedure TBuildModesForm.BuildModeMoveDownSpeedButtonClick(Sender: TObject);
|
||||
procedure TBuildModesForm.MoveDownSpeedButtonClick(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
@ -307,7 +366,7 @@ begin
|
||||
BuildModesStringGrid.Row:=i+1;
|
||||
end;
|
||||
|
||||
procedure TBuildModesForm.BuildModeMoveUpSpeedButtonClick(Sender: TObject);
|
||||
procedure TBuildModesForm.MoveUpSpeedButtonClick(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
@ -467,15 +526,19 @@ begin
|
||||
else
|
||||
Caption:='No project';
|
||||
// Buttons
|
||||
BuildModeAddSpeedButton.Hint:=Format(lisAddNewBuildModeCopyingSettingsFrom, [Identifier]);
|
||||
BuildModeDeleteSpeedButton.Enabled:=(CurMode<>nil) and (fBuildModes.Count>1);
|
||||
BuildModeDeleteSpeedButton.Hint:=Format(lisDeleteMode, [Identifier]);
|
||||
BuildModeMoveUpSpeedButton.Enabled:=(CurMode<>nil) and (i>0);
|
||||
BuildModeMoveUpSpeedButton.Hint:=Format(lisMoveOnePositionUp, [Identifier]);
|
||||
BuildModeMoveDownSpeedButton.Enabled:=i<BuildModesStringGrid.RowCount-2;
|
||||
BuildModeMoveDownSpeedButton.Hint:=Format(lisMoveOnePositionDown, [Identifier]);
|
||||
BuildModeDiffSpeedButton.Hint:=lisShowDifferencesBetweenModes;
|
||||
AddSpeedButton.Hint:=Format(lisAddNewBuildModeCopyingSettingsFrom, [Identifier]);
|
||||
DeleteSpeedButton.Enabled:=(CurMode<>nil) and (fBuildModes.Count>1);
|
||||
DeleteSpeedButton.Hint:=Format(lisDeleteMode, [Identifier]);
|
||||
MoveUpSpeedButton.Enabled:=(CurMode<>nil) and (i>0);
|
||||
MoveUpSpeedButton.Hint:=Format(lisMoveOnePositionUp, [Identifier]);
|
||||
MoveDownSpeedButton.Enabled:=i<BuildModesStringGrid.RowCount-2;
|
||||
MoveDownSpeedButton.Hint:=Format(lisMoveOnePositionDown, [Identifier]);
|
||||
DiffSpeedButton.Hint:=lisShowDifferencesBetweenModes;
|
||||
NoteLabel.Caption:='';
|
||||
btnCreateDefaultModes.Caption:='Create Debug and Release modes';
|
||||
btnCreateDefaultModes.Hint:='';
|
||||
btnCreateDefaultModes.Enabled := (fBuildModes.Find(DebugModeName)=Nil)
|
||||
and (fBuildModes.Find(ReleaseModeName)=Nil);
|
||||
end;
|
||||
|
||||
procedure TBuildModesForm.SetShowSession(const AValue: boolean);
|
||||
|
@ -105,12 +105,12 @@ begin
|
||||
end;
|
||||
grpLinking.Enabled := NeedsLinkerOpts;
|
||||
chkLinkSmart.Checked := LinkSmart;
|
||||
//chkLinkSmart.Enabled := NeedsLinkerOpts;
|
||||
chkLinkSmart.Enabled := NeedsLinkerOpts;
|
||||
chkWin32GraphicApp.Checked := Win32GraphicApp;
|
||||
//chkWin32GraphicApp.Enabled := NeedsLinkerOpts;
|
||||
chkWin32GraphicApp.Enabled := NeedsLinkerOpts;
|
||||
chkOptionsLinkOpt.Checked := PassLinkerOptions;
|
||||
chkOptionsLinkOpt.Enabled := NeedsLinkerOpts;
|
||||
edtOptionsLinkOpt.Text := LinkerOptions;
|
||||
//chkOptionsLinkOpt.Enabled := NeedsLinkerOpts;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user