anchordocking: started saving close form layouts

git-svn-id: trunk@26135 -
This commit is contained in:
mattias 2010-06-15 18:28:49 +00:00
parent bbec02be14
commit 326f2795bd
2 changed files with 43 additions and 39 deletions

View File

@ -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

View File

@ -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;