mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-06 02:57:59 +02:00
266 lines
10 KiB
ObjectPascal
266 lines
10 KiB
ObjectPascal
{
|
|
*****************************************************************************
|
|
See the file COPYING.modifiedLGPL.txt, included in this distribution,
|
|
for details about the license.
|
|
*****************************************************************************
|
|
|
|
Author: Michael W. Vogel
|
|
}
|
|
unit DockedOptionsFrame;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils,
|
|
// LCL
|
|
Forms, StdCtrls, Dialogs, ComCtrls, ColorBox, Controls, Graphics, Spin,
|
|
ExtCtrls,
|
|
// LazUtils
|
|
LazFileCache, LazFileUtils, LazLoggerBase,
|
|
// IdeIntf
|
|
IDEOptionsIntf, IDEOptEditorIntf, LazIDEIntf, DividerBevel,
|
|
// DockedFormEditor
|
|
DockedStrConsts, DockedOptionsIDE, DockedMainIDE;
|
|
|
|
type
|
|
|
|
{ TFrameDockedOptions }
|
|
|
|
TFrameDockedOptions = class(TAbstractIDEOptionsEditor)
|
|
cbEnableDockFormEd: TCheckBox;
|
|
CheckBoxAnchorTabVisible: TCheckBox;
|
|
CheckBoxForceRefreshing: TCheckBox;
|
|
CheckBoxTreatAlign: TCheckBox;
|
|
CheckBoxTreatBorder: TCheckBox;
|
|
CheckBoxAllowSizing: TCheckBox;
|
|
ColorBoxResizer: TColorBox;
|
|
ComboBoxTabPosition: TComboBox;
|
|
DividerBevelAnchors: TDividerBevel;
|
|
DividerBevel1: TDividerBevel;
|
|
LabelColors: TLabel;
|
|
LabelCaptureDistance: TLabel;
|
|
LabelMouseBorderFactor: TLabel;
|
|
LabelResizerColor: TLabel;
|
|
LabelTabPosition: TLabel;
|
|
AnchorsColorBox: TColorBox;
|
|
AnchorsColorListBox: TColorListBox;
|
|
Panel1: TPanel;
|
|
SpinEditCaptureDistance: TSpinEdit;
|
|
SpinEditMouseBorderFactor: TSpinEdit;
|
|
procedure cbEnableDockFormEdChange(Sender: TObject);
|
|
procedure CheckBoxAnchorTabVisibleChange(Sender: TObject);
|
|
procedure AnchorsColorBoxChange(Sender: TObject);
|
|
procedure AnchorsColorListBoxGetColors(Sender: TCustomColorListBox; Items: TStrings);
|
|
procedure AnchorsColorListBoxSelectionChange(Sender: TObject; User: Boolean);
|
|
private
|
|
FLastAllowSizing: Boolean;
|
|
FLastAnchorBorderColor: TColor;
|
|
FLastAnchorControlColor: TColor;
|
|
FLastAnchorTabsVisible: Boolean;
|
|
FLastAnchorTargetColor: TColor;
|
|
FLastAnchorTopColor: TColor;
|
|
FLastAnchorLeftColor: TColor;
|
|
FLastAnchorRightColor: TColor;
|
|
FLastAnchorBottomColor: TColor;
|
|
FLastCaptureDistance: Integer;
|
|
FLastForceRefreshing: Boolean;
|
|
FLastMouseBorderFactor: Integer;
|
|
FLastResizerColor: TColor;
|
|
FLastTabPosition: TTabPosition;
|
|
FLastTreatAlign: Boolean;
|
|
FLastTreatBorder: Boolean;
|
|
FReady: Boolean;
|
|
FDisableChanged: Boolean;
|
|
public
|
|
function GetTitle: String; override;
|
|
procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override;
|
|
procedure ReadSettings({%H-}AOptions: TAbstractIDEOptions); override;
|
|
procedure WriteSettings({%H-}AOptions: TAbstractIDEOptions); override;
|
|
procedure RestoreSettings({%H-}AOptions: TAbstractIDEOptions); override;
|
|
class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
|
|
end;
|
|
|
|
{ TFrameDisabledDockedOptions }
|
|
|
|
TFrameDisabledDockedOptions = class(TFrameDockedOptions)
|
|
constructor Create(AnOwner: TComponent); override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TFrameDockedOptions }
|
|
|
|
procedure TFrameDockedOptions.CheckBoxAnchorTabVisibleChange(Sender: TObject);
|
|
begin
|
|
CheckBoxAllowSizing.Enabled := CheckBoxAnchorTabVisible.Checked;
|
|
CheckBoxTreatAlign.Enabled := CheckBoxAnchorTabVisible.Checked;
|
|
CheckBoxTreatBorder.Enabled := CheckBoxAnchorTabVisible.Checked;
|
|
LabelColors.Enabled := CheckBoxAnchorTabVisible.Checked;
|
|
LabelCaptureDistance.Enabled := CheckBoxAnchorTabVisible.Checked;
|
|
LabelMouseBorderFactor.Enabled := CheckBoxAnchorTabVisible.Checked;
|
|
SpinEditCaptureDistance.Enabled := CheckBoxAnchorTabVisible.Checked;
|
|
SpinEditMouseBorderFactor.Enabled := CheckBoxAnchorTabVisible.Checked;
|
|
end;
|
|
|
|
procedure TFrameDockedOptions.cbEnableDockFormEdChange(Sender: TObject);
|
|
begin
|
|
FDisableChanged := True;
|
|
end;
|
|
|
|
procedure TFrameDockedOptions.AnchorsColorBoxChange(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
i := AnchorsColorListBox.ItemIndex;
|
|
if not FReady or (i < 0) then Exit;
|
|
AnchorsColorListBox.Colors[i] := AnchorsColorBox.Selected;
|
|
end;
|
|
|
|
procedure TFrameDockedOptions.AnchorsColorListBoxGetColors(Sender: TCustomColorListBox; Items: TStrings);
|
|
var
|
|
LStr: String;
|
|
begin
|
|
for LStr in AnchorColorStr do
|
|
Items.Add(LStr);
|
|
end;
|
|
|
|
procedure TFrameDockedOptions.AnchorsColorListBoxSelectionChange(Sender: TObject; User: Boolean);
|
|
begin
|
|
if not (FReady and User) then
|
|
Exit;
|
|
AnchorsColorBox.Selected := AnchorsColorListBox.Selected;
|
|
end;
|
|
|
|
function TFrameDockedOptions.GetTitle: String;
|
|
begin
|
|
Result := SCaptionDockedFormEditor;
|
|
end;
|
|
|
|
procedure TFrameDockedOptions.Setup(ADialog: TAbstractOptionsEditorDialog);
|
|
var
|
|
ATabPosition: TTabPosition;
|
|
begin
|
|
FReady := false;
|
|
ComboBoxTabPosition.Items.Clear;
|
|
for ATabPosition := Low(TTabPosition) to High(TTabPosition) do
|
|
ComboBoxTabPosition.Items.Add(STabPosition[ATabPosition]);
|
|
|
|
CheckBoxAllowSizing.Caption := SAllowSizingCaption;
|
|
CheckBoxAnchorTabVisible.Caption := SAnchorTabVisibleCaption;
|
|
CheckBoxForceRefreshing.Caption := SForceRefreshingCaption;
|
|
CheckBoxTreatAlign.Caption := STreatAlignCaption;
|
|
CheckBoxTreatBorder.Caption := STreatBorderCaption;
|
|
DividerBevelAnchors.Caption := SAnchors;
|
|
LabelColors.Caption := SColorsCaption;
|
|
LabelResizerColor.Caption := SResizerColorCaption;
|
|
LabelTabPosition.Caption := STabPositionCaption;
|
|
LabelCaptureDistance.Caption := SCaptureDistanceCaption;
|
|
LabelMouseBorderFactor.Caption := SMouseBorderFactorCaption;
|
|
cbEnableDockFormEd.Caption := SEnableDockedDsgner;
|
|
|
|
CheckBoxAllowSizing.Hint := SAllowSizingHint;
|
|
CheckBoxAnchorTabVisible.Hint := SAnchorTabVisibleHint;
|
|
CheckBoxTreatAlign.Hint := STreatAlignHint;
|
|
CheckBoxTreatBorder.Hint := StreatBorderHint;
|
|
CheckBoxForceRefreshing.Hint := SForceRefreshingHint;
|
|
ColorBoxResizer.Hint := SResizerColorHint;
|
|
ComboBoxTabPosition.Hint := STabPositionHint;
|
|
SpinEditCaptureDistance.Hint := SCaptureDistanceHint;
|
|
SpinEditMouseBorderFactor.Hint := SMouseBorderFactorHint;
|
|
end;
|
|
|
|
procedure TFrameDockedOptions.ReadSettings(AOptions: TAbstractIDEOptions);
|
|
begin
|
|
FLastAllowSizing := DockedOptions.AllowSizing;
|
|
FLastAnchorBorderColor := DockedOptions.AnchorBorderColor;
|
|
FLastAnchorControlColor := DockedOptions.AnchorControlColor;
|
|
FLastAnchorTabsVisible := DockedOptions.AnchorTabVisible;
|
|
FLastAnchorTargetColor := DockedOptions.AnchorTargetColor;
|
|
FLastAnchorTopColor := DockedOptions.AnchorTopColor;
|
|
FLastAnchorLeftColor := DockedOptions.AnchorLeftColor;
|
|
FLastAnchorRightColor := DockedOptions.AnchorRightColor;
|
|
FLastAnchorBottomColor := DockedOptions.AnchorBottomColor;
|
|
FLastCaptureDistance := DockedOptions.CaptureDistance;
|
|
FLastForceRefreshing := DockedOptions.ForceRefreshing;
|
|
FLastMouseBorderFactor := DockedOptions.MouseBorderFactor;
|
|
FLastResizerColor := DockedOptions.ResizerColor;
|
|
FLastTabPosition := DockedOptions.TabPosition;
|
|
FLastTreatAlign := DockedOptions.TreatAlign;
|
|
FLastTreatBorder := DockedOptions.TreatBorder;
|
|
cbEnableDockFormEd.Checked := DockedOptions.EnableDockedDesigner;
|
|
FDisableChanged := False;
|
|
RestoreSettings(AOptions);
|
|
FReady := true;
|
|
end;
|
|
|
|
procedure TFrameDockedOptions.WriteSettings(AOptions: TAbstractIDEOptions);
|
|
begin
|
|
DockedOptions.AllowSizing := CheckBoxAllowSizing.Checked;
|
|
DockedOptions.AnchorBorderColor := AnchorsColorListBox.Colors[ord(acControlBorder)];
|
|
DockedOptions.AnchorControlColor := AnchorsColorListBox.Colors[ord(acControl)];
|
|
DockedOptions.AnchorTopColor := AnchorsColorListBox.Colors[ord(acAnchorTop)];
|
|
DockedOptions.AnchorLeftColor := AnchorsColorListBox.Colors[ord(acAnchorLeft)];
|
|
DockedOptions.AnchorRightColor := AnchorsColorListBox.Colors[ord(acAnchorRight)];
|
|
DockedOptions.AnchorBottomColor := AnchorsColorListBox.Colors[ord(acAnchorBottom)];
|
|
DockedOptions.AnchorTargetColor := AnchorsColorListBox.Colors[ord(acAnchorTarget)];
|
|
DockedOptions.AnchorTabVisible := CheckBoxAnchorTabVisible.Checked;
|
|
DockedOptions.CaptureDistance := SpinEditCaptureDistance.Value;
|
|
DockedOptions.ForceRefreshing := CheckBoxForceRefreshing.Checked;
|
|
DockedOptions.MouseBorderFactor := SpinEditMouseBorderFactor.Value;
|
|
DockedOptions.ResizerColor := ColorBoxResizer.Selected;
|
|
DockedOptions.TabPosition := TTabPosition(ComboBoxTabPosition.ItemIndex);
|
|
DockedOptions.TreatAlign := CheckBoxTreatAlign.Checked;
|
|
DockedOptions.TreatBorder := CheckBoxTreatBorder.Checked;
|
|
if FDisableChanged then
|
|
DockedOptions.DoneAskUserEnableDockedDesigner := True;
|
|
DockedOptions.EnableDockedDesigner := cbEnableDockFormEd.Checked;
|
|
|
|
if DockedOptions.Modified then
|
|
begin
|
|
DockedOptions.SaveSafe;
|
|
if Assigned(DockedTabMaster) then
|
|
DockedTabMaster.OptionsModified;
|
|
end;
|
|
end;
|
|
|
|
procedure TFrameDockedOptions.RestoreSettings(AOptions: TAbstractIDEOptions);
|
|
begin
|
|
AnchorsColorListBox.Colors[ord(acControlBorder)] := DockedOptions.AnchorBorderColor;
|
|
AnchorsColorListBox.Colors[ord(acControl)] := DockedOptions.AnchorControlColor;
|
|
AnchorsColorListBox.Colors[ord(acAnchorTop)] := DockedOptions.AnchorTopColor;
|
|
AnchorsColorListBox.Colors[ord(acAnchorLeft)] := DockedOptions.AnchorLeftColor;
|
|
AnchorsColorListBox.Colors[ord(acAnchorRight)] := DockedOptions.AnchorRightColor;
|
|
AnchorsColorListBox.Colors[ord(acAnchorBottom)] := DockedOptions.AnchorBottomColor;
|
|
AnchorsColorListBox.Colors[ord(acAnchorTarget)] := DockedOptions.AnchorTargetColor;
|
|
CheckBoxAnchorTabVisible.Checked := FLastAnchorTabsVisible;
|
|
CheckBoxAnchorTabVisible.OnChange(nil);
|
|
CheckBoxAllowSizing.Checked := FLastAllowSizing;
|
|
CheckBoxForceRefreshing.Checked := FLastForceRefreshing;
|
|
CheckBoxTreatAlign.Checked := FLastTreatAlign;
|
|
CheckBoxTreatBorder.Checked := FLastTreatBorder;
|
|
ColorBoxResizer.Selected := FLastResizerColor;
|
|
ComboBoxTabPosition.ItemIndex := Integer(FLastTabPosition);
|
|
SpinEditCaptureDistance.Value := FLastCaptureDistance;
|
|
SpinEditMouseBorderFactor.Value := FLastMouseBorderFactor;
|
|
end;
|
|
|
|
class function TFrameDockedOptions.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
|
begin
|
|
Result := IDEEditorGroups.GetByIndex(GroupEnvironment)^.GroupClass;
|
|
end;
|
|
|
|
{ TFrameDisabledDockedOptions }
|
|
|
|
constructor TFrameDisabledDockedOptions.Create(AnOwner: TComponent);
|
|
begin
|
|
inherited Create(AnOwner);
|
|
Panel1.Visible := False;
|
|
end;
|
|
|
|
end.
|
|
|