mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-07-23 21:26:14 +02:00
202 lines
4.9 KiB
ObjectPascal
202 lines
4.9 KiB
ObjectPascal
unit AnchorDockDsgnInitialSetupFrame;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Forms, Controls, StdCtrls, LazarusPackageIntf, AnchorDockStr, IDEWindowIntf,
|
|
AnchorDesktopOptions;
|
|
|
|
type
|
|
|
|
TAnchorDockDsgnSetup = class;
|
|
|
|
{ TAnchorDockSetupFrame }
|
|
|
|
TAnchorDockSetupFrame = class(TFrame)
|
|
lbInfo: TLabel;
|
|
lbInfo1: TLabel;
|
|
lbMulti: TLabel;
|
|
lbSingle: TLabel;
|
|
rbMulti: TRadioButton;
|
|
rbSingle: TRadioButton;
|
|
procedure lbMultiClick(Sender: TObject);
|
|
procedure lbSingleClick(Sender: TObject);
|
|
procedure rbMultiChange(Sender: TObject);
|
|
private
|
|
FDialog: ISetupDlgProvider;
|
|
FSetup: TAnchorDockDsgnSetup;
|
|
FChanged: Boolean;
|
|
public
|
|
procedure Init;
|
|
end;
|
|
|
|
{ TAnchorDockDsgnSetup }
|
|
|
|
TAnchorDockDsgnSetup = class(TObject, ISetupDlgFrame)
|
|
private
|
|
FTheFrame: TAnchorDockSetupFrame;
|
|
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: TAnchorDockDsgnSetup;
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TAnchorDockSetupFrame }
|
|
|
|
procedure TAnchorDockSetupFrame.lbMultiClick(Sender: TObject);
|
|
begin
|
|
rbMulti.Checked := True;
|
|
end;
|
|
|
|
procedure TAnchorDockSetupFrame.lbSingleClick(Sender: TObject);
|
|
begin
|
|
rbSingle.Checked := True;
|
|
end;
|
|
|
|
procedure TAnchorDockSetupFrame.rbMultiChange(Sender: TObject);
|
|
begin
|
|
FChanged := True;
|
|
FDialog.FrameStateChanged(FSetup, issOk, isaReady);
|
|
end;
|
|
|
|
procedure TAnchorDockSetupFrame.Init;
|
|
begin
|
|
rbMulti.Caption := setupMultiWindowIDEClassic;
|
|
lbMulti.Caption := setupMultiWindowIDESeperateWindows;
|
|
rbSingle.Caption := setupMultiWindowIDEModern;
|
|
lbSingle.Caption := setupMultiWindowIDESingleWindow;
|
|
lbInfo.Caption := setupMultiWindowIDEInfo;
|
|
lbInfo1.Caption := setupMultiWindowIDEOption;
|
|
end;
|
|
|
|
{ TAnchorDockDsgnSetup }
|
|
|
|
destructor TAnchorDockDsgnSetup.Destroy;
|
|
begin
|
|
FreeAndNil(FTheFrame);
|
|
inherited Destroy;
|
|
end;
|
|
|
|
function TAnchorDockDsgnSetup.RequireSetup: boolean;
|
|
begin
|
|
if AnchorDockGlobalOptions = nil then exit(False);
|
|
AnchorDockGlobalOptions.LoadSafe;
|
|
Result := not AnchorDockGlobalOptions.DoneAskUserEnableAnchorDock;
|
|
end;
|
|
|
|
procedure TAnchorDockDsgnSetup.AddToDialog(AnOwner, AParent: TComponent; ADialog: ISetupDlgProvider
|
|
);
|
|
begin
|
|
FTheFrame := TAnchorDockSetupFrame.Create(AnOwner);
|
|
FTheFrame.Parent := AParent as TWinControl;
|
|
FTheFrame.Align := alClient;
|
|
FTheFrame.FDialog := ADialog;
|
|
FTheFrame.FSetup := Self;
|
|
FTheFrame.Init;
|
|
|
|
ADialog.SetGroupCaption(GroupId, SIDELayout);
|
|
end;
|
|
|
|
procedure TAnchorDockDsgnSetup.Init;
|
|
begin
|
|
if AnchorDockGlobalOptions = nil then exit;
|
|
AnchorDockGlobalOptions.LoadSafe;
|
|
end;
|
|
|
|
procedure TAnchorDockDsgnSetup.Done;
|
|
begin
|
|
FTheFrame := nil;
|
|
end;
|
|
|
|
function TAnchorDockDsgnSetup.Caption: String;
|
|
begin
|
|
Result := SSingleMultiWindow;
|
|
end;
|
|
|
|
function TAnchorDockDsgnSetup.SortOrder: Integer;
|
|
begin
|
|
Result := -2;
|
|
end;
|
|
|
|
function TAnchorDockDsgnSetup.UniqueId: String;
|
|
begin
|
|
Result := '{56782628-36B2-4082-9F9B-C4A1CABC7A98}';
|
|
end;
|
|
|
|
function TAnchorDockDsgnSetup.GroupId: String;
|
|
begin
|
|
Result := '{62435B06-4C68-4D77-A4BC-2496E35DF59C}';
|
|
end;
|
|
|
|
procedure TAnchorDockDsgnSetup.PageSelected(AnUserActivated: Boolean);
|
|
begin
|
|
if AnUserActivated then begin
|
|
FTheFrame.FChanged := True;
|
|
FTheFrame.FDialog.FrameStateChanged(Self, issOk, isaReady);
|
|
end;
|
|
end;
|
|
|
|
procedure TAnchorDockDsgnSetup.UpdateState;
|
|
begin
|
|
if not FInitDone then begin
|
|
FTheFrame.rbSingle.Checked := AnchorDockGlobalOptions.EnableAnchorDock;
|
|
FTheFrame.rbMulti.Checked := not AnchorDockGlobalOptions.EnableAnchorDock;
|
|
FTheFrame.FChanged := AnchorDockGlobalOptions.DoneAskUserEnableAnchorDock;
|
|
end;
|
|
FInitDone := True;
|
|
|
|
if (not FTheFrame.FChanged) then
|
|
FTheFrame.FDialog.FrameStateChanged(Self, issInfo, isaReady)
|
|
else
|
|
FTheFrame.FDialog.FrameStateChanged(Self, issOk, isaReady);
|
|
|
|
end;
|
|
|
|
procedure TAnchorDockDsgnSetup.ApplySelection;
|
|
begin
|
|
if AnchorDockGlobalOptions = nil then exit;
|
|
AnchorDockGlobalOptions.DoneAskUserEnableAnchorDock := True;
|
|
AnchorDockGlobalOptions.EnableAnchorDock := FTheFrame.rbSingle.Checked;
|
|
AnchorDockGlobalOptions.SaveSafe;
|
|
|
|
if not AnchorDockGlobalOptions.EnableAnchorDock then
|
|
OnIDEDockMasterNeeded := nil;
|
|
end;
|
|
|
|
function TAnchorDockDsgnSetup.Internal: TObject;
|
|
begin
|
|
Result := nil;
|
|
end;
|
|
|
|
initialization
|
|
Registration := TAnchorDockDsgnSetup.Create;
|
|
SetupDlgFrameList.Add(Registration);
|
|
|
|
finalization
|
|
FreeAndNil(Registration);
|
|
|
|
end.
|
|
|