mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-25 00:08:20 +02:00
196 lines
4.6 KiB
ObjectPascal
196 lines
4.6 KiB
ObjectPascal
unit DockedFormInitialSetupFrame;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Forms, Controls, StdCtrls, ExtCtrls, LazarusPackageIntf,
|
|
DockedStrConsts, DockedOptionsIDE;
|
|
|
|
type
|
|
|
|
TDockedFormEditSetup = class;
|
|
|
|
{ TDockedFormEditSetupFrame }
|
|
|
|
TDockedFormEditSetupFrame = class(TFrame)
|
|
lbInfo: TLabel;
|
|
lbInfo1: TLabel;
|
|
lbFloat: TLabel;
|
|
lbDocked: TLabel;
|
|
rbFloat: TRadioButton;
|
|
rbDocked: TRadioButton;
|
|
procedure lbDockedClick(Sender: TObject);
|
|
procedure lbFloatClick(Sender: TObject);
|
|
procedure rbDockedChange(Sender: TObject);
|
|
private
|
|
FDialog: ISetupDlgProvider;
|
|
FSetup: TDockedFormEditSetup;
|
|
FChanged: Boolean;
|
|
public
|
|
procedure Init;
|
|
end;
|
|
|
|
TDockedFormEditSetup = class(TObject, ISetupDlgFrame)
|
|
private
|
|
FTheFrame: TDockedFormEditSetupFrame;
|
|
FInitDone: boolean;
|
|
|
|
public
|
|
destructor Destroy; override;
|
|
function RequireSetup: boolean;
|
|
procedure AddToDialog(AnOwner, AParent: TComponent; // AParent: TWinControl that will hold the frame
|
|
ADialog: ISetupDlgProvider
|
|
);
|
|
procedure Init;
|
|
procedure Done;
|
|
function Caption: String;
|
|
function SortOrder: Integer;
|
|
function UniqueId: String;
|
|
function GroupId: String;
|
|
procedure PageSelected(AnUserActivated: Boolean);
|
|
procedure UpdateState;
|
|
procedure ApplySelection; // Called when the IDE gets started
|
|
function Internal: TObject;
|
|
end;
|
|
|
|
implementation
|
|
|
|
var
|
|
Registration: TDockedFormEditSetup;
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TDockedFormEditSetupFrame }
|
|
|
|
procedure TDockedFormEditSetupFrame.lbFloatClick(Sender: TObject);
|
|
begin
|
|
rbFloat.Checked := True;
|
|
end;
|
|
|
|
procedure TDockedFormEditSetupFrame.rbDockedChange(Sender: TObject);
|
|
begin
|
|
FChanged := True;
|
|
FDialog.FrameStateChanged(FSetup, issOk, isaReady);
|
|
end;
|
|
|
|
procedure TDockedFormEditSetupFrame.lbDockedClick(Sender: TObject);
|
|
begin
|
|
rbDocked.Checked:= True;
|
|
end;
|
|
|
|
procedure TDockedFormEditSetupFrame.Init;
|
|
begin
|
|
rbFloat.Caption := setupDesignerClassic;
|
|
lbFloat.Caption := setupDesignerFloat;
|
|
rbDocked.Caption := setupDesignerModern;
|
|
lbDocked.Caption := setupDesignerDocked;
|
|
lbInfo.Caption := setupDesignerInfo;
|
|
lbInfo1.Caption := setupMultiWindowIDEOption;
|
|
end;
|
|
|
|
{ TDockedFormEditSetup }
|
|
|
|
destructor TDockedFormEditSetup.Destroy;
|
|
begin
|
|
FreeAndNil(FTheFrame);
|
|
inherited Destroy;
|
|
end;
|
|
|
|
function TDockedFormEditSetup.RequireSetup: boolean;
|
|
begin
|
|
if DockedOptions = nil then exit(False);
|
|
DockedOptions.LoadSafe;
|
|
Result := not DockedOptions.DoneAskUserEnableDockedDesigner;
|
|
end;
|
|
|
|
procedure TDockedFormEditSetup.AddToDialog(AnOwner, AParent: TComponent; ADialog: ISetupDlgProvider);
|
|
begin
|
|
FTheFrame := TDockedFormEditSetupFrame.Create(AnOwner);
|
|
FTheFrame.Parent := AParent as TWinControl;
|
|
FTheFrame.Align := alClient;
|
|
FTheFrame.FDialog := ADialog;
|
|
FTheFrame.FSetup := Self;
|
|
FTheFrame.Init;
|
|
|
|
ADialog.SetGroupCaption(GroupId, SIDELayout);
|
|
end;
|
|
|
|
procedure TDockedFormEditSetup.Init;
|
|
begin
|
|
if DockedOptions = nil then exit;
|
|
DockedOptions.LoadSafe;
|
|
end;
|
|
|
|
procedure TDockedFormEditSetup.Done;
|
|
begin
|
|
FTheFrame := nil; // destroyed by parent
|
|
end;
|
|
|
|
function TDockedFormEditSetup.Caption: String;
|
|
begin
|
|
Result := SFormEditor;
|
|
end;
|
|
|
|
function TDockedFormEditSetup.SortOrder: Integer;
|
|
begin
|
|
Result := -1;
|
|
end;
|
|
|
|
procedure TDockedFormEditSetup.UpdateState;
|
|
begin
|
|
if not FInitDone then begin
|
|
FTheFrame.rbDocked.Checked := DockedOptions.EnableDockedDesigner;
|
|
FTheFrame.rbFloat.Checked := not DockedOptions.EnableDockedDesigner;
|
|
FTheFrame.FChanged := DockedOptions.DoneAskUserEnableDockedDesigner;
|
|
end;
|
|
FInitDone := True;
|
|
|
|
if (not FTheFrame.FChanged) then
|
|
FTheFrame.FDialog.FrameStateChanged(Self, issInfo, isaReady)
|
|
else
|
|
FTheFrame.FDialog.FrameStateChanged(Self, issOk, isaReady);
|
|
end;
|
|
|
|
procedure TDockedFormEditSetup.ApplySelection;
|
|
begin
|
|
if DockedOptions = nil then exit;
|
|
DockedOptions.DoneAskUserEnableDockedDesigner := True;
|
|
DockedOptions.EnableDockedDesigner := FTheFrame.rbDocked.Checked;
|
|
DockedOptions.SaveSafe;
|
|
end;
|
|
|
|
function TDockedFormEditSetup.Internal: TObject;
|
|
begin
|
|
Result := nil;
|
|
end;
|
|
|
|
function TDockedFormEditSetup.UniqueId: String;
|
|
begin
|
|
Result := '{234D6036-1AD5-4A9D-91FD-AE783B2E3A5D}';
|
|
end;
|
|
|
|
function TDockedFormEditSetup.GroupId: String;
|
|
begin
|
|
Result := '{62435B06-4C68-4D77-A4BC-2496E35DF59C}';
|
|
end;
|
|
|
|
procedure TDockedFormEditSetup.PageSelected(AnUserActivated: Boolean);
|
|
begin
|
|
if AnUserActivated then begin
|
|
FTheFrame.FChanged := True;
|
|
FTheFrame.FDialog.FrameStateChanged(Self, issOk, isaReady);
|
|
end;
|
|
end;
|
|
|
|
initialization
|
|
Registration := TDockedFormEditSetup.Create;
|
|
SetupDlgFrameList.Add(Registration);
|
|
|
|
finalization
|
|
FreeAndNil(Registration);
|
|
|
|
end.
|
|
|