anchordocking: restoretest: load/restore BoundsRect

git-svn-id: trunk@39735 -
This commit is contained in:
mattias 2013-01-02 18:26:58 +00:00
parent 06fd9d01ec
commit 626930d7e3
2 changed files with 63 additions and 3 deletions

View File

@ -6,6 +6,7 @@ object ADRestDbg: TADRestDbg
Caption = 'ADRestDbg' Caption = 'ADRestDbg'
ClientHeight = 567 ClientHeight = 567
ClientWidth = 715 ClientWidth = 715
OnClose = FormClose
OnCreate = FormCreate OnCreate = FormCreate
OnDestroy = FormDestroy OnDestroy = FormDestroy
LCLVersion = '1.1' LCLVersion = '1.1'

View File

@ -34,9 +34,10 @@ unit MainUnit;
interface interface
uses uses
Classes, SysUtils, FileUtil, LazFileUtils, SynEdit, SynHighlighterXML, Classes, SysUtils, FileUtil, LazFileUtils, LazLogger, SynEdit,
AnchorDocking, AnchorDockStorage, ADLayoutViewer, Forms, Controls, Graphics, SynHighlighterXML, AnchorDocking, AnchorDockStorage, ADLayoutViewer, Forms,
Dialogs, ComCtrls, ExtCtrls, Buttons, StdCtrls, XMLPropStorage; Controls, Graphics, Dialogs, ComCtrls, ExtCtrls, Buttons, StdCtrls,
XMLPropStorage;
type type
@ -58,13 +59,17 @@ type
OpenToolButton: TToolButton; OpenToolButton: TToolButton;
OpenRecentToolButton: TToolButton; OpenRecentToolButton: TToolButton;
OriginalLayoutToolBar: TToolBar; OriginalLayoutToolBar: TToolBar;
procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject); procedure FormDestroy(Sender: TObject);
private private
FConfigFilename: string;
FOriginalFilename: string; FOriginalFilename: string;
FSettings: TAnchorDockSettings; FSettings: TAnchorDockSettings;
function GetOriginalLayout: TAnchorDockLayoutTree; function GetOriginalLayout: TAnchorDockLayoutTree;
function GetRestoredLayout: TAnchorDockLayoutTree; function GetRestoredLayout: TAnchorDockLayoutTree;
procedure LoadConfig;
procedure SaveConfig;
public public
OriginalView: TADLayoutTreeView; OriginalView: TADLayoutTreeView;
RestoredView: TADLayoutTreeView; RestoredView: TADLayoutTreeView;
@ -74,6 +79,7 @@ type
property OriginalLayout: TAnchorDockLayoutTree read GetOriginalLayout; property OriginalLayout: TAnchorDockLayoutTree read GetOriginalLayout;
property OriginalFilename: string read FOriginalFilename; property OriginalFilename: string read FOriginalFilename;
property RestoredLayout: TAnchorDockLayoutTree read GetRestoredLayout; property RestoredLayout: TAnchorDockLayoutTree read GetRestoredLayout;
property ConfigFilename: string read FConfigFilename write FConfigFilename;
end; end;
var var
@ -87,6 +93,9 @@ implementation
procedure TADRestDbg.FormCreate(Sender: TObject); procedure TADRestDbg.FormCreate(Sender: TObject);
begin begin
FConfigFilename:=GetAppConfigFileUTF8(false);
DebugLn(['TADRestDbg.FormCreate ',FConfigFilename]);
Caption:='Anchordocking Restore Debugger'; Caption:='Anchordocking Restore Debugger';
FSettings:=TAnchorDockSettings.Create; FSettings:=TAnchorDockSettings.Create;
@ -109,10 +118,17 @@ begin
Align:=alClient; Align:=alClient;
end; end;
LoadConfig;
if Paramcount>0 then if Paramcount>0 then
OpenLayout(ParamStrUTF8(1)); OpenLayout(ParamStrUTF8(1));
end; end;
procedure TADRestDbg.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
SaveConfig;
end;
procedure TADRestDbg.FormDestroy(Sender: TObject); procedure TADRestDbg.FormDestroy(Sender: TObject);
begin begin
FreeAndNil(FSettings); FreeAndNil(FSettings);
@ -128,6 +144,49 @@ begin
Result:=RestoredView.Layout; Result:=RestoredView.Layout;
end; end;
procedure TADRestDbg.LoadConfig;
var
Cfg: TXMLConfigStorage;
NewBounds: TRect;
begin
try
Cfg:=TXMLConfigStorage.Create(ConfigFilename,true);
try
Cfg.GetValue('Bounds',NewBounds,Rect(0,0,0,0));
if (NewBounds.Right>NewBounds.Left)
and (NewBounds.Bottom>NewBounds.Top) then
BoundsRect:=NewBounds;
finally
Cfg.Free;
end;
except
on E:Exception do begin
debugln(['TADRestDbg.LoadConfig ',E.Message]);
end;
end;
end;
procedure TADRestDbg.SaveConfig;
var
Cfg: TXMLConfigStorage;
begin
if not ForceDirectoriesUTF8(ExtractFilePath(ConfigFilename)) then begin
debugln(['WARNING: TADRestDbg.SaveConfig: can not create directory ',ExtractFilePath(ConfigFilename)]);
end;
try
Cfg:=TXMLConfigStorage.Create(ConfigFilename,false);
try
Cfg.SetDeleteValue('Bounds',BoundsRect,Rect(0,0,0,0));
finally
Cfg.Free;
end;
except
on E:Exception do begin
debugln(['TADRestDbg.SaveConfig ',E.Message]);
end;
end;
end;
procedure TADRestDbg.OpenLayout(Filename: string); procedure TADRestDbg.OpenLayout(Filename: string);
begin begin
if Filename='' then exit; if Filename='' then exit;