IDE: refactor, move methods from MainIDE to MainIDEBar.

git-svn-id: trunk@49485 -
This commit is contained in:
juha 2015-07-02 18:50:22 +00:00
parent e352c0638b
commit 4d49e9606d
2 changed files with 116 additions and 126 deletions

View File

@ -393,7 +393,6 @@ type
procedure ToolBarOptionsClick(Sender: TObject);
private
fBuilder: TLazarusBuilder;
procedure AllowCompilation(aAllow: Boolean);
function DoBuildLazarusSub(Flags: TBuildLazarusFlags): TModalResult;
public
// Global IDE events
@ -668,9 +667,7 @@ type
procedure SetupHelpMenu; override;
procedure LoadMenuShortCuts; override;
procedure ConnectMainBarEvents;
procedure SetupSpeedButtons;
procedure SetupDialogs;
procedure SetupComponentPalette;
procedure SetupHints;
procedure SetupObjectInspector;
procedure SetupFormEditor;
@ -931,8 +928,6 @@ type
procedure ShowDesignerForm(AForm: TCustomForm);
procedure DoViewAnchorEditor(State: TIWGetFormState = iwgfShowOnTop);
procedure DoViewTabOrderEditor(State: TIWGetFormState = iwgfShowOnTop);
procedure DoToggleViewComponentPalette;
procedure DoToggleViewIDESpeedButtons;
// editor and environment options
procedure SaveEnvironment(Immediately: boolean = false); override;
@ -1479,8 +1474,13 @@ begin
try
SetupStandardIDEMenuItems;
SetupMainMenu;
SetupSpeedButtons;
SetupComponentPalette;
// ToDo: Move more stuff to MainBar
MainIDEBar.SetupSpeedButtons(OwningComponent);
MainIDEBar.OptionsMenuItem.OnClick := @ToolBarOptionsClick;
MainIDEBar.OpenFilePopupMenu.OnPopup := @OpenFilePopupMenuPopup;
MainIDEBar.SetBuildModePopupMenu.OnPopup := @SetBuildModePopupMenuPopup;
MainIDEBar.SetupComponentPalette(OwningComponent);
ConnectMainBarEvents;
finally
MainIDEBar.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TMainIDE.Create'){$ENDIF};
@ -2001,37 +2001,6 @@ begin
end;
{------------------------------------------------------------------------------}
procedure TMainIDE.SetupSpeedButtons;
begin
MainIDEBar.MainSplitter := TSplitter.Create(OwningComponent);
MainIDEBar.MainSplitter.Parent := MainIDEBar;
MainIDEBar.MainSplitter.Align := alLeft;
MainIDEBar.MainSplitter.MinSize := 50;
MainIDEBar.MainSplitter.OnMoved := @MainIDEBar.MainSplitterMoved;
MainIDEBar.CoolBar := TCoolBar.Create(OwningComponent);
MainIDEBar.CoolBar.Parent := MainIDEBar;
if EnvironmentOptions.Desktop.ComponentPaletteVisible then
begin
MainIDEBar.CoolBar.Align := alLeft;
MainIDEBar.CoolBar.Width := EnvironmentOptions.Desktop.IDECoolBarOptions.IDECoolBarWidth;
end
else
MainIDEBar.CoolBar.Align := alClient;
// IDE Coolbar object wraps MainIDEBar.CoolBar.
IDECoolBar := TIDECoolBar.Create(MainIDEBar.CoolBar);
IDECoolBar.IsVisible := EnvironmentOptions.Desktop.IDECoolBarOptions.IDECoolBarVisible;;
MainIDEBar.CoolBar.OnChange := @MainIDEBar.CoolBarOnChange;
MainIDEBar.CreatePopupMenus(OwningComponent);
MainIDEBar.OptionsMenuItem.OnClick := @ToolBarOptionsClick;
MainIDEBar.CoolBar.PopupMenu := MainIDEBar.OptionsPopupMenu;
MainIDEBar.OpenFilePopupMenu.OnPopup := @OpenFilePopupMenuPopup;
MainIDEBar.SetBuildModePopupMenu.OnPopup := @SetBuildModePopupMenuPopup;
end;
procedure TMainIDE.SetupDialogs;
begin
LazIDESelectDirectory:=@OnSelectDirectory;
@ -2043,18 +2012,6 @@ begin
CheckCompOptsAndMainSrcForNewUnitEvent:=@OnCheckCompOptsAndMainSrcForNewUnit;
end;
procedure TMainIDE.SetupComponentPalette;
begin
// Component palette
MainIDEBar.ComponentPageControl := TPageControl.Create(OwningComponent);
with MainIDEBar.ComponentPageControl do begin
Name := 'ComponentPageControl';
Align := alClient;
Visible:=EnvironmentOptions.Desktop.ComponentPaletteVisible;
Parent := MainIDEBar;
end;
end;
procedure TMainIDE.SetupHints;
var
CurShowHint: boolean;
@ -2804,12 +2761,12 @@ end;
procedure TMainIDE.mnuViewComponentPaletteClicked(Sender: TObject);
begin
DoToggleViewComponentPalette;
MainIDEBar.DoToggleViewComponentPalette;
end;
procedure TMainIDE.mnuViewIDESpeedButtonsClicked(Sender: TObject);
begin
DoToggleViewIDESpeedButtons;
MainIDEBar.DoToggleViewIDESpeedButtons;
end;
procedure TMainIDE.mnuViewFPCInfoClicked(Sender: TObject);
@ -3694,73 +3651,13 @@ begin
IDEWindowCreators.ShowForm(TabOrderDialog,State=iwgfShowOnTop);
end;
procedure TMainIDE.DoToggleViewComponentPalette;
var
ComponentPaletteVisible: Boolean;
begin
ComponentPaletteVisible:=not MainIDEBar.ComponentPageControl.Visible;
MainIDEBar.itmViewComponentPalette.Checked:=ComponentPaletteVisible;
MainIDEBar.ComponentPageControl.Visible:=ComponentPaletteVisible;
EnvironmentOptions.Desktop.ComponentPaletteVisible:=ComponentPaletteVisible;
if ComponentPaletteVisible then
begin
if MainIDEBar.CoolBar.Align = alClient then
begin
MainIDEBar.CoolBar.Width := 230;
EnvironmentOptions.Desktop.IDECoolBarOptions.IDECoolBarWidth := 230;
end;
MainIDEBar.CoolBar.Align := alLeft;
MainIDEBar.CoolBar.Vertical := False;
MainIDEBar.MainSplitter.Align := alLeft;
end
else
MainIDEBar.CoolBar.Align := alClient;
MainIDEBar.MainSplitter.Visible := MainIDEBar.Coolbar.Visible and
MainIDEBar.ComponentPageControl.Visible;
if ComponentPaletteVisible then//when showing component palette, it must be visible to calculate it correctly
MainIDEBar.DoSetMainIDEHeight(MainIDEBar.WindowState = wsMaximized, 55);//it will cause the IDE to flicker, but it's better than to have wrongly calculated IDE height
MainIDEBar.SetMainIDEHeight;
end;
procedure TMainIDE.DoToggleViewIDESpeedButtons;
var
SpeedButtonsVisible: boolean;
begin
SpeedButtonsVisible := not MainIDEBar.CoolBar.Visible;
MainIDEBar.itmViewIDESpeedButtons.Checked := SpeedButtonsVisible;
MainIDEBar.CoolBar.Visible := SpeedButtonsVisible;
MainIDEBar.MainSplitter.Visible := SpeedButtonsVisible;
EnvironmentOptions.Desktop.IDECoolBarOptions.IDECoolBarVisible := SpeedButtonsVisible;
MainIDEBar.MainSplitter.Visible := MainIDEBar.Coolbar.Visible and
MainIDEBar.ComponentPageControl.Visible;
MainIDEBar.SetMainIDEHeight;
end;
procedure TMainIDE.AllowCompilation(aAllow: Boolean);
// Enables or disables IDE GUI controls associated with compiling and building.
// Does it interfere with DebugBoss.UpdateButtonsAndMenuItems? Maybe should be refactored and combined.
begin
if MainIDEBar=Nil then Exit;
with MainIDEBar do begin
itmRunMenuRun.Enabled:=aAllow;
itmRunMenuCompile.Enabled:=aAllow;
itmRunMenuBuild.Enabled:=aAllow;
itmRunMenuQuickCompile.Enabled:=aAllow;
itmRunMenuCleanUpAndBuild.Enabled:=aAllow;
itmPkgEditInstallPkgs.Enabled:=aAllow;
itmToolRescanFPCSrcDir.Enabled:=aAllow;
itmToolBuildLazarus.Enabled:=aAllow;
//itmToolConfigureBuildLazarus.Enabled:=aAllow;
end;
end;
procedure TMainIDE.SetToolStatus(const AValue: TIDEToolStatus);
begin
inherited SetToolStatus(AValue);
if DebugBoss <> nil then
DebugBoss.UpdateButtonsAndMenuItems;
AllowCompilation(ToolStatus <> itBuilder); // Disable some GUI controls while compiling.
if Assigned(MainIDEBar) then
MainIDEBar.AllowCompilation(ToolStatus <> itBuilder); // Disable some GUI controls while compiling.
if FWaitForClose and (ToolStatus = itNone) then
begin
FWaitForClose := False;

View File

@ -372,6 +372,7 @@ type
private
FOldWindowState: TWindowState;
FOnActive: TNotifyEvent;
procedure CreatePopupMenus(TheOwner: TComponent);
procedure NewUnitFormDefaultClick(Sender: TObject);
procedure NewUnitFormPopupMenuPopup(Sender: TObject);
function CalcMainIDEHeight: Integer;
@ -384,14 +385,18 @@ type
procedure Resizing(State: TWindowState); override;
public
constructor Create(TheOwner: TComponent); override;
procedure SetupSpeedButtons(TheOwner: TComponent);
procedure SetupComponentPalette(TheOwner: TComponent);
procedure HideIDE;
procedure UnhideIDE;
procedure CreatePopupMenus(TheOwner: TComponent);
property OnActive: TNotifyEvent read FOnActive write FOnActive;
procedure UpdateDockCaption({%H-}Exclude: TControl); override;
procedure RefreshCoolbar;
procedure SetMainIDEHeight;
procedure DoSetMainIDEHeight(const AIDEIsMaximized: Boolean; ANewHeight: Integer = 0);
procedure DoToggleViewComponentPalette;
procedure DoToggleViewIDESpeedButtons;
procedure AllowCompilation(aAllow: Boolean);
end;
var
@ -616,7 +621,7 @@ end;
procedure TMainIDEBar.CreatePopupMenus(TheOwner: TComponent);
begin
// create the popupmenu for the MainIDEBar.OpenFileArrowSpeedBtn
// create the popupmenu for the OpenFileArrowSpeedBtn
OpenFilePopUpMenu := TPopupMenu.Create(TheOwner);
OpenFilePopupMenu.Name:='OpenFilePopupMenu';
@ -635,15 +640,48 @@ begin
OptionsPopupMenu := TPopupMenu.Create(TheOwner);
OptionsPopupMenu.Images := IDEImages.Images_16;
OptionsMenuItem := TMenuItem.Create(TheOwner);
with MainIDEBar.OptionsMenuItem do
OptionsMenuItem.Name := 'miToolbarOption';
OptionsMenuItem.Caption := lisOptions;
OptionsMenuItem.Enabled := True;
OptionsMenuItem.Visible := True;
OptionsMenuItem.ImageIndex := IDEImages.LoadImage(16, 'menu_environment_options');
OptionsPopupMenu.Items.Add(OptionsMenuItem);
end;
procedure TMainIDEBar.SetupSpeedButtons(TheOwner: TComponent);
begin
MainSplitter := TSplitter.Create(TheOwner);
MainSplitter.Parent := Self;
MainSplitter.Align := alLeft;
MainSplitter.MinSize := 50;
MainSplitter.OnMoved := @MainSplitterMoved;
CoolBar := TCoolBar.Create(TheOwner);
CoolBar.Parent := Self;
if EnvironmentOptions.Desktop.ComponentPaletteVisible then
begin
Name := 'miToolbarOption';
Caption := lisOptions;
Enabled := True;
Visible := True;
ImageIndex := IDEImages.LoadImage(16, 'menu_environment_options');
end;
MainIDEBar.OptionsPopupMenu.Items.Add(MainIDEBar.OptionsMenuItem);
CoolBar.Align := alLeft;
CoolBar.Width := EnvironmentOptions.Desktop.IDECoolBarOptions.IDECoolBarWidth;
end
else
CoolBar.Align := alClient;
// IDE Coolbar object wraps CoolBar.
IDECoolBar := TIDECoolBar.Create(CoolBar);
IDECoolBar.IsVisible := EnvironmentOptions.Desktop.IDECoolBarOptions.IDECoolBarVisible;;
CoolBar.OnChange := @CoolBarOnChange;
CreatePopupMenus(TheOwner);
CoolBar.PopupMenu := OptionsPopupMenu;
end;
procedure TMainIDEBar.SetupComponentPalette(TheOwner: TComponent);
begin
// Component palette
ComponentPageControl := TPageControl.Create(TheOwner);
ComponentPageControl.Name := 'ComponentPageControl';
ComponentPageControl.Align := alClient;
ComponentPageControl.Visible:=EnvironmentOptions.Desktop.ComponentPaletteVisible;
ComponentPageControl.Parent := Self;
end;
procedure TMainIDEBar.RefreshCoolbar;
@ -683,8 +721,7 @@ begin
CoolBar.Visible := CoolBarOpts.IDECoolBarVisible;
itmViewIDESpeedButtons.Checked := CoolBar.Visible;
MainSplitter.Align := alLeft;
MainSplitter.Visible := MainIDEBar.Coolbar.Visible and
MainIDEBar.ComponentPageControl.Visible;
MainSplitter.Visible := Coolbar.Visible and ComponentPageControl.Visible;
end;
procedure TMainIDEBar.Resizing(State: TWindowState);
@ -774,5 +811,61 @@ begin
DoSetMainIDEHeight(WindowState = wsMaximized);
end;
procedure TMainIDEBar.DoToggleViewComponentPalette;
var
ComponentPaletteVisible: Boolean;
begin
ComponentPaletteVisible:=not ComponentPageControl.Visible;
itmViewComponentPalette.Checked:=ComponentPaletteVisible;
ComponentPageControl.Visible:=ComponentPaletteVisible;
EnvironmentOptions.Desktop.ComponentPaletteVisible:=ComponentPaletteVisible;
if ComponentPaletteVisible then
begin
if CoolBar.Align = alClient then
begin
CoolBar.Width := 230;
EnvironmentOptions.Desktop.IDECoolBarOptions.IDECoolBarWidth := 230;
end;
CoolBar.Align := alLeft;
CoolBar.Vertical := False;
MainSplitter.Align := alLeft;
end
else
CoolBar.Align := alClient;
MainSplitter.Visible := Coolbar.Visible and ComponentPageControl.Visible;
if ComponentPaletteVisible then//when showing component palette, it must be visible to calculate it correctly
DoSetMainIDEHeight(WindowState = wsMaximized, 55);//it will cause the IDE to flicker, but it's better than to have wrongly calculated IDE height
SetMainIDEHeight;
end;
procedure TMainIDEBar.DoToggleViewIDESpeedButtons;
var
SpeedButtonsVisible: boolean;
begin
SpeedButtonsVisible := not CoolBar.Visible;
itmViewIDESpeedButtons.Checked := SpeedButtonsVisible;
CoolBar.Visible := SpeedButtonsVisible;
MainSplitter.Visible := SpeedButtonsVisible;
EnvironmentOptions.Desktop.IDECoolBarOptions.IDECoolBarVisible := SpeedButtonsVisible;
MainSplitter.Visible := Coolbar.Visible and ComponentPageControl.Visible;
SetMainIDEHeight;
end;
procedure TMainIDEBar.AllowCompilation(aAllow: Boolean);
// Enables or disables IDE GUI controls associated with compiling and building.
// Does it interfere with DebugBoss.UpdateButtonsAndMenuItems? Maybe should be refactored and combined.
begin
itmRunMenuRun.Enabled:=aAllow;
itmRunMenuCompile.Enabled:=aAllow;
itmRunMenuBuild.Enabled:=aAllow;
itmRunMenuQuickCompile.Enabled:=aAllow;
itmRunMenuCleanUpAndBuild.Enabled:=aAllow;
itmPkgEditInstallPkgs.Enabled:=aAllow;
itmToolRescanFPCSrcDir.Enabled:=aAllow;
itmToolBuildLazarus.Enabled:=aAllow;
//itmToolConfigureBuildLazarus.Enabled:=aAllow;
end;
end.