IDE Coolbar improvements. Issue #27779, patch from Balázs Székely.

git-svn-id: trunk@48609 -
This commit is contained in:
juha 2015-04-03 16:25:58 +00:00
parent 37332e8674
commit ebcbe939e6
5 changed files with 226 additions and 273 deletions

View File

@ -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)'

View File

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

View File

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

View File

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

View File

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