IDE: update ProjInspector caption when changin mode from the options drop-down menu

git-svn-id: trunk@63993 -
This commit is contained in:
ondrej 2020-10-12 10:19:46 +00:00
parent 7e1c2af2f6
commit 0074814a23
2 changed files with 94 additions and 91 deletions

View File

@ -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;

View File

@ -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.