diff --git a/ide/environmentopts.pp b/ide/environmentopts.pp index c6ce3779f1..11075010da 100644 --- a/ide/environmentopts.pp +++ b/ide/environmentopts.pp @@ -291,25 +291,8 @@ type FCompletionWindowWidth: Integer; FCompletionWindowHeight: Integer; - //toolbars - FToolbarVisible: Boolean; - FToolBarStandardVisible: Boolean; - FToolBarStandardLeft: Integer; - FToolBarStandardTop: Integer; - FToolBarViewDebugVisible: Boolean; - FToolBarViewDebugLeft: Integer; - FToolBarViewDebugTop: Integer; - FToolBarHighlight: Boolean; - FToolBarRaised: Boolean; - - //coolbar - FIDEToolBarList: TIDEToolBarList; - FIDECoolBarVisible: Boolean; - FIDECoolBarWidth: Integer; - FIDECoolBarGrabStyle: Integer; - FIDECoolBarGrabWidth: Integer; - FIDECoolBarBorderStyle: Integer; - + // IDE Coolbar + FIDECoolBarOptions: TIDECoolBarOptions; // component palette FComponentPaletteOptions: TCompPaletteOptions; @@ -540,18 +523,8 @@ type property IDENameForDesignedFormList: boolean read FIDENameForDesignedFormList write FIDENameForDesignedFormList; - //coolbar - property IDEToolBarList: TIDEToolBarList read FIDEToolBarList; - 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; + // IDE Coolbar + property IDECoolBarOptions: TIDECoolBarOptions read FIDECoolBarOptions; // component palette property ComponentPaletteOptions: TCompPaletteOptions read FComponentPaletteOptions; @@ -866,7 +839,6 @@ constructor TEnvironmentOptions.Create; var o: TEnvOptParseType; c: TMsgWndColor; - IDEToolBar: TIDEToolBar; begin inherited Create; for o:=low(FParseValues) to high(FParseValues) do @@ -927,50 +899,8 @@ begin FCompletionWindowWidth := 320; FCompletionWindowHeight := 6; - FToolbarVisible := False; - FToolBarStandardVisible := False; - FToolBarStandardLeft := 0; - FToolBarStandardTop := 0; - FToolBarViewDebugVisible := False; - FToolBarViewDebugLeft := 0; - FToolBarViewDebugTop := 26; - FToolBarHighlight := False; - FToolBarRaised := False; - - //coolbar - FIDEToolBarList := TIDEToolBarList.Create; - FIDECoolBarVisible := True; - FIDECoolBarWidth := 230; - FIDECoolBarGrabStyle := 1; - FIDECoolBarGrabWidth := 5; - FIDECoolBarBorderStyle := 1; - //standard toolbar defaults - IDEToolBar := FIDEToolBarList.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 toolbar defaults - IDEToolBar := FIDEToolBarList.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'); - + // IDE Coolbar + FIDECoolBarOptions:=TIDECoolBarOptions.Create; // component palette FComponentPaletteOptions:=TCompPaletteOptions.Create; @@ -1079,7 +1009,7 @@ begin FreeAndNil(FRecentPackageFiles); FreeAndNil(FObjectInspectorOptions); FreeAndNil(FComponentPaletteOptions); - FreeAndNil(FIDEToolBarList); + FreeAndNil(FIDECoolBarOptions); FreeAndNil(FLazarusDirHistory); FreeAndNil(FCompilerFileHistory); FreeAndNil(FFPCSourceDirHistory); @@ -1205,10 +1135,6 @@ var EventType: TDBGEventType; NodeName: String; mwc: TMsgWndColor; - IDEToolBar: TIDEToolBar; - IDEToolBarCount: Integer; - IDEToolBarButtonsCount: Integer; - IDEToolBarButtonsName: string; begin Cfg:=nil; try @@ -1274,58 +1200,6 @@ begin FIDENameForDesignedFormList:=XMLConfig.GetValue( Path+'Desktop/IDENameForDesignedFormList/Value',false); - //Coolbar - SubPath := Path + 'Desktop/IDECoolBar/'; - FIDECoolBarVisible := XMLConfig.GetValue(SubPath + 'Visible/Value', True); - FIDECoolBarWidth := XMLConfig.GetValue(SubPath + 'Width/Value', 230); - FIDECoolBarGrabStyle := XMLConfig.GetValue(SubPath + 'GrabStyle/Value', 1); - FIDECoolBarGrabWidth := XMLConfig.GetValue(SubPath + 'GrabWidth/Value', 5); - FIDECoolBarBorderStyle := XMLConfig.GetValue(SubPath + 'BorderStyle/Value', 5); - IDEToolbarCount := XMLConfig.GetValue(SubPath + 'ToolBarCount/Value', 0); - if IDEToolBarCount > 0 then - begin - FIDEToolBarList.Clear; - SubPath := SubPath + 'ToolBar'; - for I := 0 to IDEToolbarCount - 1 do - begin - IDEToolBar := FIDEToolBarList.Add; - IDEToolBar.Position := I; - IDEToolBar.Break := XMLConfig.GetValue( - SubPath + IntToStr(I) + '/Break/Value', False); - IDEToolBarButtonsCount := XMLConfig.GetValue( - SubPath + IntToStr(I) + '/ButtonCount/Value', 0); - for J := 0 to IDEToolBarButtonsCount - 1 do - begin - IDEToolBarButtonsName := XMLConfig.GetValue( - SubPath + IntToStr(I) + '/Buttons/Name' + IntToStr(J) + '/Value', ''); - if Trim(IDEToolBarButtonsName) <> '' then - IDEToolBar.ButtonNames.Add(IDEToolBarButtonsName); - end; - end; - end; - - // Toolbar - FToolBarStandardVisible := XMLConfig.GetValue( - Path+'Desktop/Toolbars/Standarad/ToolBarStandardVisible/Value', True); - FToolBarStandardLeft := XMLConfig.GetValue( - Path+'Desktop/Toolbars/Standarad/ToolBarStandardLeft/Value', 0); - FToolBarStandardTop := XMLConfig.GetValue( - Path+'Desktop/Toolbars/Standarad/ToolBarStandardTop/Value', 0); - - FToolBarViewDebugVisible :=XMLConfig.GetValue( - Path+'Desktop/Toolbars/ViewDebug/ToolBarViewDebugVisible/Value', True); - FToolBarViewDebugLeft := XMLConfig.GetValue( - Path+'Desktop/Toolbars/Standarad/ToolBarViewDebugLeft/Value', 0); - FToolBarViewDebugTop := XMLConfig.GetValue( - Path+'Desktop/Toolbars/Standarad/ToolBarViewDebugTop/Value', 26); - - FToolbarVisible := XMLConfig.GetValue( - Path+'Desktop/Toolbars/Common/ToolbarVisible/Value', True); - FToolBarHighlight := XMLConfig.GetValue( - Path+'Desktop/Toolbars/Common/ToolBarHighlight/Value', False); - FToolBarRaised := XMLConfig.GetValue( - Path+'Desktop/Toolbars/Common/ToolBarRaised/Value', False); - // form editor FShowGrid:=XMLConfig.GetValue( Path+'FormEditor/ShowGrid',true); @@ -1581,6 +1455,8 @@ begin FLowercaseDefaultFilename:=XMLConfig.GetValue( Path+'LowercaseDefaultFilename/Value',true); + // IDE Coolbar + FIDECoolBarOptions.Load(XMLConfig); // component palette FComponentPaletteOptions.Load(XMLConfig); @@ -1710,61 +1586,6 @@ begin XMLConfig.SetDeleteValue(Path+'Desktop/IDENameForDesignedFormList/Value', FIDENameForDesignedFormList,false); - // toolbar - XMLConfig.SetDeleteValue(Path+'Desktop/Toolbars/Standarad/ToolBarStandardVisible/Value', - FToolBarStandardVisible, True); - XMLConfig.SetDeleteValue(Path+'Desktop/Toolbars/Standarad/ToolBarStandardLeft/Value', - FToolBarStandardLeft, 0); - XMLConfig.SetDeleteValue(Path+'Desktop/Toolbars/Standarad/ToolBarStandardTop/Value', - FToolBarStandardTop, 0); - - XMLConfig.SetDeleteValue(Path+'Desktop/Toolbars/ViewDebug/ToolBarViewDebugVisible/Value', - FToolBarViewDebugVisible, True); - XMLConfig.SetDeleteValue(Path+'Desktop/Toolbars/Standarad/ToolBarViewDebugLeft/Value', - FToolBarViewDebugLeft, 0); - XMLConfig.SetDeleteValue(Path+'Desktop/Toolbars/Standarad/ToolBarViewDebugTop/Value', - FToolBarViewDebugTop, 26); - - XMLConfig.SetDeleteValue(Path+'Desktop/Toolbars/Common/ToolbarVisible/Value', - FToolbarVisible, True); - XMLConfig.SetDeleteValue(Path+'Desktop/Toolbars/Common/ToolBarHighlight/Value', - FToolBarHighlight, False); - XMLConfig.SetDeleteValue(Path+'Desktop/Toolbars/Common/ToolBarRaised/Value', - FToolBarRaised, False); - - - //coolbar - SubPath := Path + 'Desktop/IDECoolBar/'; - XMLConfig.DeletePath(SubPath); - XMLConfig.SetDeleteValue(SubPath + 'Visible/Value', - FIDECoolBarVisible, True); - XMLConfig.SetDeleteValue(SubPath + 'Width/Value', - FIDECoolBarWidth, 0); - XMLConfig.SetDeleteValue(SubPath + 'GrabStyle/Value', - FIDECoolBarGrabStyle, 1); - XMLConfig.SetDeleteValue(SubPath + 'GrabWidth/Value', - FIDECoolBarGrabWidth, 5); - XMLConfig.SetDeleteValue(SubPath + 'BorderStyle/Value', - FIDECoolBarBorderStyle, 5); - if FIDEToolBarList.Count > 0 then - begin - XMLConfig.SetDeleteValue(SubPath + 'ToolBarCount/Value', - FIDEToolbarList.Count, 0); - SubPath := SubPath + 'ToolBar'; - for I := 0 to FIDEToolbarList.Count - 1 do - begin - XMLConfig.SetDeleteValue(SubPath + IntToStr(I) + '/Break/Value', - FIDEToolbarList.Items[I].Break, False); - XMLConfig.SetDeleteValue(SubPath + IntToStr(I) + '/ButtonCount/Value', - FIDEToolbarList.Items[I].ButtonNames.Count, 0); - for J := 0 to FIDEToolbarList.Items[I].ButtonNames.Count - 1 do - begin - XMLConfig.SetDeleteValue(SubPath + IntToStr(I) + '/Buttons/Name' + IntToStr(J) + '/Value', - FIDEToolbarList.Items[I].ButtonNames.Strings[J], ''); - end; - end; - end; - // form editor XMLConfig.SetDeleteValue(Path+'FormEditor/ShowBorderSpacing', FShowBorderSpacing,false); @@ -1998,6 +1819,8 @@ begin XMLConfig.SetDeleteValue(Path+'LowercaseDefaultFilename/Value', FLowercaseDefaultFilename,true); + // IDE Coolbar + FIDECoolBarOptions.Save(XMLConfig); // component palette FComponentPaletteOptions.Save(XMLConfig); diff --git a/ide/frames/toolbar_options.pas b/ide/frames/toolbar_options.pas index f74ae34ddb..0d88163536 100644 --- a/ide/frames/toolbar_options.pas +++ b/ide/frames/toolbar_options.pas @@ -72,7 +72,7 @@ type procedure spGrabWidthChange(Sender: TObject); procedure tmWaitTimer(Sender: TObject); private - FTempList: TIDEToolBarList; + FTempCoolBar: TIDECoolBar; procedure SelectBand(const ID: integer); function GetSelectedBand: Integer; procedure ToolBarClick(Sender: TObject); @@ -130,7 +130,7 @@ var I, J: integer; IDEToolBar: TIDEToolBar; begin - with AOptions as TEnvironmentOptions do + with (AOptions as TEnvironmentOptions).IDECoolBarOptions do begin //read toolbar settings cbToolBarVisible.Checked := IDECoolBarVisible; @@ -152,16 +152,16 @@ begin EnableDisableButtons(0); //read toolbars - FTempList.Clear; - for I := 0 to IDEToolbarList.Count - 1 do + FTempCoolBar.ToolBars.Clear; + for I := 0 to IDECoolBar.ToolBars.Count - 1 do begin - IDEToolBar := FTempList.Add; - IDEToolBar.Position := IDEToolbarList.Items[I].Position; - IDEToolBar.Break := IDEToolbarList.Items[I].Break; - for J := 0 to IDEToolbarList.Items[I].ButtonNames.Count - 1 do - IDEToolBar.ButtonNames.Add(IDEToolbarList.Items[I].ButtonNames.Strings[J]); + 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; - FTempList.Sort; + FTempCoolBar.Sort; PopulateToolBar; end; @@ -173,7 +173,7 @@ var IDEToolBar: TIDEToolBar; ToolBar: TToolBar; begin - with AOptions as TEnvironmentOptions do + with (AOptions as TEnvironmentOptions).IDECoolBarOptions do begin //write toolbar settings IDECoolBarVisible := cbToolBarVisible.Checked; @@ -187,23 +187,23 @@ begin if Coolbar.Bands[I].Control = nil then Continue; ToolBar := (Coolbar.Bands[I].Control as TToolBar); - J := FTempList.FindByToolBar(ToolBar); + J := FTempCoolBar.FindByToolBar(ToolBar); if J <> -1 then begin - FTempList.Items[J].Position := Coolbar.Bands[I].Index; - FTempList.Items[J].Break := Coolbar.Bands[I].Break; + FTempCoolBar.ToolBars[J].Position := Coolbar.Bands[I].Index; + FTempCoolBar.ToolBars[J].Break := Coolbar.Bands[I].Break; end; end; - FTempList.Sort; + FTempCoolBar.Sort; - IDEToolbarList.Clear; - for I := 0 to FTempList.Count - 1 do + IDECoolBar.ToolBars.Clear; + for I := 0 to FTempCoolBar.ToolBars.Count - 1 do begin - IDEToolBar := IDEToolbarList.Add; - IDEToolBar.Position := FTempList.Items[I].Position; - IDEToolBar.Break := FTempList.Items[I].Break; - for J := 0 to FTempList.Items[I].ButtonNames.Count - 1 do - IDEToolBar.ButtonNames.Add(FTempList.Items[I].ButtonNames.Strings[J]); + 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]); end; end; MainIDEBar.RefreshCoolbar; @@ -325,12 +325,12 @@ procedure TToolbarOptionsFrame.EnableDisableButtons(const bType: Integer); IDEToolBar1: TIDEToolBar; begin Result := True; - if FTempList.Count <> 2 then + if FTempCoolBar.ToolBars.Count <> 2 then Exit; - if (FTempList.Items[0].ButtonNames.Count <> 8) or (FTempList.Items[1].ButtonNames.Count <> 10) then + if (FTempCoolBar.ToolBars[0].ButtonNames.Count <> 8) or (FTempCoolBar.ToolBars[1].ButtonNames.Count <> 10) then Exit; - IDEToolBar0 := FTempList.Items[0]; - IDEToolBar1 := FTempList.Items[1]; + 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 @@ -383,19 +383,19 @@ var I, J: Integer; begin CoolBar.Bands.Clear; - for I := 0 to FTempList.Count - 1 do + for I := 0 to FTempCoolBar.ToolBars.Count - 1 do begin CoolBand := CoolBar.Bands.Add; - CoolBand.Break := FTempList.Items[I].Break; - CoolBand.Control := FTempList.Items[I].Toolbar; - FTempList.Items[I].Toolbar.Enabled := False; + CoolBand.Break := FTempCoolBar.ToolBars[I].Break; + CoolBand.Control := FTempCoolBar.ToolBars[I].Toolbar; + FTempCoolBar.ToolBars[I].Toolbar.Enabled := False; CoolBand.Visible := True; CoolBand.MinWidth := 25; CoolBand.MinHeight := 22; CoolBand.FixedSize := True; - FTempList.Items[I].ClearToolbar; - for J := 0 to FTempList.Items[I].ButtonNames.Count - 1 do - FTempList.Items[I].AddCustomItems(J); + FTempCoolBar.ToolBars[I].ClearToolbar; + for J := 0 to FTempCoolBar.ToolBars[I].ButtonNames.Count - 1 do + FTempCoolBar.ToolBars[I].AddCustomItems(J); end; if CoolBar.Bands.Count > 0 then SelectBand(0); @@ -406,12 +406,12 @@ end; constructor TToolbarOptionsFrame.Create(AOwner: TComponent); begin inherited Create(AOwner); - FTempList := TIDEToolBarList.Create; + FTempCoolBar := TIDEcoolBar.Create(Nil); end; destructor TToolbarOptionsFrame.Destroy; begin - FreeAndNil(FTempList); + FreeAndNil(FTempCoolBar); inherited Destroy; end; @@ -420,7 +420,7 @@ var CoolBand: TCoolBand; IDEToolbar: TIDEToolBar; begin - IDEToolbar := FTempList.Add; + IDEToolbar := FTempCoolBar.Add; IDEToolbar.Break := False; IDEToolbar.OnToolBarClick := @ToolBarClick; @@ -453,16 +453,16 @@ begin ToolBar := (Coolbar.Bands.Items[ToConfig].Control as TToolBar); if ToolBar <> nil then begin - ToConfig := FTempList.FindByToolBar(ToolBar); + ToConfig := FTempCoolBar.FindByToolBar(ToolBar); if ToConfig <> -1 then begin - fToolBarConfig.LoadSettings(FTempList.Items[ToConfig].ButtonNames); + fToolBarConfig.LoadSettings(FTempCoolBar.ToolBars[ToConfig].ButtonNames); if fToolBarConfig.ShowModal = mrOK then begin - FTempList.Items[ToConfig].ClearToolbar; - fToolBarConfig.SaveSettings(FTempList.Items[ToConfig].ButtonNames); - for I := 0 to FTempList.Items[ToConfig].ButtonNames.Count - 1 do - FTempList.Items[ToConfig].AddCustomItems(I); + FTempCoolBar.ToolBars[ToConfig].ClearToolbar; + fToolBarConfig.SaveSettings(FTempCoolBar.ToolBars[ToConfig].ButtonNames); + for I := 0 to FTempCoolBar.ToolBars[ToConfig].ButtonNames.Count - 1 do + FTempCoolBar.ToolBars[ToConfig].AddCustomItems(I); end; end; end; @@ -492,9 +492,9 @@ begin SelectBand(ToDelete + 1) else if ToDelete - 1 >= 0 then SelectBand(ToDelete - 1); - I := FTempList.FindByToolBar((CoolBar.Bands.Items[ToDelete].Control as TToolBar)); + I := FTempCoolBar.FindByToolBar((CoolBar.Bands.Items[ToDelete].Control as TToolBar)); if I <> -1 then - FTempList.Delete(I); + FTempCoolBar.ToolBars.Delete(I); CoolBar.Bands.Delete(ToDelete); end; end; @@ -517,9 +517,9 @@ procedure TToolbarOptionsFrame.bDefaultToolbarClick(Sender: TObject); var IDEToolBar: TIDEToolBar; begin - FTempList.Clear; + FTempCoolBar.ToolBars.Clear; //standard - IDEToolBar := FTempList.Add; + IDEToolBar := FTempCoolBar.Add; IDEToolBar.Position := 0; IDEToolBar.Break := False; IDEToolBar.ButtonNames.Add('IDEMainMenu/File/itmFileNew/itmFileNewForm'); @@ -532,7 +532,7 @@ begin IDEToolBar.ButtonNames.Add('IDEMainMenu/View/itmViewMainWindows/itmViewToggleFormUnit'); //debug - IDEToolBar := FTempList.Add; + IDEToolBar := FTempCoolBar.Add; IDEToolBar.Position := 1; IDEToolBar.Break := True; IDEToolBar.ButtonNames.Add('IDEMainMenu/Project/itmProjectAddRemoveSection/itmProjectViewUnits'); diff --git a/ide/main.pp b/ide/main.pp index 097fda28b4..0a72105c9d 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -94,7 +94,7 @@ uses // help manager IDEContextHelpEdit, IDEHelpIntf, IDEHelpManager, CodeHelp, HelpOptions, // designer - JITForms, ComponentPalette, ComponentList, CompPagesPopup, + JITForms, ComponentPalette, ComponentList, CompPagesPopup, ToolbarData, ObjInspExt, Designer, FormEditor, CustomFormEditor, lfmUnitResource, ControlSelection, AnchorEditor, TabOrderDlg, MenuEditorForm, // LRT stuff @@ -1631,6 +1631,7 @@ begin TComponentPalette(IDEComponentPalette).PageControl:=nil; FreeThenNil(PkgBoss); FreeThenNil(IDEComponentPalette); + FreeThenNil(IDECoolBar); FreeThenNil(HelpBoss); FreeThenNil(DebugBoss); FreeThenNil(TheCompiler); @@ -2025,18 +2026,15 @@ begin if EnvironmentOptions.ComponentPaletteVisible then begin MainIDEBar.CoolBar.Align := alLeft; - MainIDEBar.CoolBar.Width := EnvironmentOptions.IDECoolBarWidth; + MainIDEBar.CoolBar.Width := EnvironmentOptions.IDECoolBarOptions.IDECoolBarWidth; end else MainIDEBar.CoolBar.Align := alClient; - MainIDEBar.CoolBar.Vertical := False; - MainIDEBar.CoolBar.HorizontalSpacing := 1; - MainIDEBar.CoolBar.VerticalSpacing := 3; - MainIDEBar.CoolBar.FixedSize := True; - MainIDEBar.CoolBar.DoubleBuffered := True; - MainIDEBar.CoolBar.EdgeInner := esNone; - MainIDEBar.CoolBar.EdgeOuter := esNone; - MainIDEBar.CoolBar.Visible := EnvironmentOptions.IDECoolBarVisible; + // IDE Coolbar object wraps MainIDEBar.CoolBar. + IDECoolBar:=TIDECoolBar.Create(MainIDEBar.CoolBar); + IDECoolBar.SetCoolBarDefaults; + IDECoolBar.CreateDefaultToolbars; + MainIDEBar.CoolBar.Visible := EnvironmentOptions.IDECoolBarOptions.IDECoolBarVisible; MainIDEBar.CoolBar.OnChange := @MainIDEBar.CoolBarOnChange; MainIDEBar.CreatePopupMenus(OwningComponent); @@ -3715,7 +3713,7 @@ begin if MainIDEBar.CoolBar.Align = alClient then begin MainIDEBar.CoolBar.Width := 230; - EnvironmentOptions.IDECoolBarWidth := 230; + EnvironmentOptions.IDECoolBarOptions.IDECoolBarWidth := 230; end; MainIDEBar.CoolBar.Align := alLeft; MainIDEBar.CoolBar.Vertical := False; @@ -3735,7 +3733,7 @@ begin MainIDEBar.itmViewIDESpeedButtons.Checked := SpeedButtonsVisible; MainIDEBar.CoolBar.Visible := SpeedButtonsVisible; MainIDEBar.MainSplitter.Visible := SpeedButtonsVisible; - EnvironmentOptions.IDECoolBarVisible := SpeedButtonsVisible; + EnvironmentOptions.IDECoolBarOptions.IDECoolBarVisible := SpeedButtonsVisible; MainIDEBar.MainSplitter.Visible := MainIDEBar.Coolbar.Visible and MainIDEBar.ComponentPageControl.Visible; end; diff --git a/ide/mainbar.pas b/ide/mainbar.pas index 6b426d749b..14a62bc87c 100644 --- a/ide/mainbar.pas +++ b/ide/mainbar.pas @@ -42,7 +42,7 @@ uses ComCtrls, ExtCtrls, LMessages, // IDEIntf ProjectIntf, NewItemIntf, MenuIntf, LazIDEIntf, LazFileCache, - EnvironmentOpts, LazarusIDEStrConsts, IDEImagesIntf; + EnvironmentOpts, LazarusIDEStrConsts, IDEImagesIntf, ToolbarData; type { TMainIDEBar } @@ -540,33 +540,35 @@ procedure TMainIDEBar.RefreshCoolbar; var I, J: Integer; CoolBand: TCoolBand; + CoolBarOpts: TIDECoolBarOptions; begin - EnvironmentOptions.IDEToolBarList.Sort; + CoolBarOpts := EnvironmentOptions.IDECoolBarOptions; + IDECoolBar.Sort; //read general settings - if not (EnvironmentOptions.IDECoolBarGrabStyle in [0..5]) then - EnvironmentOptions.IDECoolBarGrabStyle := 4; - Coolbar.GrabStyle := TGrabStyle(EnvironmentOptions.IDECoolBarGrabStyle); - if not (EnvironmentOptions.IDECoolBarGrabWidth in [1..50]) then - EnvironmentOptions.IDECoolBarGrabWidth := 5; - Coolbar.GrabWidth := EnvironmentOptions.IDECoolBarGrabWidth; - Coolbar.BandBorderStyle := TBorderStyle(EnvironmentOptions.IDECoolBarBorderStyle); + if not (CoolBarOpts.IDECoolBarGrabStyle in [0..5]) then + CoolBarOpts.IDECoolBarGrabStyle := 4; + Coolbar.GrabStyle := TGrabStyle(CoolBarOpts.IDECoolBarGrabStyle); + if not (CoolBarOpts.IDECoolBarGrabWidth in [1..50]) then + CoolBarOpts.IDECoolBarGrabWidth := 5; + Coolbar.GrabWidth := CoolBarOpts.IDECoolBarGrabWidth; + Coolbar.BandBorderStyle := TBorderStyle(CoolBarOpts.IDECoolBarBorderStyle); //read toolbars CoolBar.Bands.Clear; - for I := 0 to EnvironmentOptions.IDEToolBarList.Count - 1 do + for I := 0 to IDECoolBar.ToolBars.Count - 1 do begin CoolBand := CoolBar.Bands.Add; - CoolBand.Break := EnvironmentOptions.IDEToolBarList.Items[I].Break; - CoolBand.Control := EnvironmentOptions.IDEToolBarList.Items[I].Toolbar; + CoolBand.Break := IDECoolBar.ToolBars[I].Break; + CoolBand.Control := IDECoolBar.ToolBars[I].Toolbar; CoolBand.MinWidth := 25; CoolBand.MinHeight := 22; CoolBand.FixedSize := True; - EnvironmentOptions.IDEToolBarList.Items[I].ClearToolbar; - for J := 0 to EnvironmentOptions.IDEToolBarList.Items[I].ButtonNames.Count - 1 do - EnvironmentOptions.IDEToolBarList.Items[I].AddCustomItems(J); + IDECoolBar.ToolBars[I].ClearToolbar; + for J := 0 to IDECoolBar.ToolBars[I].ButtonNames.Count - 1 do + IDECoolBar.ToolBars[I].AddCustomItems(J); end; CoolBar.AutosizeBands; - CoolBar.Visible := EnvironmentOptions.IDECoolBarVisible; + CoolBar.Visible := CoolBarOpts.IDECoolBarVisible; itmViewIDESpeedButtons.Checked := CoolBar.Visible; MainSplitter.Align := alLeft; MainSplitter.Visible := MainIDEBar.Coolbar.Visible and @@ -576,7 +578,7 @@ end; procedure TMainIDEBar.MainSplitterMoved(Sender: TObject); begin - EnvironmentOptions.IDECoolBarWidth := CoolBar.Width; + EnvironmentOptions.IDECoolBarOptions.IDECoolBarWidth := CoolBar.Width; end; procedure TMainIDEBar.CoolBarOnChange(Sender: TObject); @@ -589,14 +591,14 @@ begin if Coolbar.Bands[I].Control = nil then Continue; ToolBar := (Coolbar.Bands[I].Control as TToolBar); - J := EnvironmentOptions.IDEToolBarList.FindByToolBar(ToolBar); + J := IDECoolBar.FindByToolBar(ToolBar); if J <> -1 then begin - EnvironmentOptions.IDEToolBarList.Items[J].Position := Coolbar.Bands[I].Index; - EnvironmentOptions.IDEToolBarList.Items[J].Break := Coolbar.Bands[I].Break; + IDECoolBar.ToolBars[J].Position := Coolbar.Bands[I].Index; + IDECoolBar.ToolBars[J].Break := Coolbar.Bands[I].Break; end end; - EnvironmentOptions.IDEToolBarList.Sort; + IDECoolBar.Sort; end; diff --git a/ide/mainbase.pas b/ide/mainbase.pas index bce8aba713..80229bb9d1 100644 --- a/ide/mainbase.pas +++ b/ide/mainbase.pas @@ -770,7 +770,7 @@ begin CreateMenuItem(ParentMI,itmViewComponentPalette,'itmViewComponentPalette',lisMenuViewComponentPalette, '', true, EnvironmentOptions.ComponentPaletteVisible); CreateMenuItem(ParentMI,itmViewIDESpeedButtons,'itmViewIDESpeedButtons',lisMenuViewIDESpeedButtons, '', - true, EnvironmentOptions.IDECoolBarVisible); + true, EnvironmentOptions.IDECoolBarOptions.IDECoolBarVisible); end; end; diff --git a/ide/toolbardata.pas b/ide/toolbardata.pas index c949e2e88a..0d3c209df0 100644 --- a/ide/toolbardata.pas +++ b/ide/toolbardata.pas @@ -21,6 +21,8 @@ Author: Balázs Székely Abstract: The implementation of IDE Coolbar. + ToDo: + Extract an interface from here and put it to IdeIntf package. } unit ToolbarData; @@ -32,9 +34,61 @@ interface uses Classes, SysUtils, LCLProc, ComCtrls, ExtCtrls, ToolWin, - MenuIntf, IDEImagesIntf, IDECommands; + MenuIntf, IDEImagesIntf, IDECommands, Laz2_XMLCfg, fgl; type + + // Option classes take care of saving / loading environment options data. + // They don't contain LCL components. + + { TIDEToolBarOptions } + TIDEToolBarOptions = class + private + Break: Boolean; + ButtonNames: TStringList; + end; + + TIDEToolBarOptionList = specialize TFPGObjectList; + + { 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; + 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; + 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; + end; + + // Actual Coolbar and its member Toolbars + TOnToolBarClick = procedure(Sender: TObject) of object; { TIDEToolBar } @@ -63,29 +117,12 @@ type public property Position: Integer read FPosition write FPosition; property Break: Boolean read FBreak write FBreak; - property ButtonNames: TStringList read FButtonNames write FButtonNames; + property ButtonNames: TStringList read FButtonNames; property Toolbar: TToolBar read FToolBar; property OnToolBarClick: TOnToolbarClick read FOnToolbarClick write FOnToolbarClick; end; - { TIDEToolBarList } - TIDEToolBarList = class - private - FToolBarList: TFPList; - function GetItems(Index: integer): TIDEToolBar; - function GetCount: Integer; - public - constructor Create; - destructor Destroy; override; - function Add: TIDEToolBar; - function FindByToolBar(const ToolBar: TToolBar): Integer; - procedure Delete(const Index: Integer); - procedure Clear; - procedure Sort; - public - property Items[Index: Integer]: TIDEToolBar read GetItems; - property Count: Integer read GetCount; - end; + TIDEToolBarList = specialize TFPGObjectList; { TIDEToolBarToolButton } TIDEToolBarToolButton = class(TToolButton) @@ -96,18 +133,172 @@ type property IdeMenuItem: TIDEMenuItem read FMenuItem write FMenuItem; end; + { TIDECoolBar } + TIDECoolBar = class + private + FCoolBar: TCoolBar; // The actual CoolBar, not owned by this class. + FToolBars: TIDEToolBarList; + public + constructor Create(ACoolBar: TCoolBar); + destructor Destroy; override; + procedure SetCoolBarDefaults; + procedure CreateDefaultToolbars; + procedure CopyFromOptions(Options: TIDECoolBarOptions); + procedure CopyToOptions(Options: TIDECoolBarOptions); + function Add: TIDEToolBar; + function FindByToolBar(const ToolBar: TToolBar): Integer; + procedure Sort; + public + property ToolBars: TIDEToolBarList read FToolBars; + property CoolBar: TCoolBar read FCoolBar; + end; + function GetShortcut(AMenuItem: TIDEMenuItem): string; +var + IDECoolBar: TIDECoolBar; implementation uses MainBar; -{ TEditToolBarToolButton } -procedure TIDEToolBarToolButton.Click; +const + BasePath = 'IDECoolBarOptions/'; + +{ TIDECoolBarOptions } + +constructor TIDECoolBarOptions.Create; begin - inherited Click; - if assigned(FMenuItem) then - FMenuItem.TriggerClick; + inherited Create; + FToolBars := TIDEToolBarOptionList.Create; + FToolbarVisible := False; + FToolBarStandardVisible := False; + FToolBarStandardLeft := 0; + FToolBarStandardTop := 0; + FToolBarViewDebugVisible := False; + FToolBarViewDebugLeft := 0; + FToolBarViewDebugTop := 26; + FToolBarHighlight := False; + FToolBarRaised := False; + //coolbar + FIDECoolBarVisible := True; + FIDECoolBarWidth := 230; + FIDECoolBarGrabStyle := 1; + FIDECoolBarGrabWidth := 5; + FIDECoolBarBorderStyle := 1; +end; + +destructor TIDECoolBarOptions.Destroy; +begin + FToolBars.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; +end; + +function TIDECoolBarOptions.Load(XMLConfig: TXMLConfig): boolean; +var + ToolBarOpt: TIDEToolBarOptions; + ToolBarCount: Integer; + ButtonCount: Integer; + ButtonName: string; + SubPath: String; + I, J: Integer; +begin + //Coolbar + FIDECoolBarVisible := XMLConfig.GetValue(BasePath + 'Visible/Value', True); + FIDECoolBarWidth := XMLConfig.GetValue(BasePath + 'Width/Value', 230); + FIDECoolBarGrabStyle := XMLConfig.GetValue(BasePath + 'GrabStyle/Value', 1); + FIDECoolBarGrabWidth := XMLConfig.GetValue(BasePath + 'GrabWidth/Value', 5); + FIDECoolBarBorderStyle := XMLConfig.GetValue(BasePath + 'BorderStyle/Value', 5); + ToolbarCount := XMLConfig.GetValue(BasePath + 'ToolBarCount/Value', 0); + if ToolBarCount > 0 then + begin + FToolBars.Clear; + SubPath := BasePath + 'ToolBar'; + for I := 0 to ToolbarCount - 1 do + begin + ToolBarOpt := TIDEToolBarOptions.Create; + FToolBars.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 + begin + ButtonName := Trim(XMLConfig.GetValue( + SubPath + IntToStr(I) + '/Buttons/Name' + IntToStr(J) + '/Value', '')); + if ButtonName <> '' then + ToolBarOpt.ButtonNames.Add(ButtonName); + end; + 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); +end; + +function TIDECoolBarOptions.Save(XMLConfig: TXMLConfig): boolean; +var + ToolBarOpt: TIDEToolBarOptions; + 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); + XMLConfig.SetDeleteValue(BasePath + 'Width/Value', FIDECoolBarWidth, 0); + 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 + begin + XMLConfig.SetDeleteValue(BasePath + 'ToolBarCount/Value', FToolBars.Count, 0); + SubPath := BasePath + 'ToolBar'; + for I := 0 to FToolBars.Count - 1 do + begin + XMLConfig.SetDeleteValue(SubPath + IntToStr(I) + '/Break/Value', + FToolBars[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 + XMLConfig.SetDeleteValue(SubPath + IntToStr(I) + '/Buttons/Name' + IntToStr(J) + '/Value', + FToolBars[I].ButtonNames[J], ''); + end; + end; end; { TIDEToolBar } @@ -295,43 +486,116 @@ begin end; -{ TIDEToolBarList } -function TIDEToolBarList.GetItems(Index: integer): TIDEToolBar; +{ TEditToolBarToolButton } +procedure TIDEToolBarToolButton.Click; begin - Result := TIDEToolBar(FToolBarList[Index]); + inherited Click; + if assigned(FMenuItem) then + FMenuItem.TriggerClick; end; -constructor TIDEToolBarList.Create; + +{ TIDECoolBar } +constructor TIDECoolBar.Create(ACoolBar: TCoolBar); begin inherited Create; - FToolBarList := TFPList.Create; + FCoolBar := ACoolBar; + FToolBars := TIDEToolBarList.Create; end; -destructor TIDEToolBarList.Destroy; +destructor TIDECoolBar.Destroy; begin - Clear; - FreeAndNil(FToolBarList); + FreeAndNil(FToolBars); inherited Destroy; end; -function TIDEToolBarList.Add: TIDEToolBar; +procedure TIDECoolBar.SetCoolBarDefaults; +begin + FCoolBar.Vertical := False; + FCoolBar.HorizontalSpacing := 1; + FCoolBar.VerticalSpacing := 3; + FCoolBar.FixedSize := True; + FCoolBar.DoubleBuffered := True; + FCoolBar.EdgeInner := esNone; + FCoolBar.EdgeOuter := esNone; +end; + +procedure TIDECoolBar.CreateDefaultToolbars; +var + IDEToolBar: TIDEToolBar; +begin + //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'); + //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'); +end; + +procedure TIDECoolBar.CopyFromOptions(Options: TIDECoolBarOptions); var I: Integer; IDEToolBar: TIDEToolBar; begin - IDEToolBar := TIDEToolBar.Create; - I := FToolBarList.Add(IDEToolBar); - Result := Items[I]; + FToolBars.Clear; + for I := 0 to Options.FToolBars.Count-1 do + begin + IDEToolBar := Add; + IDEToolBar.Position := I; + IDEToolBar.Break := Options.FToolBars[I].Break; + IDEToolBar.ButtonNames.Assign(Options.FToolBars[I].ButtonNames); + end; end; -function TIDEToolBarList.FindByToolBar(const ToolBar: TToolBar): Integer; +procedure TIDECoolBar.CopyToOptions(Options: TIDECoolBarOptions); +var + I: Integer; + Opt: TIDEToolBarOptions; +begin + Options.FToolBars.Clear; + for I := 0 to FToolBars.Count - 1 do + begin + Opt := TIDEToolBarOptions.Create; + Options.FToolBars.Add(Opt); + Opt.Break := FToolBars[I].Break; + Opt.ButtonNames.Assign(FToolBars[I].ButtonNames); + end; +end; + +function TIDECoolBar.Add: TIDEToolBar; +begin + Result := TIDEToolBar.Create; + FToolBars.Add(Result); +end; + +function TIDECoolBar.FindByToolBar(const ToolBar: TToolBar): Integer; var I: Integer; begin Result := -1; - for I := 0 to FToolBarList.Count - 1 do + for I := 0 to FToolBars.Count - 1 do begin - if Items[I].Toolbar = Toolbar then + if ToolBars[I].Toolbar = Toolbar then begin Result := I; Break; @@ -339,34 +603,14 @@ begin end; end; -procedure TIDEToolBarList.Delete(const Index: Integer); +function Compare(const Item1, Item2: TIDEToolBar): Integer; begin - Items[Index].Free; - FToolBarList.Delete(Index); + Result := Item1.Position - Item2.Position; end; -procedure TIDEToolBarList.Clear; -var - I: Integer; +procedure TIDECoolBar.Sort; begin - for I := 0 to FToolBarList.Count - 1 do - Items[I].Free; - FToolBarList.Clear; -end; - -function Compare(Item1, Item2: Pointer): Integer; -begin - Result := TIDEToolBar(Item1).Position - TIDEToolBar(Item2).Position; -end; - -procedure TIDEToolBarList.Sort; -begin - FToolBarList.Sort(@Compare); -end; - -function TIDEToolBarList.GetCount: Integer; -begin - Result := FToolBarList.Count; + FToolBars.Sort(@Compare); end; function GetShortcut(AMenuItem: TIDEMenuItem): string;