mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-10 09:28:21 +02:00
305 lines
12 KiB
ObjectPascal
305 lines
12 KiB
ObjectPascal
{
|
|
***************************************************************************
|
|
* *
|
|
* This source is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* This code is distributed in the hope that it will be useful, but *
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
|
* General Public License for more details. *
|
|
* *
|
|
* A copy of the GNU General Public License is available on the World *
|
|
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
|
|
* obtain it by writing to the Free Software Foundation, *
|
|
* Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA. *
|
|
* *
|
|
***************************************************************************
|
|
}
|
|
unit formed_options;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils,
|
|
// LCL
|
|
Graphics, Forms, StdCtrls, Dialogs, Spin, ColorBox,
|
|
// BuildIntf
|
|
IDEOptionsIntf,
|
|
// IdeIntf
|
|
IDEOptEditorIntf,
|
|
// IdeConfig
|
|
EnvironmentOpts,
|
|
// IDE
|
|
EnvGuiOptions, LazarusIDEStrConsts;
|
|
|
|
type
|
|
TDesignerColor = (
|
|
dcGrid,
|
|
dcBorderSpacing,
|
|
dcGridLinesLeftTop,
|
|
dcGridLinesRightBottom,
|
|
dcGrabber,
|
|
dcMarker,
|
|
dcRuberbandSelection,
|
|
dcRuberbandCreation,
|
|
dcNonFormBackgroundColor
|
|
);
|
|
|
|
{ TFormEditorOptionsFrame }
|
|
|
|
TFormEditorOptionsFrame = class(TAbstractIDEOptionsEditor)
|
|
FormTitleBarChangesObjectInspectorCheckBox: TCheckBox;
|
|
ForceDPIScalingInDesignTimeCheckBox: TCheckBox;
|
|
SwitchToFavoritesOITabCheckBox:TCheckBox;
|
|
CheckPackagesOnFormCreateCheckBox: TCheckBox;
|
|
OpenDesignerOnOpenUnitCheckBox: TCheckBox;
|
|
ColorBox: TColorBox;
|
|
ColorsListBox: TColorListBox;
|
|
CreateCompFocusNameCheckBox: TCheckBox;
|
|
FormEditMiscGroupBox: TGroupBox;
|
|
GridGroupBox: TGroupBox;
|
|
GridSizeXSpinEdit: TSpinEdit;
|
|
GridSizeXLabel: TLabel;
|
|
GridSizeYSpinEdit: TSpinEdit;
|
|
GridSizeYLabel: TLabel;
|
|
GuideLinesGroupBox: TGroupBox;
|
|
DesignerColorsGroupBox: TGroupBox;
|
|
RightClickSelectsCheckBox: TCheckBox;
|
|
RubberbandSelectsGrandChildsCheckBox: TCheckBox;
|
|
ShowBorderSpaceCheckBox: TCheckBox;
|
|
ShowComponentCaptionsCheckBox: TCheckBox;
|
|
ShowEditorHintsCheckBox: TCheckBox;
|
|
ShowGridCheckBox: TCheckBox;
|
|
ShowGuideLinesCheckBox: TCheckBox;
|
|
SnapToGridCheckBox: TCheckBox;
|
|
SnapToGuideLinesCheckBox: TCheckBox;
|
|
procedure ColorBoxChange(Sender: TObject);
|
|
procedure ColorsListBoxGetColors(Sender: TCustomColorListBox; Items: TStrings);
|
|
procedure ColorsListBoxSelectionChange(Sender: TObject; User: boolean);
|
|
procedure CreateCompFocusNameCheckBoxChange(Sender: TObject);
|
|
procedure FrameResize(Sender: TObject);
|
|
private
|
|
FLoaded: Boolean;
|
|
procedure ChangeColor(AIndex: Integer; NewColor: TColor);
|
|
public
|
|
function GetTitle: String; override;
|
|
procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override;
|
|
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
|
|
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
|
|
class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TFormEditorOptionsFrame }
|
|
|
|
function TFormEditorOptionsFrame.GetTitle: String;
|
|
begin
|
|
Result := dlgFrmEditor;
|
|
end;
|
|
|
|
procedure TFormEditorOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
|
|
procedure SetupGridGroupBox;
|
|
begin
|
|
ShowGridCheckBox.Caption:=dlgQShowGrid;
|
|
ShowGridCheckBox.Hint:=dlgGridConsistsOfSmallDots;
|
|
ShowBorderSpaceCheckBox.Caption:=dlgQShowBorderSpacing;
|
|
ShowBorderSpaceCheckBox.Hint:=dlgBorderSpaceCanBeSetInAnchorEditor;
|
|
SnapToGridCheckBox.Caption:=dlgQSnapToGrid;
|
|
SnapToGridCheckBox.Hint:=dlgDistanceBetweenGridPointsIsSmallestStep;
|
|
GridSizeXSpinEdit.Hint:=dlgGridXHint;
|
|
GridSizeXLabel.Caption:=dlgGridX;
|
|
GridSizeYSpinEdit.Hint:=dlgGridYHint;
|
|
GridSizeYLabel.Caption:=dlgGridY;
|
|
end;
|
|
|
|
procedure SetupGuideLinesGroupBox;
|
|
begin
|
|
ShowGuideLinesCheckBox.Caption:=dlgGuideLines;
|
|
ShowGuideLinesCheckBox.Hint:=dlgGuideLinesHint;
|
|
SnapToGuideLinesCheckBox.Caption:=dlgSnapGuideLines;
|
|
SnapToGuideLinesCheckBox.Hint:=dlgSnapGuideLinesHint;
|
|
end;
|
|
|
|
procedure SetupMiscGroupBox;
|
|
begin
|
|
RubberbandSelectsGrandChildsCheckBox.Caption:=dlgRubberbandSelectsGrandChildren;
|
|
RubberbandSelectsGrandChildsCheckBox.Hint:=dlgSelectAllChildControls;
|
|
ShowComponentCaptionsCheckBox.Caption:=dlgShowCaptionsOfNonVisuals;
|
|
ShowComponentCaptionsCheckBox.Hint:=dlgDrawComponentsNameBelowIt;
|
|
ShowEditorHintsCheckBox.Caption:=dlgShowDesignerHints;
|
|
ShowEditorHintsCheckBox.Hint:=dlgShowDesignerHintsHint;
|
|
OpenDesignerOnOpenUnitCheckBox.Caption:=lisOpenDesignerOnOpenUnit;
|
|
OpenDesignerOnOpenUnitCheckBox.Hint:=lisOpenDesignerOnOpenUnitHint;
|
|
RightClickSelectsCheckBox.Caption:=dlgRightClickSelects;
|
|
RightClickSelectsCheckBox.Hint:=dlgComponentUnderMouseCursorIsFirstSelected;
|
|
CreateCompFocusNameCheckBox.Caption:=lisAskNameOnCreate;
|
|
CreateCompFocusNameCheckBox.Hint:=lisAskForComponentNameAfterPuttingItOnForm;
|
|
SwitchToFavoritesOITabCheckBox.Caption:=lisOFESwitchToObjectInspectorFavoritesTab;
|
|
SwitchToFavoritesOITabCheckBox.Hint:=lisSwitchToFavoritesTabAfterAsking;
|
|
CheckPackagesOnFormCreateCheckBox.Caption:=dlgCheckPackagesOnFormCreate;
|
|
CheckPackagesOnFormCreateCheckBox.Hint:=dlgCheckPackagesOnFormCreateHint;
|
|
FormTitleBarChangesObjectInspectorCheckBox.Caption:=dlgFormTitleBarChangesObjectInspector;
|
|
FormTitleBarChangesObjectInspectorCheckBox.Hint:=dlgFormTitleBarChangesObjectInspectorHint;
|
|
ForceDPIScalingInDesignTimeCheckBox.Caption:=dlgForceDPIScalingInDesignTime;
|
|
ForceDPIScalingInDesignTimeCheckBox.Hint:=dlgForceDPIScalingInDesignTimeHint;
|
|
end;
|
|
begin
|
|
GridGroupBox.Caption := dlgEnvGrid;
|
|
GuideLinesGroupBox.Caption := dlgEnvLGuideLines;
|
|
FormEditMiscGroupBox.Caption := dlgEnvMisc;
|
|
DesignerColorsGroupBox.Caption := dlgColors;
|
|
SetupGridGroupBox;
|
|
SetupGuideLinesGroupBox;
|
|
SetupMiscGroupBox;
|
|
FLoaded := False;
|
|
end;
|
|
|
|
procedure TFormEditorOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
|
|
var
|
|
EnvOpt: TEnvironmentOptions;
|
|
EnvGui: TIDESubOptions;
|
|
begin
|
|
EnvOpt := AOptions as TEnvironmentOptions;
|
|
EnvGui := EnvOpt.GetSubConfigObj(TEnvGuiOptions);
|
|
//Assert(Assigned(EnvGui), 'TFormEditorOptionsFrame.ReadSettings: EnvGui=Nil');
|
|
with EnvGui as TEnvGuiOptions do
|
|
begin
|
|
// read colors
|
|
ColorsListBox.Items.Objects[Ord(dcGrid)] := TObject(PtrInt(GridColor));
|
|
ColorsListBox.Items.Objects[Ord(dcBorderSpacing)] := TObject(PtrInt(BorderSpacingColor));
|
|
ColorsListBox.Items.Objects[Ord(dcGridLinesLeftTop)] := TObject(PtrInt(GuideLineColorLeftTop));
|
|
ColorsListBox.Items.Objects[Ord(dcGridLinesRightBottom)] := TObject(PtrInt(GuideLineColorRightBottom));
|
|
ColorsListBox.Items.Objects[Ord(dcGrabber)] := TObject(PtrInt(GrabberColor));
|
|
ColorsListBox.Items.Objects[Ord(dcMarker)] := TObject(PtrInt(MarkerColor));
|
|
ColorsListBox.Items.Objects[Ord(dcNonFormBackgroundColor)] := TObject(PtrInt(NonFormBackgroundColor));
|
|
ColorsListBox.Items.Objects[Ord(dcRuberbandSelection)] := TObject(PtrInt(RubberbandSelectionColor));
|
|
ColorsListBox.Items.Objects[Ord(dcRuberbandCreation)] := TObject(PtrInt(RubberbandCreationColor));
|
|
|
|
ShowBorderSpaceCheckBox.Checked := ShowBorderSpacing;
|
|
ShowGridCheckBox.Checked := ShowGrid;
|
|
SnapToGridCheckBox.Checked := SnapToGrid;
|
|
GridSizeXSpinEdit.Value := GridSizeX;
|
|
GridSizeYSpinEdit.Value := GridSizeY;
|
|
ShowGuideLinesCheckBox.Checked := ShowGuideLines;
|
|
SnapToGuideLinesCheckBox.Checked := SnapToGuideLines;
|
|
ShowComponentCaptionsCheckBox.Checked := ShowComponentCaptions;
|
|
ShowEditorHintsCheckBox.Checked := ShowEditorHints;
|
|
OpenDesignerOnOpenUnitCheckBox.Checked := AutoCreateFormsOnOpen;
|
|
CheckPackagesOnFormCreateCheckBox.Checked := CheckPackagesOnFormCreate;
|
|
RightClickSelectsCheckBox.Checked := RightClickSelects;
|
|
RubberbandSelectsGrandChildsCheckBox.Checked := RubberbandSelectsGrandChilds;
|
|
CreateCompFocusNameCheckBox.Checked := CreateComponentFocusNameProperty;
|
|
SwitchToFavoritesOITabCheckBox.Checked := SwitchToFavoritesOITab;
|
|
SwitchToFavoritesOITabCheckBox.Enabled := CreateCompFocusNameCheckBox.Checked;
|
|
FormTitleBarChangesObjectInspectorCheckBox.Checked := FormTitleBarChangesObjectInspector;
|
|
ForceDPIScalingInDesignTimeCheckBox.Checked := ForceDPIScalingInDesignTime;
|
|
end;
|
|
FLoaded := True;
|
|
end;
|
|
|
|
procedure TFormEditorOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
|
|
var
|
|
EnvOpt: TEnvironmentOptions;
|
|
EnvGui: TIDESubOptions;
|
|
begin
|
|
EnvOpt := AOptions as TEnvironmentOptions;
|
|
EnvGui := EnvOpt.GetSubConfigObj(TEnvGuiOptions);
|
|
with EnvGui as TEnvGuiOptions do
|
|
begin
|
|
// write colors
|
|
GridColor := ColorsListBox.Colors[Ord(dcGrid)];
|
|
BorderSpacingColor := ColorsListBox.Colors[Ord(dcBorderSpacing)];
|
|
GuideLineColorLeftTop := ColorsListBox.Colors[Ord(dcGridLinesLeftTop)];
|
|
GuideLineColorRightBottom := ColorsListBox.Colors[Ord(dcGridLinesRightBottom)];
|
|
GrabberColor := ColorsListBox.Colors[Ord(dcGrabber)];
|
|
MarkerColor := ColorsListBox.Colors[Ord(dcMarker)];
|
|
NonFormBackgroundColor := ColorsListBox.Colors[Ord(dcNonFormBackgroundColor)];
|
|
RubberbandSelectionColor := ColorsListBox.Colors[Ord(dcRuberbandSelection)];
|
|
RubberbandCreationColor := ColorsListBox.Colors[Ord(dcRuberbandCreation)];
|
|
|
|
ShowBorderSpacing := ShowBorderSpaceCheckBox.Checked;
|
|
ShowGrid := ShowGridCheckBox.Checked;
|
|
SnapToGrid := SnapToGridCheckBox.Checked;
|
|
GridSizeX := GridSizeXSpinEdit.Value;
|
|
GridSizeY := GridSizeYSpinEdit.Value;
|
|
ShowGuideLines := ShowGuideLinesCheckBox.Checked;
|
|
SnapToGuideLines := SnapToGuideLinesCheckBox.Checked;
|
|
ShowComponentCaptions := ShowComponentCaptionsCheckBox.Checked;
|
|
ShowEditorHints := ShowEditorHintsCheckBox.Checked;
|
|
AutoCreateFormsOnOpen := OpenDesignerOnOpenUnitCheckBox.Checked;
|
|
CheckPackagesOnFormCreate := CheckPackagesOnFormCreateCheckBox.Checked;
|
|
RightClickSelects := RightClickSelectsCheckBox.Checked;
|
|
RubberbandSelectsGrandChilds := RubberbandSelectsGrandChildsCheckBox.Checked;
|
|
CreateComponentFocusNameProperty := CreateCompFocusNameCheckBox.Checked;
|
|
SwitchToFavoritesOITab := SwitchToFavoritesOITabCheckBox.Checked;
|
|
FormTitleBarChangesObjectInspector := FormTitleBarChangesObjectInspectorCheckBox.Checked;
|
|
ForceDPIScalingInDesignTime := ForceDPIScalingInDesignTimeCheckBox.Checked;
|
|
end;
|
|
end;
|
|
|
|
procedure TFormEditorOptionsFrame.FrameResize(Sender: TObject);
|
|
var
|
|
w: Integer;
|
|
begin
|
|
w := ((ClientWidth - 3 * 5) * 5) div 10;
|
|
GridGroupBox.Width := w;
|
|
FormEditMiscGroupBox.Width := GridGroupBox.Width;
|
|
end;
|
|
|
|
procedure TFormEditorOptionsFrame.ChangeColor(AIndex: Integer; NewColor: TColor);
|
|
begin
|
|
ColorsListBox.Items.Objects[AIndex] := TObject(PtrInt(NewColor));
|
|
end;
|
|
|
|
procedure TFormEditorOptionsFrame.ColorsListBoxGetColors(
|
|
Sender: TCustomColorListBox; Items: TStrings);
|
|
begin
|
|
Items.Add(dlgGridColor);
|
|
Items.Add(dlgBorderSpacingColor);
|
|
Items.Add(dlgLeftTopClr);
|
|
Items.Add(dlgRightBottomClr);
|
|
Items.Add(dlgGrabberColor);
|
|
Items.Add(dlgMarkerColor);
|
|
Items.Add(dlgRuberbandSelectionColor);
|
|
Items.Add(dlgRuberbandCreationColor);
|
|
Items.Add(dlgNonFormBackgroundColor);
|
|
end;
|
|
|
|
procedure TFormEditorOptionsFrame.ColorBoxChange(Sender: TObject);
|
|
begin
|
|
if not FLoaded or (ColorsListBox.ItemIndex < 0) then
|
|
Exit;
|
|
ChangeColor(ColorsListBox.ItemIndex, ColorBox.Selected);
|
|
ColorsListBox.Invalidate;
|
|
end;
|
|
|
|
procedure TFormEditorOptionsFrame.ColorsListBoxSelectionChange(Sender: TObject; User: boolean);
|
|
begin
|
|
if not (FLoaded and User) then
|
|
Exit;
|
|
ColorBox.Selected := ColorsListBox.Selected;
|
|
end;
|
|
|
|
procedure TFormEditorOptionsFrame.CreateCompFocusNameCheckBoxChange(Sender: TObject);
|
|
begin
|
|
SwitchToFavoritesOITabCheckBox.Enabled := CreateCompFocusNameCheckBox.Checked;
|
|
end;
|
|
|
|
class function TFormEditorOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
|
begin
|
|
Result := TEnvironmentOptions;
|
|
end;
|
|
|
|
initialization
|
|
RegisterIDEOptionsEditor(GroupEnvironment, TFormEditorOptionsFrame, EnvOptionsFormEd);
|
|
end.
|
|
|