mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 20:28:19 +02:00
dockmanager: delete easydockmgrdsgn
git-svn-id: trunk@50748 -
This commit is contained in:
parent
4f6445c95a
commit
f295d270f3
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -5126,9 +5126,6 @@ examples/docking/project1.res -text
|
||||
examples/docking/unit1.lfm svneol=native#text/plain
|
||||
examples/docking/unit1.pas svneol=native#text/pascal
|
||||
examples/dockmanager/README.txt svneol=native#text/plain
|
||||
examples/dockmanager/design/easydockmgrdsgn.lpk svneol=native#text/plain
|
||||
examples/dockmanager/design/easydockmgrdsgn.pas svneol=native#text/plain
|
||||
examples/dockmanager/design/registereasydockmgr.pas svneol=native#text/plain
|
||||
examples/dockmanager/docs/easydocksite.xml svneol=LF#text/xml eol=lf
|
||||
examples/dockmanager/docs/fdockbook.xml svneol=LF#text/xml eol=lf
|
||||
examples/dockmanager/docs/ffloatingsite.xml svneol=LF#text/xml eol=lf
|
||||
|
@ -1,47 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<CONFIG>
|
||||
<Package Version="3">
|
||||
<Name Value="EasyDockMgrDsgn"/>
|
||||
<CompilerOptions>
|
||||
<Version Value="8"/>
|
||||
<SearchPaths>
|
||||
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
|
||||
</SearchPaths>
|
||||
<Parsing>
|
||||
<SyntaxOptions>
|
||||
<UseAnsiStrings Value="True"/>
|
||||
</SyntaxOptions>
|
||||
</Parsing>
|
||||
<Other>
|
||||
<CompilerPath Value="$(CompPath)"/>
|
||||
</Other>
|
||||
</CompilerOptions>
|
||||
<Files Count="1">
|
||||
<Item1>
|
||||
<Filename Value="registereasydockmgr.pas"/>
|
||||
<HasRegisterProc Value="True"/>
|
||||
<UnitName Value="RegisterEasyDockMgr"/>
|
||||
</Item1>
|
||||
</Files>
|
||||
<Type Value="RunAndDesignTime"/>
|
||||
<RequiredPkgs Count="3">
|
||||
<Item1>
|
||||
<PackageName Value="IDEIntf"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="easydockmgr"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<PackageName Value="FCL"/>
|
||||
<MinVersion Major="1" Valid="True"/>
|
||||
</Item3>
|
||||
</RequiredPkgs>
|
||||
<UsageOptions>
|
||||
<UnitPath Value="$(PkgOutDir)"/>
|
||||
</UsageOptions>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<IgnoreBinaries Value="False"/>
|
||||
</PublishOptions>
|
||||
</Package>
|
||||
</CONFIG>
|
@ -1,21 +0,0 @@
|
||||
{ This file was automatically created by Lazarus. Do not edit!
|
||||
This source is only used to compile and install the package.
|
||||
}
|
||||
|
||||
unit EasyDockMgrDsgn;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
RegisterEasyDockMgr, LazarusPackageIntf;
|
||||
|
||||
implementation
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterUnit('RegisterEasyDockMgr', @RegisterEasyDockMgr.Register);
|
||||
end;
|
||||
|
||||
initialization
|
||||
RegisterPackage('EasyDockMgrDsgn', @Register);
|
||||
end.
|
@ -1,434 +0,0 @@
|
||||
{ This unit installs the EasyDockMgr as dock master for the Lazarus IDE.
|
||||
|
||||
Copyright (C) 2010 Mattias Gaertner mattias@freepascal.org
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version with the following modification:
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent modules,and
|
||||
to copy and distribute the resulting executable under terms of your choice,
|
||||
provided that you also meet, for each linked independent module, the terms
|
||||
and conditions of the license of that module. An independent module is a
|
||||
module which is not derived from or based on this library. If you modify
|
||||
this library, you may extend this exception to your version of the library,
|
||||
but you are not obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version.
|
||||
|
||||
This program 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 Library General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
}
|
||||
|
||||
unit RegisterEasyDockMgr;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
{$DEFINE DockMaster} //must match IDE setting
|
||||
|
||||
{.$DEFINE oldPos} //as implemented by Mattias? (problem with multiple monitors!)
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Math, Classes, SysUtils, LCLProc, Forms, Controls, FileUtil,
|
||||
LazIDEIntf, IDEWindowIntf,
|
||||
uMakeSite;
|
||||
|
||||
const
|
||||
DefaultConfigFileName = 'easydocklayout.lyt';
|
||||
type
|
||||
|
||||
{ TIDEEasyDockMaster }
|
||||
|
||||
{$IFDEF DockMaster}
|
||||
{$ELSE}
|
||||
TIDEDockMaster = TIDELayout;
|
||||
{$ENDIF}
|
||||
TIDEEasyDockMaster = class(TIDEDockMaster)
|
||||
private
|
||||
function DockMasterRestore(const CtrlName: string; ASite: TWinControl
|
||||
): TControl;
|
||||
function DockMasterSave(ACtrl: TControl): string;
|
||||
procedure GetDefaultBounds(AForm: TCustomForm; out Creator: TIDEWindowCreator;
|
||||
out NewBounds: TRect; out DockSiblingName: string; out DockAlign: TAlign);
|
||||
public
|
||||
{$IFDEF DockMaster}
|
||||
constructor Create;
|
||||
{$ELSE}
|
||||
constructor Create; override;
|
||||
function AddableInWindowMenu(AForm: TCustomForm): boolean; override;
|
||||
procedure RestoreIDEWindows; override;
|
||||
{$ENDIF}
|
||||
destructor Destroy; override;
|
||||
procedure MakeIDEWindowDockSite(AForm: TCustomForm; ASides: TDockSides = [alBottom]); override;
|
||||
procedure MakeIDEWindowDockable(AControl: TWinControl); override;
|
||||
function IsDockSite(AForm: TCustomForm): boolean;
|
||||
function IsDockable(AForm: TCustomForm): boolean;
|
||||
function GetDefaultLayoutFilename: string;
|
||||
procedure LoadDefaultLayout;
|
||||
procedure SaveDefaultLayout;
|
||||
procedure ShowForm(AForm: TCustomForm; BringToFront: boolean); override;
|
||||
procedure CloseAll; override;
|
||||
procedure OnIDEClose(Sender: TObject);
|
||||
procedure OnIDERestoreWindows(Sender: TObject);
|
||||
end;
|
||||
|
||||
var
|
||||
IDEEasyDockMaster: TIDEEasyDockMaster = nil;
|
||||
|
||||
procedure Register;
|
||||
function FitToMonitor(const tlbr: TRect): TRect;
|
||||
|
||||
implementation
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
//required?
|
||||
{$IFDEF DockMaster}
|
||||
LazarusIDE.AddHandlerOnIDERestoreWindows(@IDEEasyDockMaster.OnIDERestoreWindows);
|
||||
LazarusIDE.AddHandlerOnIDEClose(@IDEEasyDockMaster.OnIDEClose);
|
||||
{$ELSE}
|
||||
//should not be required
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
function FitInto(const src, dst: TRect): TRect;
|
||||
begin
|
||||
(* Adjust src to fit into dst.
|
||||
Keep src extent if possible.
|
||||
*)
|
||||
if src.Right > dst.Right then begin
|
||||
//shift left
|
||||
Result.Right := dst.Right;
|
||||
Result.Left := Max(dst.Left, Result.Right - (src.Right - src.Left));
|
||||
end else if src.Left < dst.Left then begin
|
||||
//shift right
|
||||
Result.Left := src.Left;
|
||||
Result.Right := Min(dst.Right, Result.Left + (src.Right - src.Left));
|
||||
end else begin
|
||||
Result.Left := src.Left;
|
||||
Result.Right:= src.Right;
|
||||
end;
|
||||
if src.Bottom > dst.Bottom then begin
|
||||
//shift up
|
||||
Result.Bottom := dst.Bottom;
|
||||
Result.Top := Max(dst.Top, Result.Bottom - (src.Bottom - src.Top));
|
||||
end else if src.Top < dst.Top then begin
|
||||
//shift down
|
||||
Result.Top := dst.Top;
|
||||
Result.Bottom := Min(dst.Bottom, Result.Top + (src.Bottom - src.Top));
|
||||
end else begin
|
||||
Result.Top := src.Top;
|
||||
Result.Bottom := src.Bottom;
|
||||
end;
|
||||
end;
|
||||
|
||||
function FitToMonitor(const tlbr: TRect): TRect;
|
||||
var
|
||||
r: TRect;
|
||||
m: TMonitor;
|
||||
begin
|
||||
m := Screen.MonitorFromPoint(tlbr.BottomRight, mdNearest);
|
||||
r := m.BoundsRect;
|
||||
Result := FitInto(tlbr, r);
|
||||
end;
|
||||
|
||||
{ TIDEEasyDockMaster }
|
||||
|
||||
function TIDEEasyDockMaster.DockMasterRestore(const CtrlName: string;
|
||||
ASite: TWinControl): TControl;
|
||||
begin
|
||||
debugln(['TIDEEasyDockMaster.DockMasterRestore CtrlName="',dbgstr(CtrlName),'"']);
|
||||
Result:=IDEWindowCreators.GetForm(CtrlName,true);
|
||||
debugln(['TIDEEasyDockMaster.DockMasterRestore Result=',DbgSName(Result)]);
|
||||
end;
|
||||
|
||||
function TIDEEasyDockMaster.DockMasterSave(ACtrl: TControl): string;
|
||||
begin
|
||||
Result:=ACtrl.Name;
|
||||
end;
|
||||
|
||||
procedure TIDEEasyDockMaster.GetDefaultBounds(AForm: TCustomForm; out
|
||||
Creator: TIDEWindowCreator; out NewBounds: TRect; out DockSiblingName: string;
|
||||
out DockAlign: TAlign);
|
||||
begin
|
||||
{$IFDEF oldPos}
|
||||
NewBounds:=Rect(0,0,0,0);
|
||||
{$ELSE}
|
||||
NewBounds:=AForm.BoundsRect;
|
||||
{$ENDIF}
|
||||
DockSiblingName:='';
|
||||
DockAlign:=alNone;
|
||||
Creator:=IDEWindowCreators.FindWithName(AForm.Name);
|
||||
if Creator=nil then exit;
|
||||
if Creator.OnGetLayout<>nil then
|
||||
Creator.OnGetLayout(Self,AForm.Name,NewBounds,DockSiblingName,DockAlign)
|
||||
else begin
|
||||
Creator.GetDefaultBounds(AForm,NewBounds);
|
||||
DockSiblingName:=Creator.DockSibling;
|
||||
DockAlign:=Creator.DockAlign;
|
||||
end;
|
||||
{$IFDEF oldPos}
|
||||
NewBounds.Left:=Min(10000,Max(-10000,NewBounds.Left));
|
||||
NewBounds.Top:=Min(10000,Max(-10000,NewBounds.Top));
|
||||
NewBounds.Right:=Max(NewBounds.Left+100,NewBounds.Right);
|
||||
NewBounds.Bottom:=Max(NewBounds.Top+100,NewBounds.Bottom);
|
||||
{$ELSE}
|
||||
NewBounds := FitToMonitor(NewBounds);
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
constructor TIDEEasyDockMaster.Create;
|
||||
begin
|
||||
IDEEasyDockMaster:=Self;
|
||||
DockMaster.OnRestore:=@DockMasterRestore;
|
||||
DockMaster.OnSave:=@DockMasterSave;
|
||||
end;
|
||||
|
||||
{$IFDEF DockMaster}
|
||||
{$ELSE}
|
||||
function TIDEEasyDockMaster.AddableInWindowMenu(AForm: TCustomForm): boolean;
|
||||
begin
|
||||
Result:=inherited AddableInWindowMenu(AForm);
|
||||
end;
|
||||
|
||||
procedure TIDEEasyDockMaster.RestoreIDEWindows;
|
||||
begin
|
||||
inherited RestoreIDEWindows; //required?
|
||||
LoadDefaultLayout;
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
destructor TIDEEasyDockMaster.Destroy;
|
||||
begin
|
||||
IDEEasyDockMaster:=nil;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TIDEEasyDockMaster.MakeIDEWindowDockSite(AForm: TCustomForm; ASides: TDockSides);
|
||||
var
|
||||
Creator: TIDEWindowCreator;
|
||||
NewBounds: TRect;
|
||||
DockSiblingName: string;
|
||||
DockAlign: TAlign;
|
||||
begin
|
||||
debugln(['TIDEEasyDockMaster.MakeIDEWindowDockSite BEFORE ',DbgSName(AForm),' ',dbgs(AForm.BoundsRect)]);
|
||||
GetDefaultBounds(AForm,Creator,NewBounds,DockSiblingName,DockAlign);
|
||||
if Creator<>nil then begin
|
||||
debugln(['TIDEEasyDockMaster.MakeIDEWindowDockSite Creator ',DbgSName(AForm),' ',dbgs(NewBounds)]);
|
||||
AForm.BoundsRect:=NewBounds;
|
||||
end;
|
||||
DockMaster.AddElasticSites(AForm, ASides);
|
||||
debugln(['TIDEEasyDockMaster.MakeIDEWindowDockSite AFTER ',DbgSName(AForm),' ',dbgs(AForm.BoundsRect)]);
|
||||
end;
|
||||
|
||||
procedure TIDEEasyDockMaster.MakeIDEWindowDockable(AControl: TWinControl);
|
||||
begin
|
||||
debugln(['TIDEEasyDockMaster.MakeIDEWindowDockable BEFORE ',DbgSName(AControl),' ',dbgs(AControl.BoundsRect)]);
|
||||
AControl.UndockWidth:=AControl.Width;
|
||||
AControl.UndockHeight:=AControl.Height;
|
||||
DockMaster.MakeDockable(AControl);
|
||||
debugln(['TIDEEasyDockMaster.MakeIDEWindowDockable AFTERE ',DbgSName(AControl),' ',dbgs(AControl.BoundsRect)]);
|
||||
end;
|
||||
|
||||
function TIDEEasyDockMaster.IsDockSite(AForm: TCustomForm): boolean;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
Result:=false;
|
||||
if AForm=nil then exit;
|
||||
if AForm.Parent<>nil then exit;
|
||||
for i:=0 to AForm.ControlCount-1 do
|
||||
if AForm.Controls[i] is TDockPanel then exit(true);
|
||||
end;
|
||||
|
||||
function TIDEEasyDockMaster.IsDockable(AForm: TCustomForm): boolean;
|
||||
begin
|
||||
Result:=false;
|
||||
if AForm=nil then exit;
|
||||
if AForm.Parent=nil then exit;
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
function TIDEEasyDockMaster.GetDefaultLayoutFilename: string;
|
||||
begin
|
||||
Result:=AppendPathDelim(LazarusIDE.GetPrimaryConfigPath)+DefaultConfigFileName;
|
||||
end;
|
||||
|
||||
procedure TIDEEasyDockMaster.LoadDefaultLayout;
|
||||
var
|
||||
Filename: String;
|
||||
begin
|
||||
// load the users default layout
|
||||
Filename:=GetDefaultLayoutFilename;
|
||||
debugln(['TIDEEasyDockMaster.LoadDefaultLayout ',Filename,' exists=',FileExistsUTF8(Filename)]);
|
||||
if FileExistsUTF8(Filename) then
|
||||
DockMaster.LoadFromFile(Filename);
|
||||
end;
|
||||
|
||||
procedure TIDEEasyDockMaster.SaveDefaultLayout;
|
||||
begin
|
||||
debugln(['TIDEEasyDockMaster.SaveDefaultLayout ',GetDefaultLayoutFilename]);
|
||||
// load the users default layout
|
||||
DockMaster.SaveToFile(GetDefaultLayoutFilename);
|
||||
end;
|
||||
|
||||
procedure TIDEEasyDockMaster.ShowForm(AForm: TCustomForm; BringToFront: boolean);
|
||||
var
|
||||
Parent: TCustomForm;
|
||||
Creator: TIDEWindowCreator;
|
||||
NewBounds: TRect;
|
||||
DockSiblingName: string;
|
||||
DockAlign: TAlign;
|
||||
DockSibling: TCustomForm;
|
||||
NewDockSite: TWinControl;
|
||||
AControl: TControl;
|
||||
begin
|
||||
debugln(['TIDEEasyDockMaster.ShowForm ',DbgSName(AForm),' BringToFront=',BringToFront,' IsDockSite=',IsDockSite(AForm),' IsDockable=',IsDockable(AForm)]);
|
||||
{$IFDEF oldPos}
|
||||
{$ELSE}
|
||||
if AForm.HostDockSite <> nil then begin
|
||||
//check host dock site position?
|
||||
Parent:=GetParentForm(AForm);
|
||||
Parent.BoundsRect := FitToMonitor(Parent.BoundsRect);
|
||||
exit; //never move docked forms
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
//Somewhere down here the form shrinks to the bottom right of the screen.
|
||||
|
||||
//This prevents minimizing, but does not force initial show
|
||||
//if AForm.Visible then exit;
|
||||
|
||||
try
|
||||
AForm.DisableAlign;
|
||||
if AForm.HostDockSite<>nil then
|
||||
begin
|
||||
// already docked - check dkDock?
|
||||
//MakeIDEWindowDockable(AForm);
|
||||
end else if not (IsDockSite(AForm) or IsDockable(AForm)) then
|
||||
begin
|
||||
// this form was not yet docked
|
||||
// place it at a default position and make it dockable
|
||||
GetDefaultBounds(AForm,Creator,NewBounds,DockSiblingName,DockAlign);
|
||||
DebugLn('default bounds: ', DbgS(NewBounds));
|
||||
{$IFDEF oldPos}
|
||||
if (Creator<>nil) then
|
||||
begin
|
||||
// this window should become dockable
|
||||
NewBounds.Left:=Min(10000,Max(-10000,NewBounds.Left));
|
||||
NewBounds.Top:=Min(10000,Max(-10000,NewBounds.Top));
|
||||
NewBounds.Right:=Max(NewBounds.Left+100,NewBounds.Right);
|
||||
NewBounds.Bottom:=Max(NewBounds.Top+100,NewBounds.Bottom);
|
||||
AForm.UndockWidth:=NewBounds.Right-NewBounds.Left;
|
||||
AForm.UndockHeight:=NewBounds.Bottom-NewBounds.Top;
|
||||
debugln(['TIDEEasyDockMaster.ShowForm creator for ',DbgSName(AForm),' found: Left=',Creator.Left,' Top=',Creator.Top,' Right=',Creator.Right,' Bottom=',Creator.Bottom,' DockSiblingName=',DockSiblingName,' DockAlign=',dbgs(DockAlign)]);
|
||||
if DockSiblingName<>'' then
|
||||
begin
|
||||
DockSibling:=Screen.FindForm(DockSiblingName);
|
||||
debugln(['TIDEEasyDockMaster.ShowForm DockSiblingName="',DockSiblingName,'" DockSibling=',DbgSName(DockSibling)]);
|
||||
if DockSibling<>nil then
|
||||
begin
|
||||
NewDockSite:=DockSibling.HostDockSite;
|
||||
debugln(['TIDEEasyDockMaster.ShowForm NewDockSite=',DbgSName(NewDockSite)]);
|
||||
if NewDockSite<>nil then
|
||||
AForm.ManualDock(NewDockSite,nil,DockAlign)
|
||||
else
|
||||
AForm.ManualDock(nil,DockSibling,DockAlign);
|
||||
end;
|
||||
end;
|
||||
if AForm.Parent=nil then begin
|
||||
debugln(['TIDEEasyDockMaster.ShowForm ',DbgSName(AForm),' make dockable NewBounds=',dbgs(NewBounds)]);
|
||||
AForm.BoundsRect:=NewBounds;
|
||||
// make form dockable
|
||||
MakeIDEWindowDockable(AForm);
|
||||
end;
|
||||
end;
|
||||
{$ELSE}
|
||||
begin
|
||||
AForm.BoundsRect := FitToMonitor(NewBounds);
|
||||
DebugLn('default bounds: ', DbgS(NewBounds));
|
||||
//AForm.BoundsRect := NewBounds;
|
||||
MakeIDEWindowDockable(AForm);
|
||||
DebugLn('After MakeDockable: ', DbgS(NewBounds));
|
||||
end;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
finally
|
||||
AControl:=AForm;
|
||||
while AControl<>nil do begin
|
||||
// ToDo: if this is a page switch pageindex of parent
|
||||
{$IFDEF old}
|
||||
if AControl is TCustomForm then
|
||||
TCustomForm(AControl).Show
|
||||
else
|
||||
AControl.Visible:=true;
|
||||
{$ELSE}
|
||||
AControl.Visible := True;
|
||||
//if AControl.Parent = nil then AControl.BoundsRect := NewBounds; //top form, if floating
|
||||
{$ENDIF}
|
||||
AControl:=AControl.Parent;
|
||||
end;
|
||||
AForm.EnableAlign;
|
||||
|
||||
if BringToFront then begin
|
||||
Parent:=GetParentForm(AForm);
|
||||
if Parent<>nil then begin
|
||||
Parent.ShowOnTop;
|
||||
//Parent.BoundsRect := FitToMonitor(NewBounds);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
Parent:=GetParentForm(AForm);
|
||||
if Parent <> nil then
|
||||
debugln(['TIDEEasyDockMaster.ShowForm END Parent ',dbgs(Parent.BoundsRect)]);
|
||||
debugln(['TIDEEasyDockMaster.ShowForm END ',DbgSName(AForm),' ',dbgs(AForm.BoundsRect)])
|
||||
end;
|
||||
|
||||
procedure TIDEEasyDockMaster.CloseAll;
|
||||
begin
|
||||
SaveDefaultLayout;
|
||||
inherited CloseAll;
|
||||
end;
|
||||
|
||||
procedure TIDEEasyDockMaster.OnIDEClose(Sender: TObject);
|
||||
begin
|
||||
SaveDefaultLayout;
|
||||
end;
|
||||
|
||||
procedure TIDEEasyDockMaster.OnIDERestoreWindows(Sender: TObject);
|
||||
begin
|
||||
LoadDefaultLayout;
|
||||
end;
|
||||
|
||||
initialization
|
||||
// create the dockmaster in the initialization section, so that it is ready
|
||||
// when the Register procedures of the packages are called.
|
||||
TDockMaster.Create(nil);
|
||||
{$IFDEF DockMaster}
|
||||
IDEDockMaster:=TIDEEasyDockMaster.Create;
|
||||
{$ELSE}
|
||||
if IDELayout = nil then
|
||||
IDELayout := TIDEEasyDockMaster.Create;
|
||||
{$ENDIF}
|
||||
|
||||
finalization
|
||||
{$IFDEF DockMaster}
|
||||
FreeAndNil(IDEDockMaster);
|
||||
{$ELSE}
|
||||
FreeAndNil(IDELayout);
|
||||
{$ENDIF}
|
||||
FreeAndNil(DockMaster);
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user