anchordockingdsgn: added comman line parameter --anchordocklayout=<file>

git-svn-id: trunk@41823 -
This commit is contained in:
mattias 2013-06-23 13:50:06 +00:00
parent 9774750058
commit e293626964

View File

@ -35,9 +35,9 @@ interface
uses uses
Math, Classes, SysUtils, LCLProc, Forms, Controls, FileUtil, LazFileCache, Math, Classes, SysUtils, LCLProc, Forms, Controls, FileUtil, LazFileCache,
Dialogs, LazConfigStorage, XMLConf, XMLPropStorage, StdCtrls, LCLIntf, Dialogs, LazConfigStorage, LazFileUtils, XMLConf, XMLPropStorage, StdCtrls,
BaseIDEIntf, ProjectIntf, MacroIntf, IDEDialogs, MenuIntf, LazIDEIntf, LCLIntf, BaseIDEIntf, ProjectIntf, MacroIntf, IDEDialogs, MenuIntf,
IDEWindowIntf, IDEOptionsIntf, AnchorDockStr, AnchorDocking, LazIDEIntf, IDEWindowIntf, IDEOptionsIntf, AnchorDockStr, AnchorDocking,
AnchorDockOptionsDlg; AnchorDockOptionsDlg;
const const
@ -57,6 +57,7 @@ type
TIDEAnchorDockMaster = class(TIDEDockMaster) TIDEAnchorDockMaster = class(TIDEDockMaster)
private private
FChangeStamp: int64; FChangeStamp: int64;
FCmdLineLayoutFile: string;
FSavedChangeStamp: int64; FSavedChangeStamp: int64;
FSavedDMChangeStamp: int64; FSavedDMChangeStamp: int64;
FUserLayoutLoaded: boolean; FUserLayoutLoaded: boolean;
@ -76,13 +77,14 @@ type
procedure LoadOptions; procedure LoadOptions;
procedure SaveOptions; procedure SaveOptions;
// layouts // layouts
function GetDefaultLayoutFilename(Full: boolean): string; function GetUserLayoutFilename(Full: boolean): string;
procedure LoadDefaultLayout; procedure LoadDefaultLayout;
procedure LoadUserLayout; procedure LoadUserLayout;
procedure SaveUserLayout; procedure SaveUserLayout;
procedure LoadLayoutFromFile(Filename: string); procedure LoadLayoutFromFile(Filename: string);
procedure SaveLayoutToFile(Filename: string); procedure SaveLayoutToFile(Filename: string);
property UserLayoutLoaded: boolean read FUserLayoutLoaded write SetUserLayoutLoaded; property UserLayoutLoaded: boolean read FUserLayoutLoaded write SetUserLayoutLoaded;
property CmdLineLayoutFile: string read FCmdLineLayoutFile write FCmdLineLayoutFile;
// events // events
procedure MakeIDEWindowDockSite(AForm: TCustomForm; ASides: TDockSides = [alBottom]); override; procedure MakeIDEWindowDockSite(AForm: TCustomForm; ASides: TDockSides = [alBottom]); override;
procedure MakeIDEWindowDockable(AControl: TWinControl); override; procedure MakeIDEWindowDockable(AControl: TWinControl); override;
@ -231,6 +233,9 @@ begin
DockMaster.OnShowOptions:=@ShowAnchorDockOptions; DockMaster.OnShowOptions:=@ShowAnchorDockOptions;
DockMaster.ShowMenuItemShowHeader:=true; DockMaster.ShowMenuItemShowHeader:=true;
FHideSimpleLayoutOptions:=true; FHideSimpleLayoutOptions:=true;
fCmdLineLayoutFile:=TrimAndExpandFilename(Application.GetOptionValue('anchordocklayout'));
if CmdLineLayoutFile<>'' then
debugln(['Hint: anchordocking layout file: "',CmdLineLayoutFile,'"']);
end; end;
destructor TIDEAnchorDockMaster.Destroy; destructor TIDEAnchorDockMaster.Destroy;
@ -269,11 +274,15 @@ begin
Result:=true; Result:=true;
end; end;
function TIDEAnchorDockMaster.GetDefaultLayoutFilename(Full: boolean): string; function TIDEAnchorDockMaster.GetUserLayoutFilename(Full: boolean): string;
begin begin
if CmdLineLayoutFile<>'' then begin
Result:=CmdLineLayoutFile;
end else begin
Result:=DefaultLayoutFileName; Result:=DefaultLayoutFileName;
if Full then if Full then
Result:=AppendPathDelim(LazarusIDE.GetPrimaryConfigPath)+Result; Result:=AppendPathDelim(LazarusIDE.GetPrimaryConfigPath)+Result;
end;
end; end;
procedure TIDEAnchorDockMaster.LoadDefaultLayout; procedure TIDEAnchorDockMaster.LoadDefaultLayout;
@ -296,7 +305,7 @@ var
Filename: String; Filename: String;
Config: TConfigStorage; Config: TConfigStorage;
begin begin
Filename:=GetDefaultLayoutFilename(false); Filename:=GetUserLayoutFilename(false);
try try
debugln(['TIDEAnchorDockMaster.LoadUserLayout ',Filename]); debugln(['TIDEAnchorDockMaster.LoadUserLayout ',Filename]);
Config:=GetIDEConfigStorage(Filename,true); Config:=GetIDEConfigStorage(Filename,true);
@ -326,7 +335,7 @@ var
Filename: String; Filename: String;
Config: TConfigStorage; Config: TConfigStorage;
begin begin
Filename:=GetDefaultLayoutFilename(false); Filename:=GetUserLayoutFilename(false);
try try
debugln(['TIDEAnchorDockMaster.SaveDefaultLayout ',Filename]); debugln(['TIDEAnchorDockMaster.SaveDefaultLayout ',Filename]);
Config:=GetIDEConfigStorage(Filename,false); Config:=GetIDEConfigStorage(Filename,false);
@ -660,7 +669,7 @@ begin
if not (AOptions is SupportedOptionsClass) then exit; if not (AOptions is SupportedOptionsClass) then exit;
OptionsFrame.SaveToSettings(FSettings); OptionsFrame.SaveToSettings(FSettings);
if (not DockMaster.SettingsAreEqual(FSettings)) if (not DockMaster.SettingsAreEqual(FSettings))
or (not FileExistsUTF8(IDEAnchorDockMaster.GetDefaultLayoutFilename(true))) or (not FileExistsCached(IDEAnchorDockMaster.GetUserLayoutFilename(true)))
then begin then begin
DockMaster.LoadSettings(FSettings); DockMaster.LoadSettings(FSettings);
IDEAnchorDockMaster.SaveUserLayout; IDEAnchorDockMaster.SaveUserLayout;