mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-12 09:39:16 +02:00
anchordocking: started saving close form layouts
git-svn-id: trunk@26135 -
This commit is contained in:
parent
bbec02be14
commit
326f2795bd
@ -385,6 +385,7 @@ type
|
|||||||
FPageAreaInPercent: integer;
|
FPageAreaInPercent: integer;
|
||||||
FPageClass: TAnchorDockPageClass;
|
FPageClass: TAnchorDockPageClass;
|
||||||
FPageControlClass: TAnchorDockPageControlClass;
|
FPageControlClass: TAnchorDockPageControlClass;
|
||||||
|
FRestoreLayouts: TAnchorDockRestoreLayouts;
|
||||||
FScaleOnResize: boolean;
|
FScaleOnResize: boolean;
|
||||||
FShowHeaderCaptionFloatingControl: boolean;
|
FShowHeaderCaptionFloatingControl: boolean;
|
||||||
FSiteClass: TAnchorDockHostSiteClass;
|
FSiteClass: TAnchorDockHostSiteClass;
|
||||||
@ -458,6 +459,7 @@ type
|
|||||||
procedure SaveLayoutToConfig(Config: TConfigStorage);
|
procedure SaveLayoutToConfig(Config: TConfigStorage);
|
||||||
function ConfigIsEmpty(Config: TConfigStorage): boolean;
|
function ConfigIsEmpty(Config: TConfigStorage): boolean;
|
||||||
function LoadLayoutFromConfig(Config: TConfigStorage): boolean;
|
function LoadLayoutFromConfig(Config: TConfigStorage): boolean;
|
||||||
|
property RestoreLayouts: TAnchorDockRestoreLayouts read FRestoreLayouts;
|
||||||
|
|
||||||
// manual docking
|
// manual docking
|
||||||
procedure ManualFloat(AControl: TControl);
|
procedure ManualFloat(AControl: TControl);
|
||||||
@ -1544,12 +1546,14 @@ begin
|
|||||||
FHeaderClass:=TAnchorDockHeader;
|
FHeaderClass:=TAnchorDockHeader;
|
||||||
FPageControlClass:=TAnchorDockPageControl;
|
FPageControlClass:=TAnchorDockPageControl;
|
||||||
FPageClass:=TAnchorDockPage;
|
FPageClass:=TAnchorDockPage;
|
||||||
|
FRestoreLayouts:=TAnchorDockRestoreLayouts.Create;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TAnchorDockMaster.Destroy;
|
destructor TAnchorDockMaster.Destroy;
|
||||||
var
|
var
|
||||||
AControl: TControl;
|
AControl: TControl;
|
||||||
begin
|
begin
|
||||||
|
FreeAndNil(FRestoreLayouts);
|
||||||
FreeAndNil(fPopupMenu);
|
FreeAndNil(fPopupMenu);
|
||||||
FreeAndNil(fTreeNameToDocker);
|
FreeAndNil(fTreeNameToDocker);
|
||||||
if FControls.Count>0 then begin
|
if FControls.Count>0 then begin
|
||||||
|
@ -183,9 +183,9 @@ type
|
|||||||
function NewNode(aParent: TAnchorDockLayoutTreeNode): TAnchorDockLayoutTreeNode;
|
function NewNode(aParent: TAnchorDockLayoutTreeNode): TAnchorDockLayoutTreeNode;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TAnchorDockDefaultLayout }
|
{ TAnchorDockRestoreLayout }
|
||||||
|
|
||||||
TAnchorDockDefaultLayout = class
|
TAnchorDockRestoreLayout = class
|
||||||
private
|
private
|
||||||
FControlNames: TStrings;
|
FControlNames: TStrings;
|
||||||
FLayout: TAnchorDockLayoutTree;
|
FLayout: TAnchorDockLayoutTree;
|
||||||
@ -204,26 +204,26 @@ type
|
|||||||
property Layout: TAnchorDockLayoutTree read FLayout;
|
property Layout: TAnchorDockLayoutTree read FLayout;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TAnchorDockDefaultLayouts }
|
{ TAnchorDockRestoreLayouts }
|
||||||
|
|
||||||
TAnchorDockDefaultLayouts = class
|
TAnchorDockRestoreLayouts = class
|
||||||
private
|
private
|
||||||
fItems: TFPList;
|
fItems: TFPList;
|
||||||
function GetItems(Index: integer): TAnchorDockDefaultLayout;
|
function GetItems(Index: integer): TAnchorDockRestoreLayout;
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure Clear;
|
procedure Clear;
|
||||||
procedure Delete(Index: integer);
|
procedure Delete(Index: integer);
|
||||||
function IndexOfName(AControlName: string): integer;
|
function IndexOfName(AControlName: string): integer;
|
||||||
function FindByName(AControlName: string): TAnchorDockDefaultLayout;
|
function FindByName(AControlName: string): TAnchorDockRestoreLayout;
|
||||||
procedure Add(Layout: TAnchorDockDefaultLayout; RemoveOther: boolean);
|
procedure Add(Layout: TAnchorDockRestoreLayout; RemoveOther: boolean);
|
||||||
procedure RemoveByName(AControlName: string);
|
procedure RemoveByName(AControlName: string);
|
||||||
procedure LoadFromConfig(Config: TConfigStorage);
|
procedure LoadFromConfig(Config: TConfigStorage);
|
||||||
procedure SaveToConfig(Config: TConfigStorage);
|
procedure SaveToConfig(Config: TConfigStorage);
|
||||||
function ConfigIsEmpty(Config: TConfigStorage): boolean;
|
function ConfigIsEmpty(Config: TConfigStorage): boolean;
|
||||||
function Count: integer;
|
function Count: integer;
|
||||||
property Items[Index: integer]: TAnchorDockDefaultLayout read GetItems;
|
property Items[Index: integer]: TAnchorDockRestoreLayout read GetItems;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TADNameToControl }
|
{ TADNameToControl }
|
||||||
@ -1734,47 +1734,47 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TAnchorDockDefaultLayout }
|
{ TAnchorDockRestoreLayout }
|
||||||
|
|
||||||
procedure TAnchorDockDefaultLayout.SetControlNames(const AValue: TStrings);
|
procedure TAnchorDockRestoreLayout.SetControlNames(const AValue: TStrings);
|
||||||
begin
|
begin
|
||||||
if FControlNames=AValue then exit;
|
if FControlNames=AValue then exit;
|
||||||
FControlNames.Assign(AValue);
|
FControlNames.Assign(AValue);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TAnchorDockDefaultLayout.Create;
|
constructor TAnchorDockRestoreLayout.Create;
|
||||||
begin
|
begin
|
||||||
FControlNames:=TStringList.Create;
|
FControlNames:=TStringList.Create;
|
||||||
FLayout:=TAnchorDockLayoutTree.Create;
|
FLayout:=TAnchorDockLayoutTree.Create;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TAnchorDockDefaultLayout.Create(aLayout: TAnchorDockLayoutTree);
|
constructor TAnchorDockRestoreLayout.Create(aLayout: TAnchorDockLayoutTree);
|
||||||
begin
|
begin
|
||||||
FControlNames:=TStringList.Create;
|
FControlNames:=TStringList.Create;
|
||||||
FLayout:=aLayout;
|
FLayout:=aLayout;
|
||||||
UpdateControlNames;
|
UpdateControlNames;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TAnchorDockDefaultLayout.Destroy;
|
destructor TAnchorDockRestoreLayout.Destroy;
|
||||||
begin
|
begin
|
||||||
FreeAndNil(FLayout);
|
FreeAndNil(FLayout);
|
||||||
FreeAndNil(FControlNames);
|
FreeAndNil(FControlNames);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAnchorDockDefaultLayout.IndexOfControlName(AName: string): integer;
|
function TAnchorDockRestoreLayout.IndexOfControlName(AName: string): integer;
|
||||||
begin
|
begin
|
||||||
Result:=fControlNames.Count;
|
Result:=fControlNames.Count;
|
||||||
while (Result>=0) and (CompareText(AName,FControlNames[Result])<>0) do
|
while (Result>=0) and (CompareText(AName,FControlNames[Result])<>0) do
|
||||||
dec(Result);
|
dec(Result);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAnchorDockDefaultLayout.HasControlName(AName: string): boolean;
|
function TAnchorDockRestoreLayout.HasControlName(AName: string): boolean;
|
||||||
begin
|
begin
|
||||||
Result:=IndexOfControlName(AName)>=0;
|
Result:=IndexOfControlName(AName)>=0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockDefaultLayout.RemoveControlName(AName: string);
|
procedure TAnchorDockRestoreLayout.RemoveControlName(AName: string);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
@ -1783,7 +1783,7 @@ begin
|
|||||||
FControlNames.Delete(i);
|
FControlNames.Delete(i);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockDefaultLayout.UpdateControlNames;
|
procedure TAnchorDockRestoreLayout.UpdateControlNames;
|
||||||
|
|
||||||
procedure Check(Node: TAnchorDockLayoutTreeNode);
|
procedure Check(Node: TAnchorDockLayoutTreeNode);
|
||||||
var
|
var
|
||||||
@ -1801,7 +1801,7 @@ begin
|
|||||||
Check(Layout.Root);
|
Check(Layout.Root);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockDefaultLayout.LoadFromConfig(Config: TConfigStorage);
|
procedure TAnchorDockRestoreLayout.LoadFromConfig(Config: TConfigStorage);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
AName: string;
|
AName: string;
|
||||||
@ -1823,7 +1823,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockDefaultLayout.SaveToConfig(Config: TConfigStorage);
|
procedure TAnchorDockRestoreLayout.SaveToConfig(Config: TConfigStorage);
|
||||||
begin
|
begin
|
||||||
FControlNames.Delimiter:=',';
|
FControlNames.Delimiter:=',';
|
||||||
FControlNames.StrictDelimiter:=true;
|
FControlNames.StrictDelimiter:=true;
|
||||||
@ -1831,27 +1831,27 @@ begin
|
|||||||
Layout.SaveToConfig(Config);
|
Layout.SaveToConfig(Config);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TAnchorDockDefaultLayouts }
|
{ TAnchorDockRestoreLayouts }
|
||||||
|
|
||||||
function TAnchorDockDefaultLayouts.GetItems(Index: integer
|
function TAnchorDockRestoreLayouts.GetItems(Index: integer
|
||||||
): TAnchorDockDefaultLayout;
|
): TAnchorDockRestoreLayout;
|
||||||
begin
|
begin
|
||||||
Result:=TAnchorDockDefaultLayout(fItems[Index]);
|
Result:=TAnchorDockRestoreLayout(fItems[Index]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TAnchorDockDefaultLayouts.Create;
|
constructor TAnchorDockRestoreLayouts.Create;
|
||||||
begin
|
begin
|
||||||
fItems:=TFPList.Create;
|
fItems:=TFPList.Create;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TAnchorDockDefaultLayouts.Destroy;
|
destructor TAnchorDockRestoreLayouts.Destroy;
|
||||||
begin
|
begin
|
||||||
Clear;
|
Clear;
|
||||||
FreeAndNil(fItems);
|
FreeAndNil(fItems);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockDefaultLayouts.Clear;
|
procedure TAnchorDockRestoreLayouts.Clear;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
@ -1860,21 +1860,21 @@ begin
|
|||||||
fItems.Clear;
|
fItems.Clear;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockDefaultLayouts.Delete(Index: integer);
|
procedure TAnchorDockRestoreLayouts.Delete(Index: integer);
|
||||||
begin
|
begin
|
||||||
TObject(fItems[Index]).Free;
|
TObject(fItems[Index]).Free;
|
||||||
fItems.Delete(Index);
|
fItems.Delete(Index);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAnchorDockDefaultLayouts.IndexOfName(AControlName: string): integer;
|
function TAnchorDockRestoreLayouts.IndexOfName(AControlName: string): integer;
|
||||||
begin
|
begin
|
||||||
Result:=Count-1;
|
Result:=Count-1;
|
||||||
while (Result>=0) and not Items[Result].HasControlName(AControlName) do
|
while (Result>=0) and not Items[Result].HasControlName(AControlName) do
|
||||||
dec(Result);
|
dec(Result);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAnchorDockDefaultLayouts.FindByName(AControlName: string
|
function TAnchorDockRestoreLayouts.FindByName(AControlName: string
|
||||||
): TAnchorDockDefaultLayout;
|
): TAnchorDockRestoreLayout;
|
||||||
var
|
var
|
||||||
i: LongInt;
|
i: LongInt;
|
||||||
begin
|
begin
|
||||||
@ -1885,7 +1885,7 @@ begin
|
|||||||
Result:=nil;
|
Result:=nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockDefaultLayouts.Add(Layout: TAnchorDockDefaultLayout;
|
procedure TAnchorDockRestoreLayouts.Add(Layout: TAnchorDockRestoreLayout;
|
||||||
RemoveOther: boolean);
|
RemoveOther: boolean);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
@ -1897,10 +1897,10 @@ begin
|
|||||||
fItems.Add(Layout);
|
fItems.Add(Layout);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockDefaultLayouts.RemoveByName(AControlName: string);
|
procedure TAnchorDockRestoreLayouts.RemoveByName(AControlName: string);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
Layout: TAnchorDockDefaultLayout;
|
Layout: TAnchorDockRestoreLayout;
|
||||||
begin
|
begin
|
||||||
for i:=Count-1 downto 0 do begin
|
for i:=Count-1 downto 0 do begin
|
||||||
Layout:=Items[i];
|
Layout:=Items[i];
|
||||||
@ -1910,16 +1910,16 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockDefaultLayouts.LoadFromConfig(Config: TConfigStorage);
|
procedure TAnchorDockRestoreLayouts.LoadFromConfig(Config: TConfigStorage);
|
||||||
var
|
var
|
||||||
NewCount: longint;
|
NewCount: longint;
|
||||||
NewItem: TAnchorDockDefaultLayout;
|
NewItem: TAnchorDockRestoreLayout;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
Clear;
|
Clear;
|
||||||
NewCount:=Config.GetValue('Count',0);
|
NewCount:=Config.GetValue('Count',0);
|
||||||
for i:=1 to NewCount do begin
|
for i:=1 to NewCount do begin
|
||||||
NewItem:=TAnchorDockDefaultLayout.Create;
|
NewItem:=TAnchorDockRestoreLayout.Create;
|
||||||
Config.AppendBasePath('Item'+IntToStr(i+1)+'/');
|
Config.AppendBasePath('Item'+IntToStr(i+1)+'/');
|
||||||
try
|
try
|
||||||
NewItem.LoadFromConfig(Config);
|
NewItem.LoadFromConfig(Config);
|
||||||
@ -1933,7 +1933,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockDefaultLayouts.SaveToConfig(Config: TConfigStorage);
|
procedure TAnchorDockRestoreLayouts.SaveToConfig(Config: TConfigStorage);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
@ -1948,13 +1948,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAnchorDockDefaultLayouts.ConfigIsEmpty(Config: TConfigStorage
|
function TAnchorDockRestoreLayouts.ConfigIsEmpty(Config: TConfigStorage
|
||||||
): boolean;
|
): boolean;
|
||||||
begin
|
begin
|
||||||
Result:=Config.GetValue('Count',0)<=0;
|
Result:=Config.GetValue('Count',0)<=0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAnchorDockDefaultLayouts.Count: integer;
|
function TAnchorDockRestoreLayouts.Count: integer;
|
||||||
begin
|
begin
|
||||||
Result:=fItems.Count;
|
Result:=fItems.Count;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user