mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-27 11:20:33 +02:00
IDE: update ProjInspector caption when changin mode from the options drop-down menu
git-svn-id: trunk@63993 -
This commit is contained in:
parent
7e1c2af2f6
commit
0074814a23
@ -202,24 +202,6 @@ type
|
|||||||
property DisplayState: TDisplayState read FDisplayState write SetDisplayState;
|
property DisplayState: TDisplayState read FDisplayState write SetDisplayState;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TSetBuildModeToolButton }
|
|
||||||
|
|
||||||
TSetBuildModeToolButton = class(TIDEToolButton)
|
|
||||||
public type
|
|
||||||
TBuildModeMenuItem = class(TMenuItem)
|
|
||||||
public
|
|
||||||
BuildModeIndex: Integer;
|
|
||||||
procedure Click; override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
TBuildModeMenu = class(TPopupMenu)
|
|
||||||
protected
|
|
||||||
procedure DoPopup(Sender: TObject); override;
|
|
||||||
end;
|
|
||||||
public
|
|
||||||
procedure DoOnAdded; override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TOpenFileToolButton }
|
{ TOpenFileToolButton }
|
||||||
|
|
||||||
TOpenFileToolButton = class(TIDEToolButton)
|
TOpenFileToolButton = class(TIDEToolButton)
|
||||||
@ -330,67 +312,6 @@ begin
|
|||||||
Result:=MainIDE.PrepareForCompile;
|
Result:=MainIDE.PrepareForCompile;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TSetBuildModeToolButton.TBuildModeMenu }
|
|
||||||
|
|
||||||
procedure TSetBuildModeToolButton.TBuildModeMenu.DoPopup(Sender: TObject);
|
|
||||||
var
|
|
||||||
CurIndex: Integer;
|
|
||||||
i: Integer;
|
|
||||||
|
|
||||||
procedure AddMode(BuildModeIndex: Integer; CurMode: TProjectBuildMode);
|
|
||||||
var
|
|
||||||
AMenuItem: TBuildModeMenuItem;
|
|
||||||
begin
|
|
||||||
if Items.Count > CurIndex then
|
|
||||||
AMenuItem := Items[CurIndex] as TBuildModeMenuItem
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
AMenuItem := TBuildModeMenuItem.Create(Self);
|
|
||||||
AMenuItem.Name := Name + 'Mode' + IntToStr(CurIndex);
|
|
||||||
Items.Add(AMenuItem);
|
|
||||||
end;
|
|
||||||
AMenuItem.BuildModeIndex := BuildModeIndex;
|
|
||||||
AMenuItem.Caption := CurMode.GetCaption;
|
|
||||||
AMenuItem.Checked := (Project1<>nil) and (Project1.ActiveBuildMode=CurMode);
|
|
||||||
AMenuItem.ShowAlwaysCheckable:=true;
|
|
||||||
inc(CurIndex);
|
|
||||||
end;
|
|
||||||
|
|
||||||
begin
|
|
||||||
// fill the PopupMenu
|
|
||||||
CurIndex := 0;
|
|
||||||
if Project1<>nil then
|
|
||||||
for i:=0 to Project1.BuildModes.Count-1 do
|
|
||||||
AddMode(i, Project1.BuildModes[i]);
|
|
||||||
// remove unused menuitems
|
|
||||||
while Items.Count > CurIndex do
|
|
||||||
Items[Items.Count - 1].Free;
|
|
||||||
|
|
||||||
inherited DoPopup(Sender);
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TSetBuildModeToolButton.TBuildModeMenuItem }
|
|
||||||
|
|
||||||
procedure TSetBuildModeToolButton.TBuildModeMenuItem.Click;
|
|
||||||
var
|
|
||||||
NewMode: TProjectBuildMode;
|
|
||||||
begin
|
|
||||||
inherited Click;
|
|
||||||
|
|
||||||
NewMode := Project1.BuildModes[BuildModeIndex];
|
|
||||||
if NewMode = Project1.ActiveBuildMode then exit;
|
|
||||||
if not (MainIDE.ToolStatus in [itNone,itDebugger]) then begin
|
|
||||||
IDEMessageDialog(dlgMsgWinColorUrgentError,
|
|
||||||
lisYouCanNotChangeTheBuildModeWhileCompiling,
|
|
||||||
mtError,[mbOk]);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Project1.ActiveBuildMode := NewMode;
|
|
||||||
MainBuildBoss.SetBuildTargetProject1(false);
|
|
||||||
MainIDE.UpdateCaption;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TNewFormUnitToolButton }
|
{ TNewFormUnitToolButton }
|
||||||
|
|
||||||
procedure TNewFormUnitToolButton.DoOnAdded;
|
procedure TNewFormUnitToolButton.DoOnAdded;
|
||||||
@ -589,16 +510,6 @@ begin
|
|||||||
@mnuOpenFile);
|
@mnuOpenFile);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TSetBuildModeToolButton }
|
|
||||||
|
|
||||||
procedure TSetBuildModeToolButton.DoOnAdded;
|
|
||||||
begin
|
|
||||||
inherited DoOnAdded;
|
|
||||||
|
|
||||||
DropdownMenu := TBuildModeMenu.Create(Self);
|
|
||||||
Style := tbsDropDown;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{$IFDEF LCLCocoa}
|
{$IFDEF LCLCocoa}
|
||||||
var
|
var
|
||||||
mnuApple: TIDEMenuSection = nil;
|
mnuApple: TIDEMenuSection = nil;
|
||||||
|
@ -70,8 +70,9 @@ uses
|
|||||||
// IDE
|
// IDE
|
||||||
LazarusIDEStrConsts, MainIntf, IDEProcs, DialogProcs, IDEOptionDefs,
|
LazarusIDEStrConsts, MainIntf, IDEProcs, DialogProcs, IDEOptionDefs,
|
||||||
PackageDefs, Project, InputHistory, MainBase, EnvironmentOpts,
|
PackageDefs, Project, InputHistory, MainBase, EnvironmentOpts,
|
||||||
AddToProjectDlg, AddPkgDependencyDlg, AddFPMakeDependencyDlg,
|
AddToProjectDlg, AddPkgDependencyDlg, AddFPMakeDependencyDlg, ProjPackChecks,
|
||||||
ProjPackChecks, ProjPackEditing, ProjPackFilePropGui, PackageSystem;
|
ProjPackEditing, ProjPackFilePropGui, PackageSystem, ToolBarIntf,
|
||||||
|
BuildManager;
|
||||||
|
|
||||||
type
|
type
|
||||||
TOnAddUnitToProject =
|
TOnAddUnitToProject =
|
||||||
@ -256,6 +257,24 @@ type
|
|||||||
property IdleConnected: boolean read FIdleConnected write SetIdleConnected;
|
property IdleConnected: boolean read FIdleConnected write SetIdleConnected;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TSetBuildModeToolButton }
|
||||||
|
|
||||||
|
TSetBuildModeToolButton = class(TIDEToolButton)
|
||||||
|
public type
|
||||||
|
TBuildModeMenuItem = class(TMenuItem)
|
||||||
|
public
|
||||||
|
BuildModeIndex: Integer;
|
||||||
|
procedure Click; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TBuildModeMenu = class(TPopupMenu)
|
||||||
|
protected
|
||||||
|
procedure DoPopup(Sender: TObject); override;
|
||||||
|
end;
|
||||||
|
public
|
||||||
|
procedure DoOnAdded; override;
|
||||||
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
ProjInspector: TProjectInspectorForm = nil;
|
ProjInspector: TProjectInspectorForm = nil;
|
||||||
|
|
||||||
@ -1661,5 +1680,78 @@ begin
|
|||||||
Result:=Item<>nil;
|
Result:=Item<>nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TSetBuildModeToolButton.TBuildModeMenu }
|
||||||
|
|
||||||
|
procedure TSetBuildModeToolButton.TBuildModeMenu.DoPopup(Sender: TObject);
|
||||||
|
var
|
||||||
|
CurIndex: Integer;
|
||||||
|
i: Integer;
|
||||||
|
|
||||||
|
procedure AddMode(BuildModeIndex: Integer; CurMode: TProjectBuildMode);
|
||||||
|
var
|
||||||
|
AMenuItem: TBuildModeMenuItem;
|
||||||
|
begin
|
||||||
|
if Items.Count > CurIndex then
|
||||||
|
AMenuItem := Items[CurIndex] as TBuildModeMenuItem
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
AMenuItem := TBuildModeMenuItem.Create(Self);
|
||||||
|
AMenuItem.Name := Name + 'Mode' + IntToStr(CurIndex);
|
||||||
|
Items.Add(AMenuItem);
|
||||||
|
end;
|
||||||
|
AMenuItem.BuildModeIndex := BuildModeIndex;
|
||||||
|
AMenuItem.Caption := CurMode.GetCaption;
|
||||||
|
AMenuItem.Checked := (Project1<>nil) and (Project1.ActiveBuildMode=CurMode);
|
||||||
|
AMenuItem.ShowAlwaysCheckable:=true;
|
||||||
|
inc(CurIndex);
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
// fill the PopupMenu
|
||||||
|
CurIndex := 0;
|
||||||
|
if Project1<>nil then
|
||||||
|
for i:=0 to Project1.BuildModes.Count-1 do
|
||||||
|
AddMode(i, Project1.BuildModes[i]);
|
||||||
|
// remove unused menuitems
|
||||||
|
while Items.Count > CurIndex do
|
||||||
|
Items[Items.Count - 1].Free;
|
||||||
|
|
||||||
|
inherited DoPopup(Sender);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TSetBuildModeToolButton.TBuildModeMenuItem }
|
||||||
|
|
||||||
|
procedure TSetBuildModeToolButton.TBuildModeMenuItem.Click;
|
||||||
|
var
|
||||||
|
NewMode: TProjectBuildMode;
|
||||||
|
begin
|
||||||
|
inherited Click;
|
||||||
|
|
||||||
|
NewMode := Project1.BuildModes[BuildModeIndex];
|
||||||
|
if NewMode = Project1.ActiveBuildMode then exit;
|
||||||
|
if not (MainIDE.ToolStatus in [itNone,itDebugger]) then begin
|
||||||
|
IDEMessageDialog(dlgMsgWinColorUrgentError,
|
||||||
|
lisYouCanNotChangeTheBuildModeWhileCompiling,
|
||||||
|
mtError,[mbOk]);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Project1.ActiveBuildMode := NewMode;
|
||||||
|
MainBuildBoss.SetBuildTargetProject1(false);
|
||||||
|
MainIDE.UpdateCaption;
|
||||||
|
if Assigned(ProjInspector) then
|
||||||
|
ProjInspector.UpdateTitle;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TSetBuildModeToolButton }
|
||||||
|
|
||||||
|
procedure TSetBuildModeToolButton.DoOnAdded;
|
||||||
|
begin
|
||||||
|
inherited DoOnAdded;
|
||||||
|
|
||||||
|
DropdownMenu := TBuildModeMenu.Create(Self);
|
||||||
|
Style := tbsDropDown;
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user