From ebcbe939e6ac57301dc69fc7b1475ff2d4c40dc1 Mon Sep 17 00:00:00 2001 From: juha Date: Fri, 3 Apr 2015 16:25:58 +0000 Subject: [PATCH] =?UTF-8?q?IDE=20Coolbar=20improvements.=20Issue=20#27779,?= =?UTF-8?q?=20patch=20from=20Bal=C3=A1zs=20Sz=C3=A9kely.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: trunk@48609 - --- ide/frames/toolbar_options.lfm | 66 +++++---- ide/frames/toolbar_options.pas | 161 +++++--------------- ide/main.pp | 6 +- ide/mainbar.pas | 7 +- ide/toolbardata.pas | 259 +++++++++++++++++++-------------- 5 files changed, 226 insertions(+), 273 deletions(-) diff --git a/ide/frames/toolbar_options.lfm b/ide/frames/toolbar_options.lfm index 3efbfeed41..f4aee9f158 100644 --- a/ide/frames/toolbar_options.lfm +++ b/ide/frames/toolbar_options.lfm @@ -10,19 +10,19 @@ object ToolbarOptionsFrame: TToolbarOptionsFrame DesignTop = 305 object pnBottom: TPanel Left = 0 - Height = 225 - Top = 226 + Height = 223 + Top = 228 Width = 520 Align = alClient BevelOuter = bvNone - ClientHeight = 225 + ClientHeight = 223 ClientWidth = 520 Constraints.MinHeight = 115 TabOrder = 1 object pnButtons: TPanel Left = 0 Height = 40 - Top = 185 + Top = 183 Width = 520 Align = alBottom BevelOuter = bvNone @@ -58,11 +58,12 @@ object ToolbarOptionsFrame: TToolbarOptionsFrame TabOrder = 1 end object bDefaultToolbar: TBitBtn - Left = 377 - Height = 24 + Left = 440 + Height = 25 Top = 0 - Width = 127 + Width = 64 Anchors = [akTop, akRight] + AutoSize = True Caption = 'Default' OnClick = bDefaultToolbarClick TabOrder = 3 @@ -70,14 +71,14 @@ object ToolbarOptionsFrame: TToolbarOptionsFrame end object sbCoolBar: TScrollBox Left = 0 - Height = 162 + Height = 160 Top = 0 Width = 520 HorzScrollBar.Page = 75 VertScrollBar.Page = 25 Anchors = [akTop, akLeft, akRight, akBottom] BorderStyle = bsNone - ClientHeight = 162 + ClientHeight = 160 ClientWidth = 520 Constraints.MinHeight = 75 TabOrder = 0 @@ -116,10 +117,10 @@ object ToolbarOptionsFrame: TToolbarOptionsFrame TabOrder = 0 object dbGeneralSettings: TDividerBevel Left = 0 - Height = 13 + Height = 15 Top = 5 Width = 520 - Caption = 'General Toolbars Settings' + Caption = 'General Coolbars Settings' Align = alTop BorderSpacing.Top = 5 BorderSpacing.Bottom = 5 @@ -133,14 +134,14 @@ object ToolbarOptionsFrame: TToolbarOptionsFrame Top = 64 Width = 188 Caption = 'Grab Style' - ClientHeight = 74 - ClientWidth = 186 + ClientHeight = 69 + ClientWidth = 184 TabOrder = 1 object lbGrabWidth: TLabel Left = 12 - Height = 13 + Height = 15 Top = 43 - Width = 58 + Width = 63 Caption = 'Grab Width:' ParentColor = False end @@ -148,7 +149,7 @@ object ToolbarOptionsFrame: TToolbarOptionsFrame AnchorSideTop.Control = lbGrabWidth AnchorSideTop.Side = asrCenter Left = 118 - Height = 20 + Height = 23 Top = 39 Width = 50 MaxValue = 50 @@ -159,10 +160,10 @@ object ToolbarOptionsFrame: TToolbarOptionsFrame end object cbGrabStyle: TComboBox Left = 11 - Height = 20 + Height = 23 Top = 5 Width = 157 - ItemHeight = 17 + ItemHeight = 15 ItemIndex = 1 Items.Strings = ( 'gsSimple' @@ -179,22 +180,23 @@ object ToolbarOptionsFrame: TToolbarOptionsFrame end end object bDefaultGeneral: TBitBtn - Left = 376 - Height = 24 - Top = 168 - Width = 127 + Left = 439 + Height = 25 + Top = 167 + Width = 64 Anchors = [akRight, akBottom] + AutoSize = True Caption = 'Default' OnClick = bDefaultGeneralClick TabOrder = 3 end - object cbToolBarVisible: TCheckBox + object cbCoolBarVisible: TCheckBox Left = 12 - Height = 17 + Height = 19 Top = 32 - Width = 100 - Caption = 'Toolbar is visible' - OnClick = cbToolBarVisibleClick + Width = 109 + Caption = 'Coolbar is visible' + OnClick = cbCoolBarVisibleClick TabOrder = 0 end object gbBorderStyle: TGroupBox @@ -203,15 +205,15 @@ object ToolbarOptionsFrame: TToolbarOptionsFrame Top = 64 Width = 188 Caption = 'Band Border Style' - ClientHeight = 74 - ClientWidth = 186 + ClientHeight = 69 + ClientWidth = 184 TabOrder = 2 object cbBorderStyle: TComboBox Left = 11 - Height = 20 + Height = 23 Top = 5 Width = 157 - ItemHeight = 17 + ItemHeight = 15 ItemIndex = 1 Items.Strings = ( 'None' @@ -226,7 +228,7 @@ object ToolbarOptionsFrame: TToolbarOptionsFrame end object dbAddConfigDelete: TDividerBevel Left = 0 - Height = 13 + Height = 15 Top = 208 Width = 520 Caption = 'Add/Config/Delete Toolbar(s)' diff --git a/ide/frames/toolbar_options.pas b/ide/frames/toolbar_options.pas index b6bc25cc75..2294771575 100644 --- a/ide/frames/toolbar_options.pas +++ b/ide/frames/toolbar_options.pas @@ -19,7 +19,7 @@ *************************************************************************** Author: Balázs Székely Abstract: - Frame for toolbar options. + Frame for toolbar options. } unit toolbar_options; @@ -44,7 +44,7 @@ type bDelete: TBitBtn; cbGrabStyle: TComboBox; cbBorderStyle: TComboBox; - cbToolBarVisible: TCheckBox; + cbCoolBarVisible: TCheckBox; Coolbar: TCoolBar; gbGrabStyle: TGroupBox; gbBorderStyle: TGroupBox; @@ -65,7 +65,7 @@ type procedure bDeleteClick(Sender: TObject); procedure cbBorderStyleChange(Sender: TObject); procedure cbGrabStyleChange(Sender: TObject); - procedure cbToolBarVisibleClick(Sender: TObject); + procedure cbCoolBarVisibleClick(Sender: TObject); procedure CoolBarMouseDown(Sender: TObject; {%H-}Button: TMouseButton; {%H-}Shift: TShiftState; X, Y: integer); procedure CoolbarResize(Sender: TObject); @@ -110,7 +110,7 @@ begin bAdd.Caption := lisBtnAdd; bConfig.Caption := lisCoolbarConfigure; bDelete.Caption := lisBtnDelete; - cbToolBarVisible.Caption := lisCoolbarVisible; + cbCoolBarVisible.Caption := lisCoolbarVisible; gbGrabStyle.Caption := lisCoolbarGrabStyle; cbGrabStyle.Items.Strings[0] := lisCoolbarGrabStyleItem0; cbGrabStyle.Items.Strings[1] := lisCoolbarGrabStyleItem1; @@ -126,14 +126,11 @@ begin end; procedure TToolbarOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions); -var - I, J: integer; - IDEToolBar: TIDEToolBar; begin with (AOptions as TEnvironmentOptions).IDECoolBarOptions do begin - //read toolbar settings - cbToolBarVisible.Checked := IDECoolBarVisible; + cbCoolBarVisible.Checked := IDECoolBarVisible; + FTempCoolBar.IsVisible := IDECoolBarVisible; if not (IDECoolBarGrabStyle in [0..5]) then IDECoolBarGrabStyle := 1; @@ -150,62 +147,39 @@ begin cbBorderStyle.ItemIndex := IDECoolBarBorderStyle; Coolbar.BandBorderStyle := TBorderStyle(IDECoolBarBorderStyle); EnableDisableButtons(0); - - //read toolbars - FTempCoolBar.ToolBars.Clear; - for I := 0 to IDECoolBar.ToolBars.Count - 1 do - begin - IDEToolBar := FTempCoolBar.Add; - IDEToolBar.Position := IDECoolBar.ToolBars[I].Position; - IDEToolBar.Break := IDECoolBar.ToolBars[I].Break; - for J := 0 to IDECoolBar.ToolBars[I].ButtonNames.Count - 1 do - IDEToolBar.ButtonNames.Add(IDECoolBar.ToolBars[I].ButtonNames.Strings[J]); - end; - FTempCoolBar.Sort; - - PopulateToolBar; end; + + FTempCoolBar.CopyFromOptions((AOptions as TEnvironmentOptions).IDECoolBarOptions); + PopulateToolBar; end; procedure TToolbarOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions); var I, J: integer; - IDEToolBar: TIDEToolBar; ToolBar: TToolBar; begin with (AOptions as TEnvironmentOptions).IDECoolBarOptions do begin - //write toolbar settings - IDECoolBarVisible := cbToolBarVisible.Checked; + IDECoolBarVisible := cbCoolBarVisible.Checked; IDECoolBarGrabStyle := cbGrabStyle.ItemIndex; IDECoolBarGrabWidth := spGrabWidth.Value; IDECoolBarBorderStyle := cbBorderStyle.ItemIndex; + end; - //write toolbars - for I := 0 to Coolbar.Bands.Count - 1 do + for I := 0 to Coolbar.Bands.Count - 1 do + begin + if Coolbar.Bands[I].Control = nil then + Continue; + ToolBar := (Coolbar.Bands[I].Control as TToolBar); + J := FTempCoolBar.FindByToolBar(ToolBar); + if J <> -1 then begin - if Coolbar.Bands[I].Control = nil then - Continue; - ToolBar := (Coolbar.Bands[I].Control as TToolBar); - J := FTempCoolBar.FindByToolBar(ToolBar); - if J <> -1 then - begin - FTempCoolBar.ToolBars[J].Position := Coolbar.Bands[I].Index; - FTempCoolBar.ToolBars[J].Break := Coolbar.Bands[I].Break; - end; - end; - FTempCoolBar.Sort; - - IDECoolBar.ToolBars.Clear; - for I := 0 to FTempCoolBar.ToolBars.Count - 1 do - begin - IDEToolBar := IDECoolBar.Add; - IDEToolBar.Position := FTempCoolBar.ToolBars[I].Position; - IDEToolBar.Break := FTempCoolBar.ToolBars[I].Break; - for J := 0 to FTempCoolBar.ToolBars[I].ButtonNames.Count - 1 do - IDEToolBar.ButtonNames.Add(FTempCoolBar.ToolBars[I].ButtonNames.Strings[J]); + FTempCoolBar.ToolBars[J].Position := Coolbar.Bands[I].Index; + FTempCoolBar.ToolBars[J].Break := Coolbar.Bands[I].Break; end; end; + FTempCoolBar.Sort; + FTempCoolBar.CopyToOptions((AOptions as TEnvironmentOptions).IDECoolBarOptions); MainIDEBar.RefreshCoolbar; end; @@ -254,8 +228,9 @@ begin EnableDisableButtons(0); end; -procedure TToolbarOptionsFrame.cbToolBarVisibleClick(Sender: TObject); +procedure TToolbarOptionsFrame.cbCoolBarVisibleClick(Sender: TObject); begin + FTempCoolBar.IsVisible := cbCoolBarVisible.Checked; EnableDisableButtons(0); end; @@ -313,54 +288,15 @@ begin end; procedure TToolbarOptionsFrame.EnableDisableButtons(const bType: Integer); - function IsDefaultGeneralEnabled: Boolean; - begin - Result := (not cbToolBarVisible.Checked) or (cbGrabStyle.ItemIndex <> 1) or - (spGrabWidth.Value <> 5) or (cbBorderStyle.ItemIndex <> 1); - end; - - function IsDefaultToolbarEnabled: Boolean; - var - IDEToolBar0: TIDEToolBar; - IDEToolBar1: TIDEToolBar; - begin - Result := True; - if FTempCoolBar.ToolBars.Count <> 2 then - Exit; - if (FTempCoolBar.ToolBars[0].ButtonNames.Count <> 8) or (FTempCoolBar.ToolBars[1].ButtonNames.Count <> 10) then - Exit; - IDEToolBar0 := FTempCoolBar.ToolBars[0]; - IDEToolBar1 := FTempCoolBar.ToolBars[1]; - Result := (IDEToolBar0.ButtonNames[0] <> 'IDEMainMenu/File/itmFileNew/itmFileNewForm') or - (IDEToolBar0.ButtonNames[1] <> 'IDEMainMenu/File/itmFileNew/itmFileNewUnit') or - (IDEToolBar0.ButtonNames[2] <> '---------------') or - (IDEToolBar0.ButtonNames[3] <> 'IDEMainMenu/File/itmFileOpenSave/itmFileOpen') or - (IDEToolBar0.ButtonNames[4] <> 'IDEMainMenu/File/itmFileOpenSave/itmFileSave') or - (IDEToolBar0.ButtonNames[5] <> 'IDEMainMenu/File/itmFileOpenSave/itmFileSaveAll') or - (IDEToolBar0.ButtonNames[6] <> '---------------') or - (IDEToolBar0.ButtonNames[7] <> 'IDEMainMenu/View/itmViewMainWindows/itmViewToggleFormUnit') or - - (IDEToolBar1.ButtonNames[0] <> 'IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectViewUnits') or - (IDEToolBar1.ButtonNames[1] <> 'IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectViewForms') or - (IDEToolBar1.ButtonNames[2] <> '---------------') or - (IDEToolBar1.ButtonNames[3] <> 'IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectBuildMode') or - (IDEToolBar1.ButtonNames[4] <> 'IDEMainMenu/Run/itmRunnning/itmRunMenuRun') or - (IDEToolBar1.ButtonNames[5] <> 'IDEMainMenu/Run/itmRunnning/itmRunMenuPause') or - (IDEToolBar1.ButtonNames[6] <> 'IDEMainMenu/Run/itmRunnning/itmRunMenuStop') or - (IDEToolBar1.ButtonNames[7] <> 'IDEMainMenu/Run/itmRunnning/itmRunMenuStepOver') or - (IDEToolBar1.ButtonNames[8] <> 'IDEMainMenu/Run/itmRunnning/itmRunMenuStepInto') or - (IDEToolBar1.ButtonNames[9] <> 'IDEMainMenu/Run/itmRunnning/itmRunMenuStepOut'); - end; - var I: Integer; Selected: Boolean; begin case bType of - 0: begin //general settings - bDefaultGeneral.Enabled := IsDefaultGeneralEnabled; + 0: begin + bDefaultGeneral.Enabled := not FTempCoolBar.IsDefaultCoolbar; end; - 1: begin //toolbar settings + 1: begin Selected := False; for I := 0 to Coolbar.Bands.Count - 1 do begin @@ -372,7 +308,7 @@ begin end; bConfig.Enabled := Selected; bDelete.Enabled := Selected; - bDefaultToolbar.Enabled := IsDefaultToolbarEnabled; + bDefaultToolbar.Enabled := not FTempCoolBar.IsDefaultToolbar; end; end; end; @@ -406,7 +342,9 @@ end; constructor TToolbarOptionsFrame.Create(AOwner: TComponent); begin inherited Create(AOwner); - FTempCoolBar := TIDEcoolBar.Create(Nil); + FTempCoolBar := TIDEcoolBar.Create(Coolbar); + FTempCoolBar.SetCoolBarDefaults; + FTempCoolBar.SetToolBarDefaults; end; destructor TToolbarOptionsFrame.Destroy; @@ -503,48 +441,19 @@ end; procedure TToolbarOptionsFrame.bDefaultGeneralClick(Sender: TObject); begin + cbCoolBarVisible.Checked := True; + FTempCoolBar.IsVisible := True; cbGrabStyle.ItemIndex := 1; spGrabWidth.Value := 5; BiDiMode := bdLeftToRight; cbBorderStyle.ItemIndex := 1; - Coolbar.GrabStyle := TGrabStyle(1); - Coolbar.GrabWidth := 5; - Coolbar.BandBorderStyle := bsSingle; + FTempCoolBar.SetCoolBarDefaults; EnableDisableButtons(0); end; procedure TToolbarOptionsFrame.bDefaultToolbarClick(Sender: TObject); -var - IDEToolBar: TIDEToolBar; begin - FTempCoolBar.ToolBars.Clear; - //standard - IDEToolBar := FTempCoolBar.Add; - IDEToolBar.Position := 0; - IDEToolBar.Break := False; - IDEToolBar.ButtonNames.Add('IDEMainMenu/File/itmFileNew/itmFileNewForm'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/File/itmFileNew/itmFileNewUnit'); - IDEToolBar.ButtonNames.Add('---------------'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/File/itmFileOpenSave/itmFileOpen'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/File/itmFileOpenSave/itmFileSave'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/File/itmFileOpenSave/itmFileSaveAll'); - IDEToolBar.ButtonNames.Add('---------------'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/View/itmViewMainWindows/itmViewToggleFormUnit'); - - //debug - IDEToolBar := FTempCoolBar.Add; - IDEToolBar.Position := 1; - IDEToolBar.Break := True; - IDEToolBar.ButtonNames.Add('IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectViewUnits'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectViewForms'); - IDEToolBar.ButtonNames.Add('---------------'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectBuildMode'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Run/itmRunnning/itmRunMenuRun'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Run/itmRunnning/itmRunMenuPause'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStop'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStepOver'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStepInto'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStepOut'); + FTempCoolBar.SetToolBarDefaults; PopulateToolBar; end; diff --git a/ide/main.pp b/ide/main.pp index a6ffed2b1d..736e26e77c 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -2030,10 +2030,12 @@ begin end else MainIDEBar.CoolBar.Align := alClient; + // IDE Coolbar object wraps MainIDEBar.CoolBar. - IDECoolBar:=TIDECoolBar.Create(MainIDEBar.CoolBar); + IDECoolBar := TIDECoolBar.Create(MainIDEBar.CoolBar); IDECoolBar.SetCoolBarDefaults; - IDECoolBar.CreateDefaultToolbars; + IDECoolBar.SetToolBarDefaults; + IDECoolBar.IsVisible := EnvironmentOptions.IDECoolBarOptions.IDECoolBarVisible;; MainIDEBar.CoolBar.Visible := EnvironmentOptions.IDECoolBarOptions.IDECoolBarVisible; MainIDEBar.CoolBar.OnChange := @MainIDEBar.CoolBarOnChange; diff --git a/ide/mainbar.pas b/ide/mainbar.pas index 14a62bc87c..72a35a61fc 100644 --- a/ide/mainbar.pas +++ b/ide/mainbar.pas @@ -543,7 +543,6 @@ var CoolBarOpts: TIDECoolBarOptions; begin CoolBarOpts := EnvironmentOptions.IDECoolBarOptions; - IDECoolBar.Sort; //read general settings if not (CoolBarOpts.IDECoolBarGrabStyle in [0..5]) then CoolBarOpts.IDECoolBarGrabStyle := 4; @@ -554,6 +553,8 @@ begin Coolbar.BandBorderStyle := TBorderStyle(CoolBarOpts.IDECoolBarBorderStyle); //read toolbars CoolBar.Bands.Clear; + IDECoolBar.CopyFromOptions(CoolBarOpts); + IDECoolBar.Sort; for I := 0 to IDECoolBar.ToolBars.Count - 1 do begin CoolBand := CoolBar.Bands.Add; @@ -573,7 +574,6 @@ begin MainSplitter.Align := alLeft; MainSplitter.Visible := MainIDEBar.Coolbar.Visible and MainIDEBar.ComponentPageControl.Visible; - end; procedure TMainIDEBar.MainSplitterMoved(Sender: TObject); @@ -585,7 +585,9 @@ procedure TMainIDEBar.CoolBarOnChange(Sender: TObject); var I, J: integer; ToolBar: TToolBar; + CoolBarOpts: TIDECoolBarOptions; begin + CoolBarOpts := EnvironmentOptions.IDECoolBarOptions; for I := 0 to Coolbar.Bands.Count - 1 do begin if Coolbar.Bands[I].Control = nil then @@ -599,6 +601,7 @@ begin end end; IDECoolBar.Sort; + IDECoolBar.CopyToOptions(CoolBarOpts); end; diff --git a/ide/toolbardata.pas b/ide/toolbardata.pas index ef6c1e1ba5..f38f84c3d3 100644 --- a/ide/toolbardata.pas +++ b/ide/toolbardata.pas @@ -33,7 +33,7 @@ unit ToolbarData; interface uses - Classes, SysUtils, LCLProc, ComCtrls, ExtCtrls, ToolWin, + Classes, SysUtils, LCLProc, ComCtrls, ExtCtrls, ToolWin, Controls, MenuIntf, IDEImagesIntf, IDECommands, Laz2_XMLCfg, fgl; type @@ -44,6 +44,7 @@ type { TIDEToolBarOptions } TIDEToolBarOptions = class private + Position: Integer; Break: Boolean; ButtonNames: TStringList; public @@ -56,38 +57,26 @@ type { TIDECoolBarOptions } TIDECoolBarOptions = class private - //toolbars - FToolbarVisible: Boolean; - FToolBarStandardVisible: Boolean; - FToolBarStandardLeft: Integer; - FToolBarStandardTop: Integer; - FToolBarViewDebugVisible: Boolean; - FToolBarViewDebugLeft: Integer; - FToolBarViewDebugTop: Integer; - FToolBarHighlight: Boolean; - FToolBarRaised: Boolean; - FToolBars: TIDEToolBarOptionList; //coolbar FIDECoolBarVisible: Boolean; FIDECoolBarWidth: Integer; FIDECoolBarGrabStyle: Integer; FIDECoolBarGrabWidth: Integer; FIDECoolBarBorderStyle: Integer; + FIDECoolBarToolBars: TIDEToolBarOptionList; public constructor Create; destructor Destroy; override; procedure Clear; - //procedure Assign(Source: TIDECoolBarOptions); - function IsDefault: Boolean; - function Load(XMLConfig: TXMLConfig): boolean; - function Save(XMLConfig: TXMLConfig): boolean; + function Load(XMLConfig: TXMLConfig): Boolean; + function Save(XMLConfig: TXMLConfig): Boolean; public - property ToolBars: TIDEToolBarOptionList read FToolBars; property IDECoolBarVisible: Boolean read FIDECoolBarVisible write FIDECoolBarVisible; property IDECoolBarWidth: Integer read FIDECoolBarWidth write FIDECoolBarWidth; property IDECoolBarGrabStyle: Integer read FIDECoolBarGrabStyle write FIDECoolBarGrabStyle; property IDECoolBarGrabWidth: Integer read FIDECoolBarGrabWidth write FIDECoolBarGrabWidth; property IDECoolBarBorderStyle: Integer read FIDECoolBarBorderStyle write FIDECoolBarBorderStyle; + property IDECoolBarToolBars: TIDEToolBarOptionList read FIDECoolBarToolBars; end; // Actual Coolbar and its member Toolbars @@ -140,20 +129,24 @@ type TIDECoolBar = class private FCoolBar: TCoolBar; // The actual CoolBar, not owned by this class. - FToolBars: TIDEToolBarList; - public + FCoolBarToolBars: TIDEToolBarList; + FIsVisible: Boolean; //cannot hide/show the coolbar on toolbar_options, + public //instead we use a variable constructor Create(ACoolBar: TCoolBar); destructor Destroy; override; procedure SetCoolBarDefaults; - procedure CreateDefaultToolbars; + procedure SetToolBarDefaults; procedure CopyFromOptions(Options: TIDECoolBarOptions); procedure CopyToOptions(Options: TIDECoolBarOptions); function Add: TIDEToolBar; function FindByToolBar(const ToolBar: TToolBar): Integer; procedure Sort; + function IsDefaultCoolbar: Boolean; + function IsDefaultToolbar: Boolean; public - property ToolBars: TIDEToolBarList read FToolBars; + property ToolBars: TIDEToolBarList read FCoolBarToolBars; property CoolBar: TCoolBar read FCoolBar; + property IsVisible: Boolean read FIsVisible write FIsVisible; end; function GetShortcut(AMenuItem: TIDEMenuItem): string; @@ -184,46 +177,63 @@ end; { TIDECoolBarOptions } constructor TIDECoolBarOptions.Create; +var + IDEToolBarOptions: TIDEToolBarOptions; begin inherited Create; - FToolBars := TIDEToolBarOptionList.Create; - FToolbarVisible := False; - FToolBarStandardVisible := False; - FToolBarStandardLeft := 0; - FToolBarStandardTop := 0; - FToolBarViewDebugVisible := False; - FToolBarViewDebugLeft := 0; - FToolBarViewDebugTop := 26; - FToolBarHighlight := False; - FToolBarRaised := False; - //coolbar + //set default values FIDECoolBarVisible := True; FIDECoolBarWidth := 230; FIDECoolBarGrabStyle := 1; FIDECoolBarGrabWidth := 5; FIDECoolBarBorderStyle := 1; + + FIDECoolBarToolBars := TIDEToolBarOptionList.Create; + IDEToolBarOptions := TIDEToolBarOptions.Create; + IDEToolBarOptions.Position := 0; + IDEToolBarOptions.Break := False; + with IDEToolBarOptions.ButtonNames do + begin + Add('IDEMainMenu/File/itmFileNew/itmFileNewForm'); + Add('IDEMainMenu/File/itmFileNew/itmFileNewUnit'); + Add('---------------'); + Add('IDEMainMenu/File/itmFileOpenSave/itmFileOpen'); + Add('IDEMainMenu/File/itmFileOpenSave/itmFileSave'); + Add('IDEMainMenu/File/itmFileOpenSave/itmFileSaveAll'); + Add('---------------'); + Add('IDEMainMenu/View/itmViewMainWindows/itmViewToggleFormUnit'); + end; + FIDECoolBarToolBars.Add(IDEToolBarOptions); + + //debug toolbar defaults + IDEToolBarOptions := TIDEToolBarOptions.Create; + IDEToolBarOptions.Position := 1; + IDEToolBarOptions.Break := True; + with IDEToolBarOptions.ButtonNames do + begin + Add('IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectViewUnits'); + Add('IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectViewForms'); + Add('---------------'); + Add('IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectBuildMode'); + Add('IDEMainMenu/Run/itmRunnning/itmRunMenuRun'); + Add('IDEMainMenu/Run/itmRunnning/itmRunMenuPause'); + Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStop'); + Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStepOver'); + Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStepInto'); + Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStepOut'); + end; + FIDECoolBarToolBars.Add(IDEToolBarOptions); end; destructor TIDECoolBarOptions.Destroy; begin - FToolBars.Free; + FIDECoolBarToolBars.Free; inherited Destroy; end; procedure TIDECoolBarOptions.Clear; begin - FToolBars.Clear; -end; -{ -procedure TIDECoolBarOptions.Assign(Source: TIDECoolBarOptions); -begin - -end; -} -function TIDECoolBarOptions.IsDefault: Boolean; -begin - // ToDo: Implement - Result := False; + FIDECoolBarToolBars.Clear; end; function TIDECoolBarOptions.Load(XMLConfig: TXMLConfig): boolean; @@ -244,12 +254,12 @@ begin ToolbarCount := XMLConfig.GetValue(BasePath + 'ToolBarCount/Value', 0); if ToolBarCount > 0 then begin - FToolBars.Clear; + FIDECoolBarToolBars.Clear; SubPath := BasePath + 'ToolBar'; for I := 0 to ToolbarCount - 1 do begin ToolBarOpt := TIDEToolBarOptions.Create; - FToolBars.Add(ToolBarOpt); + FIDECoolBarToolBars.Add(ToolBarOpt); ToolBarOpt.Break := XMLConfig.GetValue(SubPath + IntToStr(I) + '/Break/Value', False); ButtonCount := XMLConfig.GetValue(SubPath + IntToStr(I) + '/ButtonCount/Value', 0); for J := 0 to ButtonCount - 1 do @@ -262,18 +272,6 @@ begin end; end; - // Toolbar - FToolBarStandardVisible := XMLConfig.GetValue(BasePath+'Toolbars/Standard/Visible/Value', True); - FToolBarStandardLeft := XMLConfig.GetValue(BasePath+'Toolbars/Standard/Left/Value', 0); - FToolBarStandardTop := XMLConfig.GetValue(BasePath+'Toolbars/Standard/Top/Value', 0); - - FToolBarViewDebugVisible :=XMLConfig.GetValue(BasePath+'Toolbars/ViewDebug/Visible/Value', True); - FToolBarViewDebugLeft := XMLConfig.GetValue(BasePath+'Toolbars/ViewDebug/Left/Value', 0); - FToolBarViewDebugTop := XMLConfig.GetValue(BasePath+'Toolbars/ViewDebug/Top/Value', 26); - - FToolbarVisible := XMLConfig.GetValue(BasePath+'Toolbars/Common/Visible/Value', True); - FToolBarHighlight := XMLConfig.GetValue(BasePath+'Toolbars/Common/Highlight/Value', False); - FToolBarRaised := XMLConfig.GetValue(BasePath+'Toolbars/Common/Raised/Value', False); Result:=True; end; @@ -282,18 +280,6 @@ var SubPath: String; I, J: Integer; begin - // toolbar - XMLConfig.SetDeleteValue(BasePath+'Toolbars/Standard/Visible/Value',FToolBarStandardVisible, True); - XMLConfig.SetDeleteValue(BasePath+'Toolbars/Standard/Left/Value',FToolBarStandardLeft, 0); - XMLConfig.SetDeleteValue(BasePath+'Toolbars/Standard/Top/Value',FToolBarStandardTop, 0); - - XMLConfig.SetDeleteValue(BasePath+'Toolbars/ViewDebug/Visible/Value',FToolBarViewDebugVisible, True); - XMLConfig.SetDeleteValue(BasePath+'Toolbars/ViewDebug/Left/Value',FToolBarViewDebugLeft, 0); - XMLConfig.SetDeleteValue(BasePath+'Toolbars/ViewDebug/Top/Value',FToolBarViewDebugTop, 26); - - XMLConfig.SetDeleteValue(BasePath+'Toolbars/Common/Visible/Value',FToolbarVisible, True); - XMLConfig.SetDeleteValue(BasePath+'Toolbars/Common/Highlight/Value',FToolBarHighlight, False); - XMLConfig.SetDeleteValue(BasePath+'Toolbars/Common/Raised/Value',FToolBarRaised, False); //coolbar XMLConfig.DeletePath(BasePath); XMLConfig.SetDeleteValue(BasePath + 'Visible/Value', FIDECoolBarVisible, True); @@ -301,19 +287,19 @@ begin XMLConfig.SetDeleteValue(BasePath + 'GrabStyle/Value', FIDECoolBarGrabStyle, 1); XMLConfig.SetDeleteValue(BasePath + 'GrabWidth/Value', FIDECoolBarGrabWidth, 5); XMLConfig.SetDeleteValue(BasePath + 'BorderStyle/Value', FIDECoolBarBorderStyle, 5); - if FToolBars.Count > 0 then + if FIDECoolBarToolBars.Count > 0 then begin - XMLConfig.SetDeleteValue(BasePath + 'ToolBarCount/Value', FToolBars.Count, 0); + XMLConfig.SetDeleteValue(BasePath + 'ToolBarCount/Value', FIDECoolBarToolBars.Count, 0); SubPath := BasePath + 'ToolBar'; - for I := 0 to FToolBars.Count - 1 do + for I := 0 to FIDECoolBarToolBars.Count - 1 do begin XMLConfig.SetDeleteValue(SubPath + IntToStr(I) + '/Break/Value', - FToolBars[I].Break, False); + FIDECoolBarToolBars[I].Break, False); XMLConfig.SetDeleteValue(SubPath + IntToStr(I) + '/ButtonCount/Value', - FToolBars[I].ButtonNames.Count, 0); - for J := 0 to FToolBars[I].ButtonNames.Count - 1 do + FIDECoolBarToolBars[I].ButtonNames.Count, 0); + for J := 0 to FIDECoolBarToolBars[I].ButtonNames.Count - 1 do XMLConfig.SetDeleteValue(SubPath + IntToStr(I) + '/Buttons/Name' + IntToStr(J) + '/Value', - FToolBars[I].ButtonNames[J], ''); + FIDECoolBarToolBars[I].ButtonNames[J], ''); end; end; Result:=True; @@ -518,12 +504,12 @@ constructor TIDECoolBar.Create(ACoolBar: TCoolBar); begin inherited Create; FCoolBar := ACoolBar; - FToolBars := TIDEToolBarList.Create; + FCoolBarToolBars := TIDEToolBarList.Create; end; destructor TIDECoolBar.Destroy; begin - FreeAndNil(FToolBars); + FreeAndNil(FCoolBarToolBars); inherited Destroy; end; @@ -536,38 +522,50 @@ begin FCoolBar.DoubleBuffered := True; FCoolBar.EdgeInner := esNone; FCoolBar.EdgeOuter := esNone; + + Coolbar.GrabStyle := TGrabStyle(1); + Coolbar.GrabWidth := 5; + Coolbar.BandBorderStyle := bsSingle; end; -procedure TIDECoolBar.CreateDefaultToolbars; +procedure TIDECoolBar.SetToolBarDefaults; var IDEToolBar: TIDEToolBar; begin + FCoolBarToolBars.Clear; //standard toolbar defaults IDEToolBar := Add; IDEToolBar.Position := 0; IDEToolBar.Break := False; - IDEToolBar.ButtonNames.Add('IDEMainMenu/File/itmFileNew/itmFileNewForm'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/File/itmFileNew/itmFileNewUnit'); - IDEToolBar.ButtonNames.Add('---------------'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/File/itmFileOpenSave/itmFileOpen'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/File/itmFileOpenSave/itmFileSave'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/File/itmFileOpenSave/itmFileSaveAll'); - IDEToolBar.ButtonNames.Add('---------------'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/View/itmViewMainWindows/itmViewToggleFormUnit'); + with IDEToolBar.ButtonNames do + begin + Add('IDEMainMenu/File/itmFileNew/itmFileNewForm'); + Add('IDEMainMenu/File/itmFileNew/itmFileNewUnit'); + Add('---------------'); + Add('IDEMainMenu/File/itmFileOpenSave/itmFileOpen'); + Add('IDEMainMenu/File/itmFileOpenSave/itmFileSave'); + Add('IDEMainMenu/File/itmFileOpenSave/itmFileSaveAll'); + Add('---------------'); + Add('IDEMainMenu/View/itmViewMainWindows/itmViewToggleFormUnit'); + end; + //debug toolbar defaults IDEToolBar := Add; IDEToolBar.Position := 1; IDEToolBar.Break := True; - IDEToolBar.ButtonNames.Add('IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectViewUnits'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectViewForms'); - IDEToolBar.ButtonNames.Add('---------------'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectBuildMode'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Run/itmRunnning/itmRunMenuRun'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Run/itmRunnning/itmRunMenuPause'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStop'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStepOver'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStepInto'); - IDEToolBar.ButtonNames.Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStepOut'); + with IDEToolBar.ButtonNames do + begin + Add('IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectViewUnits'); + Add('IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectViewForms'); + Add('---------------'); + Add('IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectBuildMode'); + Add('IDEMainMenu/Run/itmRunnning/itmRunMenuRun'); + Add('IDEMainMenu/Run/itmRunnning/itmRunMenuPause'); + Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStop'); + Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStepOver'); + Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStepInto'); + Add('IDEMainMenu/Run/itmRunnning/itmRunMenuStepOut'); + end; end; procedure TIDECoolBar.CopyFromOptions(Options: TIDECoolBarOptions); @@ -575,13 +573,13 @@ var I: Integer; IDEToolBar: TIDEToolBar; begin - FToolBars.Clear; - for I := 0 to Options.FToolBars.Count-1 do + FCoolBarToolBars.Clear; + for I := 0 to Options.FIDECoolBarToolBars.Count - 1 do begin IDEToolBar := Add; IDEToolBar.Position := I; - IDEToolBar.Break := Options.FToolBars[I].Break; - IDEToolBar.ButtonNames.Assign(Options.FToolBars[I].ButtonNames); + IDEToolBar.Break := Options.FIDECoolBarToolBars[I].Break; + IDEToolBar.ButtonNames.Assign(Options.FIDECoolBarToolBars[I].ButtonNames); end; end; @@ -590,20 +588,21 @@ var I: Integer; Opt: TIDEToolBarOptions; begin - Options.FToolBars.Clear; - for I := 0 to FToolBars.Count - 1 do + Options.FIDECoolBarToolBars.Clear; + for I := 0 to FCoolBarToolBars.Count - 1 do begin Opt := TIDEToolBarOptions.Create; - Options.FToolBars.Add(Opt); - Opt.Break := FToolBars[I].Break; - Opt.ButtonNames.Assign(FToolBars[I].ButtonNames); + Options.FIDECoolBarToolBars.Add(Opt); + Opt.Position := FCoolBarToolBars[I].Position; + Opt.Break := FCoolBarToolBars[I].Break; + Opt.ButtonNames.Assign(FCoolBarToolBars[I].ButtonNames); end; end; function TIDECoolBar.Add: TIDEToolBar; begin Result := TIDEToolBar.Create; - FToolBars.Add(Result); + FCoolBarToolBars.Add(Result); end; function TIDECoolBar.FindByToolBar(const ToolBar: TToolBar): Integer; @@ -611,7 +610,7 @@ var I: Integer; begin Result := -1; - for I := 0 to FToolBars.Count - 1 do + for I := 0 to FCoolbarToolBars.Count - 1 do begin if ToolBars[I].Toolbar = Toolbar then begin @@ -628,7 +627,45 @@ end; procedure TIDECoolBar.Sort; begin - FToolBars.Sort(@Compare); + FCoolbarToolBars.Sort(@Compare); +end; + +function TIDECoolBar.IsDefaultCoolbar: Boolean; +begin + Result := (FIsVisible) and (FCoolBar.BandBorderStyle = bsSingle) and + (FCoolBar.GrabStyle = gsDouble) and (FCoolBar.GrabWidth = 5); +end; + +function TIDECoolBar.IsDefaultToolbar: Boolean; +var + IDEToolBar0: TIDEToolBar; + IDEToolBar1: TIDEToolBar; +begin + Result := False; + if FCoolBarToolBars.Count <> 2 then + Exit; + if (FCoolBarToolBars.Items[0].ButtonNames.Count <> 8) or (FCoolBarToolBars.Items[1].ButtonNames.Count <> 10) then + Exit; + IDEToolBar0 := FCoolBarToolBars.Items[0]; + IDEToolBar1 := FCoolBarToolBars.Items[1]; + Result := (IDEToolBar0.ButtonNames[0] = 'IDEMainMenu/File/itmFileNew/itmFileNewForm') and + (IDEToolBar0.ButtonNames[1] = 'IDEMainMenu/File/itmFileNew/itmFileNewUnit') and + (IDEToolBar0.ButtonNames[2] = '---------------') and + (IDEToolBar0.ButtonNames[3] = 'IDEMainMenu/File/itmFileOpenSave/itmFileOpen') and + (IDEToolBar0.ButtonNames[4] = 'IDEMainMenu/File/itmFileOpenSave/itmFileSave') and + (IDEToolBar0.ButtonNames[5] = 'IDEMainMenu/File/itmFileOpenSave/itmFileSaveAll') and + (IDEToolBar0.ButtonNames[6] = '---------------') and + (IDEToolBar0.ButtonNames[7] = 'IDEMainMenu/View/itmViewMainWindows/itmViewToggleFormUnit') and + (IDEToolBar1.ButtonNames[0] = 'IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectViewUnits') and + (IDEToolBar1.ButtonNames[1] = 'IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectViewForms') and + (IDEToolBar1.ButtonNames[2] = '---------------') and + (IDEToolBar1.ButtonNames[3] = 'IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectBuildMode') and + (IDEToolBar1.ButtonNames[4] = 'IDEMainMenu/Run/itmRunnning/itmRunMenuRun') and + (IDEToolBar1.ButtonNames[5] = 'IDEMainMenu/Run/itmRunnning/itmRunMenuPause') and + (IDEToolBar1.ButtonNames[6] = 'IDEMainMenu/Run/itmRunnning/itmRunMenuStop') and + (IDEToolBar1.ButtonNames[7] = 'IDEMainMenu/Run/itmRunnning/itmRunMenuStepOver') and + (IDEToolBar1.ButtonNames[8] = 'IDEMainMenu/Run/itmRunnning/itmRunMenuStepInto') and + (IDEToolBar1.ButtonNames[9] = 'IDEMainMenu/Run/itmRunnning/itmRunMenuStepOut'); end; function GetShortcut(AMenuItem: TIDEMenuItem): string;