add action to reset the layout programmatically, close #191

This commit is contained in:
Basile Burg 2017-10-25 05:58:38 +02:00
parent 23652be83b
commit 0978c99c7d
No known key found for this signature in database
GPG Key ID: 1868039F415CB8CF
1 changed files with 67 additions and 16 deletions

View File

@ -109,6 +109,7 @@ type
actFileMetricsHalstead: TAction; actFileMetricsHalstead: TAction;
actFileCloseAllOthers: TAction; actFileCloseAllOthers: TAction;
actFileCloseAll: TAction; actFileCloseAll: TAction;
actLayoutReset: TAction;
actProjDscan: TAction; actProjDscan: TAction;
actProjGroupCompileCustomSync: TAction; actProjGroupCompileCustomSync: TAction;
actProjGroupClose: TAction; actProjGroupClose: TAction;
@ -275,6 +276,7 @@ type
procedure actFileRunExecute(Sender: TObject); procedure actFileRunExecute(Sender: TObject);
procedure actFileRunOutExecute(Sender: TObject); procedure actFileRunOutExecute(Sender: TObject);
procedure actFileSaveCopyAsExecute(Sender: TObject); procedure actFileSaveCopyAsExecute(Sender: TObject);
procedure actLayoutResetExecute(Sender: TObject);
procedure actNewGroupExecute(Sender: TObject); procedure actNewGroupExecute(Sender: TObject);
procedure actProjAddToGroupExecute(Sender: TObject); procedure actProjAddToGroupExecute(Sender: TObject);
procedure actProjDscanExecute(Sender: TObject); procedure actProjDscanExecute(Sender: TObject);
@ -430,7 +432,8 @@ type
procedure getCMdParams; procedure getCMdParams;
procedure InitMRUs; procedure InitMRUs;
procedure InitWidgets; procedure InitWidgets;
procedure InitDocking; procedure InitDocking(reset: boolean = false);
procedure DefaultDocking;
procedure InitOptionsMenu; procedure InitOptionsMenu;
procedure LoadSettings; procedure LoadSettings;
procedure SaveSettings; procedure SaveSettings;
@ -1405,36 +1408,69 @@ begin
setSplitterWheelEvent; setSplitterWheelEvent;
end; end;
procedure TCEMainForm.InitDocking; procedure TCEMainForm.InitDocking(reset: boolean = false);
var var
i: Integer; i: Integer;
widg: TCEWidget; widg: TCEWidget;
topsite : TControl; topsite : TControl;
topsplt : TAnchorDockSplitter; topsplt : TAnchorDockSplitter;
begin begin
DockMaster.MakeDockSite(Self, [akBottom], admrpChild);
DockMaster.OnShowOptions := @ShowAnchorDockOptions;
DockMaster.HeaderStyle := adhsPoints;
DockMaster.HideHeaderCaptionFloatingControl := true;
// makes widget dockable if not reset then
for i := 0 to fWidgList.Count-1 do
begin begin
widg := fWidgList.widget[i]; DockMaster.MakeDockSite(Self, [akBottom], admrpChild);
if not widg.isDockable then continue; DockMaster.OnShowOptions := @ShowAnchorDockOptions;
DockMaster.MakeDockable(widg, true); DockMaster.HeaderStyle := adhsPoints;
DockMaster.GetAnchorSite(widg).Header.HeaderPosition := adlhpTop; DockMaster.HideHeaderCaptionFloatingControl := true;
widg.onDockingChanged:= @widgetDockingChanged; // makes widget dockable
for i := 0 to fWidgList.Count-1 do
begin
widg := fWidgList.widget[i];
if not widg.isDockable then continue;
DockMaster.MakeDockable(widg, true);
DockMaster.GetAnchorSite(widg).Header.HeaderPosition := adlhpTop;
widg.onDockingChanged:= @widgetDockingChanged;
end;
end; end;
// load existing or default docking // load existing or default docking
if FileExists(getCoeditDocPath + 'docking.xml') and LoadDocking() then if not reset and FileExists(getCoeditDocPath + 'docking.xml') and LoadDocking() then
begin end begin end
else else
begin begin
Height := 0;
if reset then
begin
for i := 0 to fWidgList.Count-1 do
begin
widg := fWidgList.widget[i];
if not widg.isDockable then
continue;
if not widg.Visible then
continue;
if widg = fEditWidg then
continue;
if DockMaster.GetAnchorSite(widg).isNotNil then
DockMaster.GetAnchorSite(widg).ManualFloat(widg.ClientRect, false);
end;
end;
if not reset then
begin
Height := 0;
end
else
begin
if WindowState = wsMaximized then
WindowState:= wsNormal;
Height := 600;
Width := 800;
end;
// center // center
DockMaster.ManualDock(DockMaster.GetAnchorSite(fEditWidg), DockMaster.GetSite(Self), alBottom); if not reset then
DockMaster.ManualDock(DockMaster.GetAnchorSite(fEditWidg), DockMaster.GetSite(Self), alBottom);
DockMaster.ManualDock(DockMaster.GetAnchorSite(fMesgWidg), DockMaster.GetSite(fEditWidg), alBottom); DockMaster.ManualDock(DockMaster.GetAnchorSite(fMesgWidg), DockMaster.GetSite(fEditWidg), alBottom);
DockMaster.ManualDock(DockMaster.GetAnchorSite(fLibMWidg), DockMaster.GetSite(fMesgWidg), alClient, fMesgWidg); DockMaster.ManualDock(DockMaster.GetAnchorSite(fLibMWidg), DockMaster.GetSite(fMesgWidg), alClient, fMesgWidg);
DockMaster.ManualDock(DockMaster.GetAnchorSite(fTodolWidg), DockMaster.GetSite(fMesgWidg), alClient, fMesgWidg); DockMaster.ManualDock(DockMaster.GetAnchorSite(fTodolWidg), DockMaster.GetSite(fMesgWidg), alClient, fMesgWidg);
@ -1488,6 +1524,11 @@ begin
end; end;
end; end;
procedure TCEMainForm.DefaultDocking;
begin
end;
procedure TCEMainForm.LoadSettings; procedure TCEMainForm.LoadSettings;
var var
fname: string; fname: string;
@ -2412,6 +2453,12 @@ begin
free; free;
end; end;
end; end;
procedure TCEMainForm.actLayoutResetExecute(Sender: TObject);
begin
InitDocking(true);
end;
{$ENDREGION} {$ENDREGION}
{$REGION edit ------------------------------------------------------------------} {$REGION edit ------------------------------------------------------------------}
@ -3205,6 +3252,10 @@ var
itm: TMenuItem; itm: TMenuItem;
i: integer; i: integer;
begin begin
itm := TMenuItem.Create(self);
itm.Action := actLayoutReset;
mnuLayout.Add(itm);
itm := TMenuItem.Create(self); itm := TMenuItem.Create(self);
itm.Action := actLayoutSave; itm.Action := actLayoutSave;
mnuLayout.Add(itm); mnuLayout.Add(itm);